A Literate Programming Environment for Human and Machine Agents
本論文は、実行可能なコード、自然言語、および構造化されたデータをネームグラフ・アーキテクチャを通じて統合するリテレート・プログラミング環境を提示し、それによって大規模言語モデルのためのコンテキストを最適化し、機械エージェントに対して人間のIDEに匹敵するシンボル認識型のツールを提供するものである。
原論文は CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) でライセンスされています。 これは以下の論文のAI生成解説です。著者が執筆または承認したものではありません。技術的な正確性については原論文を参照してください。 免責事項の全文を読む
現代のコンピューティング時代において、新しい種類のパートナーがワークショップに参入した。それは言語モデルである。これらは膨大な人間のテキストのライブラリで学習された、広大で柔軟なシステムであり、指示を読み取り、驚くほど流暢にコードを記述することができる。多くの人々にとって、この変化は能力の突然の拡張のように感じられ、初心者がスクリプトを構築することを可能にし、専門家が大規模なシステムに取り組むことを可能にしている。しかし、根本的な緊張関係が残っている。これらの機械は言語を処理できるが、セッションが終了すると、会話の中で何が起きたかを真に「学習」したり記憶したりすることはない。彼らは現在目に見えているテキスト、つまり絶えず関連する詳細事項で満たされなければならない限定的なコンテキストのウィンドウに完全に依存している。もしプログラマーが機械にコードの背後にあるロジックを理解させたいのであれば、そのロジックはコードのすぐ傍らにテキストとして存在していなければならない。これは、ソフトウェアの書き方に課題を突きつけている。伝統的に、コードと、そのコードに関する人間の説明は、別々の場所に保持されるか、あるいは機械がしばしば無視してしまうコメントの中に埋め込まれてきた。しかし、もし機械が真の協力者となるのであれば、プログラムの物語とプログラム自体は、人間と機械の両方が等しく容易に読み取れる形式で、共に、並んで存在しなければならない。
これが、研究者である Adam T. Burke によって作成された notlob と呼ばれる新しい環境が対処している中心的な問題である。この研究は、人工エージェントも同じドキュメントを読んでいる時代に合わせて更新された、「リテレート・プログラミング(文芸的プログラミング)」として知られる古い概念への回帰を提案している。このシステムにおいて、ソフトウェアプロジェクトは、コード、ドキュメント、テストのための別々のファイルの集合体ではない。代わりに、それはエッセイのような、単一の流れるドキュメントである。テキストはアイデア、動機、設計を説明し、実行可能な命令は散文の中に直接埋め込まれている。研究者たちは、この結合されたドキュメントを「唯一の真実のソース」として扱う動作するシステムを構築した。システムがファイルを読み取るとき、それは単に言葉を見るのではない。それは、あらゆる名前、概念、およびコードの断片が互いにどのように関連しているかについての詳細なマップを構築する。著者が「ネームグラフ(名前のグラフ)」と呼ぶこのマップにより、機械エージェントはキーワードを検索するのではなく、本の中で思考の糸を追う人間のように、アイデア間の論理的なつながりを辿ることによってプロジェクトをナビゲートすることができる。
notlob の設計は、プログラミングがどのように変化しているかについての3つの単純な観察に基づいている。第一に、人工知能と共にソフトウェアを指定し組織する際、自然言語が支配的な方法となっていることである。第二に、コードが依然として機能していることを検証するコンピュータ生成のチェックは、エージェントにとって信頼できるフィードバックループとして機能するため、かつてないほど価値が高まっていることである。第三に、現在の世代のこれらの言語モデルは、一度に閲覧できるテキストの量に大きく依存していることである。これに対処するため、研究者たちは、説明、実行、および検証がすべて同じファイル内に存在する言語を作成した。典型的なドキュメントは、タイトルと導入に始まり、続いてプログラムのコアロジックが続く。これは、単純な線によって区切られたテストと参照のセクションへと続く。システムは、散文の断片、コードのブロック、常に真であるべき特性、および特定のテストケースを区別するために特定のマーカーを使用する。例えば、あるセクションは数学的な数列を記述し、その直後にそれを生成するコードが続き、次にそのコードが特定のルールを満たさなければならないというテキストのブロックが続く。その後、システムはこれらのルールを実行し、コードがテキストが主張する通りに振る舞うことを確認する。
これを実現するために、研究者たちは名前をシステムにおける最も重要なオブジェクトとして扱うパーサーを開発した。伝統的なプログラミングでは、名前は変数や関数のための単なるラベルである。notlob では、名前は記述された説明と実行可能なコードを結びつける第一級の市民である。システムがファイルを処理するとき、概念を記述するテキストと、それを実装するコード、およびそれを検証するテストとを結びつけるグラフを構築する。この構造により、機械エージェントは、高レベルのアイデアからそれを実現する特定の行へとジャンプしたり、ファイルの海の中で迷うことなく、特定の概念が使用されているすべての場所を見つけたりすることができる。システムには、このマップを標準的な形式でエクスポートできるツールが含まれており、他のソフトウェアがプロジェクトの異なる部分間の関係をクエリすることを可能にする。これは、人間が統合開発環境を使用して、関数がどこで定義されているか、あるいは誰がそれを呼び出しているかを見つける方法を模倣しているが、ファイル構造だけでなく、テキストの意味的な意味を理解することによってそれを行う。
研究者たちは、数値をローマ数字に変換するツールや、相互作用する部分を持つシステムをモデル化するために使用される図であるペトリネットに基づいたウェブベースのゲームを含む、いくつかの動作するプログラムを構築することで、この環境をテストした。ある実験では、人工エージェントがゼロからプロジェクトを構築するのを支援した。エージェントには、目標の高レベルな説明と、いくつかの空の関数シグネチャが与えられた。エージェントは、notlob ドキュメントの構造に従いながら、コードを記入し、テストを書き、散文を整理した。エージェントは、関数の定義における不一致などの、テキストとコードの間の矛盾を検出し、明確化を求めた。別のケースでは、システムは、他のテスト手法で見逃されていたデジタル信号処理プロジェクト内の微妙なバグを見つけるためにエージェントを助けた。そのバグは、特定の条件下で不安定になる計算に関連するものであり、エッセイの一部として書かれたエージェントのプロパティテストが、そのエラーを正常に露呈させた。
しかし、研究者たちはエージェントが完璧ではないことも観察した。いくつかの事例において、エージェントは、コードを書くという差し迫ったタスクに集中するあまり、形式的な特性や構造的なルールといった宣言的な部分を軽視する傾向があった。彼らは時として、テキストを制約ではなく提案として扱ったため、人間の介入を必要とする不一致が生じた。研究者は、このダイナミクスは、ドキュメントとコードが整合し続けるようにシニア開発者が介入しなければならない人間のソフトウェアチームにおいて馴染みのあるものであると指摘した。この研究は、これらの言語モデルは強力ではあるものの、コードと説明を密接な接触状態に強制する構造を依然として必要としていることを示唆している。notable 環境はその構造を提供し、プログラムの理論とコードの実践を同じ場所に留める方法を提示している。
また、この研究は、プログラミングにおける言語モデルの使用に関する他のアプローチとも一線を画している。一部の手法は、自然言語による記述を、コードが書かれる前に来る独立した仕様として扱うが、これは計画と結果の間の乖離につながりかねない。他の手法は、コードが書かれた後に、モデルに要約や再生成を依存する。notlob は異なる道を歩む。それは、仕様、コード、およびテストを単一の反復的なワークスペース内に共存させる。これにより、人間と機械がこれら3つの要素すべてに対して同時に作業し、論理と説明を並行して洗練させることが可能になる。研究者たちは、自然言語を単なるプロンプトや別個のドキュメントとして扱うよりも、このアプローチの方が効果的であると主張している。散文とコードを同一の不可分なアーティファクトとすることで、システムは言語モデルのコンテキストウィンドウが、最も関連性の高い情報で満たされることを保証する。
notlob の実装はオープンソースプロジェクトであり、現在は Haskell、Python、TypeScript の3つの確立されたプログラミング言語をサポートしている。システムには、ユーザーがプロジェクトを構築、テスト、可視化できる一連のコマンドラインツールが含まれている。一つのツールはドキュメントを標準的なウェブページとしてレンダリングでき、別のツールは、プロジェクトの異なる部分がどのように接続されているかを示す、ネームグラフの視覚的なマップを生成できる。研究者たちはまた、プロジェクトの論理的一貫性とスタイルをレビューする任務を負った人工知能である「クリティック(批評家)」エージェントを使用する実験も行った。このエージェントは、エラーを特定し改善を提案することができ、時には多様な視点を提示するために異なるペルソナを採用した。これらの実験は、この環境がコードの作成だけでなく、プロジェクト全体の批判的なレビューと洗練をもサポートできることを示唆している。
最終的に、この論文は、テキストとコードという共有言語に基づいた、人間と機械の間の協調的な行為としてのソフトウェア開発のビジョンを提示している。notlob 環境は、人工知能がプログラミングにおけるすべての問題を解決すると主張しているわけでも、機械がいずれ独力で完璧なソフトウェアを書くようになると約束しているわけでもない。むしろ、それは、アイデアと実装の関係をより透明かつ堅牢にするための実用的なツールを提供している。エッセイと実行可能なコードを単一の相互接続された実体として扱うことで、システムは、人間にとっての意図と機械の実行との間の溝を埋める手助けをしている。この研究は、プログラミングの未来は、より多くのコードを書くことではなく、コードが従うことができるより優れた物語を書くことであり、システムの論理が機械にとっても人間にとっても同様に明確であることを保証することにある、ということを示唆している。
自分の分野の論文に埋もれていませんか?
研究キーワードに一致する最新の論文のダイジェストを毎日受け取りましょう——技術要約付き、あなたの言語で。