注目のセミナー

申込受付中!

HTML5業務アプリ
開発実践セミナー
★6月22日開催★

実用化目前!業務アプリ
を変える最新技術を演習
形式でいちはやく体得
できる実践セミナー

ソフト開発

記者の眼

日経ソフトウエア

コンピュータ内部の仕組みを知らなくてもプログラムは書ける?

2009/11/30
安藤 正芳=日経ソフトウエア

 「EDSAC(Electronic Delay Storage Automatic Calculator,エドサック)」という名前をご存じだろうか。コンピュータの歴史に興味のある人ならば,おそらく聞いたことがあるだろう。EDSACは1940年代後半,イギリスで開発された初期のコンピュータである。メイン・メモリー上に命令とデータを区別することなく格納し,CPUが順番に読み込み実行するノイマン型コンピュータの先駆けとも言われている。今でいうコンピュータと呼ばれるものは,ほとんどノイマン型を採用していて,EDSACが登場してから現在に至るまで,ノイマン型コンピュータの基本構造は変わっていない。

 このEDSACは,筆者にとって忘れたくても忘れられない名前である。もう10年以上前のことだが,大学で情報工学を専攻していた筆者は,このEDSACのおかげで留年の危機を迎えてしまったからだ。

プログラムを楽しく書けるだけでいいのか?

 必修科目の「計算機工学」が,EDSACシミュレータを使ったマシン語の講義だった。今思えば,現在のコンピュータ・アーキテクチャに比べてEDSACは構造が単純なため,CPUやメモリーがどのように働いてプログラムを動かしているのかを深く知るには適した教材だったのだろう。

 だが,当時の筆者は,プログラムを楽しく書くことさえできればよかった。そのため,コンピュータの内側でどのようにプログラムが実行されるのか,といった内部構造にはあまり関心を持てなかった。自動車の構造を深く知らなくても運転は可能なように,コンピュータ内部の仕組みをそれほど知らなくても,プログラムは書ける。

 こうした甘い考えの当然の結果として,計算機工学の単位が危なくなり,留年の危機に瀕してしまった。最終的には,ぎりぎりで単位をもらえたので留年しなくて済んだが,そのおかげで著者の脳裏には「EDSAC=マシン語レベルのコンピュータの仕組み」というように刻まれたのである。

 この「EDSAC=マシン語レベルのコンピュータの仕組み」を思い出したのは,携帯ゲーム機の組み込みモジュールを開発しているソフトウエア開発会社に取材したときだった。取材先の方いわく,「組み込み分野の市場規模が拡大するにつれて仕事は増えているものの,プログラマの数が圧倒的に足りない」という。

 このご時勢に人手が足りないとはちょっと意外に思ったが,詳しく聞いてみると「コンピュータの内部まで知っているプログラマが足りない」ということだった。社会人になってからプログラミングを始めた人は,コンピュータの根本を学ぶ機会がなかなかないためだろう。組み込み分野ではマシン語レベルでの理解を求められることが多く,筆者のように,中途半端な知識を詰め込んだプログラマは,なかなか通用しないようだ。

組み込み分野でも通用するエンジニアになってみる?

 組み込みソフトウエアは,自動車から情報家電,ゲーム機まだ幅広い分野で求められており,市場規模は年々拡大傾向にある。経済産業省の「組込みソフトウェア産業実態調査報告書」によれば,2009年には組み込みソフトウエア開発費が4.2兆円に達すると推計している。これは2004年の2.1兆円に比べて約2倍の金額だ。プログラマならば,この分野でも通用するスキルの獲得を目指すというのも,的外れな目標ではないだろう。

 そこで,日経ソフトウエア2010年1月号では,コンピュータ内部の仕組みと,コンピュータがプログラムをどのように処理するのか,という道筋を理解する特集企画「プログラムが動くワケ」を組んだ。コンピュータとプログラムのつながりをイメージできるように編集したつもりだ。また,C言語による同じような条件分岐のコードが,マシン語レベルになると大きな違いになることもわかる。今まで「どうしてもプログラムとコンピュータの処理が結び付かなかった」「マシン語に苦手意識を持っていた」といったソフトウエア・エンジニアにお勧めしたい。ぜひ,手にとって一読いただければ幸いである。

この記事に対するfacebookコメント

nikkeibpITpro

読みましたか? 〜 未読記事をご紹介