プログラミング言語の簡単な歴史を初心者にもわかるように解説

プログラミング言語の簡単な歴史を初心者にもわかるように解説

 

みなさんこんにちは、文系出身のエンジニアのちょまど(@chomado)です。大手外資系IT企業でDevRel (Developer Relations) のお仕事をしています。

 

今回の記事では、プログラミング言語の歴史について書きたいと思います。私はもともとプログラミング言語が大好きで、歴史には大変興味があったので、今回、たくさん色々調べたり、ベテランの先輩エンジニアの方々に当時の様子をお聞きしたりして(ありがとうございます!)、記事にまとめました。

(*゚▽゚* っ)З「ちょまぎょです! 一緒にお勉強していこうね」

 

また、今回、Google Developers Expert の田中洋一郎さん (@yoichiro) に記事のレビュー(査読)や助言をしていただきました。誠にありがとうございました!

 

そもそもプログラムとは?

そもそもプログラムとは?

プログラムとは、コンピュータへの命令を記述したものです。

また、プログラムを作ることを「プログラミング」といいます。

 

プログラムとは、コンピュータへの命令を記述したもの

 

プログラミング言語とは??

「プログラミング言語」とは、一言で言うと、プログラミングするときに使う形式言語です。

一方で、日本語や英語など、人間の会話で使う(普通に話す)言語を「自然言語」といいます。私の周りのエンジニアには「ぼくは対人間の自然言語より対コンピュータのプログラミング言語のほうが得意だ」と言う人もいます。

 

皆さんは普段から色々なアプリケーションや、このさくマガさんのような Web サイトをスマートフォンやパソコンから使ったり見たりしていると思います。プログラミング言語は、このようなアプリケーションや Web サイトを作るために使うものになります。

 

プログラミング言語を使って

「この位置にボタンを出す」

「この部分の色は、この色にする」

「このボタンを押したら注文を確定する」

「このリンクをクリックしたら、このページを表示する」

といったような命令を書いていったものが最終的に皆さんの使っているアプリケーションや Web サイトになっています。

 

実は、このプログラミング言語っていうのは凄くたくさんの種類があって、最近人気な言語だけを並べても JavaScript、TypeScript、Go、Kotlin、Swift、C#、Rust、Python などなど本当に数えきれないくらいの種類があります。

 

プログラムを見てみたい!

プログラムを見てみたい!

プログラミング言語で処理を書いたものをソースコードっていいます。このソースコードは、アプリケーションの場合は見ることは難しいのですが、 Web サイトなどでは見られるものもあります。

 

例えば、このさくマガさんのサイトを Microsoft Edge や Google Chrome などの Web ブラウザーで表示して F12 キーを押すとアプリケーション開発者向けのツールが表示されます。このツールは、実際に Web サイトを開発している人たちの多くが日常的に使ってるツールでソースコードを見るだけではなく通信状況をみたり保存してるデータを見たりなど、他にも色々なことができます。

 

(↑ web ブラウザ Microsoft Edge のスクショ)

(web ブラウザ Microsoft Edge のスクショ)

 

普通に Web サイトを見るときは必要ないので、ここに書いてある方法で表示した人はもう一度 F12 キーを押して非表示にしましょう。

 

プログラミング言語の歴史

プログラミング言語を書いて、アプリケーションや Web サイトが作れるのがなんとなくわかっていただけたかなと思います。ここからは、その歴史について紹介していきたいと思います。

 

プログラムが動くコンピュータが出来た当初は、実は今私たちが書いているような人間の読みやすいプログラミング言語はなくて「機械語」というコンピュータが直接理解することが出来る命令で書かれていました。

さらにそれより前は、物理的な配線の組み替えとスイッチの組み替えで計算がおこなわれていました。まずはそこから見ていきましょう。

 

コンピュータが出来た当初(まだプログラミング言語が無かった時代)

プログラム可能な最初のコンピュータは、アメリカが軍事目的で開発し1945年に完成した大型コンピュータ「ENIAC」だといわれています。

厳密にいうと「世界最初のコンピュータ」に関しては諸説あります。第二次世界大戦中に軍事目的で秘密裏に開発されていたコンピュータは他にもありましたが、ENIAC は(軍事目的で開発してたんだけど)完成したときにはもう第二次世界大戦が終わってて、結局一番最初にお披露目されたコンピュータとなりました

 

こちらがその ENIAC の写真です。

ENIAC

▲出典:U. S. Army Photo

 

 (*゚▽゚* っ)З「広いね!で、どれが ENIAC なの?」

 

全部です。

 

Σ(*゚▽゚* ; っ)З「え? 全部? 部屋じゃん」

 

はい、ENIAC は、弾道計算をするために開発された、約 1.8 万本の真空管を使用した巨大なコンピュータです。大きさは幅約30m で、総重量が約30トン。10桁の10進数の加算を毎秒5000回実行することができ、これは当時としては従来の計算機に比べて千倍ほども高速という驚異的な性能を持つマシンでした。

 

今まで途方もない時間をかけて手で計算していた弾道計算が、機械を使ってできる! すごい!

とはいえ、ちなみに、1Wあたりの性能は今のスマホの演算能力のほうが数兆倍上だといわれているようです。

ひとつの小さな倉庫並みの大きさのコンピュータが、手のひらサイズになり、しかも性能が数兆倍! 約80年間の技術の進歩すごい。

 

(*゚▽゚* ; っ)З「す、すごい大きいね。で、ENIACはどうやってプログラムするの?」

 

そう。そこなんです。ENIACは

「大きすぎる」

「(大量の真空管を使っているのもあり)壊れやすい」

「めちゃくちゃ熱くなる」

「莫大な電力が必要となる(ENIAC 動かしてる間は街全体の電気がちょっと暗くなったという逸話もある)」

などなどありましたが、私がいちばん驚いたのは、そのプログラムの方法でした。 物理的に、配線の組み替えとスイッチの組み替えで計算がおこなわれていました。

 

それぞれの機能を備えた装置の間の配線をつなぎかえることでプログラミングしていたということです。

つまり、プログラムの変更には、 マシンの再配線、再構築、再設計 が必要となり、大変な作業となります。

 

(*゚▽゚* ; っ)З「今の『プログラミング』と言ったら、コードを書いて、ってなるけど、当時は物理的な配線をいじいじして操作していたのね…」

 

そうだね。そもそも当時は今みたいなプログラム内蔵式のコンピュータ(ノイマン型と呼ばれる)は無かったからね。その「プログラム内蔵式」については次の節でお話するね!

 

ENIAC を操作している写真

▲出典:U. S. Army Photo

 

ちなみに、正確に言うと、最初のENIACはたしかにプログラム制御は配線変更とスイッチ変更だけによるものでしたが、その後改良され、1948 年の修正版ではそれとあわせてFunction Tables と呼ばれる機構をプログラム格納用ROMとして使ったプログラム内蔵式も可能となっています。

 

ノイマン型 (プログラム内蔵式) コンピュータ

「ノイマン型モデル」とは、1945 年にジョン・フォン・ノイマンによって発表された、コンピュータシステムの基本構成の方式です。

大きく分けて、メモリ、処理装置、入出力と周辺機器、制御装置、という要素で構成されます。

 

ノイマン型 (プログラム内蔵式) コンピュータ

 

プロセッサのなかの、制御装置は、プログラムの命令に従い、各装置に制御信号を出し、コントロールします。処理装置(演算装置)は四則演算や大小の比較判断をおこないます。

 

プロセッサが直接やり取りするのはメモリだけです。で、ここが重要なのですが、そのメモリには「プログラム」や「データ」が保存されています。メモリにプログラムとデータを読み込み、プログラムの命令をひとつずつ実行しています。

 

(*゚▽゚* っ)З「ノイマン型(プログラム内蔵式)モデルでは、メモリにデータとプログラムを保存するっていうのは分かったわ。で、それの何がいいの?」

 

