【解説】本物のプログラマはPascalを使わない

本サイトで「本物のプログラマはPascalを使わない」の日本語訳を再録し、TwitterFacebookで周知したところ、TwitterFacebookで思わぬ反響をいただいた。当時を知る人達は昔話に花を咲かせ、私より若い世代も興味を持って読んでくれたようだ。
日本語訳を再録した記事の「おわりに」で「本稿と当時の解説は別の記事で改めて書く」と宣言していたので、書こう書こうと思いつつ、日を過ごしてしまった。
ひとつには、Facebookで私よりも遙かに先輩で技術力のある人達の多数のメッセージを読んでいて、「この解説は荷が重い」と感じ始めていたからだ。また、当時のことを思い出しながらネットで裏を取る作業の大変さが想像でき、簡単に行かないだろうと思っていたのもある。
ともあれ、「本物のプログラマはPascalを使わない」のひとつの解説として読んで頂ければ幸いだ。

はじめに

私は1980年初頭にパソコン少年で、そこから本職になったが、本職もパソコンでのシステム開発で、それは基本的に今でもほぼ変わっていない。
駆け出しのフリーランスの頃、例外的に1年だけ某研究所で運用管理兼SOをしていたことがあり、その時に初めて大型汎用機でOSコマンドを叩いたり、JCLを流したり、磁気テープ装置やラインプリンタ等を操作した。なのでこの解説は、当時のパソコンでプログラマをしていた人間の解説と思っていただきたい。
さて、原文が書かれた1982年(昭和57年)の日本でのパソコン事情(当時は「マイコン」の呼称が一般的だったが「パソコン」に統一)を概説しよう。

1982年主な出来事
4月パソコンゲーム雑誌『ログイン』創刊(アスキー
5月パソコン雑誌『Oh!PC』『Oh!MZ』創刊(日本ソフトバンク
7月シャープ MZ-2000 発売
9月東芝 パソピア 発売
10月東芝 PASOPIA16 発売
NEC PC-9801 発売
11月富士通 FM-7FM-11ST/AD/EX 発売
シャープ X1(マニアタイプ)発売 ※テレビ事業部
シャープ MZ-711/721/731MZ-3531/3541 発売
ソニー SMC-70 発売
カシオ FP-1000/1100 発売

当時のことを詳しく書くと膨大になるので簡潔に説明しよう。
パソコン雑誌はそれまで『I/O』(工学社)『ASCII』(アスキー)『マイコン』『マイコンBASICマガジン』(電波新聞社)がメジャーだったが、アスキーはいち早くパソコンゲームに特化した『ログイン』を、そして後発の日本ソフトバンクはメーカー別にNECユーザ向け『Oh!PC』とシャープユーザ向け『Oh!MZ』を創刊した。当時のパソコン情報はこうしたパソコン雑誌頼みであったから、主要なパソコン雑誌が揃った年であると言える。
パソコンも7月のMZ-2000の発売を皮切りに、シャープ東芝NEC富士通ソニーカシオといった各社から一斉に製品が発売になり、デパートの家電売り場から街の電器屋さんにまで、多数のパソコンが並ぶようになった。無論、当時パソコン少年だった私達は狂喜しながらデパートや電器屋さんに押しかけ、雑誌片手にパソコンをいじりまくったものだった。BASICのコードを打ち込みながら、パソコンで遊べる嬉しさの反面、本体価格の余りの高さに嘆息したものだった。

言語

国産初のパソコンは1978年(昭和53年)9月に発売された日立ベーシックマスターで、同年11月にシャープから発売されたのがMZ-80K(セミキット)だ。共通しているのがBASICインタプリタを搭載(ベーシックマスターは本体ROMに実装され、MZ-80Kはカセットテープで供給)していた点だ。
この辺りに関しては私の世代ではないのだが、当時はワンボードマイコンでCPUの命令セット(ニモニックコード)を16進数で入力するスタイルであったから、高級プログラミング言語であるBASICをインタプリタで搭載したのは、実に画期的である。
実は翌年4月にNECからもCOMPO BS/80(Aモデル:カセットレコーダ内蔵/Bモデル:カセットレコーダなし)が発売されていた。これはワンボードマイコンTK-80にルーツを持つマイコン+αのような代物で、プラスチックケースとJISキーボードを持つパソコンのような外見なのだが、中身はワンボードマイコンを建て増しした構造になっている。これにはNEC独自のBASIC(一説によると当時のTiny BASICNECが拡張して最適化したらしい)をROMで実装していたようだ。私も小学生の時、渋谷にあった東京都児童会館でホコリをかぶって放置されていたCOMPO BS/80-Bを見たことがあったが、それ以降に実物を見たことはない。

NECCOMPO BS/80の発売から数ヶ月で、何故かPC-8001を発表する(発売は9月?)。カセットレコーダを内蔵しないCOMPO BS/80-Bよりも安くコンパクトで、しかも強力なマイクロソフト製のBASICN-BASIC)をROMで内蔵していた。COMPO BS/80がアッという間に市場から消えたのは言うまでもない。それにベーシックマスターもROMでBASICを実装していたものの、N-BASICには遠く及ばない非力なもので、MZ-80KシャープオリジナルのBASICSP5030)をカセットテープで供給したから、BASICを起動するのに数分かかるといった有様だった。
以降、1980年代のシャープ以外のメーカーは、マイクロソフトBASICをROMで実装した形でパソコンを発売した(一部、マイクロソフトBASICでもROMで実装しない沖電気if800シリーズのような例外はある)。

