パラダイムの違いを考えていない
とある媒体のメルマガから引用する。
ソフトウェア設計者の目線から,ハードウェア設計(FPGA設計)を分かりやすく解説する.初めにソフトウェアとハードウェアの関係を明確にする.
そして,ハードウェア・プログラミング言語であるVHDLとVerilog-HDLの文法を解説し,カウンタやデコーダなどの基本モジュールから乱数の生成やシリアル通信モジュールまで,さまざまな基本プログラムを紹介する.
プログラムとは、元々、アルゴリズムを実装するための手順を言語で記したもののことを言う。したがって、ソフトウェアもハードウェアも、実現したいロジックとシーケンスを構成するという意味では、設計手順の実装その物がプログラムなので、両者に違いは無い。
ここまでは正しい。
しかし、ワイアードプログラムであるハードウェアと、ノイマン型コンピュータにおけるストアードプログラムと定義されているソフトウェアでは、そもそもパラダイムが違う。
この点を混乱させると、確実に間違える。この場合、言語で設計しているから同じような物だという考え方自体に齟齬が生じている。
たとえば、作図での設計を考えてみよう。
回路図とフローチャート、これらは同じ物だろうか? UMLにおけるステート図などは抽象度が上がるので、実装はハードでもソフトでも構わない。
しかし、ハードウェアという同時性を持った構成の物を記述するのと、並列化は加能だが基本的には逐次フェッチを繰り返してプログラムカウンタの操作を行うソフトウェアを記述するのでは、根本的な思想、つまりパラダイムが違うのである。
「言語での実装という点では同じだから乗り換えは簡単だ」と思っていると、そこに間違いが発生する。
もし、ソフトウェア技術者がハードウェア技術者に転向することが簡単にできると仮定するのなら、逆も起こりえるはずである。数万ゲートに及ぶASICを設計するハードウェア技術者が、数万ステップにおよぶアプリケーションを記述するソフトウェア技術者に簡単に転向できるだろうか?
それが加能だと思っているのなら、「専門家を舐めるな!」と、双方の専門家から批判が来るだろう。
ちなみに、この媒体は、過去に、HDLを指して「ハードウェアをソフトウェアとして設計できる」という勘違いもはなはだしい記事を掲載した前科がある。
元の基本的な定義に戻り、それぞれをパラダイムという視点から見直すべき必要があるのではないかと思われる。ソフトウェアの誕生は、確実にハードウェアしか無かった時代から、新たなソフトウェア産業を生み出した、次の時代へとパラダイムの転換を起こした事件なのだ。
確かにハードウェアとソフトウェアはマイクロプロセッサが関与するシステムでは不可分である。したがって、システム設計という、両者を同時に切り分けて設計する概念も存在する。
しかし、ソフトウェアを必要としないハードウェアが存在するという視点が抜けている。また、OSという仮想化された環境では、ソフトウェアの側からハードウェアは見えないという視点も抜けている。
確かに、小規模なシステム設計者向けであるとするなら、両方を習得することも加能だろう。だが、そこには、規模の問題という視点が無い。ブレードサーバ上に大規模なサーバOSを実装し、クライアント/サーバ型のシステムを構築する際には、それぞれの分野における専門家がいない限り実現するのは無理だろう。それを統合してまとめるスペシャリストとして、システムアーキテクトという専門職まで存在するのだ。
したがって、この記述は、規模の問題を無視し、非常に小さな規模だけに限定してしまっているがために、パラダイムの切り分けを混乱させてしまっている悪文であるとみなすことができる。
最後に一言。専門家を舐めるな! 失礼な行為だ。
↓は、「パラダイム」という言葉を作った張本人による科学哲学の本。一読して損は無いと思う。というか、これを理解していないと確実に間違えるので必読かも。
| 固定リンク
| コメント (0)
| トラックバック (0)



![S-Fマガジン 2009年 08月号 [雑誌]](http://ecx.images-amazon.com/images/I/61vhxLcWtFL._SL160_.jpg)


実用書ではなく教養のための本
面白かった


最近のコメント