これまでは、目的の計算を行わせるためには、プログラムごとに配線を繋ぎ変えたりスイッチなど人手でやり直す必要がありましたね。プログラムを変えたかったら配線も繋ぎ変える大工事になり大変でした。

 

でも、このノイマン型モデルでは、2進数のデータとして読み込んであるプログラムを変えるだけで良くなります。

実行したい命令列(プログラム)をデータとしてメモリに格納し、プロセッサがひとつひとつ解釈し実行してくれて、複雑な計算処理を自動的におこなうことができます。データを入れ替えれば同じ処理を異なるデータでおこなうこともできますし、高い汎用性を持ちます。

 

 

写真右がジョン・フォン・ノイマン

写真右がジョン・フォン・ノイマン United States public domain

 

このノイマン型モデル(プログラム内蔵式モデル)が最初に出てきたのは、ノイマンが書いた、1945 年の文章『First Draft of a Report on the EDVAC (EDVACに関する報告書の第一草稿)』でした。

電子計算機EDVACプロジェクトに関する全101ページの未完成の文書です。そのなかにプログラム内蔵方式の概念を使用したコンピュータについての記述が世界で初めて含まれており、ここから「ノイマン型モデル」と呼ばれるようになりました。

ちなみに、このプログラム内蔵式の考案については、ENIAC を開発したジョン・エッカートと ジョン・モークリーが EDVAC 開発計画において考案していたものを、ノイマンが数学的な裏付けをして、で、ノイマンがそれをまとめ上げ自分の単独名義で文章を出したために「ノイマン型」の名前で広まりました。

 

なぜ単独名義で出したかは諸説ありますが、当時はコンピュータ関連の資料の多くは軍事機密だったのが、これは広く公開されたもので、そこに当時有名な数学者のノイマンの名で出してEDVACの名声を上げたいという、裏の大人たちの思惑があったのではとされています。

 

ちなみに(オタクは「ちなみに」を多用しがち)、ノイマンは有名な数学者で、6歳で7桁から8桁の掛け算を筆算で行っていたり8歳で微分積分をしていたらしいです。また、調べると、当時のコンピュータより速く計算を暗算で解いたという逸話も出てきます。すご。天才かよ(天才です)。

 

では、次は、最初期にこのノイマン型モデルを使用したコンピュータEDVACと機械語について見ていきましょう。

 

(*゚▽゚* っ)З「っていうか、これ、プログラミング言語の歴史についての記事なのに、まだプログラミング言語 出て来てないよね。まだ?」

 

次、機械語出て来るので…! とはいえ、これもプログラミング言語かどうかと言われると(機械語は命令の2進数データ直書きなので)まだ怪しいが…。

 

最初期にこのノイマン型モデルを使用したコンピュータEDVAC

▲出典:U. S. Army Photo

▲出典:U. S. Army Photo

ENIACを開発したエッカートとモークリーは、ENIACの基本設計が終わり制作に取り掛かり始めた頃(要するにまだまともに動作するようになる前)の1944年に、既に次のコンピュータ、EDVACの設計を始めました。

 

こちらもENIACと同様に軍事目的で開発され始めましたが、新しいEDVACはENIAC 開発中に学んだことや論理上の改善などを多く取り入れ、ノイマンがプロジェクトに参加し、数学的な裏付けをしたり議論の内容をまとめたりして、1945年に(ノイマンが)『First Draft of a Report on the EDVAC (EDVACに関する報告書の第一草稿)』を出しました。

 

ENIACとの違いでは、たとえば、前述のプログラム内蔵式の他、ENIAC は 10 進法での計算だったのが、EDVAC では2進法が採用されました。10進数は人間には分かりやすい方式(普段我々が使っている数字)なのですが、コンピュータがそのまま扱うとなると無駄が多過ぎるのです。「電圧がかかっていなければ0、かかっていれば1」という 0 と 1 を使って表す2進数のほうが機械にはフレンドリーでした。

で、ついに、1951年にEDVACは完成となりました。

 

世界初のノイマン型コンピュータについて

ちなみに、EDVACは世界初のノイマン型(プログラム内蔵式)コンピュータとはなれませんでした。

 

