Go言語の基礎知識(1):基礎入門

1. はじめに

Go 言語は Golang とも呼ばれ、2009 年に Google によってリリースされましたが、近年、クラウド コンピューティング、マイクロサービス、ディストリビューションの発展に伴い急速に台頭し、Java と同様に主流のプログラミング言語の 1 つとなっています。これは静的で、厳密に型付けされ、コンパイルされたプログラミング言語であり、同時実行のために生まれたため、当然ながら同時プログラミング (ネットワーク プログラミング) に適しています。

現在、Go言語はWindowsやLinuxなどのマルチプラットフォームに対応しており、AndroidやiOSなどのモバイル端末上でも直接実行することができ、ビジネスの観点からもクラウドコンピューティング、マイクロサービス、ビッグデータ、ブロックチェーン、モノのインターネット、人工知能などの分野には幅広い用途があります。だから今こそ学ぶべき時なのです。

2. Go言語の作者

ここに画像の説明を挿入

Go 言語の父 (左から右へ、ロバート グリーズマー、ロブ パイク、ケン トンプソン)

C 言語 Unix と Plan9 の創設者の 1 人であるKen Thompson は、1970 年代に Unix オペレーティング システムを設計および実装し、Rob Pike とともに UTF-8 エンコーディングも設計しました。

Rob Pike は、 UTF-8 エンコーディングを設計しただけでなく、分散マルチユーザー オペレーティング システム Plan9 Inferno オペレーティング システムと Limbo プログラミング言語も開発しました。

Robert Griesemer はGoogle に勤務しており、Chrome ブラウザの Google V8 エンジンのコードを担当しています。

その日の午後、Google マウンテンビュー本社のオフィスで、ロブ・パイクは C++ プロジェクトのコンパイルとビルドを開始しました。過去の経験から判断すると、このビルドには約 1 時間かかります。この時間を利用して、ロブ・パイクはロバート・グリズモアとケン・トンプソンと話し合い、新しいプログラミング言語の設計についてアイデアを交換しました。

この考えの理由は、当時、Google は主に C++ 言語を使用してさまざまなシステムを構築していましたが、C++ の膨大な複雑さ、コンパイルと構築の速度の遅さ、サーバー プログラムを作成する際の同時実行性のサポートの不足が 3 つの大きな問題を引き起こしていると感じたそうです。非常に不便だったので、彼らは新しい言語を設計したいと考えました。彼らの初期の構想では、この新しい言語はプログラマーに幸福をもたらし、将来のハードウェア開発トレンドに適合し、Google 社内の大規模ネットワーク サービス プログラムの開発に適しているはずでした。

彼らは 2007 年に Go 言語の設計を開始し、2009 年に正式にリリースしました。Go言語はPythonなどの動的言語の開発速度だけでなく、C/C++などのコンパイル言語のパフォーマンスとセキュリティも兼ね備えています。21 世紀の C 言語としても知られ、基盤となるオペレーティング システムにアクセスできるだけでなく、強力なネットワーク プログラミング、同時プログラミング、分散プログラミングも提供します。

Go 言語プロジェクトがオープンソース化された後、Go 言語には、ロブ・パーカーの妻であるレニー・フレンチがデザインした Gopher という独自の「マスコット」も登場し、世界中の Go プログラマーの象徴となっており、Go プログラマーも通称ゴーファー。
ここに画像の説明を挿入

3. Go言語の機能

オープンソースのGo 自体は Go 言語で書かれています。

武道で破れないのは速度だけ C言語など速い言語を選ぶが開発は難しい コンパイル速度依存性や実行時間にエラーが多い、もしくは言語によっては依存関係が多すぎます。最も重要なのは、Java 言語ではコードを実行するために仮想マシンが必要であり、JavaScript と Node.js はメンテナンスの悪夢であるなど、インタープリター自体です。特にコールバックの場合。Go 言語は高速コンパイルを念頭に置いて設計されました。彼は他のインタープリター言語と同様に、コンパイルしていることに気づかないでしょう。Go 言語は開発効率と実行効率の完璧な組み合わせを実現しており、Python (効率) コードを書くように C 言語 (パフォーマンス) コードを書くことができます。
ここに画像の説明を挿入

安全性強く型付けされた静的言語として、独自のガベージ コレクション メカニズムを備えているため安全でもあります。Go の言語設計には C 言語と同様にポインターを操作する機能がありますが、メモリは Go 自体によって管理されるため、通常は C 言語ほど危険ではありません。

簡潔なコードGo 言語はコンパイルが速いだけでなく、簡潔で読みやすいです。

