ホームページ  >  記事  >  バックエンド開発  >  Go言語のソースコードは何で書かれているのでしょうか?

Go言語のソースコードは何で書かれているのでしょうか?

青灯夜游
青灯夜游オリジナル
2022-12-27 16:49:185080ブラウズ

Go 言語の初期のソースコードは C 言語とアセンブリ言語で記述されていましたが、Go 1.5 バージョン以降は完全に Go 言語自体で記述されています。 2014 年の初めには、Google は Go 言語のソース コードから C 言語を完全に削除する準備を開始していました。これは、Go 言語が真にブートストラップを完了し、以前のバージョンで Go 言語コンパイラを書き直すことができることを意味していました。

Go言語のソースコードは何で書かれているのでしょうか?

このチュートリアルの動作環境: Windows 7 システム、GO バージョン 1.18、Dell G3 コンピューター。

Go 言語はブートストラップを実装しました。これは、Golang が Golang 自体で記述されることを意味します。初期の Go はアセンブリ言語と C 言語で実装されていましたが、その後、Go が成熟すると、Go 言語は初期バージョンで Go 言語コンパイラをブートストラップして書き直すようになりました。

Go 1.5 バージョンからは、完全に Go 言語自体で書かれています。 Go 言語のソースコードは、Go 言語の根本的なスケジューリングを理解する上で非常に参考になるので、Go 言語をより深く理解したい方は一読をお勧めします。

#プロジェクトリンク: https://github.com/docker/docker

#Google、Go 言語の「脱 C 言語」を段階的に実装

多くのプログラミング言語の中核は C 言語です。現代のコンピューターの中核基盤は C 言語と Unix に基づいて構築されているとも言えます。Ken Thompson と Dennis Ritchie が作成したC 言語と Unix、そして C と Unix がすべてを再生成します。 JVM、PHP コア、GCC、Emacs、Vim、Unix、Linux などはすべて C 言語で書かれています。

Go 言語も当然例外ではありません。Go 言語コンパイラはもともと C 言語で書かれていました。Go 言語の作者の 1 人は、有名な創設者の Ken Thompson です。 2014 年の初めには、Google はすでに Go 言語のソース コードから C 言語を完全に削除する準備を開始していました。これは、Go 言語が真にブートストラップを完了できることを意味します。

Go言語のソースコードは何で書かれているのでしょうか?

Go 言語をブートストラップするための Google の具体的な計画

Go 言語は非常に効率的なプログラミング言語であり、 Java、C#、PHP、Python、その他の仮想マシンベースのインタプリタ型言語よりも優れたパフォーマンスと高いリソース使用効率を実現します。基本的にC/Cを除けばGo言語は最も性能が高く高性能な言語であり、CやCと比較すると構文面で大きなメリットがあります。

Java と PHP はどちらも部分的にしかブートストラップできません。Java の JVM は C 言語で実装する必要があり、PHP のコアも C 言語で記述する必要があります。ブートストラップを実装できるプログラミング言語は、チューリング完全なものである必要があります。したがって、HTMLやCSSはブートストラップすることができず、本当の意味でのプログラミング言語ではありません。

Google の具体的な実装手順: C to Go コンパイラを開発し、既存の C コンパイラを Go 言語に変換する; コンパイラのソース コード ツリーを変換して Go 言語コンパイラを取得する; C スタイルを明確にする Go コンパイラが変換される徹底的な Go 言語スタイルの Go コンパイラーに変換します。Go コンパイラーは、主にプロセッサーとメモリーのパフォーマンス使用量の問題を最適化し、並列メカニズムを追加し、冗長チェックと境界チェック機能を最適化および排除し、最新バージョンの go/parser および go/types 置換を使用して最適化されます。コンパイラのフロントエンド。

Go言語のソースコードは何で書かれているのでしょうか?

なぜ Google は Go 言語にブートストラップを実装したいのでしょうか?

ブートストラップの重要性には、主に 3 つのポイントがあります: ブートストラップされたプログラミング言語をテストすること、コンパイラーを作成するための高レベルで抽象的なプログラミング言語を実装すること、プログラミング言語はその言語から開発することもできるそれ自体が利益になります。

ブートストラップができるということは、少なくともそのプログラミング言語がチューリング完全であることを証明するものであり、それはプログラミング言語自体がそれだけ強力な能力を持っていることの証明でもあり、それ自体がプログラミング言語の一種の宣伝にもなります。これは、プログラミング言語が非常に多用途であり、基礎となる能力が非常に強力であることを証明しています。ブートストラッププロセスは本質的にプログラミング言語のテストであり、このプロセスにより、コア開発者はプログラミング言語自体の多くの経験と教訓を蓄積し、プログラミング言語自体の欠点や設計上の欠陥をできるだけ早く発見することができます。 、タイムリーな開発を促進するために、調整と最適化を行います。

したがって、プログラミング言語がブートストラップしたい場合、それは早く完了するほど良いです。ブートストラップのプロセスは、プログラミング言語を改善するプロセスでもあります。プログラミング言語が完成する前にブートストラップが早く完了するほど、 , より良い. 成熟するのは早ければ早いほど, C/C が長年にわたって耐えられる理由は、それらが十分に成熟しているからです. 他のプログラミング言語の開発は、これら 2 つのプログラミング言語に依存しています. 現在の Go 言語にもこれがあります可能性。

Go 言語は、最新の設計コンセプト、強力な機能、優れたパフォーマンスを備えた優れたプログラミング言語です。Go 言語にはマクロやジェネリックがないため、コードの反復性が高くなりますが、Go 言語には、比較的新しい言語です。 C/C の欠点を捨て、多くのプログラミング言語の利点を吸収して開発されたプログラミング言語。 Go 言語での数多くのエンジニアリング実践により、Go 言語が非常に強力なプログラミング言語であることが証明されています。

【関連する推奨事項: Go ビデオ チュートリアル プログラミング教育

以上がGo言語のソースコードは何で書かれているのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。