Go
golang
language

何故Go言語を私は使いたいのか? 良い点と悪い点を雑にまとめる


前書き

選択肢は多いし、自分がやりたいことを実現するには"どちらが適切か"を踏まえると、

言語を選ぶことはなかなか難しいものです。

Go言語で開発をやろうと思った時に、何故Go言語でやりたいのか、

また、どういう点でイケてないと思っているのかを

思考の整理のためにまとめた記事になります。

この記事は、ベストなプログラミング言語だと主張する記事ではありません。

ご自身でで確かな情報に基づいて言語の調査をする際の助けになれば幸いです。


良い点


1. パフォーマンス


  • Ruby, pythonなどと比較すると良い


2. デプロイの容易さ


  • 多くの場合、単一ファイルで良い。

    ただしコンテナをデプロイできる時代なので優位性は(ry


3. 多くの標準ライブラリ


  • net, encoding, html, os, etc...


4. 周辺ツールの充実


  • Gofmtによるコードフォーマットの強制


5. シンプルな言語仕様


  • 学習コストが比較的少ない


6. スレッドモデルによる並列処理


  • イベントモデルは辛い (主観)


7. コンパイルによるバグの見つけやすさ


  • go vetでコードの静的解析を行うことができる(標準ツール)


8. コンパイルの速さ


  • C++, javaと比較 するとコンパイルが早い


9. 移植性が良い


  • 内部エンコーディングはutf-8


10. Googleが作ってる安心感


悪い点


1. シンプルな言語実装だが、ハマりどころが少ないわけではない 1  2


  • nilインターフェースがnilじゃない

  • 変数のシャドーイングの挙動 etc...


2. シンプルすぎてプログラミング言語として色々不足を感じる(主観)


  • 例外がない

  • 継承がない

  • Genericsがない(次のverで追加?) etc...


3. 学んだ所で言語として特に新しい発見があまりない 3


  • 1970年代で止まった言語に見える

  • 40年間のプログラミング言語の研究を排除した最新の言語

  • Goはブルーカラー(普通)の開発者のための言語


    • ただし開発者には2パターンいる

    • できるだけ簡単かつ迅速に作業を進めたいという開発者

    • 最新の「革新的」言語を追いかけている開発者







  1. なぜGo言語は設計が悪いのか – Go愛好者の見地から https://postd.cc/why-go-is-a-poorly-designed-language/ 



  2. 7 common mistakes in Go and when to avoid them by Steve Francia (Docker) https://www.youtube.com/watch?v=29LLRKIL_TI 



  3. Why Everyone Hates Go (https://npf.io/2014/10/why-everyone-hates-go/) (かなり古い)