1983年(昭和58年)半ば以降から、外付けフロッピーディスクドライブ(FDD)や、ビジネス機を中心にFDDを内蔵したパソコンも出揃い始めたが、いずれも高価であったし、CP/Mも高価であった。さらに言えばCP/M上で動くBASIC以外のプログラミング言語は、まだ国内でそんなに流通していなかったと思う。
実際当時は、BASICか、BASICマシン語か、マシン語のみでプログラムを書いていたのだった。後年、PC-9801シリーズ向けにマイクロソフトからMS-DOSで動くMS-FORTRAN(統合開発環境)が発売されたが、当時のFORTRANミニコン以上のコンピュータの専売特許であり、当時のパソコンではFORTRANという話は聞いたことがなかった。
そんな状況の中、CP/MといったOSを使わないで唯一Pascalが使えたのが、シャープMZ-80K/K2/K2E/CMZ-80B/B2MZ-2000/2200の「インタプリタPASCAL」だ。ところが、これがネットに情報がほぼない。特にMZ-80シリーズインタプリタPASCALを購入した人っているのか?(本当に発売していたのか?)レベルで、私も当時雑誌等でも全く見た記憶がない。
MZ-2000/2200インタプリタPASCALも発売年月は不明だが、1984年(昭和59年)の雑誌広告に記載があるので、少なくとも1983年(昭和58年)中には発売されていたものと思う。

これは私が未だに持っているMZ-2000/2200インタプリタPASCALで、いつ頃いくらで買ったのかは忘れた。外箱に標準価格12,000円とあり、同じくMZ-2000/2200用のMZ-LOGOの定価が9,800円だったから、それよりいくらか高いぐらいで値段としては安価な方だろう。
MZ-2000は1981年(昭和56年)発売のMZ-80Bの基本設計を踏襲し、設計をちょっと新しくした程度のパソコンなので、処理能力は高くない。MZ-LOGOは劇的に遅くて使い物にならないレベルだが、インタプリタPASCALMZ-2000/2200の標準BASICよりは動作が重く、かつ独自のエディタコマンドを駆使してコーディングする必要があり、標準BASICと比較しても実用性がないものだった。
またこのインタプリタPASCALは、当時の非構造化BASICZ80マシン語プログラミングしていた私にとって、プログラミング言語自体をマスターする面でも壁があった。BASICマシン語以外の高級プログラミング言語を使ってみたい欲求には応えたが、それ以上ではなかったのである。

構造化プログラミング

ザックリ言えば、1980年代の日本のパソコンプログラマはほぼ構造化プログラミングをしていなかった。理由として、

  • パソコンのリソース(CPU能力・メモリ容量・外部記憶装置の容量等)が限定的だった
  • プログラミングは個人の能力(技術)に拠るところが大きかった
  • 構造化プログラミング言語(PascalC言語等)の普及が遅れた

1980年代の日本の価値観で言うと、ハードウェアは高価で価値があり、ソフトウェアは安価でハードウェアに比して価値は低かった。高価なハードウェアを使いこなすにはソフトウェアが数倍も努力し、トリッキーなプログラミングでも何でも、ハードウェアの能力をトコトンまで使い切らなければならない。そのため、プログラマはありとあらゆるテクニックを他人から盗んで自分のモノにし、あるいは独創し、トライ&エラーで技術のウデを上げるしかない。また、パソコンプログラマはほぼ自分独りでシステムを開発するスタイルが一般的だったし、保守性よりは断然機能性と高速性を取ったのである。
1980年代も半ば以降になるとMS-DOSが普及し出し、MS-DOS上で動作するボーランドTurbo Pascalや、各種C言語も普及し始めてきた。BASICの処理系もMS-DOS上で動くようになり、1990年前後頃にはBASICユーザはDISK-BASIC系からMS-DOSN88-BASIC等を経て構造化BASICマイクロソフトQuickBASIC等)に移行して行った。元々日本ではPascalユーザが少ないからTurbo Pascalはそんなに使われなかったようだし、当時のトレンドはパソコンのリソースに直接アクセス可能でマクロアセンブラよりは高級なC言語処理系だった。

