講演者は鵜飼文敏氏。
プログラミング言語 Go
Go は Google が設計・開発したプログラミング言語。2009-11-10 公開。現在、125 人のコントリビューターがいる。
鵜飼氏は「Go」のことを「ゴー」と伸ばさず、「ゴ」と短く発音していた。
Go の思想
Go の理想は、今の世界に合った言語を作ること。今あるプログラミング言語は大きく分けて 2 つの主流があるので、その良い所どりをした言語を作りたい、とのこと。その主流のプログラミング言語は次の通り:
- C, C++, Java (コンパイル系言語; 型安全が保証される; 開発の進みが遅い)
- Perl, Ruby, Python (ライトウェイト言語: 動的言語; 開発の進みが速い)
具体的には
- 静的型付け・型安全
- ダック・タイピング
- 短いコンパイル時間
- 大規模プログラミング
- ネットワーク対応
- マルチコア対応
これらを前提にしたプログラミング言語を作りたいという。まあ、確かに魅力的。
The Go Playground
Go のホームページにはテキスト・ボックスがあって、その場で Go 言語のコンパイルを試せるやうになっている。是非、遊んでみて欲しいとのこと。
お題: 簡単な電卓を作る
簡単なお題と言って、鵜飼氏は 30 分程で電卓を作ってみせた。正直、速すぎてコードが追えなかった。
面白いと思ったのは、Go が多値を返せること。普通の言語だと return
文で返せる値は一つだけ。ところが Go は 2 つの値を返すことが可能。これを使うと、関数の実行に成功したかどうかをスマートに書ける。例えばこんな風に
line, err := in.ReadBytes('\n') if err != nil { break } fmt.Println(String(line))
C なんかだと、失敗した時は -1 を返すとか色々ルールがあって、C 言語のマナーに精通しないと分からないコードが出来やすかった。かういふ二値が返ると、さういふ「イディオム」が少なくなって、初心者への敷居が低くなる。良いね。
この他、色々とためになることを教わったけど、示されたコードと一緒に説明しないと伝わらなさそうなので、ポイントだけ列挙するにとどめる。
- int 型の他に、int8, int16 型などもあり。これらの自動変換は起きない。
- スライスは配列に使うポインター。長さを変えられる配列?
- バイトの配列と文字列は全くの別物
- 文字列は読み込み専用。utf8。中身は byte 列だけど、作り変えられている。
- interface ではメソッドを受け取れる型を定義する。コーディング時 implements は書かなくて良い。
- defer, recover, panic は Go 版 try-catch
あとがき
多値が返せるって所で Common Lisp みたい、と思って Go に惚れた。時間があったら、ちゃんと勉強してみたいな。
No comments:
Post a Comment