(*゚▽゚* っ)З「あれ? EDVAC の設計についてのレポートで初めてプログラム内蔵式のコンピュータが発表されたんじゃなかったっけ? それなのに EDVAC が世界初のプログラム内蔵式コンピュータじゃないってどういうこと?」

 

はい、たしかに、米国でノイマンのまとめた『First Draft of a Report on the EDVAC (EDVACに関する報告書の第一草稿)』は1945年に発表されたのですが、英国のモーリス・ウィルクスとケンブリッジ大学の数学研究所のチームがそれに大変刺激され、EDSAC という世界初の実用的なプログラム内蔵方式のコンピュータを開発し、1949年に完成しました。

 

(*゚▽゚* ; っ)З「めっちゃ名前似てるのが、たくさん出てきてややこしい…。えっと、1945年にノイマンさんの名前でプログラム内蔵式コンピュータについて書かれた文章が発表されて、それをもとに1949年に英国チームでEDSACが完成し、その2年後の1951年にくだんのEDVACが完成したのね。なんでEDVACはこんなに開発が遅れたのかしら?」

 

EDVACから主要開発メンバーのモークリーとエッカート (ENIACの主要開発者でもありましたね) が離脱し、それでEDVAC開発は大きく遅れ、結果世界初の実用的に稼働したプログラム内蔵方式コンピュータは後発のEDSACとなってしまった、といわれています。

 

Copyright Computer Laboratory, University of Cambridge. Reproduced by permission.

▲出典:Copyright Computer Laboratory, University of Cambridge. Reproduced by permission.

ということで、次は、プログラム内蔵方式になり命令セットをデータとしてメモリに保持できるようになったことで扱えるようになった、機械語の話をしましょう。

機械が直接理解できる機械語の登場

先述した通り、ノイマン型 (プログラム内蔵) コンピュータが登場してからは、配線とスイッチの切り替えではなく、「電圧がかかっていなければ0、かかっていれば1」(ON/OFF) という 0 と 1 を使って表す2進数の数字の列を、データとして、記憶装置に記憶させるようになりました。

 

「次の 1 バイトを A レジスタに格納せよ」とか「1024 番地 (アドレス) にジャンプします」みたいな。

 

000000 00001 00010 00110 00000 100000

 

この、コンピュータのプロセッサが直接解釈実行可能な一連の命令群のデータそのものを、機械語と呼びます。

 

(*゚▽゚* ; っ)З「は!? ただの数字の羅列じゃん! こんなん読めないわ」

 

そうなのです。機械語は、上記のように、0 と 1 を使って機械の気持ち (!) になって書く必要があったので、人間が書くには大変です。

 

ちなみに私の前職(プログラマ時代)の職場の先輩は、つよつよなベテランエンジニアで、小中学生時代から趣味がプログラミングで、よく授業中、教科書に機械語を書き続けていたそうです。ずっと一人で 16 進数 (2 進数だと桁数が長くなりがちなのでその数字を 16 進数に変換して短く書く方法もありました) でお気に入りの CPU の命令セットをノートに書き続けていてとても楽しかったそうです。かっこいい!

 

もう少し人間の読めるアセンブリ言語の登場

 

(*゚▽゚* ; っ)З「でも数字の羅列を頭の中で意味のある文章として理解するのは、人間には大変だよ! どうにかならなかったの?」

 

そう、この機械語直書きだと人間には凄く大変なので、もうちょっと人間にとって優しい書き方で書けるようにして、それを後で機械語に変換してしまおうという方法がとられるようになりました。

最初期の言語として「アセンブリ言語」というものがあって、コンピュータが理解できる命令に非常に近いけど、ちゃんと人間に読めるような形で書けるように配慮されたものになっています。

 

MOV AL, 1h

MOV CL, 2h

MOV DL, 3h

 

ちなみに、CPU の種類によって命令セットなども違いますので、機械語 (やそれに対応するアセンブリ言語) は CPU ごとに書き方が違いました。(同じ命令セットを使っている CPU であれば同じように動きますが)

 

少し時代が進んで… 高水準言語

