1 ポイント 投稿者 GN⁺ 2024-11-10 | 1件のコメント | WhatsAppで共有

プロジェクトλ-2D: 絵をプログラミング言語として探究

  • 概要: プロジェクトλ-2Dは、絵を通じてプログラミングできる新しい言語を探究する研究である。ラムダ計算のアイデアに基づき、絵によってコードを書けるよう設計されている。

  • 非言語的プログラミング言語: ASCIIベースの言語であるBefungeやasciidots、画像ベースの言語であるPietなど、非言語的なプログラミング言語が存在する。これらの言語に着想を得て新しい言語を開発した。

  • 目標:

    • 絵でプログラムを書く利点を生かし、テキストベースの言語では不可能な機能を含める。
    • 命令が少なすぎず多すぎもしないよう調整し、使いやすさを高める。
    • 視覚的に魅力あるプログラムを描けるようにし、芸術作品のように鑑賞できるようにする。
  • ラムダ計算: ラムダ計算は、関数適用と関数定義という2つの命令だけを持つ。それぞれの命令に適した記号を開発した。

  • データフロー: 記号をつなぐ線を通じてデータが流れるように設計した。さらに記号を追加して使い勝手を高めた。

  • フレームとGUI要素: キャンバスの特定領域をフレームとして設定し、データを活用できるようにした。スライダーのようなGUI要素を追加し、プログラムを動的に制御できるようにした。

  • エディタソフトウェア: ユーザーがデジタル上でプログラムを描けるエディタを開発した。5x5ピクセルの記号を使い、グリッドキャンバス上に簡単に配置できる。

  • 出力問題の解決: 純粋関数型言語の性質上、「出力」命令の実装は難しい。これを解決するため、キャンバスを関数に渡して変更後のキャンバスを返してもらう方式として再定義した。

  • パーサ開発: λ-2DプログラムをJavaScriptに変換するパーサを開発した。生成物は複雑だが動作する。

  • プログラミング体験: 新しい言語でプログラミングする体験はMinecraftやFactorioに近いが、研究としての価値がある。

  • 可視化と音: プログラム実行を可視化し、実行中のプログラムを音楽のように聴ける可能性を探っている。

  • 今後の計画: λ-2Dを改善し、絵による計算システムに統合できる新しいプログラミング言語を設計していく計画である。

  • オンラインデモ: λ-2Dのベータ版をオンラインで体験でき、パーサとエディタのソースコードは近日中にGitHubで公開予定である。

1件のコメント

 
GN⁺ 2024-11-10
Hacker News のコメント
  • BitGrid に似ているが異なる概念について議論しており、FPGA を究極まで単純化したものとして、ビットが並列に行進する様子を想像している。このアイデアは大衆に Petaflops を提供できる有用性を持つかもしれないし、持たないかもしれない。ASIC で DFF が消費するエネルギーは重要だ。

    • Von Neumann セル・オートマトンと Nobili セル・オートマトンを見つけたが、計算機科学のこの分野では発見の余地が少ないようで、がっかりした。
    • FSA は無限サイズのセル空間を定義し、すべての FSA は状態遷移関数または規則集合において同一である。
  • オートメーションプロジェクトのエンジニアの仕事は、面白く感じられるか、なじみ深いかもしれない。ファンクションブロック図では、機能ブロックがワイヤで接続され、ブロックの順序によって作業順序が定義される。ブロックはエンジンの組み込み関数のようなものでも、複合体でもありうる。

    • 制御周期ごとに図が 1 回実行され、入力が変化しなくても各ブロックは常に 1 回実行される。
    • 醸造所から石油化学プラントまでの制御ロジックはこのように実装されている。
  • この言語は現在チューリング完全だが、使うのが非常に難しく、デザインルール #2 に違反している。Lambda Diagrams ではステップ 1 で止まってしまった。

  • Labview ではこうしたことが行われてきたが、先に進めるのが難しい。Max のようなソフトウェアでも行われていたが、すぐに複雑になってしまう。

  • Petri Nets のためのグラフィカルな形式仕様に関心があった。グラフィカルな表現があればエンジニアは形式手法をもっと使うだろうと思っていたが、Petri Nets を見せると興味を失ってしまう。

    • University of York で PhD を断念する前は、RoboChart と RoboSim を使っており、それらをネットワークやサーバーの世界により有用な形で適応させようとするプロジェクトを進めていた。
  • 非言語的なプログラミング言語の領域は、まだ探究されていないという意見がある。

  • 1987 年の "Wireworld" を思い出す。Wireworld 上で 8 ビットカウンタが実装されているのを見たことがある。

  • プログラミングパラダイムの観点では Function に似ている。