見出し画像

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

ソフトウェア開発をするときに、どのプログラミング言語を採用するのがいいのでしょうか。もちろん過去のしがらみがありすぎて、自由に選ぶわけにはいきません。でもどの言語が理想でしょうか。手続き型やオブジェクト指向、関数型など言語の種類もあり、論争が起こるかもしれません。ちなみに私は関数型言語推しです。でも言語の理想と現状は乖離しているでしょう。でも大丈夫です、実はソフトウェア開発の大部分はプログラミング以外で占められていて、顧客はあまり関心ありません。図引用元:IPA ソフトウェア開発分析データ集 FAQ

プログラミング言語いろいろ

この章を執筆していたところ、あまりにも文字数が多くなりましたので、今回は「プログラミング言語はどれがお得?」は前編と後編に分けることにしました。「プログラミング言語いろいろ」の章は、枕にする章だったのですが、書きたいこと、思い出がいっぱいで、自然増殖してしまいました。

太古のプログラミング言語

プログラミング言語はいろいろあります。太古の昔からメジャーとなった言語には、事務用のCOBOLを始め、科学計算用のFORTRANがありました。いえ、まだあります。IPAのソフトウェア開発分析データ集2022でも、COBOLはまだその威容を誇っています。1972年ではなく2022年の出版であることに注意してください。
 
COBOLとFORTRANだけではなく、昔ながらの言語は多くありました。ALOGOL系と言われる言語は今、多くありますが、その祖先のALGOL本体も太古の昔に登場しています。昔のコンピュータの教科書に標準的に採用されていたPASCALも太古の昔からありました。
 
でも今も残っているのはCOBOLと一部でFORTRANくらいでしょう。

1980年代のプログラミング言語

その後、C言語が現れ、1980年代には世の中を席捲しました。エンジニアにとっては「はじめてのC」という本を買うのが、なんとなく恥ずかしかったものです(って意識しすぎ!)。
 
でもこの時代に忘れてほしくないのは、第2次AIブームに乗って、PROLOGLISPという古いのに目新しさで、一部で注目された言語がありました。第5世代、AI専用ワークステーション、なにもかも、みな懐かしい。
 
また同時期ですが、SmallTalk-80という革命児が現れ、オブジェクト指向が一気に流行りだしました。どれくらいかというと、他の言語がこぞって、オブジェクト指向機能を自分に追加しだしました。C++Objective-CCommon Lispもみんなそうです。
 
その当時、言語仕様書のページ数が世界最大の言語であるCommon Lispを作っていたのが、懐かしいです。「母さん、僕のあのLisp言語、どうしたんでしょうね。」、いえ、なんでもないです。

1990年代のプログラミング言語

90年代はJavaの幕開けの時代でした。Oakという言語が言語系のmlで話題になっていました。これは明らかに当時、C++が付け足し的なオブジェクト指向であったのに対抗したものでした。そしてJavaと改名してからはC++のライバルとして、凌駕するものとして、華々しく登場しました。

MS社のがんばりにより、C++も負けていません。まさにJavaとC++の2強時代になりました。Visual Basicも入れた3強で言語のシェアを占めていました。

またJavaやC++とは別に、90年代になると、一時期、関数型言語の潮流がやってきました、たぶん、そう信じたいです。H本という「はじめてのC」と同等な略語で知られる本で有名になったHaskellがあります(すみません、逆です)。その後、関数型の考えがいろいろな言語に採用されるのはオブジェクト指向と同じです(と信じたい)。

なお、90年代の終わりに、日本人のがんばりにより、日本初の日本発の言語「ISLisp」がISOの規格になりました。なにもかも、みな、なつかしい。

21世紀のプログラミング言語

21世紀になると、軽量言語(LL: Lightweight Language)がもてはやされるようになりました。3Pと呼ばれるPerl, PHP, Python がスクリプト言語として流行しました。

そして忘れてはならないのは、Rubyの登場です。まつもとゆきひろ氏による言語です。これもISLisp同様にISO規格になりました。Ruby on Railsが便利すぎて、流行しました。

その後、第3次AIブームではPythonが大流行しています。AIとPythonが切っては切れない関係になっています。

ここでとあるLisperの独り言ですが、PythonもRubyもLispの影響を受けています。JavaもGCの大先輩であるLispからのものです。Lispが原則として持つラムダ計算も、Javaなどの多くの言語で導入されています。Lisp万歳、関数型言語万歳!

ということで今日の結論。「プログラミング言語は多く語りたい」以上です。

後編:プログラミング言語はどれがお得?(後編)|五味弘 (note.com)

参考文献:
「はじめてのLisp関数型プログラミング」https://gihyo.jp/book/2016/978-4-7741-8035-9
「プログラミング言語論」https://www.coronasha.co.jp/np/isbn/9784339027044/
「組込みJavaプログラミング入門」https://www.amazon.co.jp/dp/488373255X

マンガFAQの引用元:ソフトウェア開発分析データ集2022 | 社会・産業のデジタル変革 | IPA 独立行政法人 情報処理推進機構

よろしければサポートをお願いします!