少し時代が進んで… 高水準言語

 

コンピュータが出た当初のプログラミング言語はどちらかというとコンピュータにとって理解しやすい形に近いものを、人間が多少は記述しやすいように書けるというものでした。

ところが段々とプログラムの規模が大きくなるにつれて人間が読みやすいことが重要になってきました。このように人間にも理解しやすいプログラミング言語のことを「高水準言語」っていいます。

 

高水準言語の例(加算した結果を変数 answer に格納する)

int answer = a + b;

 

(*゚▽゚* っ)З「ふうん、たしかに、なんとなく英語っぽくて、これならなんとか読めそう」

 

ちなみに、これと同じことを機械語やアセンブラで書こうとすると、以下のことをやらなければなりません

(1) メモリから値をアキュムレータレジスタにロード。

(2) アキュムレータレジスタの値に対して +n する(アキュムレータの値が変化)。

(3) アキュムレータレジスタの値をメモリにセット。

 

(*゚▽゚* ; っ)З「わ!大変!C言語だと1行だったのに!」

 

高水準言語は科学技術計算が得意な FORTRAN や事務処理が得意な COBOL など色々な言語がこの時点で出てきました。

さらには BASIC という 1970 年代後半から 1980 年代前半に広く使われた言語など用途に応じて色々な言語が登場してきました。その後は今も大人気なみんな大好きC言語が出てきます。次の節で詳しく見ていきましょう。

 

閑話休題)「低レイヤ」「低水準」「低レベル」

ちょっと脱線しますがコンピュータをやっている人がたまに「低レベルなレイヤ」という言葉を使いますが、これは相手のことを下に見ているという意味ではありません。高水準が人間に理解しやすいレイヤを表していて低レベルや低水準なレイヤというのはコンピュータにより近い、人間に理解しにくい部分の難しいことをしているという意味で使ってます。

もし IT 関係の人と会話していて低レベルや低レイヤという単語が出てきたら、この記事のことを思い出してください。

 

会話例)

私「私はC#でスマホアプリを開発するのが好きなんだ!」

友「そうなんだ、いいね! ぼくはアプリ開発とかやらないねえ、むしろその一番下で動いてるOS開発のほうに興味があるんだ。自分のOS作ってみたいな」

私「わー!すごい! 私はそういう低レイヤの分野はあんまり詳しくないからすごく尊敬するよ! すごいね!」

 

プログラミング言語の歴史

こちらの時代別プログラミング言語の人気ランキングの動画が非常にお勧めです。これを見ながらお話しましょう。

 

1965年頃 – FORTRAN の時代

Most Popular Programming Languages 1965 - 2019

▲出典:Most Popular Programming Languages 1965 - 2019

 

ついに世界で初めて広く受け入れられた高級言語FORTRANが登場してきます。 FORTRANは、1954年にIBM社のジョン・バッカスが考案した言語で、アセンブリとは違ってCPU に依存しないプログラム記述ができるようになりました。

(アセンブリは機械語と1:1だったので、つまり、CPUごとに記述が違ってくることになります。)

 

出始めの当時(1950年代)は高級言語自体に対して懐疑的でした。少ない計算資源をコンパイラ自身が消費してしまったり、生成されるコードがアセンブリより効率悪いのではとか。しかしFORTRANはこれらの問題を解決し、数値計算分野にて広く受け入れられることとなりました。

FORTRAN 誕生の話

Lawrence Livermore National Laboratory

▲出典:Lawrence Livermore National Laboratory

 

誕生の話としては、ジョン・バッカスは1953年末、メインフレームコンピュータIBM 704のプログラムを開発するにあたり、アセンブリ言語に代わるものを開発することをIBMの上司に提案したことから始まります。

とはいえ、当時は、前述の通り、顧客はアセンブリで書いたコードに匹敵するパフォーマンスを得られないと納得しないので、最初から最適化されたコンパイラが開発されました。

(コンパイラ最適化とは、「動けば良い」というもの作るのではなく、例えば「プログラムの実行時間を短縮する」「使用するメモリを最小化する」「消費電力を最小化する」など、コンパイラを最適化すること)

 

