Históricamente, el desarrollo de software se ha realizado escribiendo texto sin formato. Durante varias décadas, el enfoque principal de la programación ha sido un conjunto secuencial de caracteres que deberían formar estructuras a un nivel superior al de estos personajes. El programador no solo tiene que escribir los mismos atajos de teclado una y otra vez, sino también monitorear el formato correcto del código; de lo contrario, la computadora simplemente se negará a comprender lo que está escrito en el código. Un carácter olvidado ";" puede dar errores de compilación / interpretación completamente ininteligibles. Además, el uso de la representación textual del programa no solo establece requisitos adicionales para la programación, sino que también limita severamente la capacidad del programador para escribir y usar código de manera eficiente.Además, la representación textual de la información complica enormemente el análisis de esta información mediante programación. Echemos un vistazo a un enfoque alternativo para escribir programas.
- 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
Actualmente, MetaIDE y Delight están en desarrollo y solo están disponibles como vista previa (ni siquiera como versión alfa). Lejos de todo se ha finalizado y no todas las cosas se hacen cómodamente. La escala de desarrollo es demasiado grande y no hay tiempo suficiente para resolver todos los detalles a la vez.
conclusiones
Por el momento, MetaIDE representa un enfoque completamente nuevo para la escritura de programas, abriendo nuevos horizontes para el programador en la organización de todo el flujo de trabajo. Ambos trabajan con el código como un todo y los aspectos individuales de la programación se simplifican enormemente.