ここで指摘しておきたいのは、JavaC#のようなオブジェクト指向言語を使ったからと言って、プログラマが突如オブジェクト指向プログラミングをするワケではない。それと同様に、構造化されたPascalC言語を使ったからと言って、ただちにプログラマが構造化プログラミングをするワケではなかった(厳密には、構造化されたっぽいコードしか書けない)。
私は学校を辞めて2週間ほどであるソフトハウスに正社員として就職したが、当時の先輩(後の上司)が先見の明のあるエンジニアで、まず私は入社早々その先輩からトコトン「構造化プログラミング」を叩き込まれた。
構造化プログラミングのメリットとして、

  • コードの品質を一定に保つ
  • 保守性を高める(他人に引き継げないコードは書くな)
  • コードを再利用すれば無駄な労力が省ける

を挙げ、「趣味じゃねーんだ!仕事としてカネ貰って働く以上、プロの仕事をしろ」と申し渡されたのである。つまり、ハードウェアの限界まで技術を駆使しながら、保守性を高めよ、それがプロの仕事だと教えられたのだ。
当時は事務所に泊まり込みの徹夜で、それが退職するまでエンドレスに何週間も続いたものだったし、死ぬほど仕事をしたが、あの当時頑張った自分が今の自分を作ったと、私は思っている。

オペレーティングシステム

パソコンの初期のOSと言えば、デジタルリサーチCP/Mだ。しかし、繰り返すが1980年代中頃はフロッピーディスクドライブ自体が高価で、フロッピーディスク(メディア)自体も高かった。そして何よりCP/Mも高かった。確かNECPC-8001シリーズPC-8801シリーズ向けのCP/MNECから発売されており、定価が35,800円だったと思う。標準で粗末なエディタとアセンブラとリンカの最低限度の開発環境しかなく、別途高価なマクロアセンブラ等を買うか頑張って自作しないとダメだったハズだ。あとは工学社からC言語のサブセット版である、Small-C MacPackageがあったぐらいだろうか(実は、私が進学した高校の美術の先生が趣味で移植し、工学社から販売していたという衝撃のオチ)。
やはりその辺、MZ-2000/2200にはシャープ独自のOSであるFloppy DOSがあり、エディタにマクロアセンブラ(リンカ・シンボリックデバッガ・PROMフォーマッタ)、そしてBASICコンパイラまで含んで定価50,000円である。決して安くはないが、アセンブラの開発環境と、やはりBASICコンパイラが非常に魅力的であった(当時、高卒の初任給が10万円程度だった)。

これも私が未だに持っているMZ-2000/2200用Floppy DOSで、いつ頃かは忘れたが4万円ちょっとで秋葉原で買った記憶がある。シャープはその後、X1/X1TurboシリーズMZ-2500シリーズCP/Mを純正で安価に発売するが(確か定価が9,800円か12,800円)MZー2000/2200は置いてけぼりで、サードパーティからCP/Mが発売されたような気がする。
パソコン通信がまだ一般的ではなく、お互いに使っているパソコンのメーカーや機種が違うと、CP/MのようなデファクトスタンダードなOSでないと、テキストファイルですら交換できない。その点、当時のMZ-2000/2200は変な意味で色々と恵まれているパソコンだったが、見事に孤立していた。当時からシャープの技術力の高さは知っていたが、販売戦略がダメダメだと思っていたものだ。

その他の商用8ビットOSだとOS-9があったが、当時モトローラの6809系を採用していたメーカーは富士通日立だけで、富士通の高級機FM-11シリーズでは標準搭載だったが、FM-7/77シリーズ向けに販売していたのか?使っていた人がいたのか?は知らない(聞いたことがない)。
また、日立ベーシックマスターシリーズ日立の販売方法が悪いのか非常にマイナーな存在だったし、その後S1シリーズを展開するもやはり売れなかったようだ。なので私も良く知らない(興味がなかった)のだが、中学生の頃に出入りしていた森田和郎さんのランダムハウスでは、FM-7/77シリーズ向けのゲーム開発は日立S1でやっていた。Z80のクロスアセンブラまであるようで、詳しく突っ込んで聞かなかったが、開発環境はS1が最高に良いような話を聞いた。「S1でもゲームを販売すれば?」と聞いたら、「だって売れないじゃん」と。S1は最強の8ビットパソコンと言われつつ、負のスパイラルで不幸なパソコンだったなぁ。
ここでちょっとだけMSXについて触れると、MSX-DOSもあるにはあった。ただ、私はMSXには見向きもしなかったので、ほとんど知らない。恐らくCP/Mに準拠したOSだろうとは思うが。

