さかのぼって、コンパイラ、プロセッサ、およびメモリがプログラムでどのように動作するかについて詳しく知りたいと思います。私はまた、これらすべてが依存している物理学にも興味があります。良い参考文献や本をいただければ幸いです...
12 に答える
コンパイラーにとって、究極の本はドラゴンブック、別名コンパイラー設計の原則です。最初は少し重いですが、パスを重ねるごとに楽になります。これは古典的なものであり、プログラミング/コンピュータサイエンスの真面目な学生全員が読む必要があります。
最も簡単な紹介で、非常によく書かれているのは、CharlesPetzoldによるコードです。
私は通常、物理学とコンパイラーを同時に考えることはありません。
このリンクはあなたに考えさせるかもしれません。
C64のようなもののための簡単なエミュレーターを書いてください。CPU、メモリ、その他のチップをエミュレートする方法を考えることで、これらの単純なマシンがどのように機能するかを学びます。今日のコンピューターはほとんど同じように動作しますが、より複雑ですが、基本的な考え方は同じです。
エミュレーターは超高速である必要はありません-C64ウェルカムメッセージを表示してみてください。コードを正しく実行した場合は、POKEを実行して基本的なプログラムを記述し、それらを機能させることができるはずです:)
10 PRINT "DONT LISTEN TO ME - APPLE //E's RULE"
20 GOTO 10
ヘネシー&パターソンの本を手に取りましょう。 コンピュータ アーキテクチャ - 定量的アプローチまたはコンピュータの構成と設計 - ハードウェア インターフェイス
簡単なHello Worldプログラムをアセンブラーで記述できるように、十分なアセンブラーを学習することをお勧めします。
これにより、CPU がレジスタおよびメモリ レベルでどのように動作するかが正確にわかります。
また、ソース コードをオブジェクト ファイルに変換する方法と、リンカーがこれらすべてのオブジェクト ファイルをまとめて機能するプログラムを作成する方法についても紹介します。
Amazon で「Computer Organization」または「Computer Architecture」の本を手に取ってください。これは私が大学時代に使っていたものです。厚すぎず、ゲートレベルからメモリの編成方法やプログラムの作成方法まで、基本を説明します。この後、物理学をさらに詳しく調べたい場合は、半導体物理学の本を手に取ってください。(しかし、もし私があなたなら、ウィキペディアで「論理ゲート」、「ダイオード」、「トランジスタ」を検索することから始めます!)
私は、Steve Yegge がコンパイラについて学ぶことを勧めている記事を読んだ後、同様の決断を下しました。Nisan と Schocken のThe Elements of Computing Systems: Building a Modern Computer from First Principlesを本当に楽しんでいます。これは、最初は教科書、2 番目は新入生または上級者向けの 1 学期コース、3 番目は講義とクロスを提供する Web サイトです。・プラットフォームエミュレーション・シミュレーションソフト:http ://www1.idc.ac.il/tecs/ (TECS)
トピックは、NAND (HDL でのデジタル論理回路のプログラミング) から、フリップフロップ、ALU とレジスタ、アセンブラ、解析とコンパイラ、オペレーティング システム、および GUI にまで及びます。学生は、Web サイトで提供されているハードウェア シミュレータまたはソフトウェア エミュレータで、これらのトピックのすべてを実装します。私にとっては、この範囲のアイデアが学部生によって 3 ~ 4 か月で非常に深くカバーされることは、人間の創意工夫の称賛です。著者/教授の 1 人がこのテーマについて Google Tech Talk を行いました。コースから 1 時間の余裕がある場合は、チェックする価値があります。
計算物理学について同様に説得力のあるリソースを推奨することはできませんが、私の電気工学科の学生が (選択した場合は同時に) 受講できる最初の 2 つの主要な EE コースは、回路 1 と半導体 1 であったと、おおざっぱに言うことができます。電圧、電流、インダクター、コンデンサー、オペアンプなど---後者は量子力学、結晶、ドーピング、電荷キャリアなどを扱い、デジタル処理およびストレージデバイスの物理学に最も直接的に語りました. TECS のようなハンズオン シミュレーション環境をこのようなトピックで想像するのは難しいですが、趣味/専門的な研究よりもアカデミックに適していますか?