Structural / visual programming

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, UML, Unreal Engine
Scratch, UML, Unreal Engine

, . , (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

Memory card

MetaIDE , . MetaIDE ( ) - (mind map), (outliner), ( HSB, LCH, HSLuv, HPLuv). , MetaIDE, , , (undo/redo) . ( git), , .





Choosing colors for the menu

, . – , , , . , , .





Delight

List of operators

MetaIDE Delight. ++, , - ( ), .





Description of nodes, widgets and menus
,

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.





Extensive todo list
Extensive todo list

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.












All Articles