16ビットOSでは、CP/M86MS-DOSの分水嶺は1985年(昭和60年)頃だったと思う。この頃はNECPC-9801シリーズを除くと、16ビット機で先行していた三菱電機MULTI16シリーズシャープMZ-5500・MZ-6500シリーズNECPC-100シリーズ富士通FM-16βが標準でCP/M86を採用していた。国産パソコンで一番最初にMS-DOS(しかもVer1.xx)を採用した日立B16、最新の技術を取り込んで我が道を行く沖電気if800シリーズCP/M86を採用せず、MS-DOSを採用した例外的な存在だった。
個人的に当時のワープロブームの中、ジャストシステムの「一太郎」の存在が大きかったと思う。58,000円という当時としては低価格ながら、パソコンワープロとして使いやすい上に、FEPであるATOKのかな漢字変換効率の高さが大いにウケてヒットした。今では考えられないが、一太郎Ver3あたりまでシステムディスクとしてMS-DOS Ver2.11を採用(バンドル)していた。NECPC-9801シリーズが一人勝ちしている中で一太郎が売れ、システムがMS-DOSなので必然的にMS-DOSユーザが増えた。無論、OSはユーザ数の多さが正義なので、国内では徐々にCP/M86のシェアは無くなり、メーカーも標準で採用しなくなって駆逐された(ように思う)。

プログラミングツール

ちょっと本文の、この記述についてだけ触れておこう。

(その頃は、メモリはメモリだった--スイッチを切っても、どこかへいったりはしなかった。今日では、メモリは忘れてほしくないことを忘れてしまうか、あるいは忘れて欲しいものまで長い間抱え込んでしまうかのどちらかだ)

私と同年代のかつてのパソコン少年でも、この記述の意味するところが分からないだろうと思う。これは磁気コアメモリについて述べているもので、1960年代のコンピュータの主記憶装置(メモリ)として使われていた。1970年代初頭にはシリコンチップのメモリに順次置き換わられて行き、今では忘れ去られたメモリ装置である。

蛇足ながら小学生の頃、学校の図書室でコンピュータ関連の本を探したら、1冊だけ蔵書があった。今はもう、その本のタイトルも忘れてしまったが、その本に「コンピュータの主記憶装置は、磁気ドラムメモリから磁気コアメモリに移行した」というような記述と、磁気ドラムメモリ磁気コアメモリの説明があり、粗い白黒写真が載っていて、何故か良く覚えていたのである。

それはともかく、1980年代から1990年代初頭ぐらいまでのパソコンプログラマのプログラミングツールと言えば、ソフトウェアで言うと(パソコンに搭載のBASICを除くと)アセンブラディスアセンブラ、ディスクアナライザぐらいのものだろう。人によっては各種CコンパイラSmall-CMSX-C等)も使っていたかも知れない。
MS-DOSを使っているのであれば、MIFESVZエディタ等のテキストエディタや、マクロアセンブラTurbo Pascal、Lattice C(後のマイクロソフトMS-C)等も含まれるとは思う。挙げればキリがないが、マイクロソフトQuickBASICやその後のMS-BASICQuickBASICのプロフェッショナル版としてリリースされた)、MS-FORTRANも挙がるかも知れない。

これも私が未だに持っているシリーズで、若い人は見たことがないかも知れないが、フローチャートを書くためのテンプレート定規だ。
Excelも、ましてやVisioもなかった当時、フローチャートはこのテンプレート定規を使って紙に手書きしており、BASICでコードを書くぐらいならわざわざフローチャートは書かなかったが、Z80マシン語プログラミングをする場合、フローチャートの作成は必須だった。
中学・高校生の頃はマシン語のコーディングシートをPC-6601SRに付属していたユーカラJJという貧弱なワープロソフトで作成し、10インチの連続紙に印字して使っていた。高校生になってバイトする以前は、この自作のコーディングシートにZ80ニモニックコードを手書きし、それを(当時入会していた武蔵野マイコンクラブが出版していた)『Z80マシン語入門』を見ながら手で16進コードに変換していた(これをハンドアセンブルと言う)。
このフローチャート定規は、普通のモノサシの定規として使えるほか、左縦方向がドットプリンタの1/6または1/12ピッチ、右縦方向がドットプリンタの1/8ピッチとして測ることができる。当時はドットプリンタで各種帳票を印字するのが当たり前で、しかも今のように帳票をGUIでレイアウトして出力するミドルウェアはなく、全部プログラムで印字を制御していたため、プリンタの印字位置を調整するのに役立ったものなのだ。

