見出し画像

『コンピュータはなぜ動くのか』まとめ(第2章~第7章)

いきなり大幅に端折ります!

2章から7章はどちらかというと技術者向けて、
・プログラミングを学んでいる人に役立つ内容
・プログラマになって日の浅い人がもう一歩レベルアップするための内容

だと感じました。

第2章 コンピュータを作ってみよう
第3章 一度は体験してほしいアセンブラ
第4章 川の流れのようにプログラムは流れる
第5章 アルゴリズムと仲良くなる7つのポイント
第6章 データ構造と仲良くなる7つのポイント
第7章 オブジェクト指向プログラミングを語れるようになろう

『コンピュータはなぜ動くのか 第2版』の目次より

1章1noteにしようと思い始めましたが、技術者ではない人向けの粒度で書こうと思いますので1noteにまとめさせてもらいます。
(本音を言うとこの辺を文章で説明するの凄い大変なので、、(^_^;))

第2章 コンピュータを作ってみよう

本についている回路図の線を色付けしながらコンピュータの仕組みを模擬的に理解しよう、という章です。回路図はこんなイメージです。

引用元:https://dodosu.hatenablog.jp/entry/2021/10/05/195103
「コンピュータはなぜ動くのか読んだメモ」

1章で説明されていたコンピュータの基本的な構成要素、①CPU、②メモリ、③I/Oそれぞれの箱があり、たくさんの線で互いにつながっています。この線に電流を流すか流さないかで「1」「0」を見分けつつ、お互いの指定された接続先に信号を送り合うことでコンピュータが動いています

第3章 一度は体験してほしいアセンブラ

アセンブラというのは低水準言語に属する言語です。

「低水準」「高水準」と聞くと、なんだか高水準の方が良く感じます。
ですがここでの意味は、「コンピュータの都合」と「人間の都合」のどちら側に近いかという意味です。上記の回路図を直接操作する、もしくはそれに近い記述ができるのが低水準言語、そういった回路図に関することを意識せずに記述できるのが高水準言語といえます。

低水準言語はマシン語とアセンブラ、高水準言語はC言語やJavaやPythonなどいわゆる「プログラミング言語」と呼ばれる言語を指します。

マシン語とはコンピュータが直接解釈・実行できる、0と1だけで書かれた命令の羅列です。アセンブラはマシン語をもう一歩人間側に近づけた言語ですが、依然として上のような回路図を理解してないと扱えなそうな言語です。

上の回路図のCPU・メモリ・I/Oの線がつながっている部分に「D1」「D2」といった文字が書いてあると思いますが、それを「アドレス」(CPUの場合は「レジスタ」)と呼びます。具体的なデータや命令内容が入っている部屋です。

アセンブラではアドレスやレジスタを指定しながら、こんな感じでプログラムを書いていくわけです。↓↓

①このアドレスに入っている「1」というデータを取ってきて、
②向こうのアドレスに入っている「2」というデータも取ってきて、
③それをこっちのアドレスに入っている「+」という命令文に従って計算すると、
④「3」という計算結果が出る

第4章 川の流れのようにプログラムは流れる

ざっくり言うと、停止とか分岐とかを指示しない限り、プログラムは上から順番に最後まで一気に実行されるということです。

ただ、「イベント・ドリブン」という形で書かれたプログラムは川の流れのようになりません。これは「マウスをクリックする」「キーボードの'A'を押す」といったユーザーの入力を起点に特定のプログラム内容が実行されるものです。

第5章 アルゴリズムと仲良くなる7つのポイント
第6章 データ構造と仲良くなる7つのポイント

ここはすみません!
省かせてもらいます、、。

第7章 オブジェクト指向プログラミングを語れるようになろう

これもスパッと「こういうものです」と断言できない多義的な言葉なんですが、印象に残った部分を自分なりに要約すると以下です。

・従来のプログラミングは機能とデータから処理内容を考える
・オブジェクト指向プログラミングは現実を構成するモノ・要素から処理内容を考える
 ▶この点でオブジェクト指向の方が一歩現実側、人間側に近づいている

あとは、従来のプログラミングではフローチャート、オブジェクト指向プログラミングではシーケンス図、イベント・ドリブンのプログラミングでは状態遷移図と、採用するプログラミング手法・考え方によって相性のいい図が決まってくるのは興味深かったです。
(※詳しく知りたい方は「UML」とググってみてください。)

はあ、長かった。
まだ続きます。

この記事が気に入ったらサポートをしてみませんか?