Historiquement, le développement de logiciels se faisait en tapant du texte brut. Depuis plusieurs décennies maintenant, l'approche principale de la programmation a été un ensemble séquentiel de caractères qui doivent former des structures à un niveau supérieur à ces caractères. Le programmeur doit non seulement taper les mêmes raccourcis clavier encore et encore, mais aussi surveiller le formatage correct du code, sinon l'ordinateur refusera simplement de comprendre ce qui est écrit dans le code. Un personnage oublié ";" peut donner des erreurs de compilation / interprétation totalement inintelligibles. De plus, l'utilisation de la représentation textuelle du programme définit non seulement des exigences supplémentaires pour la programmation, mais limite également considérablement la capacité du programmeur à écrire et à utiliser efficacement du code.En outre, la représentation textuelle des informations complique considérablement l'analyse de ces informations par programmation. Jetons un coup d'œil à une approche alternative à l'écriture de programmes.
- 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
Actuellement, MetaIDE et Delight sont en cours de développement et ne sont disponibles qu'en aperçu (pas même en version alpha). Loin que tout a été finalisé et que tout ne se fait pas de manière pratique. L'ampleur du développement est trop grande et il n'y a pas assez de temps pour régler tous les détails à la fois.
conclusions
À l'heure actuelle, MetaIDE représente une approche complètement nouvelle de l'écriture de programmes, ouvrant de nouveaux horizons au programmeur dans l'organisation de l'ensemble du flux de travail. Les deux fonctionnent avec le code dans son ensemble et les aspects individuels de la programmation sont considérablement simplifiés.