「プログラミング言語Go勉強会」に参加してきました

Image Fade: SVGo output
Creative Commons License photo credit: ajstarks

2010年7月24日に京都リサーチパークにて開催された「プログラミング言語Go勉強会」に参加してきました。

今回は、勉強会の様子や、Go言語について僕が学んだことを少し簡単にまとめてみたいと思います。

なお、勉強会の資料はこちらのページからダウンロードできますよ。

勉強会の様子

約30人もの参加者が京都リサーチパーク(KRP)の会議室に集まりました。

勉強会の時間は2時間。
内容的には、前半一時間と後半一時間で大きく分かれていたかな、と思います。

勉強会前半:講師によるGo言語についての解説

勉強会の前半一時間は、講師の方によるスライドを使いながらのGo言語についての解説。

Googleが開発した新しいシステムプログラミング言語であるGo言語の言語的特徴・重要な文法について丁寧に説明されていました。

Go言語は、既存のシステムプログラミング言語が同時に満たすことがなかった、

  • 効率的なコンパイル
  • 効率的な実行
  • 容易なプログラミング

という三つの要素全てを満たすことを目標にしているようです。

現在Mac OS X、FreeBSD、Linuxの三つのOSに絶賛対応中!(Windowsは非対応!)

発表を聞いていて、”goroutine”という並列処理を容易に行うための構文にもの凄く興味がわきました。
以下のように書くことで、func()内で記述した処理を元来の処理とは並列に実行することができるみたい!

「go」のあとに他の部分で実装した関数を指定することもできるみたいです。
とっても簡単ですね!

勉強会後半:質疑応答、その他濃ゆいお話…

後半一時間は、講師の方の発表についての質疑応答・議論や、他の参加者の方がGo言語について独自に調査した内容の発表等がありました。

個人的に面白かったのは、goroutineの実装(ソースコード)を読まれた人のお話です。
カーネルスレッドを使ってgoroutineがどのように実現されているのかについて、熱く語られていました。

何でも、カーネルスレッドとgoroutineは1対1対応ではなくてn対n対応だそう。
カーネルスレッド間でgoroutineが移動したり、一つのカーネルスレッドの中で複数のgoroutineが動いたりしている、という内容でした。

話の全てを理解できたわけではありませんでしたが、聞いていてとっても面白かったです。

純粋に技術が好きで、その技術について一生懸命調べて、みんなの前で話す。
とっても素晴らしいことですね!
「いつかは僕もそれができるようになりたいな!」と思いました。

まとめ

効率的なコンパイル・実行、容易なプログラミングを実現するという目標を携えて、鳴り物入りで登場したGo言語ですが、まだまだ「未成熟な言語」ということもあり、「どういう場面で使うべきなのかわからない」という印象を受けました。

僕自身のスキルアップと共に、言語にもどんどん成熟していってもらって、いつの日か利用できるシーンが来ればいいな、と思います。

Go言語でHackathonとかが開催されるのなら、一度本気で勉強してみようかなぁ!
それでは!