コンピューター理論、チョットデキルようになりたい

コンピュータサイエンスの学び直しです

学び直し一日目:1章 ブール理論①

 

このブログを書くモチベーション

10年くらい電気・電子系のおしごとをしていますが、いまだにハードウとソフトウェアの境目が分からず腹に落ちないことが多い。そんなモヤモヤを払拭すべく、一からコンピューター理論を学ぼうと思い立った。

やること

コンピューター理論と実装」というオライリーな書籍を毎日最低10分つづける。

一個のNandからはじまり、テトリスを作れるようになるとのこと。大学の教科書でも使われてるらしい。最小単位の論理ゲートから始まり、アプリケーションのプログラミングまで一気通貫に学べるとのお触れ込み。

記録

0章 まえがき

この分野で使われている用語について、あいまいだったの認識が幾分明確になった気がする。

ハードウェア

コンピュータサイエンスの世界では、論理ゲートから構成される論理回路のことを主に指すらしい。それより下の世界は、電気工学の世界なのだそうだ。

抽象化

コンピュータサイエンスの世界では、「こいつは何をするのか?」という機能だけに注目することを指すらしい。抽象化されたものはひとつ上の階層に渡される(渡す口のことをインターフェースというみたい)。

逆に言うと、上のレイヤは、下層が中で何やってるか興味を持たない。どういうことをしたら使えるか、だけに興味がある。

 1章 ブール理論

  • Nand だけから、And, Or, Not を作れる。
  • ブール関数を実現する物理デバイスがゲート。
  • ゲートはスイッチング素子を特定の配線経路でつなぎ合わせて構成される。
  • スイッチング素子で一番一般的なものはトランジスタ
  • コンピュータサイエンスの世界では、スイッチング素子が何であるかはどうでもよく、抽象化して論理ゲートとブール代数を考える。

トラブった

https://www.nand2tetris.org/software で提供されるエミュレーターを試そうとしたが、「'javaw'が見つかりません」というエラーが出て起動できない。。java入れたけどできない。ちょっとそちらの調査を行う。

追伸:解決

https://wp2.trojanbear.net/708.html を参考にjava 入れて、javaw を Path に追加して、PC 再起動したらエミュレーター起動した。