ホームページ >バックエンド開発 >Golang >golang コンパイラは何で書かれていますか?

golang コンパイラは何で書かれていますか?

(*-*)浩
(*-*)浩オリジナル
2019-12-27 14:27:023175ブラウズ

golang コンパイラは何で書かれていますか?

#Golang のコンパイラはどの言語で書かれていますか?

これは「鶏が先か、卵が先か」の問題のように思えますが、実際はそうではありません。 (推奨される学習: go)

この問題の鍵は、コンパイラー自体がプログラムであり、その機能はソース コードをコンピューターの実行可能ファイルに変換することであることを理解することです。プログラム。

C/C、Go、Rust などのローカル言語の場合、コンパイルおよび生成されるターゲット プログラムは、ターゲット プラットフォームのローカル実行可能プログラムです。たとえば、Hello World をこれら 3 つの言語で作成した場合、Windows プラットフォームでのコンパイル結果は .exe ファイルになる必要がありますが、これらの .exe ファイルにはソース言語情報が含まれません。

Windows は、これらの .exe ファイルがいつ実行されるかを知りませんし、コンパイル前にこれらの .exe ファイルがどの言語で書かれたかを知る必要もありません。必要なのは、これらの .exe ファイルをメモリにロードして命令を 1 つずつ実行することだけです。

コンパイラ プログラムについても同じことが当てはまります。

新しい言語 CNifeLang を発明する場合は、まず既存の言語で CNifeLang コンパイラを作成する必要があります (たとえば、Golang を使用します);

あなたは、Golang で CNifeLang コンパイラを書きました、合法な CNifeLang ソース コードを同等のターゲット プログラムに正常にコンパイルできます。

次に、Golang で作成したコンパイラと同じ機能を持つ CNifeLang を使用してプログラムを作成します。Golang に実装されたコンパイラを使用してプログラムをコンパイルすると、CNifeLang に実装された CNifeLang コンパイラが得られます。

このプログラムの機能は Golang で書かれたコンパイラとまったく同じであるため、このコンパイラを使用して CNifeLang をコンパイルすることができ、CNifeLang はブートストラップを実装します。

コンパイル原理に関するコースを学習したことがある場合は、コンパイルがプログラミング言語とは何の関係もないことがわかるでしょう。コンパイルには、完全で成熟した操作方法のセットがあります。任意のチューリング完全言語を使用して書くことができます。あらゆる形式言語のコンパイラであり、作成したコンパイラが正しいことを証明する厳密な数学的手法があります。

私たちの一般的なプログラミング言語は、基本的にブートストラップを実装しています。これは、プログラミング言語の成熟度の兆候の 1 つです。コンパイラは複雑なプロジェクトであり、成熟した評価システムを備えているため、この言語用に成熟した、使いやすく、効率的なコンパイラを作成できるということは、その言語を使用する準備ができていることを意味します。

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

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