ホーム > 校長☆副校長

校長☆副校長 Archive

第15回:仕事から得るもの

こんにちは、宮元です。

ACOSでアセンブルしてどうして8080Aで動く機械語プログラムに変換できるのかという疑問を解決しなければいけなかったのですが、スケジュールどおりにプログラムを完成させるのが優先で、それは後回しにしていました。

かつては「コンピューターダイジェスト」という名前の月刊誌があって、いろいろな新聞からコンピューターに関係した記事だけを抜き出して雑誌にしたものでした。入社当時は情報だけでも頭に入れておかなくてはと思って購読していました。
あるとき、その記事の中に”クロスコンパイラー”という言葉を見かけ、「あれっ、どこかで読んだぞ!」 今だとネットで検索すればすぐに分かることですが、当時はそんなものはありません。探し回った結果、情報処理技術者試験の参考書に書いてありました。初めて読んだときにしっかり理解していたら、今回の疑問はたやすく解けたのですが・・・・

二つのコンピューターAとBがあるとします。コンピューターAを使って、FORTRAN(フォートラン)言語で書いたプログラムを普通のFORTRANコンパイラーで翻訳すると、翻訳してできる機械語プログラムはコンピューターA用です。コンピューターAでしか動きません。

ところがこのとき、普通のFORTRANコンパイラーではなくて”クロスFORTRANコンパーラー”を使うと、A自身ではなくコンピューターB用の機械語プログラムに翻訳できるのです。
「クロスコンパイラーというものがあるんだったら、クロスアセンブラーもあるはずだ。」と考えるのが普通ですね。

実はそのとおりだったんです。アセンブリー言語で書いたソースプログラムを、ただのアセンブラーでアセンブルすると、できる機械語プログラムはACOS用です。ところが、8080A用のクロスアセンブラーでアセンブルすると、ACOSを使っているのに8080A用の機械語プログラムができるのです。

書籍だけで勉強していると、分かったようで分かっていないなと思うことがよくあるのですが、こうやって実務の現場で出くわすと、否が応でも分からされて(?)しまいます。こういうふうに、生きた知識が増える、生きた技術が身に付く。これも仕事から得る喜びです。

第14回:出くわした疑問

こんにちは、宮元です。

第1回で書いたとおり、融雪用散水機制御システムのプログラムはアセンブリー言語で書きました。そして第8回で説明したとおり、アセンブリー言語で書いたプログラムはアセンブラーという言語翻訳プログラムで、コンピューターが実行できる機械語に変換します。(これを「アセンブルする」といいます)

不便なことに、このアセンブラーを実行できるコンピューターが電子機器メーカーの工場にしかないということで、電車とバスを乗り継いで工場に行きました。紙に書いたプログラムは磁気テープで持って来てくれということでしたが、社内ではできないので外注して600フィートのオープンリールの磁気テープにメディア変換してもらいました。今なら、USBメモリにコピーしてというところです。

工場の敷地は広大で、その周囲は田んぼと畑。夜になって工場のラインで働いている人が帰宅して照明が落ちると、数人だけの広-い工場内が不気味な空間になるような所でした。

アセンブル作業のために通された場所には「ACOS」と書かれた小型コンピューターがありました。「ACOS」というのは当時、NECの汎用コンピューターのブランド名でした。ここで疑問がわきます。どうしてACOSなの? 8080Aじゃないの? だって、ACOSでアセンブルしたらACOS用の機械語プログラムになってしまうでしょ? 8080Aじゃ動かないんじゃない? えっ、どういうこと?!

141_ACOS250
(“ACOS”でgoogle検索した結果からの転載)

とにかくその日は磁気テープで持って行ったアセンブリー言語のプログラム(ソースプログラム)を、ACOSを使ってアセンブルし、アセンブルエラー(早い話、プログラムの文法エラーのこと)を見つけただけで帰社しました。そして、あのACOSを使ってどうして8080Aで動く機械語プログラムに変換できる?・・・・という疑問の解決です。

第13回:復帰

こんにちは、宮元です。

