Easy-Langプロジェクトは、現代のプログラミング言語の複雑さを抽象化し、データ構造の学習を簡略化するために設計された教育用表記法「Easy」のための専用インタプリタを提供します。アルゴリズムの論理に焦点を当てることで、このツールは学生がEvangel P. Quiwaの2007年の教科書にある基礎的な概念を学ぶのを助けます。この教科書は、1970年代半ばのSPARKS表記法や大学の講義にその系譜を遡ります。
教育的構文と実行トレース
Easy-Langは、アルゴリズムを学ぶ学生にとっての可読性を優先した「Easy」表記法で書かれたプログラムを実行します。この言語は「while」、「case」、「repeat」などの標準的な制御構造をサポートしていますが、実行が必須の「MAIN」ブロックから始まる特定の「procedure」ベースの構造を使用します。

この画像は、Easy-Langインタプリタで使用される特定の構文とプロシージャベースの構造の視覚的な例を提供します。
学習を支援するために、インタプリタには「--explain」(または -x)フラグが含まれています。これは標準エラーにトレースを生成し、各ステップにはプラス記号が付加され、「lo ← 1」や「mid ← floor(((lo + hi) / 2))」といった各操作によって生成される具体的な値が表示されます。
「Evangel P. Quiwa, Data Structures (Manila: Electronics Hobbyists Publishing House, 2007) における教育用表記法 Easy のためのインタプリタ。」
— GitHub - jjuliano/easy-lang: Interpreter for Easy, the teaching notation used in Quiwa's Data Structures.
面接準備と論理の要約
このツールは「--interview」モードも提供します。コードを実行する代わりに、プログラムをカタログから検索し、アルゴリズムの主要なステップ、時間および空間計算量、そして学生が面接中に注意すべき特定のポイントを簡潔にまとめた要約を生成します。
この機能は、学生がプログラムの実行結果を単に観察するだけでなく、データ構造の実装の論理を技術的な議論に適した形式に統合するのを助けるように設計されています。
技術仕様とメモリモデル
この言語は、教育用に調整された特定のメモリおよびデータモデルを実装しています。例えば、特に指定がない限り1024個のノードのプールを使用し、アドレスは1から始まる整数で表されます。失敗した「GETNODE」操作は、プログラムを即座に停止させます。
HN Digestによる図(github.comの報告数値に基づく)。数値はソースの表記通り。
スタックやチェーンなどのデータ構造は、特定の表記法を使用して宣言されます。例えば、「Pile」構造は、スロット配列と「top」変数の組み合わせとして宣言されます。インタプリタはこれらを参照として扱い、パラメータは参照渡しされ、呼び出し元のセルを共有します。

このスクリーンショットは、データ構造とアルゴリズムの論理を定義するためのこの表記法の実際的な応用を示しています。
この表記法には、「mod」や「floor」などの整数処理のための特定の演算子が含まれており、先頭のマイナスが指数全体に適用されるべきべき乗操作(例:-2^2は-4)を処理します。また、「/」演算子を使用した実数除算もサポートしています。
範囲と制限
Easy-Langは概念的な学習のための強力なツールですが、汎用的なプログラミング言語ではありません。これはQuiwaの教科書に見られる表記法のための厳密なインタプリタであり、教科書の全内容自体を含んでいるわけではありません。
現在の実装は、データ構造コースの15のセッションに焦点を当てています。これらの特定のプロシージャを実行する方法を提供しますが、複雑なソフトウェアを構築するための製品レベルの環境ではなく、教育補助ツールとして設計されています。
ソース資料には、PythonやC++などの標準的な言語に対するEasy-Langの実行速度の独立したパフォーマンスベンチマークや比較は提供されていません。その主な価値は、生の計算効率よりも教育的な有用性にあります。