ああ、Go、プログラミング言語。おそらく、社内で自社の API がいかに「驚くほど速い」かについて常に話し続ける熱心な開発者から、このことについて聞いたことがあるでしょう。確かに、あなたは他の言語に手を出したことがあり、おそらく「本当に別の言語が必要なのでしょうか?」と考えたことがあるでしょう。ネタバレ注意:はい、そうです。 Go はその言語です。可能な限り皮肉を込めて誠実な方法でそれを詳しく説明しましょう。
Go の構文は非常に単純なので、ほとんど侮辱的です。 JavaScript フレームワークの複雑さをマスターしたり、Python デコレータと格闘したり、ライブ手榴弾のように C のメモリ管理を踊り回ったりするのに何年も費やしてきた人にとって、Go は誰かから塗り絵を渡されたように感じるでしょう。いや、真剣に。 Go は意図的にミニマルになっており、「そんな派手な機能は必要ありません。とにかく物事を終わらせましょう」という哲学を持っています。
他の言語では、コードを精巧で読めない芸術作品に仕上げるためのツールがすべて提供されていますが、Go の設計者は、「とにかく、それを機能させてみよう」と考えました。複雑な継承階層、複雑な関数のオーバーロード、悪い夢の代数のようなテンプレートはありません。単刀直入に要点を絞ったコードです。まるで「そんなに難しく考えるのはやめてください」と言っているかのようです。
従来の言語で同時実行性に対処しようとしたことがあるなら、それがどれほどの害をもたらすか知っているでしょう。スレッド プール、ミューテックス、デッドロックなど、考えただけで丸まって泣きたくなります。でも行く?いや、Go は「スレッド? ふーん。ほら、ゴルーチンがあるよ」と言います。 Go で軽量スレッドをスピンアップすることがいかに簡単であるかは、ほとんど無礼なほどです。関数呼び出しの前に go キーワードをスローするだけで、BAM が同時に実行されます。
そして、私に Go のチャンネルを始めさせないでください。それは、Go が他のすべての言語の並行性の試みを見て、「あなたたちはそれを複雑にしすぎている、これを見てください」と言ったようなものです。チャネルを使用すると、授業中にノートを渡す行儀の良い子供のように、叫んだり大騒ぎしたりすることなく、ゴルーチンがコミュニケーションできるようになります。あまりにもスムーズに動作するので、侮辱されたように感じるかもしれません。
単純な HTTP リクエストを行うためだけに 47 個のパッケージをインストールしなければならない時のあの気持ち、わかりますか?囲碁にはありません。 Go の標準ライブラリは、必要とは知らなかったが、今ではこれなしでは生きていけないスイス アーミー ナイフのようなものです。 Web サーバーを立ち上げたいですか?終わり。 JSONを扱う必要があるのでしょうか?簡単。ネットワーク経由で通信する並行プログラムを作成したいと考えていますか?すでにツールボックスに入っています。
Go の標準ライブラリには、「Web サービスを構築したいのですか?」と言っているかのような、静かな自信があります。 200 のサードパーティ依存関係を引き込んだり、魂を犠牲にしたりすることなく、それが可能です。」それは、高額なサブスクリプション費用なしで、言語のすべてのプレミアム機能を入手できるようなものです。正直に言うと、それはただ失礼です。
そこに座って足を叩きながら、Python または JavaScript コードが実行されるのを待っていたときのことを覚えていますか? Go にはそんなくだらないことをする時間はありません。コンパイルされており、高速です。まばたきするだけですぐに完了します。確かに、他の言語は最善を尽くしますが、Go は単に超高速のバイナリを投げてくるだけです。まだここにいるの?もう終わったよ。」
一番いいところは?内部で起こっている魔法をすべて理解する必要はありません。 Go がエスプレッソ上のウサイン・ボルトのように実行される実行可能ファイルを大量に生成していることはご存知でしょう。他の言語の人たちがウォームアップしてランニング シューズを履くのに時間がかかる中、ゴーさんはすでにゴールラインを越え、シャワーを浴び、レース後のスムージーを楽しんでいます。
Python スクリプトを Windows と Linux の両方で動作させようとしたことがありますか?そう、それは大学でグループプロジェクトを組織しようとするようなもので、混乱や奇妙な間違い、そして多くの指摘に満ちています。でも行く? Go は、使用しているプラットフォームを気にしません。一度コンパイルすれば、ほぼどこでも実行できるようになります。それはプログラミングの世界の「もちろん、何でも」という態度です。
そして、もしあなたが Docker コンテナを書くのが好きな人なら (そして本当のことを言いましょう。良いコンテナが嫌いな人がいるでしょうか?)、Go のバイナリは夢が叶うものです。ランタイム環境が「適切」であることに依存しない、静的にリンクされた単一のバイナリは、頼まれてもいないのに実際に料理をするルームメイトがいるのと同じです。本当だとはもったいないですが、ここまでです。
ここで、あなたが考えていることはわかります。「でも、小規模なサイド プロジェクトを構築したいだけだったらどうすればよいでしょうか?」確かに、それは可能です。しかし、本当のことを言いましょう。インターネットの大部分を管理する企業である Google が Go を開発したと聞いた瞬間、世界征服のために設計された強力なツールを手にしているような気分になるでしょう。確かに、おそらく小規模な Web サーバーまたは API から始めることになるでしょうが、心の底では、本当にその気になれば、これを使用して次の Google 規模のシステムを構築できることがわかっています。
そのとおりです。Go は規模を拡大できるように設計されていますが、最初のプロジェクトが ToDo リスト アプリであっても、誰もあなたを判断することはありませんので、ご安心ください。 (実はそうかもしれない。ほんの少しだけ。)
私たちは皆、オープンソース プロジェクトが大好きですよね?それは私たちに「コミュニティ」の一員であるという、温かく漠然とした感覚を与えてくれます。 Go はオープンソースなので、必要に応じてコードを詳しく調べることができます。実際にそれに何か貢献しますか?おそらくそうではありません。でも、十分だと思えばできるということを知っているだけで十分ですよね?
ミートアップで人々に、「そうですね、私は Go を使っています。完全にオープンソースで、コミュニティにとって素晴らしいものです。」と言うことができます。その後はただ座って、同僚からの敬意を持ったうなずきを楽しみましょう。あなたの実際の貢献の大部分が GitHub 上のスター付きリポジトリで構成されていることを誰も知る必要はありません。
ほら、私たちは皆、「熱心な」プログラミング コミュニティに参加したことがあるでしょう。一部の言語コミュニティ (名前は明かしませんが、あなたが誰であるかはご存知でしょう) は、その「ベスト プラクティス」や、for ループの正しい記述方法について絶えず細かいことを言っているため、少々威圧的である可能性があります。しかし、Go のコミュニティはどうでしょうか?まるで新鮮な空気の息吹のようです。彼らは協力的で親切で、簡単な質問をしたからといってあなたを馬鹿だと思わせることはありません。彼らがどれほど冷たいかは、ほとんど不安です。
おそらくそれは、言語自体が過度に複雑にしようとしていないため、誰も優越的に振る舞う必要性を感じていないからでしょう。理由が何であれ、Go コミュニティは、「アドバイス」を装った門番ではなく、本当のサポートが得られる場所です。
それでは、なぜ誰もが Go を学ぶ必要があるのでしょうか?それは、愚かでなくシンプルで、大騒ぎすることなく高速で、どんな突飛なプロジェクトを投げかけても十分に強力だからです。それは、いつも冷静で冷静で、苦労しているように見せかけずに、なんとかとんでもなく生産的な仕事をこなす友人のようなものです。
あなたを甘やかしたり、正気を犠牲にするよう要求したりする言語にうんざりしているなら、Go が最適です。試してみれば、あなたもオフィスで熱中しすぎる開発者になるかもしれません。そして正直に言って、それはちょっと楽しいと思いませんか?
以上が誰もが Go を学ぶべき理由 (たとえ人生に別の言語は必要ないと思っていても)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。