少し思考実験的な問いです。
高級言語は FORTRAN(1957) に始まり、人が書いて人が読むことを前提に発展してきました。そこから約70年。90年代にはCASEツールが設計モデル → コード生成を掲げ、2010年代にはノーコード/ローコードがGUIモデル → コード生成を一般化しました。ただしいずれも最終成果物は人が読むことのできる高級言語のコードでした。
一方、生成AI時代のコーディングは少し様相が違います。AIが書き、AIがレビューし、人はあまり読まず、意図と確認に集中する開発スタイルが現実になりつつあります。
ここでふと思うのですが、人が読む前提の高級言語とは別に、最初からAIが読むことを前提にした言語や記述形式が本格的に設計されるフェーズに入っていないでしょう?それはJavaやPythonの後継というより、仕様・状態・制約・ワークフローを記述する AI最適化された構造記述言語 のようなものかもしれません。
これは単なる開発効率の話ではなく、「プログラミング言語とは何か」という定義自体が少しずつズレ始めている兆候と思っています。皆さんはどう見ますか?
バイナリ自動生成で勝手にバックドア仕掛けられてたとかありそうなので、人間が読めることは大事だと思います。
バイナリをリバースエンジニアリングするAI使って、人も読めるとか?!
要は、どちらの状態が平常の扱いなのかの違いだけかもしれません。AIからしてみたらどちらも難なく可読できるなら。
開発プロセスとして担保したいのはあくまで振る舞いの結果であって、テストなどで適切に振る舞っていることが確認できれば問題ない。今の AI は人が確認しないといけないので高級言語を使っていると考えています。
なるほど、可読性というより、振る舞いをどう保証するかという話ですね。人が読むかどうかよりも、テスト、検証、実行結果の保証が担保されていれば成立する、という考え方は確かに本質的かもしれません。
今はAIの生成物を人がレビューする前提なので高級言語が必要だけど、もしAI同士で生成・検証・修正が閉じる世界になるなら、人間可読なコードである必要自体が無くなってきますね。
変更容易性の観点も重要です。生成AIって意外と人間と似ててコンテキストが少なくて、それをオーバーしちゃうとすぐに破綻するんですよ。これっていわゆる人間のワーキングメモリと似てるんですよね。
だから、結局は Clean architectureや、過去のデザインパターンなど、いかにSOLID原則にのっとって疎結合かつ凝集度を高く設計し、可読性を高めて変更容易性を高く保持し続ける活動をやらなければならない、ってスタンスは変わらないと思います。
これをレビューでバキバキ直してくれるAIは出てくるので、おそらく人間がオンコールで意思決定だけするようにはなると思いますけど、たぶんコード自体はそんなに現状と変わらないかな、と思っています。
AI開発に最適化された言語やフレームワーク、っていうのは出てきてもおかしくないですねー。
ただ、バイナリで全部実装できるか?というと、少し懐疑的ですね。
料理を作る時にそれぞれの栄養素から定義するかというと、そんな面倒なことはしないと思います。
AI向けの言語は今後出てきそうですね。
半年以上前ですが、AI同士が言語ではなく音声プロトコルで会話しているデモもありましたし、そう遠くない未来にAI専用言語が出てきてもおかしくはないでしょう。
ただし、AIが書いたものに人間が責任を持つということはしばらく変わらないはずです。
AIが専用言語でコードを書き、それを人間用に「コンパイル」して監査することになるんじゃないですかね。
サービスリリースまで出来るbolt.newやbase44を触ってみると、人がコードを書く必要はなくプロンプトだけで終わる世界はいつか来そうだなと思ってますね。
(AIが全部直すのでフレームワークすらいらないかなと)
ただ、問題は今のアプリやWEBは高級言語ありきでリリースできる環境なのでそんな簡単に消えることはないかなと。(長い目では知らんけど)
AI向けにもっと簡単な中間言語はできるかもね?って感じですかね〜
AI専用の言語で書かれたコードを、AIがレビューして、AIが本番環境にデプロイして、障害起こって、人間がオンコールで叩き起こされるという未来ですか?
書いてもいないサービスのオンコールとか地獄ですね
自分の知らないところで起きたものをオンコールされるは確かに地獄ですが...
障害が起きたら自動で1つ前にロールバックすれば良いし、または直るまで修正リリースを続けるとかで解決できそうなので、あんまり懸念点にはならないかなぁと。
障害が起きたらロールバックすればソフトウェアは巻き戻りますが永続化層と現場は大混乱なんすよねえ。ロールバックすればすべて直るなら今もそうしてるし。あと障害もアラートもログにも現れずサイレントで起こったらAIはどうやって検知するんだろう
技術がいくら発展しても商売の責任の所在が人間であり続ける以上、全自動になるのはかなり先な気がします。
仮にAIが全てやってくれるとなっても、人間に責任を求められるなら可読性を維持したい、コードのブラックボックス化は避けたいという心理が残り続けるような気がします。
ここでは全自動が実現するかという仮定ではなく、人間が読まないコードが登場するかを問うています。
コードを生成し、動かして確認するのはAIでもやれるかもしれませんが、最終的な確認、要件を満たしたかを判断するのは人間でしょう。それは同意です。そこに至るまで、修正→ビルド→確認のループを、完成手前までAIが進められれば、そこに人がコードを読んで修正する必要がなくなり、つまりは可読性は不要のコードで良いから、よりAIに最適化された言語で良いということになるのでは。
思えば現在の高級言語はみな、人が書いて読むことを前提としています。COBOLなど英語に近い書き方を目指してビジネス向けに開発されたし、数値を10進数で扱うほどです。そのパラダイムが変化してゆくのでは、という仮説です。