歴史的に、ソフトウェア開発はプレーンテキストを入力することによって行われてきました。数十年の間、プログラミングへの主なアプローチは、これらの文字よりも高いレベルで構造を形成する必要がある文字のシーケンシャルセットでした。プログラマーは、同じキーボードショートカットを何度も入力するだけでなく、コードの正しいフォーマットを監視する必要があります。そうしないと、コンピューターはコードに書かれていることを理解することを単に拒否します。忘れられた1文字「;」完全にあいまいなコンパイル/解釈エラーが発生する可能性があります。さらに、プログラムのテキスト表現を使用すると、プログラミングの追加要件が設定されるだけでなく、コードを効果的に記述して使用するプログラマーの能力が大幅に制限されます。また、情報のテキスト表現は、プログラムによるこの情報の分析を非常に複雑にします。プログラムを作成するための代替アプローチを見てみましょう。
- 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
現在、MetaIDEとDelightは開発中であり、プレビューとしてのみ利用できます(アルファ版としても利用できません)。すべてが完成したわけではなく、すべてが便利に作られているわけではありません。開発の規模が大きすぎて、すべての詳細を一度に解決するのに十分な時間がありません。
結論
現時点では、MetaIDEはプログラムを作成するためのまったく新しいアプローチを表しており、ワークフロー全体を整理する上でプログラマーに新しい視野を開きます。どちらもコード全体で機能し、プログラミングの個々の側面が大幅に簡素化されます。