HeadlinesBriefing HeadlinesBriefing.com

Common Lisp は LLM コードのための最良の言語

Hacker News •
×

あなたは一部のプログラミング言語が他の言語より優れていると思いますか?もしそうなら、そのうちの1つが最高でなければなりません。そして実際には、特に今では LLM がコードを書けるようになったことから、Common Lisp がその言語です。LLM は本当に速くコードを書きます。これは大きな変化をもたらします。なぜなら、以前はコードを書くことが遅い部分だったからです。今では遅い部分は、あなたのプログラムが実際に機能するかどうかを確認することになります。そしてそれを確認する前に、プログラムを再構築する必要があり、これには数分かかることがあります。人間がコードを書いていたときは、これはそれほど重要ではありませんでした。なぜなら、コードを書くのにコンパイルして実行を開始するのを待つよりもずっと時間がかかっていたからです。しかし今はそうではなくなりました。したがって、あなたのフィードバックループにかかる時間が、どれだけ速く構築できるかを決定します。Common Lisp では、このループはほとんど存在しません。なぜなら、読み取り時間、コンパイル時間、実行時間の間に実際の違いがないからです(グレアム)。Common Lisp はイメージベースであり、つまりあなたのプログラムはメモリ内の生きているイメージです。そのため、関数の新しいバージョンは古いバージョンをすぐに置き換え、何も再起動する必要がありません。さらに、ほとんどの言語ではエラーが発生するとプログラムがクラッシュします。そのため、LLM でコードを書いている場合、クラッシュログを読んで変更を加え、プログラムをもう一度実行する必要があります。Common Lisp では、プログラムはクラッシュせず、代わりに停止してスタックとすべての変数を含むデバッガーを開きます。あなたはただ LLM をデバッガーに向けるだけで、それが修正を行い、プログラムを再開することができます。私の知る限り、Common Lisp はこれらすべてを行う唯一のメインストリーム言語です。Lisp は「リスト処理」を意味します。Common Lisp では、コードはリストとして書かれます。たとえば、(+ 1 2) は2つの数を足すプログラムですが、同時にシンボル + と数字 1 と 2 の3つの要素からなるリストでもあります。興味深いことに、これは Common Lisp がデータを保存するために使用するのと同じ種類のリストです。そして言語がリストの処理を中心に構築されているため、データを扱うためのすべてのツールもコードに適用できます。したがって、あるプログラムは別のプログラムを取り、それを変更することができます。たとえば、(+ 1 2) を (* 1 2) に変換し、その結果をすぐに実行することができます。これがマクロが可能になる理由です。マクロとは、あなたのコードを取り、その場所に新しいコードを返す関数のことです。つまり、言語自身に新しい構造を追加することができます。言語に追加できるようになれば、あなたの問題に向かって言語を構築することができます。したがって、Lisp では単にプログラムを書くだけでなく、あなたのドメインのための言語を書き、その後その言語でプログラムを書きます。これは今特に重要になってきています。なぜなら、プログラムの価値はその裏にある意見によって決まるからです。そして私たちは、ソフトウェア会社がユーザーに自分自身で製品を変更させる世界に向かっています。なぜなら、LLM を使えばそれが簡単だからです。したがって、会社が製品のために良い意見を持ったドメイン固有言語を構築すれば、その上にユーザーが構築するものはすべて、会社の意見から始まるため、はるかに良くなります。ゼロから始まるわけではありません。ERP を例に挙げてみましょう。どの会社も少しずつ異なる方法で ERP を運用しているため、ほとんどの会社はそれを変更する必要があります。しかし、ERP が独自のドメイン固有言語で書かれている場合、あなたは単に LLM にその言語で変更を依頼するだけでよいです。変更はドメイン固有言語の根底にある意見に自然と従うため、製品を壊すのではなく、それに適合する形になります。そしてこれは単に良いだけでなく、コストも安くなります。Lisp のプログラムはしばしばはるかに簡潔です。なぜなら、マクロによって繰り返しパターンを抽出し、言語そのものの一部にすることができるからです。したがって、プログラムが大きくなるほど、その違いも大きくなります。私の経験では、Common Lisp で構築したアプリケーションは、Python 版と比較して約6〜7倍短くなります。LLM にとって、コードが少なければトークン数も少なくなります。トークンはあなたが支払うものなので、開発コストが削減されます。さらに、あなたのプログラムのより大きな部分が LLM のコンテキストウィンドウに収まるようになります。あなたの LLM があなたのプログラム全体をコンテキストウィンドウ内に持っている場合、それはあなたの意図を完全に把握することができ、それによってより良い判断を下すことができます。私の経験では、LLM のバグの多くは、プログラムの一部を変更しても残りの部分を見ないことから生じます。したがって、Common Lisp ではこれが起こりにくくなります。Common Lisp はこれらすべてを行う唯一のメインストリーム言語です。

出典: Hacker News · 要約:HeadlinesBriefing