Go
Googleが開発した、シンプルさと並行処理のしやすさを重視した言語。コンパイルが速く扱いやすいため、サーバーやクラウド基盤のソフトで広く採用されている。DockerやKubernetesもGoで書かれている。
時代背景
Go公式FAQによれば、Go言語はGoogleでの仕事において既存の言語や開発環境に感じていた不満から生まれた。当時、効率的なコンパイル・効率的な実行・プログラミングのしやすさの3つを同時に満たす主流言語がなく、プログラマーは安全性や効率を犠牲にしてでもPythonやJavaScriptのような動的型付け言語を選ぶ傾向にあった。設計チームは、インタプリタ型の動的言語が持つ書きやすさと、静的型付けのコンパイル言語が持つ効率性・安全性を両立させることを目指し、マルチコアCPUやネットワーク環境に適した言語として設計した。
種類・系譜
Go公式FAQは、Goの祖先について『基本的な構文はCファミリーに属し、宣言やパッケージの扱いはPascal/Modula/Oberonファミリーから大きな影響を受けている。並行処理の考え方はTony HoareのCSP(Communicating Sequential Processes)に着想を得たNewsqueakやLimboのような言語から来ている』と説明している。CとPascal系という一見異なる系譜の合流点にある言語であり、全体としては既存言語の単純な組み合わせではなく新しい設計だと公式は位置づけている。
実例
Go公式FAQによれば、開発は2007年9月21日、Robert Griesemer・Rob Pike・Ken Thompsonの3人がホワイトボードに新言語の目標をスケッチしたところから始まった。数日のうちに大まかな方向性がまとまり、その後しばらくは他の仕事と並行するパートタイムでの設計が続いた。2008年1月にはKen Thompsonがアイデアを検証するためのコンパイラの開発に着手(出力はC言語のコードだった)、年央には本格的なプロジェクトへと発展し、実用的なコンパイラの開発が試みられるようになった。2008年5月にはIan Taylorが独自にGCC向けのGoフロントエンドの開発を始め、2008年後半にはRuss Coxが参加してプロトタイプを実用段階へと引き上げていった。Goが公開のオープンソースプロジェクトになったのは2009年11月10日である。
名前の由来
言語の正式名称は『Go』で、ロゴでは大文字2文字の意匠が使われることがあるが、言語名自体は『GO』ではなく『Go』と表記するのが正しいと公式FAQは明記している。『golang』という通称は、公式サイトのドメインが `golang.org` だったことに由来する呼び名で、SNS上のハッシュタグ `#golang` などで使われている。
| 開発元 | |
|---|---|
| 得意 | サーバー・クラウド |
関連項目
- C言語デニス・リッチーがUNIX開発のために作った汎用言語。ハードウェアに近い操作ができつつ移植性も高く、OSや組み込みなど低レイヤの定番として現在も使われ続けている。後の多くの言語の文法の祖でもある。
- Pascalニクラウス・ヴィルトが教育用に設計した言語。構造化プログラミングをきれいに学べる言語として広く使われ、後にTurbo Pascalとして実務でも普及した。プログラミング教育の歴史に名を残す。
- Rustメモリの安全性を保ちながら高速に動くことを目指して作られた言語。C/C++が抱えがちなバグを言語の仕組みで防げるため、OSやブラウザ、低レイヤの開発で支持を広げている。
- ケン・トンプソンリッチーとともにUNIXを作り、その前身となるB言語やエディタの原型も手がけたプログラマ。実用的で美しいソフトウェアを生み出す名手として知られ、後にGoogleでGo言語の開発にも関わった。
- Dockerアプリとその動作環境をひとまとめに箱詰めして、どこでも同じように動かせるようにするソフト(コンテナ技術)。環境の違いに悩まされる問題を和らげ、クラウド時代の開発・運用を大きく変えた。