質問: コンピュータはどのように機能しますか? これはほとんど恥ずかしい質問です...私はコンピュータサイエンスの学位を取得しています(2番目のコースも進行中です)。私はほぼ5年間、フルタイムの.net開発者として働いてきました。私は一般的に私がやっていることに長けているようです。しかし、コンピュータの仕組みがわかりません!少しの間、私と一緒に裸になってください。 「コンピュータのしくみ」の簡単なグーグルはたくさんの結果を生み出しますが、私が探しているものに本当に答えたものを見つけるのに苦労しました。これは非常に大きな質問であることを理解しています。本当に、キーワードや方向性を教えていただければ。コンポーネント、電源装置、マザーボード、ram、cpuなどがあることを知っています。そして、それらが何をしているかについての「一般的な考え」がわかります。しかし、.net(またはjavaまたはc++))のconsole.readline()のようなコード行からどのように行くのか本当に理解しておらず、実際にdoもの。確かに、私は漠然とmsil(.netの場合)を知っており、jitコンパイラでいくつかの魔法が発生し、それがネイティブコードに変わると思います(私はそう思います)。 javaも同様で、c++が中間ステップをカットアウトします。メインフレームの組み立てをいくつか行いました。それは数年前のことです。いくつかの命令といくつかのcpuレジスタがあったことを覚えています、そして私はコードを書きました...そしてその後、いくつかの魔法が起こりました...そして私のプログラムは動作しました(またはクラッシュしました)。私が理解していることから、「エミュレータ」は、命令を呼び出したときに何が起こるかをシミュレートし、cpuレジスタを更新します。しかし、それらの指示が彼らがするように機能するのは何ですか?これは「コンピュータ」の質問ではなく、電子機器の質問に変わりますか?これを理解するための実用的な理由はないと思いますが、私は理解できるはずです。(はい、これは小さな子供と1日を過ごすときに何が起こるかです。あなたが知らないことを理解するのに、「なぜ?」と尋ねるのに約10分と5回の反復が必要です)
回答: 誰かがハードウェアを理解せずにcsでコースを完了することができるのは驚異的ですが、コースは、工学や実装の詳細ではなく、数学の分岐としての理論のみに集中できたのではないかと思います。由緒ある [〜#〜] sicp [〜#〜] 講義(1980年代に提供されたもの)は次のように見えました。20年前の私のcsコースでは、初版の computers:logic to architecture の初版を読む必要がありました。 このような何かがギャップを埋めるはずです。代わりに、mitの open courseware に役立つものが必要です。