結果、書くコードの量が劇的に減ることになったので、急速に受け入れられるようになりました。

 

フランセ:ジョン・バッカス

開発者のジョン・バッカス

▲出典:PIerre.Lescanne Attribution 4.0 International (CC BY 4.0)

今のFortran

FORmulaTRANslatorの名が⽰すよ うに、FORTRANは当初から数値計算を⽬的として生まれており、今も数値計算分野で積極的に使われている言語です。日本のスパコン京もFortranを採用しています。

 

昔、当時流行ったのはFORTRAN 66/77で、多くの研究者たちが数値計算に愛用していました。その後出たバージョンFortran 90/95 はかなり拡張されたものとなり、例えば初期の頃は変数名が大文字6文字までだったりループブロックを記述できない(gotoでループを作るしかない) 縛りなどがあったのですが、新しいバージョンではその制限が無くなったりしています。

(ちなみに「FORTRAN」と書くと昔のFORTRANを指し、「Fortran」と書くと90以降のFortranを指します)

 

みんな大好きエディタVisual Studio Code にも Fortranのインテリセンス(コード補完)のエクステンションがあって、2.5万以上インストールされています。

 

 

歴史の話に戻ると、FORTRAN一位の時代は1980年頃まで長く続きました。

 

▲出典:Most Popular Programming Languages 1965 - 2019

▲出典:Most Popular Programming Languages 1965 - 2019

 

1980 年。Pascal (1970 年誕生) が首位。C も徐々に人気に

C も徐々に人気に

▲出典:Most Popular Programming Languages 1965 - 2019

既にこの記事の文字数が大変なことになっている(一万字を超えたw書き過ぎ)ので、ここからは軽くいきます!

 

(*゚▽゚* っ)З「オタクは好きなことに関しては喋り過ぎる」

 

時代背景

もともとコンピュータは軍事利用目的の大型のものから出始め、つぎにメインフレームが業務や研究に取り入れられ、そして 1970 年代から徐々に パーソナルコンピューターが出始めた頃です。(まだ普及はしてないけど)

 

Pascal はもともとプログラミング教育を意識して作られたため、コンパクトにまとまった文法が特長です。判読性が良い(読みやすい)。それもあって広く受け入れられていきます。

 

また、1983年に家庭用ゲーム機ファミコンが発売され、「プログラムされたゲーム」が身近な存在となっていき、一般の人たちがプログラミングに興味を持ち始めたといいます。

(ちなみに私のエンジニアの先輩はゲームを逆アセンブルして主人公のパラメータをいじって最強にしたりして遊んでプログラミングを覚えたそうです)

 

(*゚▽゚* っ)З「Pascalコンパイラ(言語処理系)をPascal自身で書くこともできてカッコいいよね。C#もそうだけど。でも出た当時は自分のコンパイラを書ける(言語処理系のブートストラップを備える)言語は他にはなかなかなかったよ」

 

1987 年。C言語の時代が到来

C言語が登場

▲出典:Most Popular Programming Languages 1965 - 2019

 

その後、現在も広く使われている C言語というプログラミング言語が登場します。1972年にAT&Tベル研究所のデニス・リッチーが主体となり「B言語の改良版」として開発した汎用プログラミング言語です。いまも、大学でのコンピュータサイエンスの学部では「最初に習う言語」がCかJavaですよね。すごく基本的な言語です。

 

C言語は、その動作の軽さやアセンブリとの親和性、少ない計算資源でも動く(当時はメモリ数キロ(!)バイトという世界だった)こと、また一般向けに出された教本(K&R)の存在などで、一気に広まり、当時は多くのプログラマがC言語を書いていました。

 

C言語は制御構文など高級言語の特徴も持ちながらハードウェア寄りの記述も可能な低水準言語の特徴も併せ持ち、もともとアセンブリで書かれていたUnixというmacOS やLinuxのベースとなるOSも大部分がC言語で書き直されました。

 

