周回遅れのGo言語

2009年11月10日にGoogleは新しいシステムプログラミング言語Goを発表した。現在、Googleでは彼らが保有しているシステムのフルビルドには信じられないような時間がかかっているそうですが、それを解決するためにコンパイルが速い言語の開発が必要になったという事らしいです。ちなみにGoの標準ライブラリ全体(12万行程度)のビルドは9秒で終わるらしいです。

彼らがシステムプログラミング言語と言っているように、あまり普通の開発者が利用するような言語ではなさそうで、GUI系のライブラリはほとんど用意されていません。その一方で、通信(ウェブ)周りで必要そうなライブラリは一式揃っています。またGo言語には、goroutineと呼ばれる並列処理を簡単に記述できる仕組みが用意されています。

私は新しい言語に飛びつく方ではないですが、公開から1年以上経過してからドキュメントを読みなおすと、良く出来ている部分もあるので少し勉強してみたいと思います。

昨年末にGoogleのサンフランシスコオフィスのディナーに招待された時に、Go言語のDeveloper AdvocateのAndrew Gerrandに色々話を聞いたのですが、飲んでいたのと当時はGo言語にまったく興味が無かった事もあり、コレといった情報を覚えていないのが非常に悔やまれます。

私がGo言語をちょっと勉強しても良いかなと思ったのはGo言語のCodelab”Writing Web Applications”日本語訳)を読んだ事にあります。CodelabとはGoogleの社内用語で、学習プログラム(カリキュラム)のことです。このCodelabは、短時間でそのテクノロジーを学習できるように設計されています。

私もGoogleからの依頼を受けて、Google App Engine用のCodelabを開発した事がありますが、たったコレだけで3ヶ月かかりました。事前にCodelab開発経験者からおおむね3ヶ月ぐらい掛かると聞いていましたが、実際に無駄な要素を削ったり、学習してもらいたい機能を組み込むようにしたりかなり手が込んでいます。

逆にその経験があったので、それ以来Codelabのドキュメントを見かけた時には必ず目を通すようにしています。今回は偶然Go言語のCodelabに目を通すことになった訳ですが、やっぱり非常に良くできていて、一発で興味がわきました。

詳細はCodelabのドキュメントを読んでもらうのが一番良いですが、下記のコードだけでウェブサーバーとしての実行ファイルを得る事ができます。勘違いしている人も多いですが、Go言語はインタープリターやVM型の言語では無く、実行ファイルが生成されます。

package main

import (
	"fmt"
	"http"
)

func handler(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:])
}

func main() {
	http.HandleFunc("/", handler)
	http.ListenAndServe(":8080", nil)
}

これをコンパイル・実行して、http://localhost:8080/にアクセスすると「Hi there, Ilove !」と表示されます。

Be Sociable, Share!

「周回遅れのGo言語」への1件のフィードバック

  1. whoah this blog is fantastic i love reading your posts.
    Stay up the good work! You already know, many individuals are searching round for
    this information, you could help them greatly.

コメントを残す

メールアドレスが公開されることはありません。