2007年9月21日金曜日

プログラマーにマシン語は必要か?

答えは「必要ない」あるいは「分野による」だ。
しかし、授業ではマシン語(機械語)を習うこともある。
それは、CPUの動作原理を理解するためにある。
一般的な動作原理を理解しておくと、発展した場合でも何が重要なのか理解できる。
昔の8ビットCPUや16ビットCPUの時代ならいざしらず、32ビットのRISC以降は人間がアセンブリ言語を書くことすら不可能に近くなっている。なぜかといえば、命令を実行するタイミングをハードウェアレベルまで検討して決定する必要があるからだ。
今日のPentium系CPUは見かけがCISCでも内部はRISCということがある。その時点でアセンブリ言語自体を使うべきではないといえる。
ただし、機械語を知らなくても、高級言語での書き方がどう性能に影響するかは理解しておく必要がある。
これが「必要ない」理由だ。
もう一つの理由は、組み込みシステムの分野では機械語が必須だからである。
組み込みシステムの場合、機械語レベルでチューニングする必要がある。
日本が得意とする情報家電はすべて組み込みシステムだ。
この組み込みシステムでは8~32ビットまで様々なCPUが使われる。いずれも比較的単純な構成であるため、自分で機械語命令を組み合わせることができる。それによりメモリを節約できる。それが製品コストに直結する。
なお、答えが2つあるのは矛盾ではない。
1つにまとめれば「低階層(組み込み分野)では必要だが、それ以外では必要ない」となる。

0 件のコメント: