One minute
Goのいいとこ悪いとこを1個づつあげる
Goのいいところ悪いところをそれぞれ1個だけ挙げてみる。
いいところ
デプロイが簡単
もはやこれだけで、Goを使う価値があるといっていいほど。go build
からの、生成されたバイナリをサーバへ送って実行。
以上終わり。
これはすごい。。サーバ側は一切の設定、ミドルのインストールがいらない。
nodeやJVMなどの実行環境が不要。すごい。
よく言われる、Goのメリットだけど、本当にすごい。
ビルドしたら実行可能な単一のバイナリが吐きだされる。
プラットフォームごとにビルドするのも簡単。
この点の別のメリットとして、Go自体ののバージョンアップが簡単というのがある。
言語のバージョンが上がっても、ビルド後のバイナリとして正しく動いていれば、サーバ側はなんの変更もいらない。
バイナリを差し替えるだけ。
nodeやJVMだと、バージョンアップは大仕事だけど、Go簡単すぎ。すごい。
悪いところ
型が中途半端
これもよく言われているけど、型システム微妙。
これの最大の弊害は抽象化のしづらさにある。
色んなライブラリを見たつもりだけど、結構出てくるのがinterface{}
map[string]interface{}
が引数、戻り値。
型意味ねえ。
Goは静的型付け言語に分類されるが、抽象化しづらいので結局「何でも入る型」(Javaで言うならObject型)を使っちゃって、コンパイラの恩恵が少ない。
ジェネリクスに関する議論 は色々なされているようだけど、どうなるか。
まとめ
悪いところもあるけれど、「デプロイが簡単」「バージョンアップが簡単」のメリットを捨てるほどではない。
という結論に今のところなっている感じ。
Read other posts