Mid Level

Mid level helps users (that knows algorithm) to write some programs or re-program selected object with native language. This level makes reviews easier, supports the idea of iterative refinement, makes changes easier, minimizes commenting effort and easier to maintain compared to other forms of design documentation.

 Although you can build any application with this level, but its goal is to be used by choosing and machine levels and edit selected objects or edit a part of an application. So, this level cannot be considered as an ideal programming level by itself.
This level is similar to pseudo code. The term of this level refers to an informal, native-like (not English-like) notation for describing how an algorithm or an object will work.
The big problem is that pseudo code tends to be very confusing to users. For skilled programmers, the cute natural-language stuff just gets in the way and obscures what is going on; for less skilled programmers, it is frustrating because they expect it to work like unrestricted natural language, and they are constantly running into restrictions. They write things that they expect to work, and then it doesn't work. So, unless you are making a serious attack on true natural-language, understanding and flexible human-like planning seems that pseudo English or pseudo Persian programming is a bad idea.

Figure 2 : Writing program

Sample code in mid level for English programmer:
CONNECT to “www.source.com” then GET "site.tmp" file. OPEN "site.tmp“and READ a number.
This number must be ADDed by five and then SET result into FIRST FIELD
SHOW it and at the end REMOVE file

All levels in Simorgh are based on low level commands and cannot directly execute text commands like above.
Simorgh compiles each text to corresponding commands in low level with special algorithm. Simorgh tries to support multiple human languages at once (all restricted) or to translate between them. Simorgh compiler might translate the mid level codes above into commands as follows:

CONNECT, "www.source.com" // pseudo English
Converted to
“I2I0{A0[]A1[www.source.com]I10}{}” // low level codes
GET "site.tmp" // pseudo English
Converted to
“A1[site.tmp]A2[w+b]I13I12}{}” // low level codes
REMOVE converted to “Q1”

Simorgh is symbols based programming language. Each word (sentence) can be converted to any symbol (or low level codes). It is possible to use multiple human languages. There is a tool with user defined databases in SPL to convert each word (sentence) from each human language to each Simorgh symbol (or low level codes).

Figure 3: Converting commands to Simorgh code
SPL is independent of any human language. If a programmer writes a program in its native language, the other programmer can read source code of this program in its native language.

Figure 4 : Translating program from Persian to English