言語を自分で変える自由を取り戻そう
We Should Be Able to Change Our Languages
プログラミング言語は変えられないものとされてきたが、Jimmy Millerはそれが変わるべきだと言う。LLMの助けでコード理解が容易になり、AIが書くコードにもマクロが一貫性をもたらす。彼はTypeScript用のSweetenerを公開し、パイプ演算子や代数的データ型、TSXの制御構文などを自分で定義できるようにした。言語設計を一部の委員会に任せるのではなく、各コードベースが自分たちの言語を形作る時代が来たと主張する。
マクロは、より大きなパターンをコードに埋め込み、AIが自動的にそれに従うように仕向ける。
HNでの議論
36- xg15
> 物事は劇的に変化してきた。かつては、チームがよりよく理解できるなら、最適でないコードを書くことに意味がある時代があった。なぜか?コードの変更がコード自体の最適化よりもビジネス価値を生み、チームが理解していなければ誰も変更できなかったからだ。しかし、これはますます当てはまらなくなっている。読みやすさや理解しやすさを犠牲にしても、コードをより速く、より良くできるなら、あなた自身は理解できなくても、AIは完璧に扱える。なぜやらないのか?
これはプログラミング界に訪れる内戦の最前線になるだろうな…
- Retr0id
マクロ(および類似の言語機能)の主な問題は、あらゆるコードベースを独自のDSLに変えてしまうことだ。センス良く使えばコードは読みやすくなるが、新しく参加する人にとっては依然としてオーバーヘッドがある。生産的になる前に、そのDSLを学ぶ必要がある。
LLMはこのオーバーヘッドをあなたにとって見えにくくするかもしれないが、確かにそれはまだ存在するのではないか?私はむしろ、自分のトークンをもっと実際のタスクの解決に使いたい。カスタム構文を解読する(そして新しいコンテキストウィンドウごとに再学習する)よりも。
- pie_flavor
Rustは10年間、マクロの実用的な実験場だった。結果は出たと言っていいだろう。マクロは素晴らしく、ただより良いスタイルのマクロが必要だっただけだ。Cスタイルのマクロで`tokio::select!`のようなものを作って使うのは悲惨だが、Rustでは`tokio::select!`は使いやすく理解しやすい。
- saint-evan
このような記事[不快な言葉]を誰かが思いつくのが嫌だ。中心的な前提が「[ソフトウェアエンジニアリングの制約]はもう問題ではない」というものだ…それはいつも、解決策が脳をオフにしてLLMに尋ねることだからだ。まるで「コンピュータが速くなりメモリが安くなったから、[不快な言葉]なソフトウェアを書ける」に似ているが、今回は「適切なコードアーキテクチャはどうせ読まないから問題にならない」だ。
なんてこった!証拠はないが、LLMでさえ理解し説明できる最悪で最も歪んだコードには上限があると確信している。エンジニアリングの制約が解決されたから「それは[LLMプロバイダー]の問題だ」に移行するなんて、どれほど悲しいことか。コンテキストの量は有限で、そこから抽出できるシグナルも有限で、推論の信頼性も有限だ。クソチャットボットに十分奇妙な怪物を与えれば、最終的にモデルの説明は信頼できるプログラムのモデルではなく、ますますもっともらしい再構成になる。これが、このクソ馬鹿どもがぶち当たろうとしている壁だ…借金を重ね、人間の理解とは正反対の方向にアーキテクチャを押し進め、せいぜい中立な外部エンティティが(実質)無料であなたの仕事を続けてくれることに頼っている!そしてクレイジーなのは、私がAI嫌いから最も遠い存在で、23歳のジュニアプログラマーだということだ。それなのに、両側でこの感情がばかげている…
- tombert
少し嫌な奴になるリスクを承知で言うと、今読む技術意見記事のほとんどは「昔は難しかったが、LLMが我々より速く理解できるからもう難しくない、だから基本を無視/変更してもいい」に帰結するように思える。
最初に聞いた時も説得力があるとは思わなかったし、今も思わない。
とはいえ、マクロに関しては、恐れは概して誇張されすぎているという意見には同意する。Clojureで恐ろしくひどいマクロの寄せ集めを見たことがあるが、それは一般的には外れ値のケースだ。core.asyncのようなものはマクロを極限まで悪用しているが、それでも言語の可読性と理解を高めることが非常に多いと思う。