Posted at

Go言語開門

More than 1 year has passed since last update.

まだ、入ってはいないので開門。

※ここでまとめるのは技術的なことよりも、勉強会に参加して良いなと感じたことなどエモい話中心です。

技術的なことでしたら、他の方が丁寧にまとめてくださっております。


Goを使う上で良いなって感じたこと


チームで開発する際の優位性

Goに入ってはGoに従え」という言葉あるように、大体の人が同じコーディングになる。

GofmtとGolintで整形する必要があるので、開発する際は個々が好きなフォーマットで開発しても問題ない。そのため、コーディング規約の同一や摺合せの必要がなくなる。

また、Goに触ったことがないニューカマーも

A Tour of Go

Effective Go

を一通りこなせば、キャッチアップできる。


普通に開発すればそこそこパフォーマンスが出せる

愚直にコーディングするしかないので、読み/書きの量は多いが、基本的には無難なコーディングとなっていく。

並列処理が開発しやすく、FIFOキューといった順番を考える処理も担保しやすい。

また、pprofでパフォーマンスの改善点を探すことができ、改善ポイントさえ見つけてしまえば他の人に実装を委ねることもできる。


シンプルな言語仕様

デザインが「悪い方が良い」原則(worse is better)である。

New Jersey アプローチ:はじめから必要なものは一通り用意されいる

Goのkeyword(予約語)は25語あるだが、マイナーチェンジの間は変わらない。言語のバージョンアップも原則バグフィックスかパフォーマンス改善となっている。なので、基本的にはひたすら同じコードは動く。

シンプルは後から足せないので、言語のバージョンアップによるデグレを確認しなくて良いのは良いと思いました。

(使っている機能が消されたら辛い

※対立的にMITアプローチというものがある。

(一貫性を欠かさない。代わりに完全性が少しだけ犠牲にしても良い)

参考:http://chasen.org/~daiti-m/text/worse-is-better-ja.html


配布が用意

バイナリとしてビルドができるので、自分で作ったツールを他に配りやすいのは良いと思いました。


ハマりそうなポイント

http://www.yunabe.jp/docs/golang_pitfall.html

https://qiita.com/umisama/items/e215d49138e949d7f805