ホームページ  >  記事  >  バックエンド開発  >  golang は何で書かれていますか?

golang は何で書かれていますか?

(*-*)浩
(*-*)浩オリジナル
2019-12-27 11:50:132780ブラウズ

golang は何で書かれていますか?

Google は Go 1.5 Bootstrap を実装する計画を発表しました。関連ドキュメントの著者は、Go 言語の開発に 6 年近く取り組んでいる Go コア開発者の Russ Cox です。 Russ 氏によると、Google は「Go ソース ツリーからすべての C プログラムを削除する方法」について 1 年間検討してきました。 (推奨学習: go)

ブートストラップは、「コンパイル対象のターゲット プログラミング言語のコンパイラ (またはアセンブラ) を作成する」プロセスです。

一般に、ブートストラップには次のようないくつかの利点があります:

はブートストラップされる言語をテストするために使用されます;

は通常、より多くの言語の使用をサポートしますより高レベルの抽象化を提供する高レベル言語用のコンパイラを作成します。

コンパイラは、言語レベルでの改善からも恩恵を受けることができます。

前述したように、Google は以前に Go ソース ツリーから C コードを削除する取り組みを開始しました。変換計画は 5 つのステップに分かれています:

第一段階 - 開発C 言語から Go 言語へのトランスレータ、および既存の C コンパイラを Go 言語に翻訳します。この段階では、元のコンパイラーが、マクロ、共用体、ポインター演算など、Go 言語への移植が難しい一部の機能を広範囲に使用していないという事実を利用します。

ステージ 2 - コンパイラのソース コード ツリーを変換して Go 言語コンパイラを取得しますが、これは比較的原始的で C スタイルです。

フェーズ 3 - 主にパッケージの特定、ドキュメントの追加、単体テストによって、以前に取得したコンパイラーを Go 言語の習慣に準拠したプログラムに変換します。

フェーズ 4 - コンパイラを最適化し、コンパイラと CPU のメモリ使用量の問題を解決し、並列化を導入する場合があります。

さらに、改善を目的として、現在使用されているアーキテクチャに依存しない順序なしツリー (Node*) とアーキテクチャに依存する順序付きリスト (Prog*) の間に新しい中間表現を導入する試みも行われています。コンパイル 冗長な nil チェックと境界チェックを排除するプロセッサの最適化

以上がgolang は何で書かれていますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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