• トップ
  • ブログ一覧
  • Go言語は最強バディが開発!?ケネス・レーン・トンプソンとロブ・パイク
  • Go言語は最強バディが開発!?ケネス・レーン・トンプソンとロブ・パイク

    広告メディア事業部広告メディア事業部
    2022.09.13

    ITエンタメ

    Go言語は誰が作ったの?

    ミツオカミツオカ
    師匠、Go言語教えてください!
    にゃんこ師匠にゃんこ師匠
    なんじゃ、急に
    ミツオカミツオカ
    Goって響きで、今すぐ始めなきゃ!と思いました!
    にゃんこ師匠にゃんこ師匠
    また、行き当たりばったり…
    ちなみに、ケネス・レーン・トンプソンとロブ・パイクが作ったプログラミング言語だ!
    二人ともそれまでにUNIXなども開発しているし、プログラミングのスペシャリストと言っていいだろう
    ミツオカミツオカ
    Go言語より、その二人に俄然興味が湧いてきました!🔥
    にゃんこ師匠にゃんこ師匠
    …おい。
    では、今回は ケネス・レーン・トンプソンを中心に話をしていこうかの~!

    ケネス・レーン・トンプソンの最初の相棒はデニス・リッチー

    ケネス・レーン・トンプソンは、1943年アメリカのルイジアナ州ニューオリンズで生まれました。

    数学が得意だったトンプソンは、カルフォルニア大学バークレー校に入学し、電子工学、コンピュータ科学の学士号を1965年に、修士号を1966年に取得しています。

    卒業後はニュージャージー州マレーヒルにあるベル研究所に勤めはじめました。

    革新的な開発をしてきたベル研究所

    ベル研究所は、電話の発明で知られているグラハム・ベルによって設立された「ボルタ研究所」を起源とした電気通信に関する研究所です。

    1925年アメリカの巨大通信グループの「ベル・システム」の独立事業として設立され、現在はノキアの子会社となっています。

    ベル研究所は設立以来、「トランジスタ」や「レーザー」など、時代に先駆けて役に立つものを発明してきました。

    遊ぶために作ったUnix

    ベル研究所に入社したトンプソンは2歳年上のデニス・リッチータイムシェアリングオペレーティングシステムMultics」の開発に取り組みます。

    トンプソンは「Multics」の開発のためにプログラミング言語「Bon」開発しました。

    その後、「Multics」で動くビデオゲーム「スペーストラベル」も開発しました。

    しかし、コストパフォーマンスの悪さからベル研究所は「Multics」の開発をあきらめ、トンプソンは「スペーストラベル」ができなくなってしまいました。

    トンプソンはあきらめきれずに、使われていないミニコンピュータ「PDP-7」を使用して、「スペーストラベル」を作り直すことにしました。

    この作り直すために書いたオペレーティングシステムが、のちの「Unix」の原型となります。

    にゃんこ師匠にゃんこ師匠
    できたばかりのUnixは、一つのプログラムしか動かせないシングルタスクだったため、同僚から名前は「Unics」ではどうかと提案されたんじゃ。
    そして、最終的に「Unix」になったのだ!
    ミツオカミツオカ
    uni(単一)」を文字ったネーミングだったのですね

    B言語からC言語へ

    Unixは、デニス・リッチーとともに改良していくようになるのですが、「Unix」にはそれまで使っていたアセンブリ言語より、ミニコンピュータに適した高度なシステムプログラム言語を作る必要があると考えました。

    そこで1969年作り出されたのが「B言語」です。

    「B言語」はマーティン・リチャーズが作ったプログラム言語開発用の「BCPL言語」をもとにして、ミニコンピュータのメモリー容量に合わせて8キロバイトで作られました。

    この「B言語」を更に改良して1972年にリッチーが作ったのが、今でも多く使われている「C言語」です。

    1973年、Unixのバージョン4は「C言語」で書き直されました。

    にゃんこ師匠にゃんこ師匠
    「B」の名前は、BCPLの「B」であるとか、またはトンプソンの妻のボニーの名前からきているとか…
    諸説あるな
    ミツオカミツオカ
    奥様の名前が由来だと、ロマンティックですね!

    新たな相棒ロブ・パイク

    Unix はしばらくトンプソンとリッチーの二人を主軸として開発が進んでいきました。

    そこへカナダ生まれの「ロブ・パイク」がベル研究所に入社してくるのでした。

    そして、トンプソンは13才年下のパイクと Unix を開発するようになります。

    トンプソンの教え

    パイクとトンプソンは開発中、思うようにプログラムが動かないことが時々ありました。

    パイクはコードをチェックしたり、デバックしたりして、トラブルの原因を見つけようとします。

    一方トンプソンはその傍らでずっと考え、原因をパイクより早く突き止めます。

    このときにパイクは悟ります。

    バグがどうして起こったのか考えることにより、問題が起こった場所を高い位置から見ることで特定でき、修正ができて、バグの起こりにくいソフトウェアにつながる。

    トンプソンは直接指導することはなかったですが、パイクはトンプソンを尊敬し、一緒に仕事をしながらいろんなことを学びました。

    こうして技術を磨いたパイクは、1981年世界で初めてUnix用のウィンドウズシステムのコードを書きました。

    パイクは他にも、プログラミング言語「Limbo」、Unix用のグラフィカル端末「Blit」、テキストエディタ「sam」「Acme」、電子メールでの差出人の顔写真を表示する「vismon」を開発します。

    旅立つUnix

    トンプソンとパイクをはじめとする開発チームの成果により Unix は、PDP-11 以外のコンピュータに対応するようになり、マルチタスクの機能も加わりました。

    この成果は計算機科学の国際学会のACMに投稿され、世界中から注目されてUnixのソースコードを各研究機関に送ることになりました。

    これにより、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のようにシンプルなコードにしたのでした。

    機能を絞って動作が軽くなるようにしたため、以下のような特徴があります。

    1. 例外処理がない
    2. 拡張性を高める「継承」がない
    3. 汎用的なクラスやメゾット機能がない

    このようなプログラミング言語は今までになく、多くのプログラマーに衝撃を与えました。

    広がるGo言語

    Go言語は、当初 Google でしか使えないのではないか、ユーザーが増えないのではないかと使用することを躊躇する企業も多く、期待を下回りました。

    しかし、2013年に Android のアプリ開発に対応した Go1.4 が公開され、YouTube や Dropbox も使用しはじめました。

    主にベンチャー企業を中心に広まっていったのです!

    にゃんこ師匠にゃんこ師匠
    ちなみに、パイクがC言語について話したことが「5つのプログラミングルール」としてコンパクトにまとめられてネットで公開されたんじゃ
    ミツオカミツオカ
    全エンジニアが検索したでしょうね!
    にゃんこ師匠にゃんこ師匠
    あとトンプソンから教わったことや自分の経験などをもとにして、ブライアン・W カーニハンとともに「プログラミング作法」という本を出版していたりするぞ!
    ミツオカミツオカ
    プログラミングで躓きやすいところやきれいなコードを書くためのヒントやアドバイスが書かれていますね!

    トンプソン&パイクの現在

    2022年、ソフトウェアコードを品質測定するアメリカの「TIOBE」のランキングで、Go言語は前年から5つ順位を上げ15位になりました。

    初心者でもわかりやすいGo言語は、今後もユーザーが増えていくことでしょう。

    ちなみに、トンプソンとパイクは現在も Google で Go言語の開発を続けています。

    はじめは師弟関係であった二人もいつしか対等になり、最高のバディとなりました。

    今後、この二人は何を作り出すのか。ワクワクが止まりませんね!

    にゃんこ師匠にゃんこ師匠
    どこの世界でも同じだが、技術を後進に伝えていくことは大事だな!
    ミツオカミツオカ
    きっと、パイクさんはトンプソンさんという一流のエンジニアから教えてもらったのは大きな経験でしたよね
    にゃんこ師匠にゃんこ師匠
    トンプソンもパイクが成長していく姿を見るのは嬉しかったと思うぞ
    ミツオカミツオカ
    ステキな関係ですね
    まるで、私と師匠との関係みたいですね
    にゃんこ師匠にゃんこ師匠
    うむ、そうじゃな!
    ミツオカミツオカ
    そういえば師匠!
    この前、私のプリン食べたでしょ!
    にゃんこ師匠にゃんこ師匠
    え…いや…
    はい、食べました。
    ミツオカミツオカ
    そこのコンビニで今すぐ買ってきなさい!
    にゃんこ師匠にゃんこ師匠
    はい、今すぐ買ってきます!!
    ミツオカミツオカ
    よろしい!
    にゃんこ師匠にゃんこ師匠
    (全然ステキな関係じゃない…)
    広告メディア事業部

    広告メディア事業部

    おすすめ記事