ずいぶん長い「割り込み」になってしまいました。第1回で融雪用散水機の制御の話をしていたのに、直後に割り込んでIT技術者としてのルーツの話になってしまいました。割り込みからの復帰です。

唐突ですが、ご家庭の冷蔵庫を想像してください。私たちがドアを開けて物を取り出すとき、冷蔵庫はどんな対応をするでしょうか。
まず、ドアを開けた瞬間に庫内の灯かりを点灯します。と同時に、タイマーのカウンターをスタートさせます。素早くものを取り出してドアを閉じると、灯かりを消灯しタイマー・カウンターをリセットします。物の取り出しに手間取ると、「ピーッ、ピーッ」とドアが開いているという警報が鳴り始めます。さらに庫内の温度が上昇すると、庫内を冷やすための運転を始めます。

通電してドアを閉じた状態が冷蔵庫の「庫内の温度をセンサーで監視しながら庫内を低温に保つ」という本業です。庫内の灯かりの点灯/消灯、タイマーのスタート/ストップ、警報の発信/停止が「割り込み」です。
本業中に割り込まれると本業を中断して割り込みの処理をし、何食わぬ顔で本業に戻る。これがコンピューターの本来の割り込みです。割り込みのほうが長くなってしまうのは設計か使い方が悪いのでしょう。

さて、融雪用散水機制御システムの話を聞くと、まさに割り込み処理システムでした。散水開始ボタンが押されると、散水開始ボタン押下というイベント発生信号がマイクロコンピューターに届くようにハードウエアが設計されています。ソフトウエア屋はイベント発生信号の種類を調べて、それが散水開始イベントなら該当する散水機の弁を開けという信号を出すようにプログラムしてやります。

電子機器メーカーの担当者から話を聞いてから3日ほどで、上司がプログラム設計書を書いてくれました。見てびっくり、個人が趣味で書くプログラムとはその規模と複雑さにおいて桁違いに大きくてややこしいものでした。それでも何とか書き上げました。当時はまだプログラムを紙に書いていました。コンピューターが今ほど自由に使える環境ではなかったためです。同じ理由で、紙に書いたプログラムを読んで間違いを見つけ、訂正する作業(これを机上デバッグといいます)を何回もしました。

これ以降は、コンピューターを使ってのデバッグ作業になるのですが、次回とします。

第12回:IT技術者としてのルーツ

こんにちは。宮元です。

前回と話が前後します。
したくて仕方がなかったことができた最終学年も半年が過ぎ、就職の二文字が気になり始めたのですが、もうコンピューター関連の仕事しか考えられませんでした。できれば、ハードウエアもソフトウエアもやってみたいと考えていた時に、その頃この世界では超有名だった外資系の会社の求人票が目に留まりました。採用試験を受けましたが、あえなく撃沈。そうですよね。一般的にいう勉強はほとんどしていなかったですからね。妙に納得できた結果でした。
今は大学でも丁寧な進路指導がされているのでしょうか。私のころは、求人票が掲示板に張り出されるだけでした。少なくとも私は就職について誰にも相談した記憶がありません。ただ、両親には「東京に行きたい。」とだけ言いました。

身の程知らずだと知った私は、就職情報誌で東京の小さなソフトウエア会社を見つけました。行ってみると、その会社は従業員30人、4階建てのビルの2階と3階を借りていました。最上階はビルオーナーの住まい、1階が飲み屋さんでした。(でもこの会社、10年後には新宿西口公園の隣の高層ビルに入居できるまでに成長したんですよ。)
今度はその場で採用内定をもらって、意気揚々と東京から戻ってきました。

笑わないでください。会社が大きいと小さいとか、従業員数が多いとか少ないとか、給料が高いとか低いとか、休みが多いとか少ないとか、そんなことまったく考えませんでした。同級生の中には、誰でも知っているような大会社に就職した人が何人もいました。でも私は「これでコンピューター関連の仕事ができる。」 それだけでした。

大学の電子計算機研究会では、本当にいい先輩方に出会えました。いい環境の中に身を置くことができました。いつでも何時間でも自由にコンピューターが使える環境なんて当時は考えられなかったのです。パーソナルコンピューター(PC)と言いますが、まさにこれは、自分が好きなときに好きなだけ使えるパーソナルなコンピューターだからです。

