ソフトウェア・エンジニアの語る、虚々実々の物語

脳を破壊するプログラミング言語

»

●ちょっとした回想録

 最近、社内の教育システムの構築にちょっとだけ関わる機会がありました。

 とは言え、私は一塊のSEですから、大層な関わりにはならなかったのですが、ちょっとだけ「懐かしいなぁ……」と思うことに出会いました。

 私の会社のシステム開発部門は、開発費の大半をソフトウェアが占めます。

 ですから、教育の内容はソフトウェア開発テクノロジがメインです。

 多くが技術者だから、テクノロジ系の講座に人気が集まるのも分かります。

 (本当は、人気があるからテクノロジ系の講座が多いわけではないと思いますが、エンジニアリングやマネジメント系の講座がなぜ少ないのか? については別の機会にお話しましょう)

 講座には、ソフトウェア開発言語の習得を行う講座も多くあります。

 C言語に始まり、C++、JavaやC#、そして会社でいまだに使われている簡易言語までさまざま。

 簡易言語は、私の会社が数十年に渡って保守している独自の物。

 今更この言語を新規に学ぶ人は少ないと思いますが、それでもこの講座が存在するってことは、やっぱりまだ受講する人がいるってことでしょう。

 遙か永劫の昔に構築された言語。

 この言語も、本当に新規に1から作ったかと言えば、そうでもありません。ちゃんともととなっている言語があります。

 そうです。「ベーシック(BASIC)」です。

 BASICって知ってますか?

 そんな質問をしたら、「Visual Basicのこと?」って逆に問い返されそうですね。その回答は50点ってところでしょうか。

 現在、VB(Visual Basic)をどれだけの人が使っているか分かりませんが、私が最初に触れ合ったコンピュータ言語と言ったら、この「“Visualではない”BASIC」だったのです。BASICという言葉は知っていても、それが何を意味するのかを知っている人はさらに減ってしまうでしょう。

 BASICとは「Beginner's All-purpose Symbolic Instruction Code」の略(頭字語)だそうです。他にも数種の説がありますが、私が最初に「ベーシック」って発音を聞いた時に教わった意味が上記のものです。

 「Beginner's」ってありますから「初心者向け」ってことですね。

 右も左も分からないコンピュータど素人が、最初に触れる言語として、当時としては画期的でした(と思う)。詳しくはググってくだされば、私がここで語り尽くすよりももっと多くの情報が得られます。

 大昔、日本電気や富士通、シャープといったメーカーが、国内でガラパゴス・コンピュータの開発を競っていた時にも、一般ユーザーにとって、BASICはコンピュータ言語の主流でした。N-Basic、F-Basic、Hudoson-Basicなどなど。他のメーカー製のパソコンや海外勢も含めると、本当に多種多様なBASICが存在しました(乱立?)。

 私が務める会社で細々と保守している簡易言語も、このBASICをもとにしていたのです。

 新入社員がちょっとコンピュータオタクな輩だったら、会社で特別な教育なんてしなくてもBASICくらいは知っていたと言うことなのでしょう。BASIC=業務 と考えても、それほど間違っていなかったと言うわけです。

 BASICだけがコンピュータ言語ではありませんでしたが、私なんかにとってみれば、やっぱりBASICには格別な思い入れがあります。
(良い意味でも、悪い意味でも)

