ついにAI時代が到来しました。これまでのコンピュータとの対話にはいわゆるプログラミング言語が必須でしたが、生成AIが英語や日本語などの自然言語を認識して、プログラミング言語のソースコードをある程度自動生成できる世界が現出しました。では、プログラミング能力やプログラミング思考力は不要となっていくのでしょうか?
いいえ、逆にAIを使う立場で思考するには、プログラミング能力やプログラミング思考力は基盤的なスキルとしてより必須なものとなっていると言えます。
プログラミング的思考力といった場合、英語由来のカタカナ語のコンピュテーショナルシンキングまたは計算論的思考と比較される場合もあるようですが、とりあえず「プログラミング的思考力」というと下記のようなことを一般的に指すとします。(筆者のアレンジを含みます。)
分解・整理する 複雑な問題を小さな問題に分けて認識する
再構成する 異なる要素を組み合わせて新しい要素を再構成する
結果予測する 思考の中でいくつかの状況を想定して結果を予測する
抽象化する 具体的な事例から一般的な原理を導き出す帰納的な分析力
言語化する 自分の考えを明確に表現し、他者に伝える演繹的な力。
ほぼエンジニアリングの問題解決能力と同じとも言えますが、対象がソフトウェア開発の場合はこれらのことを「プログラミング的思考力」と表現しているように思われます。最後の「言語化する」は文理両刀ではない人材にとっては、ある意味相対的にもっとも弱点とも考えらますが、必須は必須です。
今日のプログラミング言語は英語由来で記号中心の形態のものが百花繚乱という状態であり、その細かい多様な文法ルールは、プログラミング初心者やプログラミングを専門としない人材に高いハードルとなっています。
しかし、個々のプログラミング言語によって記述されるソースコードには、順次進行、条件分岐、反復といったアルゴリズムの基本構造が存在しており、そのパターンを認識・発案することこそが重要です。
そして、このアルゴリズムの基本構造は本質的にこれらのプログラミング言語の細かいルールに直接依存するものではなく、その基本構造はいかなる言語でも記述可能です。しかし、普通の言語のままでは定義の一意性に欠ける面がありますので、一定の形式化された言語、すなわちプログラミング言語が必要となります。
このプログラミング言語を使いこなす能力の基盤となるのがプログラミング思考力で、基本的には順次進行、条件分岐、反復の基本的な構造を組み合わせて創造していきます。このプログラミング思考力は理系人材が基盤とする問題解決能力のひとつの側面であることから、この点で理系人材には有利な面があり、基本的にこれらの細かい言語仕様のプログラミング言語を使いこなすことができます。
今日のプログラミング言語のほとんどは、英語由来の人口言語または一部通常言語の語彙に依らない完全な人口言語ですが、日本語由来のプログラミング言語も存在します。ここでは、前記アルゴリズムを表記する言語としては日本語由来のプログラミング言語の併用をを理系人材の方に推奨しています。
なぜならそれは自身が発案した創造物を言語化する際に必ず役立つからです。これは英語由来のプログラミング言語の習得を妨げるものではありません。英語由来の一般的なプログラミング言語と日本語由来のプログラミング言語で同時に言語化(ソースコード化)することができるのであれば、恐らく他の理系のプログラマからも差別化される優位なスキルを確保することを意味します。
プログラミングを広く自分のアイデアを実現する手順を考案することと再定義するのであれば、日本語プログラミング言語ができるハードウェアエンジニアやシステムエンジニアならば、自分が想像した企画内容を、ステークホルダ各位に対して日本語プログラミング言語を基調とした厳密なロジックで意図を正確に伝えることができます。
エンジニアが生成AIと対話してプログラミング言語のソースコードやオブジェクトコードを生成させることは、生成されたソースコードの意味を詳細に理解できるという点で、プログラミング言語のソースコードが読めない人材がAIに指示してあくまでブラックボックス的に動作結果を評価するより、アドバンテージがあると考えらます。
ソフトウェアの需要は今後も爆発的に増えていくと予測されますので、大規模なテンプレート的なソースコードを生成AIが生成して、従来の人海戦術を一定緩和してくことが想定されます。
従来のプログラミング言語で生成AIに大規模なソースコードの生成を指示することは、逆に効率の点であまり意味がなく、現在はいろいろなプロンプト手法が開発確立されている途上にあると言えます。日本語プログラミング言語は従来のプログラミング言語より抽象度が高い場合が多く、言語モデルの背後に詳しい実装を隠ぺいすることも可能です。
したがって、普通の言語の日本語で生成AIと対話するよりは、普通の言語に近い状態で形式化されて構造化されたより厳密なプログラミング言語で対話した方が、手戻りも少なく意図したとおりの結果が期待できます。また、生成AIへのプロンプト情報としても、他の形式言語より他のステークホルダと共有しやすい点があります。
日本語プログラミング言語はそのような高度利用も考えられる将来性のあるプログラミング言語です。この点は理系限定という意味ではなく万人に通づるメリットです。