ToDo:
何度も似たようなものを書いた気がするものを、 Python 飽きたしイヤなので、 Go を使って書いてみている。少なくともしょうもないけどそれなりに大きいものを書くにはなかなか良い。
まずなんと言っても channel ってやつと coroutine が好き。自明な型とかはあんま書かなくていいのも良い。 Ruby や Python なんかのスクリプト言語に比べるとだいぶ冗長だし、自分で書いたことほとんどないけど、まあ世で見る Scala のコードとかよりもまだちょっと冗長な感はあるけど、 C++ に比べると雲泥。でもなんかダサい感じがあるのは不慣れなせいか、まぁ channel+coroutine 的なライバルであろう、 Erlang に比べればダサくない。
C++ に比べて良いなぁと思うのは、デフォでちゃんと出るバックトレースやら、それなりにそろってる標準ライブラリとかもある気がする。文字列処理やら、正規表現やら。今回使ってるのだと template とかもなかなか強力で良いなぁとか http://golang.org/pkg/template/
実行環境が型とかの情報持ってて、 fmt.Printf("%v", obj) とかでかなり良い出力が出るのも printf デバッグ好きとしてはかなり良いところ。一方でバイナリサイズとかデカくなりそうなんだけど、そのへんはどんなもんなんだろうな。
文句の方は、まず generics の不在はとりあえず痛い気がする。 map[string]int から map[string]interface{} への変換とかそのへんができるとだいぶ良くなる気もするけど、まぁ cast の無い二分木とかが実装できない気がするのが、家で書くコード的にはかなり痛い気がする。なんか家で書くコンパイルしたいコードってしょっちゅう set か priority_queue で探索してるんだよな…あと sort とかもダサい。
Effective Go に書いてあるようなコーディング規約はあまり気にいらない: http://golang.org/doc/effective_go.html
あと慣れなんだろうけど、思ってたより型後置ってやつが違和感がありまくる。それと C++ 脳としてはやはり struct の中にメソッド書きたいな…とか。
パフォーマンス気にしなくていいところで使ってるんで、気にするところだとどうなるかな…てのは気になるところ。
今のところ gdb とかは使ってないから、そのへんがどうなってるかとかも気になる感じかな。
感覚としては、 D よりも僕がぜひ欲しいと思う最重要なところがかなりそろっていて、あまりいらないけどそれなりに欲しいところがかなり無い感じかなぁ。どうも感動的とかまではいかんけどなかなか良いものぽいなと思ってたけど、その予想より少しだけ良いような…っていう感じ。なんていうか思ってたよりハマらなくて、処理系な完成度的によくできてる感が強い。
でも相変わらず家で書くコード的な用途はあんま思いつかないんだよな。 Scala に対するメリットはたぶんコンパイラが速いとかかな…
(23:17)
前 | 2012年 2月 |
次 | ||||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 |
全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。