プログラムはなぜ動くのか ― 知っておきたいプログラミングの基礎知識をやっと読んだ
プログラムはなぜ動くのか ― 知っておきたいプログラミングの基礎知識
- 作者: 矢沢久雄,日経ソフトウエア
- 出版社/メーカー: 日経BP出版センター
- 発売日: 2001/09/27
- メディア: 単行本
- 購入: 21人 クリック: 513回
- この商品を含むブログ (81件) を見る
数年前に買ってちらっと見て本棚の片隅に置いてあったのをやっと読んだ。
まだまだ理解できない部分もあったが、今までこんなことも知らずにプログラマとして働いていた自分恐ろしい((((;゚Д゚))))
読んでよかった。第2版を電子書籍で買ってた事を思い出したよ・・・
第1章 プログラマにとってCPUとはなにか
- プログラム→コンピュータに実行させる処理の順番を示すもの→命令とデータ
- プログラムはメイン・メモリに
- 命令やデータはメモリのアドレスに格納される
- CPUがプログラムを実行
- CPU→制御装置+演算装置+クロック信号+レジスタ
- レジスタ→アキュムレータ・インデックスレジスタ・フラグレジスタ・プログラムカウンタ・汎用レジスタ
- アセンブリ!!!
第2章 データを2進数でイメージしよう
- ICのピンは1本で2つの状態を表す
- 32ビット・マイクロプロセッサは情報を入出力するためのピンを32本持っている!(衝撃
- 一度に32桁(32ビット=4バイト)の2進数の情報を処理できる!(衝撃
- シフト演算
- 補数(よくわかってない
- 論理右シフト、算術右シフト
- 論理演算
第3章 コンピュータが少数計算を間違える理由
この章は全然わからなかった・・
第4章 四角いメモリーを丸く使う
- メモリーの実態はICと呼ばれる電子部品
- アドレスを指定してデータを読み書き
- アドレスはデータを格納する場所を示すもの
- メモリーの論理的なイメージはビルディング
- ポインタ→データの値そのものではなく、データが格納されているメモリーのアドレスを持つ変数のこと。
- 配列
- スタック→LIFO(Last In First Out)
- Push, Pop
- キュー→FIFO(First In First Out)
- Put, Get
- リングバッファ
- リスト要素
- 2分探索木(聞いたことある
第5章 メモリーとディスクの親密な関係
- プログラムは記憶装置に格納されていて順次読み出されて実行される
- フォン・ノイマン
- パソコンにおける記憶装置→メモリー、ディスク
- ディスクに記憶されたプログラムがメモリーにロードされてから実行される
- ディスクアクセスを高速化→ディスクキャッシュ(メイン・メモリー内の領域)
- ディスクをメモリの一部として使う仮想記憶→ページング方式、セグメント方式
- ディスクの物理構造
- 一般的なパソコンではセクター方式
うーん。
第6章 自分でデータを圧縮してみよう
- ファイルにはバイト単位で記録
- ランレングス法(?
- ハフマン法(???
ここもよく理解できず
第7章 プログラムはどんな環境で動くのか
- 動作環境 = OS + ハードウエア
- AT互換機とかx86とか
うーん?
第8章 ソース・ファイルから実行可能ファイルができるまで
- コンピュータはネイティブ・コードしか実行できない
- ソースコードを翻訳するのがコンパイラ
- コンパイルだけでは実行可能ファイルが得られない(!
- コンパイルに続けて「リンク」という処理が必要になる(!!
- コンパイラは実行前にソースコードをネイティブコードに一括して翻訳。インタプリタは、実行時にソースコードの内容を1行ずつネイティブコードに逐次変換
10年前の新人研修でC言語の上っ面をかすっただけなので全く理解できず。。。
インタプリタの実行イメージがわからん。
実行時にネイティブコードに逐次変換したネイティブコードがメモリにロードされてから実行されるのかな??
第9章 OSとアプリケーションの関係
- システムコール
- OSと高水準言語がハードウエアを抽象化
流し読み
第10章 アセンブリ言語からプログラムの本当の姿を知る
- アセンブリ言語はネイティブコードと一対一に対応(!!!
- ネイティブコードへの変換プログラムが「アセンブラ」
- アセンブリ言語や、アセンブリ言語で書かれたプログラムのことをアセンブラと呼ぶ場合もある
- コンパイラでアセンブリ言語のソースコードを生成(!!! gccでやったら本と違うの出てきた!今度見る
- ネイティブコードに変換されない擬似命令
- アセンブリ言語の構文は「オペコード+オペランド」
- CALSにトライ!
アセンブリ言語面白かったから、もう少し勉強する(予定
第11章 ハードウエアを制御する方法
- ハードウエアとの入出力を支えるのはIN命令とOUT命令
- 周辺装置の割り込み
- DMA
流し読み
第12章 コンピュータに「考え」させるためには
- 人間の考え方をプログラムで表す(YES!
- 人間の癖をプログラムで表す(ほぅ
- 記憶を生かすことで、より人間らしい判断を行う(なるほど
第2版買っていたのでそっちも読みます。
コンピュータともう少し仲良くなったら今からでも成長できるかな!!!