私は団塊の世代を離れること20年程度、あたりに位置しているが、団塊の世代のノウハウをいかに継承するかという話が出てきて久しい。実は自社の状況も正直なところ、きちんとできているのか心配なのだが、その心配が現実ではないか、と思うことを自分自身の体験から感ずることがあった。
古のプログラマである方なら百も承知だと思うが、物理アドレスと仮想アドレスの違い、プロセッサが扱うことのできるアドレス空間とメモリサブシステムが扱うことのできるアドレス空間の違い、I/O空間がメモリアドレスにマッピングされている理由等など。8-bitマイクロプロセッサ時代から、アセンブリ言語、いやマシン語(16進数)そのものを駆使せざるを得ない時代から今日に至るまで、歴史と共に進んできた人たち(私もその一人だ)にとって、これらの理屈は「必然」である。昔は、物理アドレスしかなく、各種インタフェース類も物理アドレスとポートを結び付けていなければ(高級なコントローラなどなかった)、何もできなかった。8-bit時代はまさにCPU(Central Processing Unit)、中央処理演算装置という名称がふさわしかったのだ。何もかもが自分でやらなければならない。規模ははるかに小さいものだったが、コンピュータのほとんどすべてを知らずして、コーディングすることなどできはしない時代だった。
C言語を学び始めた人がよくわからないというポインタ。これはメモリアドレス(現在ではほとんど仮想アドレスしか扱わない、というかこのあたりを意識する必要はほとんどない)を指し示すものにすぎないが、アセンブリ言語を扱うにはこの概念は常識である。つまり、メモリの内容を参照するには何はともあれ、メモリアドレスを指し示さねばならない。要は、コンピュータのハードレベルでの知識と密接に結びついているのであり、この理解なくして、ポインタを理解できたとはけっしてならない。
これは単に一例にすぎないし、この話題で技術の継承ができていないのでは?という疑義が生じたものではないが、うわべだけの知識で理解したつもりになっているのでは、間違いなく継承は失敗だろう。多くの団塊の世代の方々の苦悩が目に浮かぶ、そんなことを感じた寒い日の朝だった。
コメント