話が逸れそうになりました。中学校の担任の一言で普通科高校・大学に進み、そこでの勉強に絶望しそうになったところ、電子計算機研究会の顧問や先輩、マイクロプロセッサーで希望をつなぎとめることができました。私がいただいてきた給料の対価としての仕事のルーツはここにあります。本当に「感謝」です。
同窓会に寄付しようかなと思うようになったのも、こういう意識が強くなったからだと思います。

第11回:無我夢中

こんにちは。宮元です。

いいことというのは、何と研究室の教官から、実験装置から得られるデータを直接処理するマイクロコンピューターを製作しないかとお誘いを受けたのです。それまで実験で得たデータはオフラインで大学のコンピューターに入力・処理していたのを、オンライン処理に変えようというのです。

当初から既製のマイクロコンピューターを使ってという発想はありませんでした。実際、採用するマイクロプロセッサーを決めて、回路図を描いたうえで必要なパーツを個別に買い集めるというやり方でした。もしこの研究室が、データの処理を最重要課題、最優先ミッションと位置付けていたら、こんな泥縄式ではなくて、さっさと既製のものでやっていたはずです。学生に何かさせようという意図があったものと考えています。

さて、マイクロプロセッサーは、16ビットで雑誌等で取り上げられることが多かった米国テキサス・インスツルメンツ社の「TMS9900」に決めました。早く入手して技術文書を読まないと全体の回路が描けなかったのです。当時のマイクロプロセッサーは、長方形のセラミックまたはプラスチックの両側に百足のように脚がたくさん出た形をしていました。これら脚一本一本の働きを理解しないと回路図は描けません。

寝る時間も惜しみ(昼間寝て)、無我夢中で回路図を描き上げました。ただし、マン・マシンインターフェースはスイッチとLEDのみ、簡単なプログラムの確認ができるだけというレベルのものです。それでもなかなか意図したとおりには動いてくれなくて、卒業式の日にも何かしていたように思います。どういう状態にして大学を去ったのか今では記憶がありませんが、後を引き継いだ後輩は大変だったでしょう。

なんたって、「コンピューター、ソフトがなければただの箱」というような川柳が読めるくらいにソフトウエアの役割は大きいものです。オペレーティングシステムとまではいかなくても、モニタープログラムと呼べるくらいの機能をもったソフトウエアを用意しないと、ハードウエアの力を発揮させることはできないし、何よりも使いづらくてたまらないと思います。気にはなるのですが、この頃はもう引越しや待っている仕事のことで頭がいっぱいになっていました。

第10回:頑張っていれば・・・・

こんにちは。宮元です。

私にとっては計算をする機器というイメージが強かったコンピューターですが、マイクロプロセッサーを搭載したコンピューターは、小さなプリント基板上にまとめられ、他の機器に組み込まれてその機器を制御するコントローラーとしての使い方が強く意識されていたんだと、後々思うようになりました。

計算だけを目的にしたプログラミングに少し飽きていた私は、マイクロプロセッサーに関する雑誌や書籍を割ける限りの時間を使って読みました。その一方で、第6回目にも書きましたが、本来の勉強への熱意をなくしていきました。
すべきことに行き詰ったとき、別の何かに興味が湧いて気持ちが高揚してくると、行き詰っていたことの対しても頑張ってみようという気持ちになるものだと思っていました。しかし、この時は違っていました。そんな気持ちにはなりませんでした。一方で、学費や生活費を工面してくれている両親に対して、このままおかしなことになってしまったら申し訳ないとも思い始めました。大学の勉強を投げ出してしまわなかった大きな理由だったかもしれません。

残り1年と半分、卒業するために最低限のことだけはやろうと思い直し、授業は休まないようにしながら、マイクロプロセッサーの勉強も続けました。でも、書物を読むだけでは面白さ半減です。本当は、実物に触れながらが一番いいのですが、お金と時間が足りません。これは諦めましたが、さらに情報処理技術者試験を目標に受験勉強も始めました。電子計算機研究会の人たちの力を借りながら勉強してきたことがどれほど通用するのか試したくて受験してみることにしたのです。

