プログラマにハードウェアの知識は必要か!?
あまりも当たり前過ぎて21世紀に入ってから言葉にだしたことはあまりないのですが、当然のことながら、プログラムというのは、マシン語を理解して初めて「書ける」と言うのです。
マシン語を知らない子ども達 - UEI shi3zの日記
私もマシン語世代ですので(笑)shi3zさんの言われることには基本的に同意ですね。「マシン語を知らずしてプログラムは書けず」というのは、ちょっと極論かと思いますけど、プログラマならば、マシン語を意識した時に分かるプログラムやシステムの挙動を感覚的につかんで欲しい、というのがshi3zさんの主張したいことなのではないでしょうか。
さて、私はどうかと言うと、マシン語が必要かどうかはCase by caseではないかと思いますけど、コンピュータのハードウェアを理解することでプログラマとしての守備範囲を広げることが出来るということは言えるのではないかと考えます。その一つとしてマシン語の知識も含まれている、と。
ハードウェアを理解すると守備範囲が広がるの?
あなたは普段どんなプログラムを作っていますか?
ひと口にプログラムと言っても、いろいろなものがあります。PCで動くアプリケーションから、携帯電話やPDAのソフトウェア、家電製品や車の制御など、プラットフォームも様々。プログラムの種類もエンドユーザのアプリからデバイスドライバ・OSなど多岐にわたります。
プログラミング環境もどんどん変わっていきます。毎日のように新しいプログラミング言語が考案される。環境もAPIからネットワークが前提となり、開発の速度アップから新しい開発手法が増えてきているのはみなさんご存じの通り。
そんなソフトウェア開発の現場で長くプログラマを続けていくためには、新しい技術を素早く理解し、対応していかなくてはなりません。そのためには常に新しい技術を学ぶ意欲も大事なのですが、大切なことはコンピュータの基本を理解していること。新しいソフトウェア技術も常にハードウェアの上に成り立っているわけで、学習の助けになるシーンは多いでしょう。
また、ハードウェアの知識は作ることができるソフトウェアの幅を広げます。デバイスドライバを書いたり、時には周辺装置そのものを作ることもできるかもしれません。今やっているプロジェクトが終了しても、様々な選択肢からプログラマを続けていけるでしょう。また、ハードとソフトに強い人は現場で重宝されますよ。