ゼロから学ぶGo言語プログラミング(2) Goの簡単な全体像

とりあえず、今の自分が気になった、キャッチーなところだけ。

Goはどんな言語?

Goは、Googleが開発し2009年に発表したプログラミング言語です。 Googleの述べた特徴の訳がGo言語とは - golang.jpに掲載されているので、引用します。

これを見ると、特徴そのものがシンプルです。 一番に"シンプル"を掲げていることは、Go言語全体に流れる思想なのかも知れません。 上で挙げたFAQ - golang.jpを見ると、開発動機には、やはりシンプルさが大きいようです。

CやC++のような位置付けでも使える言語を目指しつつ、スクリプト言語のような手軽さ、シンプルさも両立したい、という感じでしょうか。 Appleが発表したSwiftも似た雰囲気ですが、これから出てくる新しい言語の主流はこういうコンセプトを目指すのかも知れません。

コンパイル型の言語

私はこれまでPHPPython・JavaScirptと、いわゆるWeb向きのスクリプト言語ばかりに浅く触れてきたので、明示的にコンパイルが必要な言語へのイメージがほとんどありません。

C#ではコンパイルっぽい操作を伴いましたが、使い捨てのツールを作るばかりで、言語や機構はほとんど理解していません。 コンパイル機械語への翻訳で、動作速度が速い、コンパイル時に最適化が行われる、という程度。

コンパイルとは何か、なぜGoはコンパイルを選んだのか。 Goを学ぶ中で、コンパイルの理解も進める必要がありそうです。

並列処理

Goの特徴として標準で並列処理に対応している、というのが謳われています。 しかしここでもシンプルさを求めた結果、多少耳慣れたスレッドやプロセスでなく、「ゴルーチン」と「チャネル」という概念を導入しているようです。

ゴルーチン辺りを見ると、"go"というキーワードを無名関数に添えるだけで、複雑な管理をしなくても、シンプルに並列性を持たせることができるようです。

この並列処理の容易さは、Goの優れた点として挙げられるのをよく目にするので、しっかり学ぶ価値がありそうです。

名称

Goは囲碁から採られたそうです。 ようですが、"Go"ではあまりに区別しにくいため、日本語の場合は「Go言語」、その他では「Golang」と表記されることが多いようです。

マスコットキャラクター

f:id:belbo:20140606104654p:plain

by The Go Gopher - The Go Blog

Goのマスコットキャラクター、Go Gopherです。

作者はRenee Frenchで、マスコットとして採用された経緯は以下の記事が詳しい。

ラジオ局のプロモーション用に生まれ、ベル研のメンバーのアバターに。あのPlan 9のキモかわいいウサギはgopherの遠い親戚的なもの…。

マスコットもPlan 9つながり、主要な設計者のひとり、ロブ・パイクPlan 9開発を率いた人物、コンパイラのコマンド(gccgo - golang.jp)もPlan 9由来ということで、GoはPlan 9の色々を断片的に受け継いでいるようです。


次はHello Worldで、コードを見てみます。