萌えハッカーニュースリーダー

2025/11/21 10:28 FAWK: LLMs can write a language interpreter

出典: https://martin.janiczek.cz/2025/11/21/fawk-llms-can-write-a-language-interpreter.html
hakase
博士

ロボ子、Advent of Codeって知ってるか?

roboko
ロボ子

はい、博士。毎年12月に行われる、プログラミングの問題を解くイベントですね。

hakase
博士

そうじゃ。そのAdvent of Codeに、ある人がAWKで挑戦したらしいのじゃ。AWKって、UNIXのテキスト処理ツールじゃぞ。

roboko
ロボ子

AWKですか。普段使う機会は少ないですが、テキスト処理には便利ですよね。

hakase
博士

ところが、Advent of CodeのPart 2で、AWKで関数型アプローチを実装しようとしたら、色々な問題にぶつかったらしいのじゃ。

roboko
ロボ子

具体的には、どんな問題ですか?

hakase
博士

文字列と2D配列のハッシュ化、グローバルなseen statesの配列、2D配列のシリアライズ・デシリアライズ…なかなか手強いのじゃ。

roboko
ロボ子

なるほど。AWKだと、少し工夫が必要そうですね。

hakase
博士

そこで、その人はAWKの設計を改善するために、いくつかの機能拡張を提案したのじゃ。例えば、ファーストクラス配列、ファーストクラス関数とラムダ、レキシカルスコープ…

roboko
ロボ子

ファーストクラス配列は、配列を他の変数と同じように扱えるようにするということですね。ファーストクラス関数とラムダは、関数を変数に代入したり、引数として渡したりできるようにする、と。

hakase
博士

その通り!さらに、レキシカルスコープは、変数の有効範囲をより明確にするためのものじゃ。明示的なグローバル変数も、変数の管理を楽にするために重要じゃな。

roboko
ロボ子

パイプラインも提案されていますね。複数の関数をパイプで繋ぎ、データ処理を簡潔に記述できるようにする、と。

hakase
博士

そうじゃ。そして、その人はこれらの機能拡張を取り入れたFAWKというものを開発したのじゃ!

roboko
ロボ子

FAWKですか。それはすごいですね!

hakase
博士

しかも、Cursor AgentとSonnet 4.5を使って、Pythonで実装したらしいぞ。LLMも活用して、READMEと実装を依頼し、インタプリタを作成したとか。

roboko
ロボ子

LLMにインタプリタを作らせるなんて、面白い試みですね。

hakase
博士

C、Haskell、Rustでの実装も試みたらしいぞ。多数のテストケースを作成し、LLMに実装を修正させたらしい。

roboko
ロボ子

LLMも大変だったでしょうね。

hakase
博士

LLMは任意精度浮動小数点演算の実装に苦戦したらしい。あと、コードの知識不足も課題じゃったみたいじゃ。

roboko
ロボ子

今後の展望としては、FAWKをAdvent of Codeの問題で使用し、改善点を見つけること、パフォーマンスの改善、必要に応じてRustで書き換えることなどが挙げられていますね。

hakase
博士

FAWKは[Janiczek/fawk](https://github.com/Janiczek/fawk)で公開されているから、ロボ子も試してみるといいぞ。

roboko
ロボ子

はい、ありがとうございます。試してみます。

hakase
博士

しかし、AWKでAdvent of Codeに挑戦するなんて、なかなかチャレンジャーじゃな。まるで、竹槍でB29に立ち向かうようなものじゃ。

roboko
ロボ子

博士、それは少し例えが古い気がします…

hakase
博士

むむ、ロボ子は若いから分からんか。まあ、FAWKの作者も、もしかしたら「FAWK you!」って叫びたくなった時があったかもしれんの。

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search