Go言語は誰が作ったの?
ちなみに、ケネス・レーン・トンプソンとロブ・パイクが作ったプログラミング言語だ!
二人ともそれまでにUNIXなども開発しているし、プログラミングのスペシャリストと言っていいだろう
では、今回は ケネス・レーン・トンプソンを中心に話をしていこうかの~!
ケネス・レーン・トンプソンの最初の相棒はデニス・リッチー
ケネス・レーン・トンプソンは、1943年アメリカのルイジアナ州ニューオリンズで生まれました。
数学が得意だったトンプソンは、カルフォルニア大学バークレー校に入学し、電子工学、コンピュータ科学の学士号を1965年に、修士号を1966年に取得しています。
卒業後はニュージャージー州マレーヒルにあるベル研究所に勤めはじめました。
革新的な開発をしてきたベル研究所
ベル研究所は、電話の発明で知られているグラハム・ベルによって設立された「ボルタ研究所」を起源とした電気通信に関する研究所です。
1925年アメリカの巨大通信グループの「ベル・システム」の独立事業として設立され、現在はノキアの子会社となっています。
ベル研究所は設立以来、「トランジスタ」や「レーザー」など、時代に先駆けて役に立つものを発明してきました。
遊ぶために作ったUnix
ベル研究所に入社したトンプソンは2歳年上のデニス・リッチーとタイムシェアリングオペレーティングシステム「Multics」の開発に取り組みます。
トンプソンは「Multics」の開発のためにプログラミング言語「Bon」開発しました。
その後、「Multics」で動くビデオゲーム「スペーストラベル」も開発しました。
しかし、コストパフォーマンスの悪さからベル研究所は「Multics」の開発をあきらめ、トンプソンは「スペーストラベル」ができなくなってしまいました。
トンプソンはあきらめきれずに、使われていないミニコンピュータ「PDP-7」を使用して、「スペーストラベル」を作り直すことにしました。
この作り直すために書いたオペレーティングシステムが、のちの「Unix」の原型となります。
そして、最終的に「Unix」になったのだ!
B言語からC言語へ
Unixは、デニス・リッチーとともに改良していくようになるのですが、「Unix」にはそれまで使っていたアセンブリ言語より、ミニコンピュータに適した高度なシステムプログラム言語を作る必要があると考えました。
そこで1969年作り出されたのが「B言語」です。
「B言語」はマーティン・リチャーズが作ったプログラム言語開発用の「BCPL言語」をもとにして、ミニコンピュータのメモリー容量に合わせて8キロバイトで作られました。
この「B言語」を更に改良して1972年にリッチーが作ったのが、今でも多く使われている「C言語」です。
1973年、Unixのバージョン4は「C言語」で書き直されました。
諸説あるな
新たな相棒ロブ・パイク
Unix はしばらくトンプソンとリッチーの二人を主軸として開発が進んでいきました。
そこへカナダ生まれの「ロブ・パイク」がベル研究所に入社してくるのでした。
そして、トンプソンは13才年下のパイクと Unix を開発するようになります。
トンプソンの教え
パイクとトンプソンは開発中、思うようにプログラムが動かないことが時々ありました。
パイクはコードをチェックしたり、デバックしたりして、トラブルの原因を見つけようとします。
一方トンプソンはその傍らでずっと考え、原因をパイクより早く突き止めます。
このときにパイクは悟ります。
バグがどうして起こったのか考えることにより、問題が起こった場所を高い位置から見ることで特定でき、修正ができて、バグの起こりにくいソフトウェアにつながる。
トンプソンは直接指導することはなかったですが、パイクはトンプソンを尊敬し、一緒に仕事をしながらいろんなことを学びました。
こうして技術を磨いたパイクは、1981年世界で初めてUnix用のウィンドウズシステムのコードを書きました。
パイクは他にも、プログラミング言語「Limbo」、Unix用のグラフィカル端末「Blit」、テキストエディタ「sam」「Acme」、電子メールでの差出人の顔写真を表示する「vismon」を開発します。
旅立つUnix
トンプソンとパイクをはじめとする開発チームの成果により Unix は、PDP-11 以外のコンピュータに対応するようになり、マルチタスクの機能も加わりました。
この成果は計算機科学の国際学会のACMに投稿され、世界中から注目されてUnixのソースコードを各研究機関に送ることになりました。
これにより、Unix はベル研究所だけではなく、あらゆるところで開発され、産業分野と進出していきます。
UTF-8の誕生
Unixが世界中で開発されるようになり、ベル研究所では新しいオペレーティングシステムPlan9を開発することになりました。
それに伴いASCII文字と互換性があるエンコードを開発することとなり、トンプソンとパイクが共同で1992年に「UTF-8」を作り出しました。
UTF-8 は各文字に識別番号を割り当て、それをコンピュータに読み込ませ、文字を表示される仕組みになっています。
他のエンコードよりも扱いやすく、2019年ではWebページの90%を占めるまでになりました。
Go言語の開発
1990年代、トンプソンとパイクは、研究用オペレーティングシステムの「Inferno」の開発に取り込みます。
今回は「リッチー」を加えたチームです。
しかし、この開発を最後に2000年にトンプソンがベル研究所を退職し、2002年にはパイクも退職してしまいました。
そして二人は、Google で新しいプログラミング言語の開発をすることになります。
Googleでリスタート
Google が新しいプログラミング言語が必要と感じたのは、Google のシステムがあまりにも大きく、今後も大きくなる可能性が多いからです。
当時Googleのシステムには「C++」、「Java」や「Python」などが使用されてきました。
しかし、それらのコードはハードウェアやソフトウェアの発展とともに肥大化し、複雑化していきました。
そのために不安定になったり、遅くなったりする恐れもあります。
そこで、新しいプログラミング言語の開発に白羽の矢が立ったのがトンプソンとパイクです。
今まで二人が開発したプログラミング言語の経験を生かすプロジェクトとなりました。
C++とPythonのハイブリッド
トンプソンとパイクは、今の問題点をピックアップしてそれを解消するためには、C++の安定性とPythonのようなシンプルなコードが必要だと思いました。
それから二人は理想とするプログラミング言語の開発に熱心に取り組みました。
そして2009年に公開されたのが「Go」です。
それはC言語の構文に寄せながらも、誰でも理解しやすく読みやすいPythonのようにシンプルなコードにしたのでした。
機能を絞って動作が軽くなるようにしたため、以下のような特徴があります。
- 例外処理がない
- 拡張性を高める「継承」がない
- 汎用的なクラスやメゾット機能がない
このようなプログラミング言語は今までになく、多くのプログラマーに衝撃を与えました。
広がるGo言語
Go言語は、当初 Google でしか使えないのではないか、ユーザーが増えないのではないかと使用することを躊躇する企業も多く、期待を下回りました。
しかし、2013年に Android のアプリ開発に対応した Go1.4 が公開され、YouTube や Dropbox も使用しはじめました。
主にベンチャー企業を中心に広まっていったのです!
トンプソン&パイクの現在
2022年、ソフトウェアコードを品質測定するアメリカの「TIOBE」のランキングで、Go言語は前年から5つ順位を上げ15位になりました。
初心者でもわかりやすいGo言語は、今後もユーザーが増えていくことでしょう。
ちなみに、トンプソンとパイクは現在も Google で Go言語の開発を続けています。
はじめは師弟関係であった二人もいつしか対等になり、最高のバディとなりました。
今後、この二人は何を作り出すのか。ワクワクが止まりませんね!
まるで、私と師匠との関係みたいですね
この前、私のプリン食べたでしょ!
はい、食べました。