計算資源があまり使えないという制約で、かつ、高速な実行速度が求められるとき、さらに例えばハードウェア密着したコーディングをする必要があるときに、C言語がとても親和性が良いのです。

 

1980年代後半以降16ビットCPUのパーソナルコンピュータが多く出始めた頃、安価なCコンパイラが存在したこともありユーザが急増しました。

 

(*゚▽゚* っ)З「へ~。聞いてるとCはめっちゃOS開発や基幹系システムの開発に親和性良さそうだね。あと1997年にプレステ用に発売されたFF7もC言語メインで書かれているらしいね」

 

うん、スマートフォンの OS に使われている Android も Linux をベースにしているので C 言語で作られています。

 

また、C言語は、後継の C++ も含め、その後に出てくる多くのプログラミング言語に影響を与えています。

 

2001年頃まで約15年間、ずっとC言語が圧倒的に首位でした。

 

2001年頃まで約15年間、ずっとC言語が圧倒的に首位

▲出典:Most Popular Programming Languages 1965 - 2019

C言語がずっと首位

▲出典:Most Popular Programming Languages 1965 - 2019

 

方言

すごく話が変わりますけど私たちが話す日本語のような自然言語に方言ってありますよね? 

 

例えば「ぼちぼち」「けったいな」「わや」「はんかくさい」みたいに同じ日本語でも方言によって使う言葉が違ったりします。

実はプログラミング言語も昔は方言が結構ありました。

 

たとえば、同じ C 言語というプログラミング言語を使っていてもちょっとずつ書き方が変わっているということがあって、〇〇用に書いた C 言語のソースコードは △△ では方言が違って解釈できなくて動かすことが出来ないということがありました。

そういうことがあり困っていたので、標準化団体によって色々な言語の標準化がおこなわれました。方言の差異によってプログラムが動かないということが無いようにする取り組みです。

ちなみにFORTRANも当時大量に世に各々独自のオレオレFORTRAN処理系が乱立し、言語の統一規格が求められ、初めて標準化した規格がFORTRAN66でした。

 

 

なので、最近のプログラミング言語は方言の微妙な違いによって動かないことは少なくなっています。少なくなってはいるのですが、 JavaScript という Microsoft Edge やGoogle Chrome などの Web ブラウザーで動くプログラミング言語は Web ブラウザーによって動きが異なることもあるので、微妙な違いによって悩まされることがあったりします。

 

でも、色々な人が違いを吸収する方法を編み出してくれたりしているので困ることは少なくなってます。

1996 年。Java(1995年生まれ) が一気に上がってくる

1996年になりました。(私も生まれています)

いまだC言語がダントツですが、1995年に誕生したJavaがすごい勢いで上がってきています。Javaは今も大人気ですよね。

Javaは、サン・マイクロシステムズ(その後Oracleに買収された)のジェームズ・ゴスリンによって開発され、Sun MicrosystemsのJavaプラットフォームのコアコンポーネントとして1995年にリリースされました。

 

 1996 年。Java(1995年生まれ) が一気に上がってくる

▲出典:Most Popular Programming Languages 1965 - 2019

一気に注目を浴びたきっかけ

Σ(*゚▽゚* ; っ)З「え!待って、なにこのJavaって言語。1995年に生まれたばかりなのに、1996年にはもう3位なの!? 1年しか無いんだが?? 駆け上がる勢いが異常じゃない? 何があったの?」

 

(これについては、Java Championである寺田佳央さんにお聞きしました。ありがとうございます。そしてそれをツイートした時に補足コメントをくださった多くの方々も、誠にありがとうございました! そこで教えていただいたことを以下に書きます)

 

それまで、web ページはテキストのみの静的ページしかありませんでした。当時の回線はとても細かったので、画像の多いページは読み込むのに大変時間がかかってしまいます(もっと正確に言うと「先にテキストだけバッと表示されて、それから徐々にゆっくり画像が読み込まれていく」ようでした)し、それに当時はネットを使うのに電話線を使っていて、読み込むのに電話代がかかっていました。

 

