2 ポイント 投稿者 GN⁺ 2024-08-13 | 1件のコメント | WhatsAppで共有

Goは私のハンマー、すべてが釘

紹介

  • Markusは一人で働く開発者であり、デジタル製品の制作者
  • チームを持たず一人で働き、柔軟な働き方を志向している
  • 複雑な技術スタックを避け、顧客に価値を提供することに集中している

Goを選んだ理由

理由1: Goはほぼ何でもできる

  • Goはシンプルで読みやすく、一貫性がある
  • CLI、クラウドインフラ、HTTPサーバー、ネットワーク処理など、さまざまな用途に使える
  • Nintendo Switchのゲーム、GUIアプリ、ターミナル文字列シンセサイザーなどもGoで開発できる

理由2: コンテキストスイッチの減少

  • 複数のプログラミング言語を使うと、文法の切り替えに苦労する
  • 1つの言語だけを使えば、こうした問題を避けられる
  • 言語、コンパイラ、IDE、ツールチェーン、コミュニティなど、さまざまな要素を管理しやすい

理由3: 深い知識

  • 1つの言語に集中すれば、より深い知識を築ける
  • 複数の言語を扱うより、1つの言語に集中するほうが生産的
  • ソフトウェア開発の複雑さを減らすのに役立つ

結論

  • MarkusはGoを使ってさまざまなプロジェクトを成功させている
  • Goに関する深い知識によって生産性を高めている
  • Goを通じてさまざまな課題を解決できる

GN⁺のまとめ

  • Markusは一人で働く開発者としてGoを選び、複雑さを減らして生産性を高めている
  • Goはさまざまな用途に使え、シンプルで一貫性があるため管理しやすい
  • 1つの言語に集中すれば深い知識を築け、複数の言語を扱うより効率的
  • Goを通じてさまざまなプロジェクトを成功させることができ、これは他の開発者にとっても有益になりうる

1件のコメント

 
GN⁺ 2024-08-13
Hacker Newsの意見
  • Goを使って金融データを処理する会社で働いた経験がある

    • 同僚がCSVファイルを集計したりデータベースを更新したりするような単発作業にGoを使うことに違和感があった
    • Pandasを使わずに基本的なアルゴリズムを自前で実装する同僚を見て、信頼しづらかった
    • 会社の時間の無駄だと思ったし、Goで十分だと示したいプライドの問題にも見えた
  • 言語をきちんと学ぶコストを過小評価している人は多い

    • その言語を「知っている」と言えるレベルに達するまでに2〜4年かかる
    • 言語、コンパイラ、ランタイム、標準ライブラリ、イディオムを理解するには8〜10年かかる
    • その期間のあいだに、その言語の使い方を発展させ、初心者を素早く訓練できるようになる
  • Goはほぼあらゆる作業に適していると思う

    • Goを使うと生産性が非常に高い
    • プロジェクトが100行を超えるならPythonより優れている
    • Goの利点:
      • 言語がとてもシンプル
      • コアライブラリの設計が優れている
      • ツールチェーンとコアライブラリだけで大半の作業をこなせる
  • Goは個人プロジェクトには向いていないと思う

    • コードが冗長で、単純な作業でも多くのコードを書かなければならない
    • 適切な列挙型、合併型、null安全性などが不足している
    • こうした理由から、個人プロジェクトでは楽しさを感じない
  • TypescriptとRustを好む

    • DenoとTypescriptはGoよりも汎用性の高いツールだ
    • Typescriptはより安全で人間工学的だが、やや遅い
    • Rustはより安全で高速だが、学ぶのが難しい
    • Typescriptの利点:
      • null安全性
      • 広くサポートされているジェネリクス
      • 判別可能なユニオン型
      • 安全な並行性
      • コレクション/イテレータメソッド
    • Goの利点:
      • サイズとメモリ使用量の面でより効率的
      • GoのGCはV8より優れている
      • CPUバウンドな作業でより高速
      • より大きな標準ライブラリ
  • GoとTypescriptを使ってきたが、Kotlin/JVMのほうを好む

    • Gradle/Mavenの二分化やビルドシステムへの不安はあるが、言語機能とランタイムの面では非常に満足している
  • Goは万能ツールだと思う

    • 何もかもがシンプルで使いやすい
    • 外部ツールを多用しなくても、簡単なコマンドでコンパイルしてデプロイできる
    • 他の言語にも長所はあるが、Goほどシンプルで煩わしくないものはない
  • Goは好きだが、愛しているわけではない

    • ツール周りはひどいと思う
    • Go modulesは未完成な印象がある
    • ジェネリクスはまだ原始的
    • エコシステムも未完成だと感じる
  • Goの大半の側面は好きだが、数値コードを多く書く人間としては演算子オーバーロードがないのが欠点だ

    • PythonとC++を使い続けている
    • RustはC++の代替としては魅力的だが、Pythonの代わりにするにはルールが多すぎる
  • 人生は一つのことを極めるだけでも短いのだから、慎重に選ぶべきだ

    • Goを選んだ理由:
      • 素晴らしい標準ライブラリ
      • 読み書きが簡単
      • 単一の静的バイナリをビルドできる
      • コンテナが不要
      • どこでも使える(Web開発、デスクトップアプリ、ゲーム開発、組み込みなど)