そうこうしているうちに最終学年の10月になり、情報処理技術者試験です。当時の第2種を受験して合格しました。合格して何かができるようになるということではないのですが、うれしかったですね。
さらに、時系列的にはこっちのほうが早いのですが、この半年前、頑張っていればいいことってあるんだと思ったことがあったんです。さて、それは・・・・

第9回:伝わりますか?

宮元です。

コンピュータープログラミングは楽しいと言ってきました。しかし、プログラミングの何が、どこが楽しいのかと尋ねられると、ハタと困ってしまいます。いろいろ考えてみたのですがやはりうまく説明できません。そこで、仕事で得た感動から説明のヒントが見つかるかと思い、振り返ってみます。

社会人になってすぐの仕事は、第4回目で紹介したような大型汎用コンピューターで動くプログラムを書くことでした。実際は、その何年も前に誰かが好き勝手に書いたプログラムを、一定のルールに従って書き直す標準化という作業でした。本来のプログラマーの仕事は、設計者が意図した処理を間違いなくプログラミング言語で表現することです。加えて、処理効率がよく、後々保守しやすいプログラムが書けるかどうか、プログラマーとしての腕の見せ所です。職業人としてのプログラマーにはさらに、決められた時間内、予算内でという制約が加わります。

膨大な量のデータを一瞬で処理するコンピューターのプログラムを、いろいろな条件・制約の中で書いて、それが世の中の役に立っていると感じたときの想いやら、プログラムで表現した処理を間違いなく遂行するコンピューターというハードウエアそのものに対する「すごい機器だ」という感動、そういうものを考え出し作ってしまう人間のすごさに高揚感を覚えるのです。

1980年頃は情報処理産業の認知度も地位も低く、無理難題を強いられ、今でいうと完全にブラックな働き方もしていました。肉体的にも精神的にも苦しくて辛い思いもするのですが、そんなもの、お客様の「ありがとう」の一言で吹き飛んでしまい、また頑張ろうと思い直すことの繰り返しでした。

私はかねがね「コンピューターは人間が考案し作り出した傑作の一つ」と思ってきました。どんな形であるにせよ、傑作であるコンピューターを身近に感じていることが楽しいのかなと思います。そんなわけですから、プログラミングだけが楽しいのではなく、そのプログラムに従って動くコンピューターという最高傑作の一つにかかわっていられることが楽しいのです。
この説明でわかっていただけるでしょうか。

第8回:「TK-80」のおかげ

こんにちは。宮元です。

TK-80を買いたい一心で数か月間ハードなアルバイトをし、やっとのことで手に入れました。キットだったので届いたその日のうちにパーツのはんだ付けをして完成状態にしたように覚えているのですが、記憶違いかもしれません。

ミニコンピューターOKITACには言語翻訳プログラムというものが用意されていて、FORTRAN言語で書いたプログラムはFORTRANコンパイラーで、アセンブリー言語で書いたプログラムはアセンブラーとよばれる言語翻訳プログラムで機械語に翻訳できるようになっていました。

言い遅れましたが、コンピューターは、そのコンピューター固有の機械語で書かれたプログラムしか実行できません。その機械語は、基本的に0と1だけの2進数で表されるので、わかりづらいことこの上ありません。そこで、より自然語(日本語や英語等々のこと)に近い形でプログラムが書けるようにいろいろなプログラミング用言語と、それで書かれたプログラムを機械語に翻訳するプログラムが開発されてきました。

TK-80は貧乏学生には高価でしたが、コンピューターとしてはものすごく安価なものでした。ですから、コンパイラーとかアセンブラーとかいう高価なソフトウエアをつけることはできなかったのでしょう。

