9

SICP の最後の 2 つの章 (コンピューター プログラムの構造と解釈)、ch4 メタ言語抽象化、およびレジスタ マシンを使用した ch5 コンピューティングについて、明確かつ簡潔に説明してくれる人はいますか?

また、これら 2 つの章の内容が、学部の標準的なコンパイラ コースと異なるかどうか (およびどのように異なるか) も知りたいです。

4

1 に答える 1

22

長い免責事項、以下の実際の回答

ゼロからコンパイラを構築する方法に関する情報が本当に必要で、関連するすべての実用的な解析、コンパイル、生成、および最適化の手法に精通している必要がある場合は、ドラゴン ブックの方が適しています。

インタープリターを使用してクリーンなプログラミング言語をゼロから構築したい場合は、Friedman のEPL本をお勧めします。

学士号の論文で求めているのが、以前の両方の本でのすべての基本的な問題をより深く理解することである場合は、以下の私の答えを読んでください. SICP は教育的な作品であり、本質的な概念をできるだけ明確な言語で伝えようとします。左再帰パーサー、一般的な部分式の削除、x86 SSE 拡張機能などについては詳しく説明しません。

SICP CH4-5

関連する複雑な概念を説明するために使用される手法は、目の前で一連のコンピューター言語をゼロから構築することです。

第 4 章は、メタ循環型の Scheme インタプリタを構築することから始めます。これは、Scheme 自体で書かれた小さな Scheme インタプリタです。これにより、再帰インタプリタの基本が得られ、残りの ch4-5 で一連のミニ言語を構築するための基礎が形成されます。解析されたコードを表現する方法、関連するデータ構造、ベース言語からホストを分離する方法などの質問に答えます。 重要なことは、言語インタープリター自体が単なる別のコンピューター プログラムであることを示していることです。 第 4 章の残りの部分では、以前のインタープリターを変更することによって言語のフレーバーを変更する方法を示します。2 つの大きな問題は、遅延評価とロジック プログラミングです。

第 5 章では、現在のコンピュータを抽象的なレベルで表現するために、「レジスタ マシン」の大まかなモデルを作成します。それらは、すべての意図と目的のためのアセンブリ言語として機能する小さなレジスタ マシン言語を構築します。それらは、次のビットを実行するために必要なすべてのデータ構造と制御フロー構造を導入します: この機械語でスキーム インタープリターを構築します。どういうわけか、メタ循環インタープリターにまだ似ています。その後、彼らはディープ エンドから飛び降り、レジスタ マシン言語でスキーム コンパイラを構築します。アセンブリステップ、末尾再帰の最適化、ガベージコレクション、レキシカルアドレス指定、トレースなどを完了します。

SICP はおもちゃのインタープリターとコンパイラーを構築しますが、これらは概念的には十分に完成しており、現在の実用的な手法をすぐに習得できます。GCC の中間コードは、たとえば SICP のレジスタ マシン コードによく似ており、これらの人は、ARM マイクロコントローラー用の SICP のインタープリターをアセンブリで直接実装しました。

于 2010-11-26T15:49:28.673 に答える