|
プログラムはなぜ動くのか
知っておきたいプログラミングの基礎知識
ISBN 4-8222-8101-9 日経BP社
矢沢久雄著
日経ソフトウエア監修
A5判 296ページ 本体2,400円 2001年9月28日
発売
[内容]
XML、C#など新しい言語や技術が登場してきても、プログラムが動く根本の仕組みが変わることはありません。本書は、メモリーにロードされたプログラムがCPUで解釈・実行される仕組みをわかりやすく解き明かします。この基本さえ知っていれば、オリジナルのプログラムを作成するための応用力もつき、新しい技術も怖くありません。日経ソフトウエアの好評連載を全面的に見直し大幅に加筆しました。これからプログラミングを始めたい人、スキルアップを目指すプログラマにオススメです。
[目次]
第1章 プログラマにとってCPUとはなにか
■CPUの中身をのぞいてみよう
■CPUはレジスタの集合体
■プログラムの流れを決めるプログラム・カウンタ
■条件分岐と繰り返しの仕組み
■関数呼び出しの仕組み
■ベースとインデックスで配列を実現する
■CPUにできることは、いたって単純
第2章 データを2進数でイメージしよう
■コンピュータが情報を2進数で取り扱う理由
■ところで2進数とは?
■シフト演算と乗除算の関係
■コンピュータ処理に都合のいい「補数」
■論理右シフトと算術右シフトの違い
■論理演算をマスターするコツ
第3章 コンピュータが小数計算を間違える理由
■0.1を100回加えても10にならない
■小数点数を2進数で表すには
■コンピュータが計算を間違う原因
■浮動小数点数とは
■正規表現とイクセス表現
■実際にプログラムで確かめてみよう
■コンピュータの計算間違いを回避するには
■2進数と16進数
<あなたなら、どんなふうに説明しますか?>
ピカピカの小学生にCPUと2進数を説明する
第4章 四角いメモリーを丸く使う
■メモリーの物理的な仕組みはシンプル
■メモリーの論理的なイメージはビルディング
■ポインタなんて簡単だ
■メモリーを工夫して使うための基本は配列だ
■スタックとキュー、さらにリング・バッファ
■リストは要素の追加や削除が容易
■2分探索木は効率的にデータを探せる
第5章 メモリーとディスクの親密な関係
■メモリーに読み出さないと実行できない
■ディスク・アクセスを高速化する「ディスク・キャッシュ」
■ディスクをメモリーの一部として使う「仮想記憶」
■メモリーを節約するプログラミング手法
■ディスクの物理構造も見ておこう
第6章 自分でデータを圧縮してみよう
■ファイルにはバイト単位で記録する
■ランレングス法の仕組み
■ランレングス法の欠点
■モールス符号にハフマン法の基礎を見た
■ハフマン符号は木を用いて作る
■ハフマン法で圧縮率が2倍に
■画像ファイルに使う非可逆圧縮
<あなたなら、どんなふうに説明しますか?>
ゲームに夢中な中学生にメモリーとディスクを説明する
第7章 プログラムはどんな環境で動くのか
■動作環境 = OS + ハードウエア
■プロセサ以外の違いを乗り越えたWindows
■APIはOSごとに違う 138
■ソースコードを簡単に利用できるFreeBSDのPorts
■エミュレータを使えば別の環境が手に入る
■どこでも同じ実行環境を提供するJava仮想マシン
■BIOSとブート・ストラップ
第8章 ソースファイルから実行ファイルができるまで
■コンピュータはネイティブ・コードしか実行できない
■ネイティブ・コードの内容を見てみよう
■ソースコードを翻訳するのがコンパイラ
■コンパイルだけでは実行可能ファイルが得られない
■スタートアップとライブラリ・ファイル
■DLLファイルとインポート・ライブラリ
■実行可能ファイルの実行に必要なことは?
■ロード時に作られるスタックとヒープ
■まだまだ疑問が残っている皆さんのためのQ&A
第9章 OSとアプリケーションの関係
■歴史に見るOSの機能
■OSの存在を意識しよう
■システム・コールと高水準言語の移植性
■OSと高水準言語がハードウエアを抽象化してくれる
■WindowsというOSの特徴
■シェル・スクリプト
<あなたなら、どんなふうに説明しますか?>
携帯電話が大好きな女子高生にOSの役割を説明する
第10章 アセンブリ言語からプログラムの本当の姿を知る
■アセンブリ言語はネイティブ・コードと一対一に対応
■コンパイラでアセンブリ言語のソースコードを出力
■ネイティブ・コードに変換されない「擬似命令」
■アセンブリ言語の構文は「オペコード+オペランド」
■最もよく使われるmov命令
■スタックへのプッシュとポップ
■関数呼び出しの仕組み
■関数の内部で行われる処理
■外部変数のための領域は常に確保されている
■内部変数のための領域は一時的に確保される
■繰り返し処理の実現方法
■条件分岐の実現方法
■アセンブリ言語をバグ・フィックスに活かそう
■Visual Basicでアセンブリ言語のソースコードを調べるには
■情報処理技術者試験のCASLにトライしてみよう!
第11章 ハードウエアを制御する方法
■アプリケーションはハードウエアと無関係?
■ハードウエアとの入出力を支えるのはIN命令とOUT命令
■入出力の実験プログラムを作ってみよう
■周辺装置が割り込みを要求する
■割り込みでリアルタイムな処理が実現する
■大量のデータを短時間に転送できるDMA
■文字やグラフィックスが表示される仕組み
<あなたなら、どんなふうに説明しますか?>
近所のおばあちゃんにディスプレイとテレビの違いを説明する
第12章 コンピュータに「考え」させるためには
■道具としてのプログラムと「考え」るためのプログラム
■人間の考え方をプログラムで表す
■人間の癖をプログラムで表す
■プログラミングに乱数を活かす方法
■記憶を生かすことで、より人間らしい判断を行う
■思考パターンをプログラムで表す
<あなたなら、どんなふうに説明しますか?>
行きつけの居酒屋のマスターにコンピュータが考える仕組みを説明する

|