「独り言」:ソフトウェア界隈の「シンギュラリティ」は,もう既に。。。

40年以上ソフトウェア開発を行ってききました。
私が、仕事としてプログラムを書き始めた頃は、プログラミング言語を学び、作成するプログラム周辺の知識を学び、コードを書いては動かし、上手くいなかないことの原因をまた調べて、コードを修正することの繰り返しです。
時代と共に、プログラム実行のための環境として、OSやフレームワーク、ライブラリの助けを借りて、全てを自前で作らなくてもよくなりました。
プログラムにもよりますが、アプリケーション開発では、将に、色々な部品を組合わせる技術が、一般的なプログラミング開発ともいえます。
もちろん、H/Wを直接制御する場合が、部品ではなく、本当に、CPUのStepをプログラミングすることにはなりますが。。

AIがプログラミングへ与えたインパクト

AIは、何度かの流行がありました。
第一次:AIの誕生(1950~1970年代)
第二次:知識ベース(1980年代)
第三次:ビッグデータと機械学習(1990~2010年代)
第四次:自然言語とGPT(2020~現在)
ざっと書き出すと、こんな流れでしょうか。

第三次までは、殆ど力業的な面が多く、コンピュータの計算能力次第で、人間にできないような計算やマッチングを行ったりしていました。

しかし、第四次は、「シンギュラリティ」を感じさせるものがあります。
これは、あくまで、私の個人的見方です。

AI研究をされている人からすると、「まだ、自立した思考をしていない」とか「大量の学習の結果の学習結果を元に、確率的に導き出しているだけだ」とか、「Aは嘘を平気で答える(ハルシネーション)」など、確かに、そういわれると、そうとも思えます。

しかし、例えば、未知のプログラム開発の為に、問を投げかけると、それなりのコードを生成してくれます。
もちろん、正しいときもあれば、間違っていることもあります。
しかし、それなりにコードを生成してくれます。

ChatGPT/GitHub Copilot/Google Gemini/Microsoft Copilot…などの最近の生成AIを、プログラム開発に利用できるレベルにまで達しているように思います。

コード生成に限らず、エラーとコードを与えて、原因の推定と、対策提示なども、ネットの情報も加味して答えてくれます。
もちろん、その答えを鵜呑みすることはできないですし、対策を実行しても、改善せずに、対策の堂々巡りになることもあります。

それでも、AIを開発に利用する価値を感じます。
既に、「シンギュラリティ」を越えているのかもしれません。

これからプログラミングの世界へ踏み込む人へ

40年のプログラミングをとおして、最近の2~3年の開発スタイルは、劇的に変わりました。
実際に、プログラミングを行うには、プログラミング言語や、開発フレームワークの知識だけでなく、対象の仕組みなどへの理解がとても重要です。
そのような情報を含めて、AIで情報を収集したり、開発の方式などを整理するなど、プログラミングの前工程でもAIを活用できます。

しかし、注意が必要なこともあります。
AIの応答を鵜呑みしないための、開発者自身の判断力と理解力です。

これは、経験と呼ばれるもので、AIが与えるものではなく、自分自身の中で芽生えさせるものなのです。
これだけは、自分の中に作り上げなければなりません。