●BASICで「画像認識装置」を作れ!

 私が最初に会社に入社した時(かれこれうん十年前)には、私と同期で入社した新入社員達は、全員が技術系と言うだけあって、皆が既にパソコンを使えていました。

 (自宅には、きゅーはち(NEC PC-9800)や、はちはち(NEC PC-8800)や、せぶん(富士通 FM-7)があったりした)

 当時は今ほど教育システムが充実していません(っていうか、なかった)。スキルの高い先輩からOJT(っていうか、丁稚奉公)で指導(っていうか、下働き)を受けていました。

 私が最初に配属された部署には、新人が4人(私を含めて)現場実習のために集められました。OJT担当の先輩が、OJTの内容を説明します。

 先輩:「今日から2週間かけて、簡単なプログラミングの実習を行います」

 一同:「わかりました。よろしくお願いいたします!」

 先輩:「皆は、BASICって知っていると聞いたけど、大丈夫かな?」

 一同:「はい!」(一応、元気よく答えた。”大丈夫?”の質問の真意をつかめていなかったが)

 先輩:「よろしい。今回はこのBASICを使ってプログラミングを体験してもらう。では、これから実習に向けた製品の“仕様”を説明する」

 先輩は、青焼き(当時のコピーですね)された製品説明書を全員に配った。

 題材は、「画像認識装置」。

 ……。

 って、かなり高度な内容なんですけど、先輩(心の中で、小さく抗議した)。

 サイコロゲームとか、簡単なグラフィックプログラムを作ったことはあっても、本格的なソフトウェア開発などしたことがない。自宅にあるコンピュータと言えば、ゲーム専用機と言っても過言ではなかったし……。自宅ではコンピュータのキーボードを使うよりもジョイスティックを使う頻度の方が多かっただろう。

 新人4名を2名ずつのチームに分けた。競争心を煽る作戦か? 紅白対抗となった。私は見るからに体育系の同期とペアを組んだ。

 私:「今回の実習では、かなり高度なプログラミングをさせられるよねぇ……」

 同期:「そう? 良く分かんないや(笑)」

 私:「ええ!? だって、画像認識なんて、ものすごく大変じゃん!」

 同期:「コピー機みたいなもんじゃないの?」

 私:「いやぁ…、まあ、そうかもしれないが。コピー機の内部動作なんて知っているのか?」

 同期:「知るわけないじゃん(笑)」

 私:「(怒)……」

 そして、実習が始まった。ほぼ連日徹夜に近い日々が続いた。

 先輩は、物言いは柔らかい人だったが、いざ仕事になると“鬼”に変身した。ちょっとでも進捗が遅れようものなら、家にかえしてもらえなかった。すさまじいばかりの実習も日にちは進み、仕様書・設計書を書き上げて、いざ実装モードに突入した!

 そして、BASICが奏でる「死者の行進」が始まった。

●「頭、腐ってんじゃないのか?!」

 実装を始めて数日が経っていた。疲労が全員の身体を蝕んでいる。指導員(先輩)も例外ではない。何しろ、ろくにコンピュータソフトなんて作ったことがない新入社員4人の面倒を連日見ているのだから。

 新入社員たちは代わる代わる実習用のパソコンの前に座り、プログラムを打ち込んでいった。実習に使ったパソコンはNECのPC-9800が2台。1チームに1台の割り当てだ。当時としては、そこそこの性能だったし、世間で売られているコンピュータ関連の書籍もこのコンピュータのものが多く、情報も入手しやすかったからだ。

 私がプログラミングを終えると、私の相棒がプログラミングする、という具合に交代して作業した。

 新入社員の全員がテンパッていた。無理もない。皆、必死だったのだ。

 納期(実習最終日)も迫ったある日のこと。私が昼食から帰ってきた時、相棒と先輩が実習用コンピュータの前に張り付いているではないか。

 ん? 昼飯も食べないで、何をしているんだろう。

 おおよその予想はついた。最近は相棒の進捗が芳しくなく、先輩が張り付いて教えている。2人で何か話をしている。

 先輩:「どこで止まっているか、見当は付いているのか?」

 相棒:「うーん……。分からないんです、全然」

 先輩:「お前が書いたプログラムだろう。ちょっとずつでいいから、実行させて見せて」

 相棒:「あ、は、はい。ええっとですね。ここが代入でしょ……それから、ここで比較して……」

 相棒はかなり焦っているのか、先輩の横幅の倍以上はあると思われる体躯を小さく屈めて、パソコンにぴったり張り付いて作業を進めた。

 お昼休みもあとわずかだ。あれあれ、このまま昼食を取らずに午後に突入するつもり?

 私はちょっとだけ不安になった。人間は、胃袋と感情が直結している。空腹は人の感情制御弁を外してしまうことがある。そして……先に切れたのは“先輩”だった。

 先輩:「おいおい、いったい何時まで同じところでグルグル回っているんだよ!」

 相棒:「ええ……おかしいなあ。ここにまた戻ってきちゃうんです……」

 先輩:「ええっと、どこどこ。ん? なんでここに“GOTO文”があるんだ?」

 相棒:「え? それは、ここの関数から抜け出すためです」

 先輩:「んんん? ぬ・け・る???(理解不能モード突入)」

 相棒:「そうです。関数の終わりはGOTOで抜けてます(爆弾発言)。そして、次にここに飛んで。それからこっちに……」

 とうとう先輩……切れる。

 先輩:「ば……バカヤロー!!! 全部、書きなおせ! すぐにだ!」

 相棒:「ひいいいい……(萎縮モード突入)」

 先輩:「お前、頭、腐ってんじゃないのか?!」

 今の時代だったら、パワハラとかなんとか言われそうですが、当時は“普通”でしたね。きっぱり。

 BASICに詳しくない方のために補足しますと、「GOTO文」はBASIC言語の特徴の1つと言ってもよく、プログラム中の任意の行にジャンプするための命令です。これを多用すると、いとも簡単にスパゲティ・コードを作成できます。