やはりこれも私が未だに持っている(クドい!)ディスプレイレイアウトシートだ。
これは確か1991年(平成3年)頃に、ガキの頃からお世話になっていた地元の事務機屋のオヤジ(社長)が、「メーカー欠品になるって連絡あったけど、どうする?」と聞かれ、じゃあということでメーカーに注文してもらって買ったものだ。このディスプレイレイアウトシートのほか、フローチャート用紙、ファイルレイアウトシート、プリントレイアウトシートもついでに注文して買ったのだが、「メーカー最小注文ロットは5冊だけどいいね?」と商売上手のオヤジに騙され(?)各5冊づつの注文で結構な金額だった記憶がある。
1980年代半ば頃は、こういったディスプレイレイアウトシートのようなモノはなく、代わりにFORTRANCOBOLBASICの各コーディングシートが(当時は確か1冊200円程度で)売っていた。無論、当時の私はBASICのコーディングシートにしか用はないのだが、BASICのコーディングシートはサブルーチンを書いておく備忘録的な使い方か、学校で授業中にコーディングをするときぐらいにしかBASICコードは書かなかった。どちらかと言えば画面のレイアウトシートとしてBASICのコーディングシートを使っており、テキストのレイアウトや、1桁8ドット計算でグラフィックのザックリしたイメージを描き、それを元にプログラミングしていたのである。
画像のディスプレイレイアウトシートはNECPC-98帝国時代のもので、当時はバーコードを使ったFAシステム開発から、徐々に業務系システムを開発していた。当時のPC-9801シリーズの画面(640×400ドット)をレイアウトしてプログラミングするには必須の用紙だったが、これも時代の波とともに消えてしまった「プログラミングツール」だろう。
その他、使い切れないままになったフローチャート用紙、ファイルレイアウトシート、プリントレイアウトシートが大量にあるハズなのだが、どうも押し入れの深い地層に埋没しているらしく、今回は発掘を諦めた。

本物のプログラマの仕事

典型的な本物の1980年代のパソコンプログラマは、どこで仕事をしていたのだろうか?これほど有能な人物が努力してなすに値するプログラムとは、一体どんなものだったろうか?本物のパソコンプログラマが誰一人としてCOBOLのコードを書いた経験がないことは、誰でも知っている。本物のパソコンプログラマは他のパソコンユーザが震え上がるような仕事(それも文字通りのヤツ!)を欲しがっていたのだ。

  1. 本物のパソコンプログラマはプリンタに送信するデータを使っていないVRAMに転送し、VRAMからセントロニクスへデータを送信する割り込みプログラムを作る
  2. 本物のパソコンプログラマはBIOSという概念がないパソコンにCP/Mを移植する
  3. 本物のパソコンプログラマはDISK-BASICをハックしてオリジナル単漢字変換機能を組み込み、メーカーもビックリな漢字DISK-BASICを作り上げる
  4. 本物のパソコンプログラマはデジタル8色しか出ないパソコンで中間色表現ペイントルーチンを作る
  5. 本物のパソコンプログラマはBEEP音しか出ない貧弱なパソコンでゲーム音楽を作曲する
  6. 本物のパソコンプログラマはPC-8801ゼビウスと同等なゲームを再現してしまう

当時のパソコンを詳しく知っている人なら分かる内容だが、さすがに今の若い人にはまったく分からないだろう。本文の解説をする記事なのに、さらに解説するのはナンセンスだが、次の通り解説しよう。

  1. 確かMS-DOS Ver3.xからだったと思うが、PRINT.SYS(プリントスプーラ)が使えるようになって非常に便利になった。それまではプリンタに何か出力をすると、プリンタが印字を止めるまでこちらも仕事(コーディング等)を止めなければならなかった。プリンタに印刷すると、パソコンはプリンタと同期を取ってデータを出力するからだ。これは非常に非効率なので、印字データを例えば使っていないVRAM領域へ退避させ、退避させたデータをプリンタへ出力するような割り込みプログラムを作れば(つまりプリントスプーラのようなものを作れば)無駄な時間を過ごす必要がなくなるというワケだ。
  2. 1985年(昭和60年)頃までの国産8ビットパソコンの多くはBIOSの概念がなく、システムコールはスパゲッティ状態であった(例えばNECPC-8001mk2SR/PC-8801mk2SR/PC-6001mk2SR/PC-6601SRに各機種をモデルチェンジした際に初めてBIOSを導入した)。基本的にCP/Mはソースコードが入手可能なOSで、自分のパソコンに移植する場合はCP/MBIOS部分を自分のパソコン向けに変更すれば移植可能である。だが、上述の通りBIOSの概念のないパソコンの場合はシステムコールが複雑なスパゲッティ状態であることが多く、CP/Mの移植は大変な労力が必要になる。
  3. 確か『Oh!PC』の記事だった思うが、PC-8801/mk2N88-BASIC(DISK版)に単漢字変換機能を組み込み、N88-BASICで作った画面に簡単に漢字表示をさせてしまうものだった。当時のPC-8801/mk2はビジネス用パソコンという位置づけで、業務用アプリを自作したいニーズも多かった。ただ、当時は漢字表示をさせるにはコードで表示させるしかなく、漢字入力も出来なかったのである。
  4. 一部を除くと当時のパソコンの多くがデジタル8色カラーで、ゲーム等で微妙な色合いを表現するのが困難だった。そこで考えられたのが中間色表現で、ベースの色に別の色をメッシュ(このメッシュの細かさや粗さでまた色の表現が変わる)にして表示しようという試みがあった。当然、それを実現するには独自でペイントルーチンを自作するしかなく、しかも当時のパソコンのグラフィック表示は遅いため、高速表示させるためにテクニックを駆使するしかなかった。後年、MZ-6500のBASIC-3(CP/M86上で動作するシャープ独自BASIC)でプログラミングしたとき、この中間色表現がBASIC標準機能として実装されていて、非常に驚いたものだった(塗りつぶす色を指定する際、青に赤を30%といった指定が可能だったのである)。
  5. これは中村光一氏が開発したゲーム「ドアドア」のこと。PC-8801/mk2BEEP音しか出ないが、BEEP音だけで効果音を鳴らしてしまうのに度肝を抜かれた。
  6. これは森田和郎氏が開発したゲーム「アルフォス」のこと。アーケードゲーム機の最大のヒットはインベーダーゲームだが、その次ぐらいに大ヒットした当時のゲーム機は「ゼビウス」だった。当然ながら、パソコンで「ゼビウス」がプレイ出来たらヒット間違いなし!だが、当時のアーケードゲーム機とパソコンではハードの性能が違い過ぎた。そんな無理を、しかもPC-8801でひっくり返したのがスタープログラマの森田和郎さんだった。当時、PC-8801でこんなに滑らかで速いスクロールシューティングゲームはあり得なかったPC-8801シリーズはビジネス向けという位置づけだったものを、ゲームパソコンとして認知させたのは、この森田さんや上述「ドアドア」の中村氏だったろうと思う。

