
プログラミング言語はどれがお得?(後編)

注文の多いプログラミング言語
世の中にプログラミング言語は溢れかえっています。この言語の大海からどの言語を選べばいいのでしょうか。まさに選び放題です・・・とはなりません。過去のしがらみがあります。以前のシステムがCで作られているのであれば、Cになるか良くてC++の選択をするしかありません。これが短期的には一番お得だからです。これが世の中の仕組みです。
でも以前のシステムが太古の技術で作られていたときは、現在の技術で作り直す必要があります。これは太古の技術が伝統芸能として引き継がれていないからです。例えば、伝統芸能COBOLは後継者がおらず、滅びの道を辿ることが予想されるので、現代芸能のJavaに引き継がれるでしょう。
言語の選択で一番多い理由は、その言語を操れるプログラマがいるかどうかです。無い袖は振れません。いないプログラマはプログラミングできません。新しい言語を学ぶのは、その言語が流行するかどうかの未来予測をしてからです。直ぐには学べません。だから現状のプログラマで対応可能な言語を選びます。
設計は言語の影響を受けるのか?
プログラミングそのものはソフトウェア開発全体に占める割合は小さいです。COCOMOの都市伝説化した工数比率は、設計:製造:試験=3:4:3です。プログラミングは製造の中に含まれ、つまりはプログラミングは全体の4割もありません。
設計は本来、実装するプログラミング言語に影響しません。実装する言語がJavaであろうが、Pythonであろうが、COBOLであろうが、アセンブラであろうが、設計はこれらの言語とは関係せずに独立しています。
オブジェクト指向設計をすれば、実装する言語にオブジェクト指向機能がなくても関係ありません。オブジェクト指向のモデル図を基に、何らかの方法でオブジェクト指向的に実装します。例えば、Cで実装するなら、構造体と関数ポインタを使うことになるでしょう。面倒ですが。
というのは嘘で、設計は言語の影響を受けます。マジに受けます。オブジェクト指向設計するときにはオブジェクト指向言語で実装します。これが一番平和です。それが一番自然です。逆に言えば、言語が決まれば、その言語にあった設計になります。
木造住宅には木造住宅の設計が必要です。強度計算も違ってきます。自然言語と概念の関係も同じです。日本語で考えれば情緒的になり、論理的に考えたいときは英語で考えます。概念は言語に依存します。これが文化というものです。
関数型言語を採用すれば、並行動作の設計は簡単になります。なんて言ったって副作用のない美しい清らかな世界が待っていますから(宗教ではないので安心してください)。
お得なプログラミング言語
一つのプログラミング言語にロックインしない方がいいです。最低でも2か国以上の言語を操れるようになりましょう。マルチリンガルこそ、プログラマの正義です。
でも類似した言語では意味がありません。重量級の言語を覚えたら、もう一つは軽量級の言語にしましょう。それを使い分け、またはハイブリッドで使えるようにしましょう。
JavaとPython、まぁ,食いっぱぐれはなさそうな組み合わせです。C++とJava、これは親戚なので、別の言語を覚えるようにしましょう。COBOLとFORTRAN、あの、今を生きましょう。HaskellとGo、マニアですか。
ということで今日の結論。「プログラミング言語はマルチリンガルで」以上です。
前編:プログラミング言語はどれがお得?(前編)|五味弘 (note.com)
参考:関数型プログラミング事始め (1) 基本|五味弘 (note.com)
マンガFAQの引用元:ソフトウェア開発分析データ集2022 | 社会・産業のデジタル変革 | IPA 独立行政法人 情報処理推進機構
いいなと思ったら応援しよう!