●脳を破壊する言語

 「死者の行進」も日にちが解決してくれました。なんとか「なんちゃって画像認識装置」のデモを部課長の前で実施し、実習は終わりました。

 実習が無事(よく死人が出なかったと思うほど、過酷な実習でした)に終わると、鬼の先輩も“子鬼”くらいにはなっていました。

 先輩とたまたま昼食をとっていた時、先輩が次のように言うのです。

 先輩:「BASICなんて勉強すると、“脳が破壊”されるよな」

 私:「え?」

 先輩:「BASICなんて言語がはびこるから、脳みそが破壊されたプログラマが増えるんだよ」

 まあ確かに、あちこちの関数の終わりに「GOTO文」を書くプログラマはそんなにいないとは思いますけど。毎年新入社員の実習担当を仰せつかっている身としては、泣くに泣けない事情というものもあるでしょう。

 先輩が言うには、BASICに対する当時の評価は、

 「この言語を使うと、脳を破壊されるので、コンピュータエンジニアとして使いものにならなくなる」

というようなものだった。

 でも、酷すぎませんか? この評価は。

 仮にもしその通りであれば、私の脳はすでに破壊されていることになるのです(だってBASIC世代だし)。

 そう、「お前はもう死んでいる」のです。

 簡単だからって、安易に書いていいってもんじゃないし、その事実がよ~く分かっただけでも、十分に価値はあると思いますよ。ねえ、先輩(笑)。少なくとも、私はBASIC、好きです。

 私:「脳……が破壊される……ですか?」

 先輩:「そうだ。これからの時代は……やっぱり……」

 先輩はちょっと考え込んでから、言った。

 「やっぱり……PASCAL、だよな。うん」

 先輩、それ、違うと思うんですけど。

Comment(2)

コメント

tarou

BASIC、なつかしいですね。
当時は、BASIC以外でパソコンで動くまともな言語が少なかったから、
PASCALには同意です。(^^)/
PASCALは元来、教育用の言語で、モジュールのファイル分割の
概念がなく、大規模プログラムの作成にはあまり適しませんが、
この辺の問題をクリアしていたTurboPascalは、お気に入りの言語でした。
また、PASCALは通常は1パスコンパイラで、コンパイルが速いという点も
魅力でしたね。
Cは、よく使いましたが、当時はシステム(OS等の)記述言語と言う印象があります。IOがやや低レベルでアプリ向きでないと感じました。

虚数(i)

tarouさん、コメントありがとうございます。

BASIC…懐かしいですよねぇ。
酷い目にたくさん遭ったけど、それでも憎めない旧友って感じでしょうか。
雑誌の記事に載っていたBASICのゲームプログラムを目をしばしばさせながら、コンピュータの画面に打ち込んでいったのを覚えています。
(これがまた、なかなか動かない)

私が初めて組んだ業務用アプリケーションは、PASCALで組みました。
たしかに、カッチカチの言語で、いろいろ苦労しましたけどねー。

Cのいい加減さも好きですよ。
簡単にシステムを暴走させるプログラムが構築出来るところなんか(笑)。

コメントを投稿する