Go読書会 #1 がランサーズ株式会社で行われたので進捗と技術的なメモ書きを書いておきます。読書会の内容はプログラミング言語Goを冒頭から皆で読み進めていくというものです。
進捗した内容
- まえがき
- Goの起源
- Goプロジェクト
- この本の構成
- より多くの情報を探すには
- 謝辞
- 1章 チュートリアル
- 1.1 ハローワールド
- 1.2 コマンドライン引数
話題に上がった話
まえがき
Goの起源で、プログラミング言語の樹形図参考が出てきまして以前読んだときはよく見るなと思って流していたのですが、よくよく考えるとALOGOL60とか見たことも触ったことも無いし現在使用されているメジャーなC,Pascalぐらいしか見たことがないことに気づいて、参会者に以下のことを聞いてみました。
- ALGOL60を触ったことある人
- Pascalを触ったことある人
ALGOL60を触ったことある人はさすがにいませんでした。Pascalに関して言えば Delphiの存在で触ったことがある人、授業で触ったことがある人がいました。並行性に関するプロセス計算の理論であるCSP の話もでてきました。こちらも論文読んだことある人はいないか、聞いてみましたがさすがにいませんでした。
チュートリアル
まだGoを触ったことも無い人も参加者にはいたのでDLしてinstallするところから開始しました。ここで出た話は、開発環境の構築ですね。基本的にはDlから落としてくるだけなのですがInstall the Go tools まで既にinstallしている人が案内して基本的な設定は無事出来ました。
ここでは、
- package main
- go fmt
- go doc
- go imports
ついて話しました。
package mainにおけるmain関数の役割は、Cの場合はGNU開発ツールに詳しいです。LinuxのCにおける_startルーチン等を確認する概ね分かります。(Windowsはどうしているのでしょうか。) Goの場合も同様かと考えています。
go importsに絡んでgoが使用していないimportがあるとコンパイルエラーが起きること、使用されていない変数が有るとこれもコンパイルエラーが起きることとgo fmtでコードの整形をすることを伝えた上で、良くあるインデント戦争がこれで回避されるねという話もしました。
コマンドライン引数から
for文の使い方
これまでの使っている言語とちがい、繰り返しがforだけで書かれますwhile文に相当するfor conditionで回すところが始めて見る方は面食らったりしたようでその辺を話しました。
あとは、forの書き方の違いでどのようなASTが生成されるのか気になったのでrubyだとこんな感じで書けるんですけどGoだとどうすればいいんですかねという話をしていました。
ruby --dump=parsetree -e 'puts "hello world"'
あとで調査したらGoの場合は以下のURLの方法でいけました。
大体それぐらいの話をしたときに時間で次回は1.3から開始する予定です。