過去の期間において、Go 言語の中国語 Web サイトは Python 関連のパブリック アカウントを多数宣伝してきましたが、多くの人は「なぜすべての Python アカウントが宣伝されているのですか?」と驚きました。実は、主な理由は、Python カテゴリの公開アカウントが多すぎて、その多くに非常に多くのファンがいるということですが、私も非常に困惑しています。しかし、それらは学ぶ価値があり、Go にはまだ長い道のりがあることも示しています。
Python と Go のどちらを選びますか? Go (Golang) をより深く理解している場合は、間違いなく Go (Golang) を選択するでしょう。それ以外の場合は、Python が選択されます。それでは、それについて議論しましょう。 Python の皆さん、Go を選ぶ 5 つの理由をここに挙げます。この記事を一緒に読みましょう。
「Python、特に非同期機能を備えた Python 3 は非常に強力ですが、大企業では Go が完全にその地位を占めるでしょう...」
もし本当にそうなら上記を理解したら、Go プログラミング言語を使ってみてください。 Go は、Javascript プログラミングよりもさらに簡単で、あらゆるアプリケーション環境に適応できる非常にシンプルなプログラミング言語だと思います。おそらくこれが、Go プログラミング言語が近年人気になっている理由です。
この記事では、両方の言語の次の点を比較します。これらのパラメータは、現在のプロジェクトにどの言語がより適しているかを判断するのに役立ちます。
1. パフォーマンス
2. スケーラビリティ
3. 実用的なアプリケーション
4. 実行方法
5. プログラム ライブラリ
6. コードの可読性
Web サイト TreeScale.com のホームページと API は、特定の分析ツールに基づいた Web アプリケーションです。彼らの技術スタックは次のとおりです:
React.js ホーム フロントエンド
Django Python ホーム バックエンドおよび認証サービス
Node.js API サービス
PostgreSQL データベース、Cassandra ログ システム
使用中のカスタム コンテナ レジストリ Rust 言語
Python
Repustate はほぼ完全に Python ショップです。彼らは Django を使用して API と Web サイトを実装します。したがって、コードの一貫性を維持するために、(現時点では) Python を使用してアラビア語センチメント エンジンを実装することが合理的です。プロトタイピングと実装のみの場合は、Python が適しています。
その表現能力は非常に強力で、サードパーティのクラス ライブラリも非常に優れています。 Web サービスを使用する場合は、Python が最適です。ただし、低レベルの計算を実行し、比較のためにハッシュ テーブル (Python の辞書型) に大きく依存すると、すべてが遅くなります。 1 秒あたり 2 ~ 3 件のアラビア語文書を処理できましたが、それは遅すぎました。比較すると、同社の英語センチメント エンジンは 1 秒あたり約 500 件のドキュメントを処理できます。
上記からわかるように、基本フレームワークは完全にマイクロサービスとロジックの分離 (フロントエンドとバックエンドの分離) に基づいており、さらにはまったく異なるテクノロジーで実装されています。
API サービスとバックエンドを 1 つのプロジェクトに統合する主な理由は、それらが多くの場所で類似しており、複数の言語またはテクノロジでコード化されており、重複コードが多数あるためです。最後に、特に JSON 応答のカスタマイズに関しては、Django の API サービスのパーソナライズに多くの時間を費やす必要があります。
通常のアプリケーションを開発する場合には Django を使用するのが最適だと思いますが、より高いパフォーマンスやパーソナライズされたモジュールが必要な場合には、Django を使用すると作業がより複雑になります。
なぜ Go プログラミングを選ぶのですか?
1. 単一のバイナリ ファイルにコンパイルする
Golang はコンパイル済み言語であり、Googe の開発者は多大な労力を費やしてきました。それ。静的リンクを使用して、オペレーティング システムの種類と環境に基づいて、関連するすべてのライブラリ ファイルとモジュールを単一のバイナリ ファイルに実際に結合します。これは、バックエンド アプリケーションを Linux オペレーティング システムと X86 CPU ベースのアプリケーションにコンパイルする場合にも意味します。 , コンパイルされたバイナリ アプリケーションをサーバーにダウンロードするだけで、関連ファイルがなくてもバックエンド アプリケーションが動作します。
2. 静的型システム
型システムは大規模なアプリケーションにとって非常に重要です。 Python は素晴らしく楽しい言語ですが、実際には文字列型である変数を整数変数として使用しようとすると、奇妙な例外が発生することがあります。
def some_view (request): user_id = request.POST.get ('id', 0)
このようなコードは Django をクラッシュさせます。
そして Go はコンパイルしてコンパイラ エラーであることを通知します。そこで愚かな問題に取り組む時間を稼ぎます。
3. 最適化 (パフォーマンス)
驚くべきことに、ほとんどのアプリケーション シナリオでは Go の方が Python (バージョン 2 または 3) よりも優れており、高速です。比較の結果はベンチマークで確認できますが、これはもちろん不公平であり、アプリケーションの種類やユーザーの使用例によって異なります。
私たちの知る限り、Go には独自のマルチスレッド モジュールと CPU のスケーラビリティがあり、その結果、パフォーマンスが向上します。内部リクエストを実行する必要がある場合は、Goroutine を使用してそれらを個別に実行できます。これにより、Python のスレッドよりも 10 倍のリソースが節約されます。これらの組み込み言語機能を使用すると、多くのリソース (メモリと CPU) を節約できます。
4. Go には Web フレームワークが不要になりました
これはプログラミング言語にとって素晴らしいことです。 Go 言語の作成者とコミュニティには、コア言語でサポートされる多くの組み込みツールが用意されており、ほとんどの場合、サードパーティのライブラリは必要ありません。たとえば、http、json、html テンプレートが組み込まれています。 Github でサードパーティのライブラリを見つけることを心配することなく、非常に複雑な API サービスも構築できます。
もちろん、Go には Web プロジェクトを構築するためのライブラリやフレームワークも多数ありますが、Web プロジェクトや API サービスを構築するためにサードパーティのライブラリを使用しないことをお勧めします。標準のライブラリ パッケージを使用すると作業が楽になります。
5. IDE サポートとデバッグの改善
IDE サポートは、プログラミング言語を変更しようとするときに最も重要な考慮事項の 1 つです。フレンドリーな IDE により、プログラミング時間を平均 80% 節約できます。 JetBrains IDEA 用の Go プラグインは、(Webstorm、PHPStorm など) などの他のサポートも提供します。このプラグインは、プロジェクト開発に必要なサービスを提供します。強力な JetBrains IDEA は開発をより強力にします。さらに優れているのは Goland です。
「行く」か「家に帰る」を選択しますか?
Mozilla は、強力な goroutine のおかげで、その広大な基礎となるロギング アーキテクチャを内部で Go に変換しています。 Go 言語は Google の人々によって設計されており、同時実行性のサポートは、他のさまざまな Python ソリューションのように後から追加されるのではなく、設計の初めに最優先事項でした。そこで私たちは Python から Go への切り替えを開始しました。
私たちの Go コード製品はまだ正式にリリースされていませんが、結果は有望です。これで、1 秒あたり 1,000 個のドキュメントを処理できるようになり、使用するメモリが減り、Python で発生した問題 (醜い multiprocess/gevent/「Why Control-C can't kill process」) をデバッグする必要がなくなりました。
なぜ私たちは囲碁が好きなのでしょうか?
プログラミング言語の仕組み (解釈とコンパイル、動的と静的) について少しでも知っている人なら、「ふむ、もちろん Go のほうが速い」と言うでしょう。確かに、すべてを Java で書き直して、同様の高速な改善を確認することもできますが、それが Go が勝つ理由ではありません。
Go で書いたコードは正しいようです。何が起こっているのかわかりませんが、コードがコンパイルされると (コンパイル速度が速くなり)、コードが機能する (正しく実行されるだけでなく、論理的にも正しい) と感じられます。信頼性に欠けるように聞こえるかもしれませんが、本当です。
これは、冗長性 (または非冗長性) の点で Python に非常に似ています。何よりもまず関数を対象としているため、関数型プログラミングは理解しやすくなります。確かに、Go のスレッドとチャネルを使用すると作業が容易になり、静的型付けによってパフォーマンスが大幅に向上し、メモリ割り当てをより適切に制御できるようになりますが、言語の表現力のために多くを支払う必要はありません。
コード統計によると、Go でプロジェクトを書き直した後、コードは 64% 削減されました。
存在しないコードをデバッグする必要はありません。コードが減ればバグも減ります。
#結論
Go は優れた柔軟性を提供します。言語はすべてのユーザー シナリオで使用でき、すべてのユーザー シナリオで適切に機能します。バックエンドおよび API サービスでは、30% のパフォーマンスの最適化を達成しました。これで、ログをリアルタイムで処理し、データベースに変換し、WebSocket 経由で 1 つ以上のサービスを処理できるようになりました。これは Go 言語が提供する非常に強力な機能です。 go 言語の知識について詳しくは、php 中国語 Web サイトのgo 言語チュートリアル 列に注目してください。
以上が2021 年に Python を諦めて Go を選択する理由の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。