最近のPHPのセキュリティ更新をきっかけに、AI時代のプログラミング言語選びについて考えました。昔からC/C++を主力としており、現在もWebシステムの中核に使っています。
1、コードを人間が全部書く時代とは違うPHPやPython、JavaScriptは少ない記述量で機能を実装できることが大きな魅力です。一方、AIに実装を任せられるなら、コードを短く書けることだけで言語を選ぶ必要は以前より小さくなるかもしれません。ただし生成物のレビュー、テスト、運用の責任は残ります。
2、ランタイム依存を減らすという発想PHP、Python、Node.jsやJavaの実行基盤は便利ですが、処理系そのものの更新も必要になります。C/C++のネイティブプログラムなら、そうしたランタイムを導入せずに動かせる構成も選べます。ただしlibc、OpenSSL、libcurlなどの依存やOSの脆弱性まで消えるわけではありません。
3、C/C++自身にも安全性の課題があるC/C++にはバッファオーバーフロー、Use-after-free、未定義動作などメモリ安全性の課題があります。PHPの処理系自体も主にCで実装されています。単にC/C++へ置き換えれば安全になる、と考えるべきではありません。
4、AI生成コードを検証するAIによる作業効率化を活かすなら、生成コードにコンパイラ警告、静的解析、AddressSanitizer、UndefinedBehaviorSanitizer、fuzzing、テストを組み合わせたいところです。検証済みの既存コードをむやみに全面書き換えず、少しずつ改善するのが現実的です。
c++ -std=c++20 -Wall -Wextra -Wpedantic \
-fsanitize=address,undefined -g \
sample.cpp -o sample新規に外部入力を処理するプログラムを書く場合は、メモリ安全性を重視してRustやGoも検討できます。既存C/C++資産を活かす方針と、新規部分でより安全な技術を選ぶ方針は両立できます。
6、最終的に重要なのは小さく理解できる設計AIで実装速度が上がるからこそ、依存関係を増やし過ぎず、攻撃面を狭め、再現できるビルドと継続的な検証を大事にしたいと思います。C/C++を続ける理由は、万能だからではなく、蓄積した資産と知識を活かしながら確実に管理できるからです。