そこに、突如、Sun のページで、踊る Duke くん (Java のマスコットキャラ) が踊りまくるページが出てきて、業界が騒然としました。「めっちゃ動いているんだが???? これどうなってんの???」と。

Sun のページで、踊る Duke くん

▲出典:Animated GIF Images – Dukes - madsenworld.dk

 

「Java の Applet を使えば『動きのあるホームページ』が作れる!」となり、それがものすごくセンセーショナルで、Java に興味を持つ人が続出しました。

で、興味を持った人が、実際に使ってみたら、Java がとても良いオブジェクト指向の言語だというが分かり、「おもちゃではなくビジネスで使える!」ということが分かり、爆発的に普及しました。

 

Java が当時めちゃくちゃ良い言語だと話題になった主な理由を以下に4つ上げます。

  • ”Write once, run anywhere”(一度プログラムを書いてしまえば、どのコンピュータでも動く) というスローガンが表す、プラットフォーム非依存性。アプリ開発者が一度書いたら(Java実行環境 (JVM) のあるコンピュータ上で)どこでも同じように実行できるってすごい。
  • オブジェクト指向。(それまでC言語など手続き型言語が主流だった)
  • マルチスレッド。複数のスレッドを同時に走らせることができる。
  • ガベージコレクション (GC)。よしなにメモリ開放してくれる。それまで、C/C++ では、自前でメモリ管理をしなければならなかった。(そしてそれはキチンと管理するのはすごく難しかった。)でもJavaはGCによって、それを自動でやってくれる。

 

 

 

 

 

現在の人気プログラミング言語

今世界中のプログラミング言語を書く人の多く(本当にたくさん)が使ってる GitHub (ギットハブ)というサービスがあります。

このサイトには世界中のプログラマーが書いたプログラムを載せているので、このサイトにあるプログラミング言語のランキングが世界中で使われているプログラミング言語の順位と大体同じになると思います。(GitHub を使わない人たちも多くいるので完全に同じではないですが)

 

1. JavaScript

2. Python

3. Java

4. PHP

5. C#

6. C++

7. TypeScript

8. Shell

9. C

10. Ruby

 

(*゚▽゚* っ)З「めっちゃ沢山あるわね」

 

私の大好きなC#も上位にランクインしています! 約 70 年前から脈々と続いてきたプログラミング言語の歴史ですが、現在はこのような言語が多く使われてるんですね。

プログラミング言語は、なぜたくさんあるの??

FORTRAN や COBOL というプログラミング言語の名前を出したところで少し触れましたがプログラミング言語は言語によって得意な分野があったりします。 例えば先ほどのランキングで一位のプログラミング言語の JavaScript はとくに Web サイトの画面で動かすことが出来る言語なので、Web サイトの画面に動きをつけたりするときによく使われています。

むしろ今は JavaScript の動いてない Web サービスを見つけるほうがかなり難しいんじゃないかなあ。フロントでもバックエンドでもお世話になっております。

 

(*゚▽゚* っ)З「使用頻度 No.1 なのも納得ね」

 

他、画面を持ったアプリケーションを作るのに得意な言語の C# や Java や C++ 、Web サイトのサーバー側で動く処理を作るのが得意な言語として Go や C# や Java や PHP などがあります。

 

スマートフォンのアプリケーションを書くのに使う言語として Java や Kotlin や Objective-C や Swift があります。ゲームを書くためには C# や C++ などの言語がよく使われますね。

ランキング 2 位の Python は AI 関係でよく使われています。AI 系は例えば画像を渡すと「この画像XXメートル以内に人が〇人いる」や「駅のホームで電車が走っていて人が待っている画像」といった人間が画像を見たときに読み取るようなことをコンピューターにやらせる分野です。

Python はこの分野で一番多く使われている言語です。

 

まとめ

ということで、今回はプログラミング言語のざっくりとした歴史(文字数の関係で全言語紹介できなかったので、紹介できなかった言語が好きな人たちにはごめんなさい!)を書きました。

 

本当に長くなってしまいました…。最後まで読んでくださった方々、誠にありがとうございました! 今月は以上になります。また来月お会いしましょう。