コンパイル済み仮想マシンのサポートは必要なく、マシンコードに直接コンパイルでき、コンパイルされたファイルは他のパッケージ ファイルに依存する必要がありません。

クロスプラットフォームGo 言語にはクロスコンパイルがあり、OS X、Linux、Windows、Arm、またはその他のプラットフォームなど、指定したプラットフォームで実行するように簡単にコンパイルできます。

自動ガベージ コレクションプログラム実行中のガベージ コレクションは、通常、Go ランタイム システムのみが担当します。ただし、Go を使用すると、この作業に介入することもできます。

組み込みパッケージGo 言語には、使用できるほぼすべての標準ライブラリがあります。たとえば、http ネットワーク プロトコル パッケージ、json 分析パッケージ、time time パッケージなどです。この種の断片化されたものは、システム内でほとんどの時間を占めます。

完全なビルド ツールGo 言語の優れた組み込みコマンド ツールには、多くの強力なコマンドとツールが付属しており、それらを使用して、Go プログラムの取得、コンパイル、テスト、インストール、実行、分析などの一連のタスクを簡単に完了できます。 。たとえば、コード形式が自動的に設定され、コード内の問題がチェックされ、保存するたびに go fmt コマンドによってコードが自動的にフォーマットされます。

ネイティブ並行プログラミング並行性は Go 言語のハイライトであり、並行性の最小単位はコルーチンです。コルーチンはマイクロスレッドですが、スレッドとは異なります。コルーチンは Go 言語自体によって作成され、Go 言語自体のランタイムによってスケジュールされます。他の言語でスレッドを使用して解決する必要がある問題。コンピューターが開くことができるスレッドの数には制限があります。Go 言語では、コルーチンが非常に小さく、コンピューター リソースを占有しないため、処理のためにコルーチンを開始するのが簡単です。コンピューターは何千ものコルーチンを簡単に開くことができますが、このビッグデータの時代において、大量のデータを処理でき、シンプルで高速かつオープンな言語は Go に他なりません。

4. Go言語を使用している企業はどこですか

Go コミュニティには少なくとも 100 万人の Go プログラマーがいます。Go 言語を採用する企業はますます増えており、Go 言語を使用している最も有名な企業は、Google、Docker、Dropbox、Heraku、Uber などです。Didi、Tencent、Ali、JD.com、iQiyi、Xiaomi、360、Meituan、Lvmama.com、Douyu Live、Tantan などの国内企業はすべて Go 言語を使用しています。Bilibiliを含めた背景もjavaからGoに移行しており、Go言語の人気が分かります。Docker、Kubernetes、Prometheus、Ethereum (イーサリアム)、Istio、CockroachDB、InfluxDB、Terraform、Etcd、Consul など、考えられる最新のクラウド コンピューティング インフラストラクチャ ソフトウェアの人気があり信頼できる作品のほとんどは Go で書かれています。 。もちろん、このリストはまだ増え続けており、Go 言語の影響がすでに非常に強いことを示しています。

5.GO言語プロジェクト

docker : PAASプラットフォームの形成を実現できるlxcベースの仮想パッケージングツール。

kubernetes : Kubernetes は、Google がオープンソース化したコンテナ オーケストレーション エンジンで、自動展開、大規模なスケーラビリティ、アプリケーション コンテナ管理をサポートします。実稼働環境にアプリケーションをデプロイする場合、アプリケーションのリクエストの負荷を分散するために、アプリケーションの複数のインスタンスをデプロイするのが一般的です。

ブロックチェーン: BTCD は、Go 言語で実装された完全なノードのビットコイン実装です。

nsq : 非常に高いパフォーマンスを備えた Bitly のオープン ソース メッセージ キュー システム。現在、毎日数十億のメッセージを処理しています。

Packer : VM、vbox、AWS などのさまざまなプラットフォーム用のイメージ ファイルを生成するために使用されます。作成者は vagrant の作成者です

Skynet : 分散スケジューリング フレームワーク

Doozer : ZooKeeper に似た分散同期ツール

Heka : mazila オープンソース ログ処理システム

cbfs : couchbase オープンソース分散ファイル システム

tsuru : SAEと全く同じ機能を持つオープンソースのPAASプラットフォーム

groupcache : Google のダウンロード システム用に memcahe の作者によって作成されたキャッシュ システム

god : Redis に似たキャッシュ システムですが、分散とスケーラビリティをサポートします

gor : ネットワークトラフィックのキャプチャおよび再生ツール

おすすめ

転載: blog.csdn.net/weixin_44816664/article/details/131549728