本物のプログラマの遊び

これは1980年代半ば頃、私がいくつか出入りしていた当時の某ソフトハウスでの実話として紹介しよう。

  • 中々思い通りに行かず、狭い事務所でエアガンやガスガンでBB弾を撃ち合ってストレス解消を図るのが本物のパソコンプログラマだ
  • 夕方頃仕事に飽きると、道を挟んだビルの1階の学習塾に集まる小学生を3階のベランダからエアガンで狙撃し、中学受験する小学生のリアクションを見て喜んでいるのが本物のパソコンプログラマだ
  • リースしたばかりの高精細コピー機で5千円札のコピーを取り、実物と同じ大きさに切って薄暗い台所にわざと置き、拾ってネコババした同僚をからかうのが本物のパソコンプログラマだ
  • ファミコンを録画と編集可能な高価なビデオデッキに接続し、巨大なテレビ画面でRPGゲームをプレイしては録画し、攻略法をメモしているのが本物のパソコンプログラマだ
  • 次々にパソコンが増えて溢れるので、古いパソコンを欲しい人にタダでくれるのが本物のパソコンプログラマだ。しかもMZ-80Bをハダカのまま手で持って帰れ!とかムチャを言うのはさらに上の本物のパソコンプログラマだ

今やったら絶対ダメな内容も一部あるが(笑)。
当時の私もそうだったが、どうしてパソコンプログラマはエアガン・ガスガン・モデルガンの類い(しかも拳銃)が好きなんだろうか?私には銃が好き過ぎて、合法的にライフルの所持許可を持つ(当然ライフルも持っている)知人がいたりする。

本物のプログラマの生息地

本物の1980年代のパソコンプログラマがその機能を最大限に発揮するのは、どんな環境だろうか?本物のパソコンプログラマの雇用主にとって、これは重要な問題だった。要員を 1人雇用するのにかかる費用を考えてみて欲しい。彼を仕事ができるような環境におくのが、一番良いのだ。
典型的な本物のパソコンプログラマは常にパソコンの前に生息していた。
パソコンの周りには、以下のようなものがあった:

  • 吸い殻で一杯になった灰皿。数少ない貴重な女性事務員が気付いて捨ててくれる場合もあるが、女性事務員は決まって朝9時から夜6時までしか働かないので、灰皿は常に吸い殻で一杯である
  • 廃棄したプログラムリスト。タマに同僚が自分が廃棄したプログラムリストを読んでいるのを見付けると「勝手にオレのテクを盗むな!」と怒る
  • よほど優秀でない限り、机の片隅にはPC-PR101のレファレンスマニュアルかESC/Pレファレンスマニュアルが置いてある
  • 壁には斉藤由貴南野陽子のポスターが貼られている。これでどこのメーカーが好きなのか、CPUはザイログ派なのかモトローラ派なのかが分かる。ちなみに武田鉄矢のポスターが貼ってある場合があるが、これは間違いなく変態なので近付いてはイケナイ
  • 床には抜け毛が結構落ちている。長時間同じ場所でコーディングしている証拠だが、中々うまく行かないために、知らずに頭髪を掻きむしっている証拠でもある
  • 机の右下の引き出しに入っているのは、カップヌードルのカレー味か赤いきつね。何かあったとき(突発的な仕様変更による徹夜)のために備えている
  • 新聞紙か段ボールを密かに隠し持っている。これは仮眠をしようとして応接のソファが先輩または上司に占拠された場合、また同僚とイス取りで敗れた場合に備え、床に直で寝ても良いようにするためである

