AIにコーディングを任せることで、徐々にプログラミングの能力が衰えてしまうのではないか──そんな不安を感じることがある。
最近、Objective-Cを書く機会があり、その際に気づいたのだが、どうやらAIコード生成はこの分野があまり得意ではないらしい。たとえSwiftであっても、コンパイルが通らないコードを出してくることがある。モバイルアプリエンジニアの人にコード生成が当初あまり刺さってないように感じたのはこういう事情もあったのだろうか。ちなみにFlutterは軽快に書いてくれるらしい。
そこでふと思った。「AIがうまく書けないプログラミング言語を使えば、プログラミングの筋力のようなものが衰えずに済むのではないか?」
少し安直だが、そう考え、日常的に使う言語として、AIとの親和性が”高くない”ものを探してみることにした。とはいえ、Objective-Cまで妥協すると、どことなくCOBOLのような哀愁を感じてしまう。できれば、最近の”イケてる”言語勢の中から選びたい。
そこでChatGPTに相談し、いくつかの候補を検討してみた。
まず、Rustには「エディション」という概念があり、エディションが変わるたびに大きな変更が入るため、AIとの相性があまり良くないらしい。Cコンパイラのバージョン番号のようなものだと理解した。同じ理由で、EcmaScriptもおすすめの候補に挙がった。
こうしたバージョニングが明確な環境では、常に最新の仕様だけを優先して使うことで、AI(LLM)の習得速度を上回ることができるはずだ。
あとは先にあげたSwiftもまだまだ言語の更新が活発なフェーズだし、Actorなどの関数型を思わせる高度な機構も存在するのでやりがいはありそうだ。なにしろデファクトエディタのXcodeのAI統合がしょぼい。それが強みになる。しかし個人的にはちょっと飽きてるのでパスをする。
次点として、ZigとNimをおすすめされた。Nimについては名前を聞いたことがある程度だが、Zigには思い当たる点がある。Rustよりも普及のタイミングが遅かったため、私が知った時点では非同期処理の仕様が二転三転していた。Rustなら、何かの間違いで業務利用されることもあるかもしれないが、Zigはまずない。そういう意味で、趣味で触るにはちょうどいい言語だろう。
また、Mitchell HashimotoやBunのJared Sumaryといった尊敬できるハッカーの中にもZigユーザーがいる。そういう意味でも、選択肢として申し分ない。
またエディタ選びも重要だ。私のVSCodeやCursorの環境はすでにAIドンドンイケイケ構成にガッチリ設定されており、プロファイルの使い分けが必要だ。
なのでDHHの真似してNeoVimでも使おうと思っていたがZedがちょうどいいことに気づいた。Zedは昨今のエディタだからAI対応圧にかかり、ちょっとしたClaude統合が入ってしまっているが無効にするのは容易。それにLinuxデスクトップでも苦労なく動く。
というわけで皆さんもZedでZigを書きましょう。