はじめに
この記事は一般理系人材向けに書いた 日本語プログラミング言語Mind40年 - いま理系こそ日本語プログラミングすべき5つの理由 というサイトの記事を理系出身のソフトウェアエンジニア向けに書き換えたものです。
基本的にプログラミングが得意なアプリケーションデベロッパさん、システムエンジニアさんなどを想定しています。一般的なプログラミング言語が得意な方が日本語プログラミング言語を第4第5言語として習得されることを推奨するものです。
1 AI時代の必須スキル:プログラミング思考力
ついにAI時代が到来しました。AIを使う立場で思考するには、プログラミング能力やプログラミング思考力は基盤的なスキルとしてより必須なものとなっています。プログラミング言語が得意なソフトウェアエンジニアの方は既にAIを十二分に使いこなされていると考えられます。
2 理系ソフトウェアエンジニアの強み:論理的思考力とプログラミング思考力
プログラミング的思考力といった場合、英語由来のカタカナ語のコンピュテーショナルシンキングまたは計算論的思考と比較される場合もあるようですが、とりあえず「プログラミング的思考力」というと下記のようなことを一般的に指すとします。(筆者のアレンジを含みます。)
分解・整理する 複雑な問題を小さな問題に分けて認識する
再構成する 異なる要素を組み合わせて新しい要素を再構成する
結果予測する 思考の中でいくつかの状況を想定して結果を予測する
抽象化する 具体的な事例から一般的な原理を導き出す帰納的な分析力
言語化する 自分の考えを明確に表現し、他者に伝える演繹的な力。
ほぼエンジニアリングの問題解決能力と同じとも言えますが、対象がソフトウェア開発の場合はこれらのことを「プログラミング的思考力」と表現しているように思われます。最後の「言語化する」は文理両刀ではない人材にとっては、ある意味相対的にもっとも弱点とも考えらますが、必須は必須です。
3 プログラミング言語能力とプログラミング思考力
今日のプログラミング言語は英語由来で記号中心の形態のものが百花繚乱という状態であり、その細かい多様な文法ルールは、プログラミング初心者やプログラミングを専門としない人材に一定のハードルとなっています。そんなことはないと主張される方もいらっしゃるかと思いますが、一般的な人材は理系であっても実装現場を離れると基本的に細かいプログラミング言語の仕様は忘れていきます。
個々のプログラミング言語によって記述されるソースコードには、順次進行、条件分岐、反復といったアルゴリズムの基本構造が存在しており、そのパターンを認識・発案することこそが重要です。そして、このアルゴリズムの基本構造は本質的にこれらのプログラミング言語の細かいルールに直接依存するものではなく、その基本構造はいかなる言語でも記述可能です。
このプログラミング言語を使いこなす能力の基盤となるのがプログラミング思考力で、基本的には順次進行、条件分岐、反復の基本的な構造を組み合わせて創造していきます。このプログラミング思考力は理系人材が基盤とする問題解決能力のひとつの側面であることから、この点で理系人材には有利な面があり、基本的にこれらの細かい言語仕様のプログラミング言語を使いこなすことができます。
そして、ソフトウェアエンジニアであれば現役時代は、あるいはひとによっては生涯、これらのプログラミング言語を使いこなしていきます。
4 日本語プログラミング言語の利点
今日のプログラミング言語のほとんどは、英文字由来の人口言語または一部通常言語の語彙に依らない完全な人口言語ですが、日本語由来のプログラミング言語も存在します。ここでは、前記アルゴリズムを表記する言語としては日本語由来のプログラミング言語の併用をを理系ソフトウェア開発人材の方に推奨しています。
なぜならそれは自身が発案した創造物を言語化する際に必ず役立つからです。これは英語由来のプログラミング言語の習得を妨げるものではありません。英語由来の一般的なプログラミング言語と日本語由来のプログラミング言語で同時に言語化(ソースコード化)することができるのであれば、恐らく他の理系のプログラマからも差別化される優位なスキルを確保することを意味します。
プログラミングを広く自分のアイデアを実現する手順を考案することと再定義するのであれば、日本語プログラミング言語ができるハードウェアエンジニアやシステムエンジニアならば、自分が想像した企画内容を、ステークホルダ各位に対して日本語プログラミング言語を基調とした厳密なロジックで意図を正確に伝えることができます。
5 趣味として日本語プログラミング言語
複数のプログラミング言語を既に習得しているソフトウェアエンジニアの方に、これを業務で導入してくださいということを主張するものではありません。別記事で論じているように日本語プログラミング言語関連プロジェクトには一定の弱点が存在し、今日の大規模フレームワークの存在を前提としたアプリケーション開発、システム開発にはかならずしも適合しない側面が事実としてあります。
しかし、だからといって日本語プログラミング言語が無用なものとは考えられない。日本語プログラミング言語も計算機ができることを全て再現できるモデルですので、あなたの潜在的なコンピタンスの拡張に寄与できるものと確信しています。
おわりに
主に理系ソフトウェアエンジニアのロジカルシンキングにまつわるコア・コンピタンス形成について訴求していますが、本記事での用語の定義は ロジカルシンキング(MECE)とプログラミング的思考力(またはCT)とアルゴリズム的思考力の階層構造まとめ をご確認いただけると幸いです。
祝!日本語プログラミング言語なでしこ生誕20周年1
祝!日本語プログラミング言語Mind生誕40周年
-
なでしこのバージョン1が正式リリースされた2005年をもって生誕と想定 ↩