本物のパソコンプログラマは1週間や2週間、いや3週間でも連続して事務所に泊まって働くだけの能力を持っている(ただし、始発電車で帰宅して風呂に入り、着替えて出勤し直すこともある)。実際、それだけの労働に見合う給料が得られるのならやっても良い。
本物のパソコンプログラマは、1人月の仕事を最初の3日でほぼ形にしてしまい、それから突発的な過去に納品した顧客の要望を電話で聞いたり、社長または上司命令で過去に納品したシステムの改修作業をして納品する。それから1週間ほど一気にスパートをかけて納期に間に合わせる。3日で形にした1人月の仕事?途中で割り込み作業が入っても、元の納期が1ミリたりとも動かないのを熟知しているのが、本物のパソコンプログラマなのだ。
一般に以下のことが言える:

  • 本物のパソコンプログラマに定時出勤と定時退社は不要だ。何故なら泊まり込んでいるから
  • 本物のパソコンプログラマはネクタイをしている。突然親会社の社員や顧客が事務所に現れるからだ。しかし、スーツのまま仮眠したりしているので、スーツはヨレヨレであることの方が多い
  • 本物のパソコンプログラマは事務所ではサンダル履きだ
  • 本物のパソコンプログラマは夜中に夜食を求めて外に出ると、必ず娼婦に声をかけられる
  • 本物のパソコンプログラマは自分の人生が何のためにあるのか知らないかもしれない。しかし、コードがバグなくキッチリ動く感動はしっかり覚えている
  • 本物のパソコンプログラマは料理を知っている。材料を調理する手順を覚えるのは、RS-232Cで外部装置と通信する手順より遙かに簡単だからだ

ごく一部の脚色を除いて、1989年(平成1年)のバブル景気真っ盛りの頃の職場をありのままに描写してみた。もう30年近く前のことかと思うと色々と感慨深い。
確か1989年(平成1年)の4月から地下鉄での喫煙が一切禁止になったが、今ほど喫煙者への風当たりは強くなく、普通に事務所の自分の机で喫煙することが出来た。
未曾有の好景気で労働時間は今の常識からしたら考えられないだろうが、社員同士が仲が良く、先輩や同僚は年齢関係なく「戦友」のような気持ちで働いていた。当時の賃金は、やはり今の常識からすると不当に安過ぎるが(だから私は後に有限会社を作ったり、フリーランスにもなったが)社の内外を問わず、現在のような息苦しい人間関係はあり得なかった。

未来

初期のコンピュータの歴史を紐解くと「膨大で面倒な計算を何とかしたい」要望からスタートし、様々なハードウェアの製作が試みられた歴史だ。まずは、ハードウェア開発の歴史からスタートしたのである。特定の計算をする計算機から、ソフトウェアを入れ替えることでどんな計算も出来る汎用計算機へと転換したときに、ソフトウェアの重要性が高まった。ある意味IBM System/360により、ソフトウェアの時代になったと言える。
コンピュータが計算機の出自であることから、複雑で膨大な科学技術計算向けに世界で初めて開発された高級プログラミング言語がFORTRANであったのは、誰しも納得することだろう。そして本文にあるように、初期の大型汎用機で国家やそれに準ずる大企業の重大なプロジェクトを担ったのは「本物」のFORTRANプログラマであったのは、想像に難くない。
それまで権威ある国立の研究所か、それに準ずるような大企業か、大学の研究施設でしか納入されなかった大型汎用機だが、1960年代にDECミニコンを市場に投入してからコンピュータ市場は急速に広がり始めた。いわゆるダウンサイジング化され、それまで一部の研究者や技術者しか触ることの出来なかったコンピュータが(それでも限定的だが)一般人にも触れる機会が増えたのは事実だ。ちなみにマイクロソフトの創業者として有名なビル・ゲイツポール・アレンは、高校生の時にDECミニコンでソフトウェアのデバッグのアルバイトをしてプログラミングを学んだと言われている。

パソコンの世界では、1977年(昭和52年)にアメリカで世界初のパソコンであるアップルのAppleIIが発売され、世界的に大ヒットした。日本のパソコン事情はすでに述べたが、世界的に見ても汎用機ミニコンオフコンよりも圧倒的大多数がパソコンでプログラミングを覚え、それを専門の仕事にしたかはさておき、プログラマになったのは事実である。
そこに本文の「本物のプログラマ」の文章が活きてくる。コンピュータのハードウェアが進化すれば、それを動かすソフトウェアの規模も大きくなって行く。そこでダイクストラは、かなり早い時期に大規模なソフトウェアを(1本あたりのプログラムは大きくなるだろうし、システムを構成するプログラム本数が大量に増えるため)バグが無いようにプログラムを書くための方法論として「構造化プログラミング」を提唱したのだった。本文はこのアンチテーゼとも読めるが(何故なら「本物のプログラマ」ならどんなに複雑で大規模なソフトウェアのプログラミングであろうとも、構造化プログラミング技法を用いないでも可能だろうから)その反面、プログラマの自由を縛るような厳格な型宣言に構文、関数の順序に意味があるPascalを「脅威」に感じたベテランFORTRANプログラマの存在をユニークに語っているのだ。それはちょうど、個人または少数の極めて優秀なプログラマによるシステム開発が、それほど優秀ではない大勢のプログラマによるシステム開発になることを示唆し、嘆いていると言える。

