いつものように暇を持て余してYouTubeを眺めていたところ、こんなのを見つけました。
プログラミング言語の歴史【訂正版作成予定】
本当によく歴史を纏めておられ、関心しきりだったのですが、それとともに、プログラミングと格闘した過去の記憶が沸々と湧いて来ました。
毎日が日曜日になって早くも半年以上が経ち、認知症を患うのも時間の問題。
まともな記憶があるうちに、プログラミングと格闘した記憶を記しておこうと思いつきました。
従いまして、これは全くの備忘録となっておりますので、ご勘弁を願います。
大学生になった時、当時出始めだった関数電卓が必須だということで購入しましたが、計算尺の使い方も授業で教わりました。
4回生になって配属された研究室には古くて大きなプログラム卓上計算機が置いてあり、建屋のすぐ近くには計算機センターもあったのですが、卒論の研究では実験装置のハンダ付けばかりやっており、コンピュータと触れ合う機会は全くありませんでした。
ところが、1979年に就職して配属された民間企業の研究所で、プログラミングを要求されました。
とある物理現象をシミュレートするプログラムの開発でして、アルゴリズムを考え、プログラミングし、物理現象との整合性を確認するために手を汚して実験する。
毎日それの繰り返しでした。
使用していたコンピュータは、プロセス制御用のミニコンTOSBACで、記憶がちょっと曖昧ですが、メインメモリが128KB、リムーバブルディスクが2.4MBだったように思います。
CRTモニターもスクリーンエディタも無かったので、プログラムの入力と計算結果の出力はテレタイプ端末。
従って、エディターは1文字だけの修正でも1行全部まるごと再入力せねばならないラインエディターです。
プログラミング言語は、ANSI66のFORTRAN。
実にシンプルな古典的なFORTRANです。
IF THEN ELSEが使えない時代でしたので、ソースコードはIF分だらけ。
そんなある日、「ソフトウェア作法」という歴史的名著と出会い、そこで紹介されていたRatfor言語を使いたくてコンパイラコンパイラを開発しようかと思ったのですが、時間的・力量的にそれは断念。
ところで、メインメモリが少ないので、いかに上手にオーバーレイさせるかがプログラマーの腕でした。
メインメモリへの常駐部を極力少なくし、さまざまな演算部をサブルーチンにして、それらを適宜ロードさせてCOMMONで常駐部とデータをやり取りします。
当時のコンピュータは計算速度がとてつもなく遅いので、帰社時に計算を実行させ、深夜運転でコンピュータを動かし、翌日の出社時に計算結果を確認していました。
また、プログラムを納品する手段は紙テープで、1本のプログラムあたり、巻いた紙テープの直径が20cm以上ありました。
これ、絡まったら悲惨で、酷い目によく会いました。
その後数年間プログラミングから離れた後、転職して出会ったのがQuickBASICです。
コンピュータの方は、PC-9801やIBM PC/ATやPS2です。
今度は自らコーディングすることはなく、アプリケーションソフトの基本設計・操作設計・画面設計を行ない、コーディング作業は外注していました。
画面の解像度は640×400ドットでしたが、その解像度のマス目が印刷された画面設計用の原稿用紙が世に存在し、それに鉛筆で色々書き込んで画面の設計を行なっていました。
海外向けの英語版ソフトはIBM PC/ATやPS2用だったのですが、米国からMacintosh用の要望が出て来たので、Macintoshを勉強することになりました。
幸いにしてヤノ電器をよく知る人物が会社の先輩にいたので、早速訪問して色々教えてもらったり、Macマニアとも親しくなって、その操作性の素晴らしさの虜になりました。
真っ黒な画面にテキスト文字がボソボソと登場するMS-DOSに比べ、マウスとアイコンで操作するGUIの素晴らしさ。
ただ、その時は結局Macintosh版のアプリを開発することはなく、Macintoshを真似て登場したWindows版のソフトを開発しました。
そしてアプリケーションソフトの開発を数年担当した後、今度はMacintoshの周辺機器の開発を行うことになりました。
Macintoshとの接続は、その後登場するUSBのベースとなったADB(Apple Desktop Bus)です。
電源ラインを有したシリアルバスですね。
開発していたのがちょっと特殊な用途の機器だったので、使い方や動作を実演するためのデモソフトを作ることになりました。
久しぶりのプログラミングです。
開発環境はSymantec C++だったと記憶していますが、MacintoshのOSはPascalで記述されていましたので、API(Application Programming Interface)もPascalです。
そこで、CとPascalのストリングを変換するオリジナルのルーチンを作り、当時のMacintoshのOSはプログラマに優しくなかったので、ハンドルのロックと解除を毎回繰り返したりと、結構大変なプログラミングでした。
1990年代中頃の日本では、Macintoshのプログラミングに詳しい人は大変希少だったのですが、幸いにしてMacマニアのプログラマと親しかったので、なんとか実現できました。
また、MacintoshのAPIはToolBoxと呼ばれたのですが、その解説書である「Apple Inside Macintosh」という書籍があり、A4サイズハードカバーで10冊セットくらいだったと思います。
その日本語版を読みながらコーディングに取り掛かるのですが、そんな本を買う人は滅多にいないせいなのか誤訳が多く、結局は英語の原本も全部揃え、両方を交互に見ながら作業する始末。
自らコーディングと格闘した経験はこれが最後で、その後はプロデュースだけになります。
1996年にUSBの規格が登場して来ましたので、Windowsマシン用のUSBドライバを開発することになりました。
USB規格対応の機器と名乗るためにはUSBの認証を得なくてはなりませんので、まずはUSB協議会に加盟。
そしてその次に、互換性のテストを受けなくてはなりません。
USB対応機器を開発したメーカーが一同に会し、それぞれの製品を様々な組み合わせで接続し、正常に動作することを確認する接続テストです。
それまでのテスト会場は米国だったのですが、初めて台湾でのテストが開催されましたのでそこに参加し、無事に認証を得ました。
そしてその後、MacintoshがついにADBを諦めてUSBを搭載することになりました。
その当時、Appleは独自規格のFireWireをベースにしたIEEE1394規格に拘っていましたので、USBの導入が遅れたのです。
今日発売されたiPhone15ではついにLightningを諦めましたが、Appleは昔から独自規格が好きですね。
さて、そうなると今度はMacintosh用のUSBドライバを開発しなくてはなりません。
ところがApple社は当時まだ、Macintosh用USBの技術情報を公開していません。
さあ、どうするか。
ちょうどその頃、開発していた周辺機器を活用したアプリケーションソフトを、シリコンバレーにある子会社で開発させていましたので、その伝手で技術情報を入手してドライバを開発。
シリコンバレーで働いているソフトエンジニアはどんどん転職し、会社を超えた強いネットワークを構築していましたので、最先端のソフト開発はその輪の中に居ないと不可能だと悟りました。
当時すでにソフトエンジニアの年収は10万ドル〜40万ドルもしており、フェラーリやランボルギーニがバンバン走っているシリコンバレーは凄いところでした。
21世紀になり、開発畑をクビになって営業畑に移り、ソフトのプロデュースからも離れましたので、その後のソフト開発技術や通信技術にはとんと疎くなり、最新のことはさっぱりわかりません。
昨春、久しぶりにパソコンをMacintoshに戻すにあたり、昔取った杵柄だ!と高を括っていましたが、全くの別物になっていたのでギャフン。
老兵はただ消え去るのみです。