TK-80でプログラムを動かすためには、まず、アセンブリー言語でプログラムを書き、それを自分の手で機械語に直し、それを16進数に読み替えながらキーボードから入力して実行という手順を踏みます。ものすごく面倒でしたが、機械語やアセンブリー言語によるプログラミングの勉強は、コンピューターの動作の仕組みを理解するには大変有益でした。
下は、アセンブリー言語で書いたプログラムがどういうものか、そのサンプルです。機械語は忘れてしまっているし、桁違いに面倒なので省略します。

それにしてもわからないものですね。第4回のOKITACやこのTK-80でのプログラミング経験が後の仕事に結びつくんですから・・・・。

【アセンブリー言語による記述例】
 071_assembly

第7回:欲しくてほしくて

こんにちは、宮元です。今日も元気ですか。

さて、ある時期から「マイクロプロセッサー」ということばを耳にすることが多くなり、専門雑誌が組んだ特集でその全貌を知るようになりました。「Intel(インテル) はいってる」というコマーシャルが一時期テレビで流れましたが、あれです。

だんだんと雑誌で取り上げられることが多くなり、できれば所有して、自分のコンピューターとして動かしてみたいという欲望が湧いてきました。が、マイクロプロセッサーだけを入手したところでそれだけでは何もできない、マイクロプロセッサーを搭載したマイクロコンピューターはあるにはあったのですがものすごく高価。ですから、個人が趣味で所有できるようなものではないと思っていました。貧乏学生ならなおさらです。

ところがある日、専門雑誌の裏表紙に掲載されたコマーシャルで、こんなものの存在を知ったのです。このあたりから、専門用語が多くなるかもしれませんが悪しからず。

061_TK-80
(“TK-80”でgoogle検索した結果からの転載)

第1回目に出てきた「8080マイクロプロセッサー(縦向きに配置された4つの白い長方形状のもので最大のもの)」を搭載したワンボードマイクロコンピューターです。実際の寸法は、31cm×18cmです。「NEC」の文字が見えますが、もともとは社員のトレーニング用に開発したものでしたが、評判がよかったので売り出してみたら爆発的に売れたんだそうです。

右上の7セグメントディスプレイを見ながら、右下のキーボードからプログラムなどを入力するというものです、キーボードの左側の格子状になっているところにパーツをつけて簡単な拡張ができるようになっています。10万円以上だったと記憶していたのですが、ネット検索によると売り出し価格は8万8,500円でした。高価だが一般人でも所有できそう、ぜひとも所有しようと考えた最初のコンピューターでした。

第6回:こんなはずじゃなかった・・・・

こんにちは。宮元です。

そのうちに、FORTRAN言語に続いてアセンブリー言語の勉強も始まりました。メーカー主催のプログラミング講習会にも顧問の先生と一緒に参加したことを覚えています。コンピュータープログラミングを勉強してどうする、なんてことは考えていませんでした。理由ははっきり言えません。とにかく楽しかった。

それに対して、正規の授業のほうはというと、全く興味がわきませんでした。コンピューターに対する興味がどんどん大きくなるのとは対照的に、授業はどんどん面白くなくなっていきました。
「電子物性」、私が籍を置いた電子工学科の研究対象で、ざっくりいうと、物質の中の電子の振る舞いの研究です。そのことは、入学した時点でも全く知りませんでした。学年が進むにつれて分かってきたことでした。
本来注力しなければならないことに興味を失ってしまったのは私の問題です。大学進学を勧めてくださった中学の先生が悪いのではなく、何のアドバイスもくださらなかった高校の先生が悪いのでもなく、ましてや大学が悪いのでもありません。大学がどういうところなのか、何を勉強、研究するところなのかについて、全く知ろうとしなかった私が悪いのです。一時は、大学退学も考えて専門学校のパンフレットを取り寄せたりしました。本当です。

時代が大きく変わりテクノロジーが進歩して、ありとあらゆる情報を簡単に手に入れることができます。大学への進学を考えている人は、それを利用して、大学で取り組むであろうことが果たして自分の望むことなのかをぜひとも確かめてください。「いったい何のために大学に進むんですか。」 即答できますか?

さて、そんな中で、さらに私の心を揺さぶったもの・・・・ それは「TK-80」

ホーム > 校長☆副校長

検索
Feeds

Return to page top