社会人のメモ帳

忘れたくないことアレコレ

プログラムはなぜ動くのか 書評

プログラムが動く理屈を知る

情報

著者:矢沢久雄

目次

  • プログラムにとってCPUとはなにか
  • データを2進数でイメージしよう
  • コンピュータが小数点数の計算を間違える理由
  • 四角いメモリーを丸く使う
  • モリーとディスクの親密な関係
  • 自分でデータを圧縮してみよう
  • プログラムはどんな環境で動くか
  • ソース・ファイルから実行可能ファイルができるまで
  • OSとアプリケーションの関係
  • アセンブリ言語からプログラムの本当の姿を知る
  • ハードウェアを制御する方法
  • コンピュータに「学習」をさせるには

書評などなど

皆さんはパソコンの画面にどうして文字が表示できているのか、ご存じだろうか?

「プログラムはなぜ動くのか?」という質問に答えられるだろうか?

多くの天才達の尽力により、パソコンの中で何が行われているのかを理解せずとも、パソコンを駆使してファイルの読み書きやディスプレイ表示に至るまで様々なことを実現できるようになった。

それも全て、コンピュータと人の間を介すプログラムによって実現されている。そんなプログラムとコンピュータの関係性について、深く理解出来るのが本著である。

プログラム言語を駆使しているエンジニアの中には、どのようにしてプログラムが動いているのかを理解している者は少ないように感じる。というよりプログラム言語自体が、その中身で何をしているか知らなくても、実装して動かすことができるように進化を遂げ続けている。

そう知らなくても実装はできるのである。

だとすれば本著を読む意味は何か?

読むことで得られるものはあるのだろうか?

個人的に最初に思いついたのは、車や電化製品を始めとする組込業界に進もうとする者には漠然と必要な知識なのではないかと思った。とはいえ組込には組込に特化した書籍があるので、読むとすればそっちの方が手っ取り早い……といいたいところだが、より基礎的なこと、プログラムの本質というものを学ぶには本著しかない。

ブログ主は、組込現場もWeb業界の現場も、共に経験したことのある希有な人間である。より細やかな処理速度やメモリの制限が課される組込の方が、「プログラムが動く原理」というものを身近に感じることができるというのが実体験だ。

車業界ではAUTOSAR*1や、MATLAB & Simulink*2が導入されるといった変動はあるものの、処理速度が求められる起動直後の処理などはアセンブリ言語による手書きを求められる(2024/05/05:情報古いかも)。

本著において、わざわざアセンブリ言語で一章割いているように、ハードウェアにおいてアドレスに直接アクセスするのはアセンブリ言語が一番早い。どうしてそのようなことが起こるのかについては本著を読んで学ぶことができる。

そもそもそんなことを知ってどういう意味があるのか、下記の通りに本著では記載されている。

コンピュータの本当の動作、プログラムの生の動きを知るには、アセンブリ言語を体験することが一番なのです。

こういったことに魅力を感じるならば、本著は買い一択である。

 

はっきり言って本著はとても難しい。読んでおいて何だが、本著を解説するといった大それたことをする気はおきない。質問されたとて、はっきりと答えられるかどうかも怪しい。

それでも『データを2進数でイメージしよう』での論理演算の話などは為になったと断言できるし、アセンブリ言語やハードウェア操作の章は実に勉強になる。難しいからと諦めず、自身が興味のある章だけでも良いから目を通したりすることで、これからの自信に繋がるはずだ。

本著を購入した方々は、同じような志を持つ仲間であるように思う。共に切磋琢磨してプログラミングしていこうではないか。

*1:AUTomotive Open System ARchitectureの略。自動車の制御ソフトウェアの標準化活動を行っているグローバル開発パートナーシップのことで、コードの一部自動生成などの普及が進められている

*2:MathWorks社が提供する数値解析ソフトウェア。車業界ではモデル開発で使われ、組んだモデルに応じてコードが自動生成される。