Katahdin:サイエンスフィクションの瀬戸際でのメタプログラミング

Katahdinは、 実行時に構文とセマンティクスが変わる可能性のあるインタープリタ型プログラミング言語です。 アイデアを明確にするために、すぐに公式サイトから例を挙げます 。 この例では、除算の残りの部分を取得する操作を定義しています(Cでは "%"、Pascalでは "mod")。

class ModExpression : Expression {

pattern {

option leftRecursive;

a:Expression "%" b:Expression

}



method Get() {

a = this.a.Get...();

b = this.a.Get...();

return a - (b * (a / b));

}

}








特に、既存の言語のすべての構造をカタディンで記述することができます。 その結果、この言語のインタープリターを取得します。 したがって、FortranとPythonはすでに実装されています。



Katahdinを使用すると、1つのプログラムで複数の言語のコードを簡単に組み合わせることができます。 さらに、異なる言語を動的に処理するためのモジュールをロードできます。 すぐにそのような機会の実用的なアプリケーションを思いつくことはできませんが、それらを探求する価値は間違いありません。 以下に例を示します。

 
  import "fortran.kat"; 
  import "python.kat"; 

  fortran { 
      サブルーチンランダム(シード、RANDX) 

      INTEGER SEED 
      実数 

      シード= 2045 *シード+ 1 
      シード=シード-(シード/ 1048576)* 1048576 
      RANDX = REAL(シード+ 1)/1048577.0 
      戻る 

      終了 
  } 

  python { 
      シード= 128 
      randx = 0 

      範囲(5)のnの場合: 
          RANDOM(シード、randx) 
          印刷するrandx 
  } 
 


一般的に、この言語は非常に興味深いものですが、実際にどのように適用できるかはまだ明確ではありません。 残念ながら、プロジェクトは現在開発されていません。唯一のアクティブな開発者はプロジェクトの作業を継続できません。



参照資料



UPDウィキペディアの記事が削除されました。 それは残念です。

UPD2記事は別の名前で返されました。 リンクが修正されました。




All Articles