Historically, software development has been done by typing plain text. For several decades now, the main approach to programming has been a sequential set of characters that must form structures at a higher level than these characters. The programmer has to not only type the same keyboard shortcuts over and over again, but also to monitor the correct formatting of the code, otherwise the computer will simply refuse to understand what is written in the code. One forgotten character ";" may produce completely vague compilation / interpretation errors. Moreover, the use of the textual representation of the program not only sets additional requirements for programming, but also greatly limits the programmer's ability to effectively write and use code.Also, the textual representation of information greatly complicates the analysis of this information programmatically. Let's take a look at an alternative approach to writing programs.
- MetaIDE. / . ( for, if, while) , . - , . , AST - Abstract syntax tree ( ). MetaIDE AST, .
. , MetaIDE : wh while, fo for .. , . , , , , . . . , IDE . , , . . , .. , - () VR. - , - .
, . , (Scratch, Blockly), (UML, ), (blueprints - Unreal, Unity). MetaIDE . .
, . , , -, .
. , . (enum) . - , . - ( ), ( ), ( " " ).
. MetaIDE ( ), - , . (, , ), , . , . . , , . , . MetaIDE . . , .
MetaIDE MVC (Model-View-Controller, --) . . , ( , , ) , - . , , .
- ( ), , . . .
MetaIDE , IDE, . . , IDE IDE - ( SDK API, ).
, DSL
fix code main table
name: varLocal node: var get local fn: varLocal switch: ndPtr
name: varMember node: var get member fn: varMember switch: ndPtr
name: varGlobal node: var get global fn: varGlobal switch: ndPtr
name: varUnkn node: var unknown fn: varUnkn switch: ndPtr
name: call node: call fn fn: call switch: ndPtr
name: inline node: inlineCall fn: inline switch: ndPtr
name: subClass node: getSubClass fn: subClass switch: ndPtr
name: subNode node: var get subnode fn: subNode switch: ndPtr
name: nextFn node: nextFn fn: nextFn switch: ndPtr
, , , enum, , .. . , , , . , - . . , . MetaIDE - DSL ( UI) , . .
IDE
MetaIDE , . MetaIDE ( ) - (mind map), (outliner), ( HSB, LCH, HSLuv, HPLuv). , MetaIDE, , , (undo/redo) . ( git), , .
, . – , , , . , , .
Delight
MetaIDE Delight. ++, , - ( ), .
MetaIDE. Lazarus, . , . , . , ( , ). , , . , . Delight, – , Delight. ( ), . IDE Delight. , - . . , , , . . , . , , Delight - . . MetaIDE Delight - , .
. , , . , , IDE .
№2
Currently MetaIDE and Delight are under development and are available only as a preview (not even as an alpha version). Far from everything has been finalized and not all things are made conveniently. The scale of development is too huge and there is not enough time to work out all the details at once.
conclusions
At the moment, MetaIDE represents a completely new approach to writing programs, opening up new horizons for the programmer in organizing the entire workflow. Both work with the code as a whole and individual aspects of programming are greatly simplified.