はじめに
日頃ご支援・交流いただいておりますみなさま、あけましておめでとうございます。今年もどうぞよろしくお願いいたします。
Qiitaでの本年初投稿記事となりますので、少し日本語プログラミング言語の未来について考えてみます。SF好きなわたしのあくまで憶測で、実現性の妥当性を主張するものではありません。
ユニバーサル・プログラミング言語としての自然言語各国語の台頭
生成AIの自然言語処理能力が飛躍的に向上した結果、自然言語からのプログラミング言語への変換が実用化されつつあります。
この記事でいうユニバーサル・プログラミング言語とは汎用目的のプログラミング言語とい意味で、特定用途向けではなくあらゆる開発目的に使えるという意味と、もうひとつは前記の意味での各種の汎用実装言語、C/C++,Java,C#,Go,TypeScript,JavaScript,Python,PHP,Ruby等に対する汎用トランスコンパイラ言語という意味の大きく2つです。
わたしの思い描く未来
自然言語には各言語の文化由来の自然定義の語義の単語が存在し、それらの意味の多義性、多用性、多態性がまさに言語を単なる人間同士のコミュニケーションツールとしての役割だけではなく、各国語の背景となる文化、文学、詩、歌謡といった芸術の域にまで昇華させる源泉となっているとわたしは考えます。
生成AIの能力が、過去の文化遺産を大規模学習することで、才人が行える芸術的成果物をも出力できるようになりつつあるという面はここでは論じません。
ソフトウェアの設計情報としてのソースコードとしての実装言語の役割は、このような意味の多義性は、存在しても区別できる情報で識別して最終的には一意になる構造を持っており、設計者が意図した構造を一意に定義する役割として存続していくと考えております。
つまり、設計者が生成AIにざっくり 自然言語で構想を伝えて、指定した実装言語のなんらかのソースコードが生成された場合、それはあくまでブラックボックス化された処理の結果のため、設計者の意図に沿うか沿わないかは、ある意味ギャンブル性が存続すると考えております。
これは生成AIの自然言語処理能力がどんなに向上しても、自然言語自体がもつ一意性のなさという構造的な制約が存在するからです。
日本語プログラミング言語はあくまで構造化された形式言語
この意味での日本語プログラミング言語は、自然言語入力のトランスコンパイル先としても存続するとわたしは考えております。生成AIの学習モデルの範囲に日本語プログラミング言語の構文情報が獲得されれば、その他の文字をベースとしたその他のプログラミング言語と同様、日本語プログラミング言語のより厳密なソースコードに変換してもらえるようにもなるでしょう。
また、生成AIへの入力情報としても自然言語より構造化された言語の方がより確度の高いソースコードを生成できることでしょう。現状は生成AIが日本語プログラミング言語の構文を事前学習していないので、覚えさせるところで力尽きます。
おわりに
書き終わってみるとぜんぜんSFっぽくありませんでした。失礼しました。