マシンアーキテクチャは、やっぱり知ってると何かと得だよ

興味深いエントリを読んだ。

あまりも当たり前過ぎて21世紀に入ってから言葉にだしたことはあまりないのですが、当然のことながら、プログラムというのは、マシン語を理解して初めて「書ける」と言うのです。

長文日記

id:shi3z氏の心情は理解できるけど、「マシン語を知らない子ども達」というタイトルは挑戦的だよね。(^^;


私自身はZ80と6809、それに8086と386/486をちょっぴりかじったことがあって、その経験から言うと「知ってると、やっぱ得」。
C言語の「自動変数」がスタック上に確保される事、それにより「再帰」や「再入」が可能になる事などは、やはりアーキテクチャが分かって初めて納得できることなんじゃないかな?
私にとってラッキーだったのは、成長期がたまたまマイコン(敢えてこう呼ぶ)の進化と重なっていて、無理なく知識を積み上げてこれたこと。 今の若いエンジニアは、物心ついた時から既にTCP/IPだのOOPだのが当たり前になっていて、相対的にハード寄りの知識習得に割けるリソースが少なくなっているのは気の毒だと思う。
ただ「知らなくても困らない」という考えで基礎を学ばないのであれば、自分で成長の芽を摘み取っているようなもの。 エンジニアたるもの、常に学ぶ姿勢を持たなくてはね。


・・・ということで、トーンは違えど、私も基本的にはid:shi3z氏に賛成・・・なのだが、80386 を教材にすることについては懐疑的。
確かに実用的なCPUではあるけれど、本質的な部分(スタックとか割り込みなど)を理解するには8ビットマシンで十分な気がする。 それをマスターした上で、現代では必須とされるメモリ管理機構や特権モードについて学びたければ、32ビットCPUを勉強すればいいんじゃないかな。
以前書いた記事が参考になれば幸いです。