はじめに
この記事は一般文系人材向けに書いた 日本語プログラミング言語Mind40年 - いま文系こそ日本語プログラミングすべき5つの理由 というサイトの記事を文系出身のソフトウェアエンジニア向けに書き換えたものです。
基本的にプログラミングが得意ではないシステムエンジニアさんなどを想定していますが、もちろん得意な方が日本語プログラミング言語を第2第3言語として習得されることを否定するものではないです。
1 AI時代の必須スキル:プログラミング思考力
ついにAI時代が到来しました。これまでのコンピュータとの対話にはコンピュータに細かく手順を指示するプログラミング言語が必須でしたが、生成AIが英語や日本語などの自然言語を認識して、プログラミング言語のソースコードを自動生成できる世界が現出しました。
では、プログラミング能力やプログラミング思考力は不要となっていくのでしょうか?
いいえ、逆にAIを使う立場で思考するには、プログラミング能力やプログラミング思考力は基盤的なスキルとしてより必須なものとなっていると言えます。
2 文系の強み:コミュニケーション言語能力(とプログラミング言語能力)
コミュニケ―ション能力は一般に理系人材より文系人材のが高いと言われています。コミュニケーション能力には言語コミュニケーションと非言語コミュニケーションがあります。この中で言語コミュニケーション能力は言語能力に依存します。
言語能力には1.創造的思考(とそれを支える論理的思考)の側面、2.感情・情緒の側面、3.他者とのコミュニケーションの側面からなると言われています。(文部科学省・資料5言語能力について「整理メモ」より)
一方でプログラミング能力は上記言語能力の中の1.に支えられています。広い意味で他者をコンピュータととらえれば、コンピュータとのコミュニケーションの側面があるとも言えます。
一般にプログラマー職には理系人材が多いとされていますが、システムエンジニアなど顧客とのコミュケーションが重視される職種では、文系人材こそが活躍しやすい職種と言えます。
3 プログラミング言語能力とプログラミング思考力
今日のプログラミング言語は英語由来で記号中心の形態のものが百花繚乱という状態であり、その細かい多様なシンタックスルールは、プログラミングを日常的な作業としない方にとって高いハードルとなっています。
実際の個々のプログラミング言語によって記述されるソースコードには、順次進行、条件分岐、反復といったアルゴリズムの基本構造が存在しており、そのパターンを認識抽出し発案することが職業的プログラマには求められます。
アルゴリズムの基本構造は本質的にこれらのプログラミング言語のシンタックスには依存しておらず、前述のアルゴリズムの基本構造はいかなる言語でも記述可能です。
ただし、自然言語のままでは定義の一意性に欠ける面がありますので、一定の形式化された言語、すなわちプログラミング言語が必要となります。
4 プログラミング思考力と日本語プログラミング言語
プログラミング言語のほとんどは、英語由来の形式言語または一部自然言語の語彙に依らない完全な人口言語ですが、日本語由来のプログラミング言語も存在します。
ここでは、前記アルゴリズムを表記する言語としては日本語由来のプログラミング言語の習得を文系出身のエンジニアに推奨しています。
なぜならそれは自身が発案したアルゴリズムを言語化する際に必ず役立つからです。そして、内語と同じ言語のプログラミング言語のが習得はしやすいからです。
これは英語由来のプログラミング言語の習得を妨げるものではありません。英語由来の一般的なプログラミング言語と日本語由来のプログラミング言語で同時に言語化(ソースコード化)することができるのであれば、恐らく理系人材のプログラマからも差別化される優位なスキルを確保することとなるでしょう。
日本語プログラミング言語ができる文系エンジニアたとえば顧客要求をとりまとめるシステムエンジニアならば、自分が詳しくないプログラミング言語のプロジェクトでも、理系プログラマに対して日本語プログラミング言語でロジックを正確に伝えることができます。
5 AIが日本語を解する時代こそ日本語プログラミング言語
非エンジニアが生成AIと対話してプログラミング言語のソースコードやオブジェクトコードを生成させることは、ある意味、ユーザーがシステムエンジニアやプログラマと対話してプログラミング言語のソースコードを手書きしてもらう関係に近いものがあります。
そして、システムエンジニアの背後に大量のプログラマが細かいアルゴリズムのギャップを考案しながらソースコードを記述しているという点ではその人件費は莫大で、生成AIで自動化された場合手戻りを繰り返したとしてもコストメリットは大きいかもしれません。既に米国のテック大手では大量のプログラマ人材の解雇が始まっているという不穏なニュースも飛び込んできてはいます。
このあたり今後どうなっていくは不透明ではありますが、いずれにしても、ソフトウェアの需要は今後も爆発的に増えていくと予測されますので、自然言語のままの日本語で生成AIと対話するよりは、自然さを損なわないある程度形式化されて構造化されたプログラミング言語で対話した方が手戻りが少なく、より意図したとおりの結果が期待できると考えられます。
日本語プログラミング言語はそのような高度利用も考えられる将来性のあるプログラミング言語です。この点は文系エンジニア限定という意味ではなく万人に通づるメリットですね。
しかしながら、現時点での現状有姿の生成AIが日本語プログラミング言語を詳しく学習しているかというとそうでもない側面もあるので、ローカル生成AIに言語仕様を学習させるなどの準備は必要と考えられます。
おわりに
主に文系エンジニアのロジカルシンキングにまつわるコア・コンピタンス形成について訴求していますが、本記事での用語の定義は ロジカルシンキング(MECE)とプログラミング的思考力(またはCT)とアルゴリズム的思考力の階層構造まとめ をご確認いただけると幸いです。
祝!日本語プログラミング言語なでしこ生誕20周年1
祝!日本語プログラミング言語Mind生誕40周年
-
なでしこのバージョン1が正式リリースされた2005年をもって生誕と想定 ↩