先日,米Computerworld誌の“The top 10 dead (or dying) computer skills --Are your skills in need of upgrading?(滅んだ,あるいは滅びつつあるコンピュータのスキル,トップ10――あなたのスキルはアップグレードしないで大丈夫?)”という記事が,筆者の所属する日経ソフトウエアの編集部内でちょっとした話題になった。1位が「COBOL」,2位が「非リレーショナル型のデータベース管理システム」…,と10個挙げられたスキルのうち,特に筆者の目を引いたのが6位の「Cプログラミング」だった。

 筆者はちょうど2年前のこの欄に「30年たっても基本はC言語」という記事を書いている。30年前にCが生まれた後,様々なプログラミング言語/環境が登場して,Cより高い生産性を実現しているが,そういったものをきちんと使いこなすためには,C言語でのプログラミングや,Cを使ううちに見えてくるコンピュータの仕組みを理解しておく必要がある,という意識で書いた記事である。

 多くの場合,「高い生産性」はハードウエアの都合で決まっている面倒な決まりごとや,大勢が使う機能,何度も使う機能を,中身がわからなくても使えるブラックボックスにすることで実現されている。しかし,ブラックボックス化が完全ではないことがときどき問題になり,そのような問題を回避するには,ブラックボックスの記述に使われるCの知識が不可欠になるという趣旨だった。

 筆者は今でもCはソフトウエア開発者の必修言語と思っているので,この「6位『Cプログラミング』」にびっくりしたわけだ。もっとも,びっくりしたのは見出しだけで,解説を読むと「Cでプログラムを書けてもそれだけでは仕事は来ないよ」という話のようだ。Cが現役で使われている分野もあるので,「滅びつつあるスキル」という字面を丸呑みにしてしまうと納得できないが,ほかの項目もながめてみると「システム開発でこれから身に付けても飯の種になりにくいスキル」くらいに解釈すればよさそうだ。

 ただ,筆者のほうでも「基本はC」という考えを今は少し改めた。Cを通してコンピュータの姿を見ておくよりも,コンピュータ・アーキテクチャの知識そのものも基本として学んでしまうほうが,よりおもしろく,受け入れられやすいのではないかと思い始めている。

 きっかけは,ここ1年ほど筆者が日経ソフトウエアで編集を担当してきた連載記事の一つである。コンピュータやプログラミング言語の仕組みを短いページでごくごく簡単に紹介する短い記事で,軽い読み物程度のつもりで始めたものだが,名指しで「ためになった」とハガキに書いてくれる読者も何人もいた。

 さらに先月末に翔泳社が発売した書籍「コンピュータアーキテクチャのエッセンス」を手がけた編集者から直接話を聞く機会があり,その感を強くした。この本は,コンピュータのアーキテクチャをTTL(Transistor-Transistor Logic)回路,論理ゲートといった,ごくプリミティブな構成要素から解説している。

 昔はマイコン雑誌が一般の読者に向けてこのような知識を発信していたが,近ごろのコンピュータ雑誌ではなかなか取り上げられることがない。今,これからコンピュータのことを学ぼうという人はどこでこの手の知識を仕入れるのだろうと思っていたが,コンピュータを専門に学ぶ情報系の学生でもないかぎり,継続して学べる場というのはほとんどなくなってしまっているらしい。そして,知識を持たないままソフトウエア開発の世界に入ってくる人が珍しくなくなっている。アーキテクチャの知識が必須と言える組み込み系の技術者が足りないといわれるのも,このような状況と無関係ではないだろう。

 Perl,Ruby,Pythonなど軽量言語(LL:Lightweight Lanugage)の流行や,それらを使ってマッシュアップされるサービスの粒度の大きさを,あるいは最近のJava環境のできばえを見ていると,低レベルにある仕組みを知っているかどうかは全く問題にならないレベルに達しつつあるように見える。ソフトウエア技術はまさにそういう世界を目指してきたはずで,低レベルの問題に目を向けないほうがコストパフォーマンスも良いはずだ。

 だが,件の書籍の編集者はこの現状に危機感を持ち,「日本のために」翻訳,発行を決めたという。筆者が担当する連載もあと数回で一区切りとなるが,時機を見てソフトウエア技術者のためのアーキテクチャ入門記事を何らかの形で届けたいと思っている。