1990年代に入るとしきりにダウンサイジング化が叫ばれ、高性能化しつつ低価格化したパソコンの普及とオフコンの凋落が目立つようになった。無論、UNIXワークステーションの普及もあった。バカ高い汎用機よりはミニコンへ、ミニコンからUNIXワークステーションへとダウンサイジング化が促進され、パソコンの普及も相まってオフコンは完全に蚊帳の外へ追われつつあった。
1993年(平成5年)にWindows3.1が日本でも発売されてヒットすると、それまでMS-DOSでアプリケーションを開発していたプログラマにも衝撃が走った。WindowsはGUIな上にイベントドリブン・プログラミングであるため、今までの開発手法からドラスティックな変更を余儀なくされるからだ。人間は急激な変化には中々ついて行けない。それまで蓄積・開発した有形無形のノウハウやシステム資産が多ければ多いほど、その抵抗は強かった。
しかし、1995年(平成7年)にWindows95が全世界同時に発売が決行され、全世界で爆発的にヒットして普及すると、この新しいOSで設計やプログラミングが出来ないエンジニアが大量に発生した。オフコンCOBOLエンジニアは特に悲惨で、私は何人も「転職」した人達を見てきた。
プログラミング技法も、コンポーネント指向オブジェクト指向プログラミングへパラダイムシフトして行ったのは、言うまでもない。そしてWindowsデスクトップアプリケーション(C/Sシステム)からウェブ系システムへと技術トレンドが変化するたびに、多くのプログラマが脱落して行ったのである。

Windows95は、パソコンでインターネット時代を切り拓いたエポックメイキング的なOSだが、インターネットが爆発的に普及して常時接続時代になると、当のマイクロソフトがネット時代に遅れを取るという事態にまで発展した。GoogleAmazon、そしてオープンソースの台頭である。
それまで私を含むSEやプログラマは、システムを設計してソフトウェアを開発(製造)し、その対価を得て来たが(今でもそれは有効だが)時代はウェブサービスや、オープンソースを組み合わせたシステムによって対価を得るような社会に変貌しつつある。
ポストPCとして誕生したiPadAndroidタブレット、そしてスマートフォンは、誕生して10年になる。一部の人達を除くと、スマホを持たない人の方が珍しい程に普及し、パソコンは持っていないが、スマホかタブレットを持っている人はかなり多い。
私は輝かしいパソコンの一時代の中で、プロのエンジニアとしてそれを支えた自負はあるが、今や私もエンジニアとしては老人のような年齢だ。
本文にあるように、

いいや、未来は決して暗いわけじゃない。過去数年間にわたって、名のある雑誌までがコンピュータおたくやハッカーの明るい未来についてM.I.T.スタンフォードをまるで僻地扱いしてまで報道した。一体なぜだ?その理由はつまり、本物のプログラミングの精神はこうした若い「男たち女たち」に受け継がれてるからなんだ。この世に悪夢のような仕様要求や、奇怪なバグや、非現実的なスケジュールがある限り、本物のプログラマが存在して、問題を解決し、後世のために文書を救おうと飛び込むんだ。

私は敢えて言おう、Pascal万歳!

おわりに

私はパソコンの割と黎明期の頃からBASICでプログラミングをするところからやり始めたので、当時のことを思い出しながら(途中、楽しくなりながら)ツラツラと解説らしきものを書いてみたが、日本のパソコン史概説のような、非常に長い文章になってしまった。
また、本文の解説を意識する余り「本物のプログラマの~」3つの章は、「本物のパソコンプログラマの~」パロディとして書かせてもらったが、これは完全に蛇足だった(反省)。
これら本文の「解説」らしきものは、私の狭い範囲での知識・経験でのもので、無論、異議や反論もあるだろうと思う。もしこの私の「解説」もどきを読んで「我こそは!」と思うブログライターの方は、ぜひ私以外の解説を書いていただきたい。そしてこの記事のコメント欄にブログ記事のURLを教えていただけたら嬉しいし、勉強しに遊びに行きたいと思う。
最後に、かつてのパソコン少年達にこの動画を贈る。

私が最初にBASICを覚えたのは、PC-6001だった。


Warning: strpos() expects parameter 1 to be string, array given in /home/eware/dajya-ranger.com/public_html/wp-includes/compat.php on line 498

Warning: preg_match_all() expects parameter 2 to be string, array given in /home/eware/dajya-ranger.com/public_html/wp-includes/shortcodes.php on line 155
Array

この記事が気に入ったら
いいね ! をお願いします


ITで何かお手伝い出来ることはありませんか?

CTA-IMAGE

本サイトでは、外部サービスと連携して「ITの困った」を解決します!

ソフトウェアカテゴリの最新記事