In der Vergangenheit wurde die Softwareentwicklung durch Eingabe von einfachem Text durchgeführt. Seit mehreren Jahrzehnten besteht der Hauptansatz für die Programmierung in einem sequentiellen Satz von Zeichen, die Strukturen auf einer höheren Ebene als diese Zeichen bilden sollten. Der Programmierer muss nicht nur immer wieder dieselben Tastaturkürzel eingeben, sondern auch die korrekte Formatierung des Codes überwachen, da der Computer sonst einfach nicht versteht, was im Code geschrieben steht. Ein vergessenes Zeichen ";" kann zu völlig unverständlichen Kompilierungs- / Interpretationsfehlern führen. Darüber hinaus stellt die Verwendung der Textdarstellung des Programms nicht nur zusätzliche Anforderungen an die Programmierung, sondern schränkt auch die Fähigkeit des Programmierers, Code effektiv zu schreiben und zu verwenden, stark ein.Auch die textuelle Darstellung von Informationen erschwert die programmatische Analyse dieser Informationen erheblich. Schauen wir uns einen alternativen Ansatz zum Schreiben von Programmen an.
- 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
Derzeit befinden sich MetaIDE und Delight in der Entwicklung und sind nur als Vorschau verfügbar (nicht einmal als Alpha-Version). Weit davon entfernt, dass alles abgeschlossen ist und nicht alle Dinge bequem gemacht werden. Der Entwicklungsumfang ist zu groß und es bleibt nicht genügend Zeit, um alle Details auf einmal zu erarbeiten.
Schlussfolgerungen
Derzeit stellt MetaIDE einen völlig neuen Ansatz für das Schreiben von Programmen dar und eröffnet dem Programmierer neue Horizonte bei der Organisation des gesamten Workflows. Beide arbeiten mit dem Code als Ganzes und einzelne Aspekte der Programmierung werden stark vereinfacht.