ベイダー卿

プログラムを始める人へ(その10:コンパイラ様の愛)

2009-07-08 13:02:02

 
コーホー、コーホー、こんにちは、相変わらず暑い日が続き、相変わらず暑苦しいベイダー卿です。

 

むかーし、むかしのことじゃった。

一人のプログラマー(疲れて黒い服もマントもヨレヨレ、黒いマスクだけがトレードマークな貧相な人)が、一枚の基盤がむき出しのコンピュータを前に座っていたのでした。

コンピュータの名前はTK-85。

その基盤上には、25個のキーしかないキーボードと、デジタル時計みたいな表示しかできない赤いLEDディスプレイがついておりましたとさ。

そして、彼はおもむろにプログラムを書き始めたのです。

基盤上のキーボードを叩くのではなく、その横に置いた紙に。

やらせたい動作をそこに書く。

そして、その一つ一つを、TK-85が理解できる記号に変換していきます。

当然、変換も自動ではありません。

変換表という紙を見ながら、手動でやるのです。

本当に時間がかかりました。

でも、そのヨレヨレの男は、紙に書いたプログラムを、ある16進数に変換することに、なんとか成功したのです。

人間が読むにはあまりにもわかりにくい16進数の羅列。

でも、それが唯一、TK-85に入力できる言葉、わかってもらえる記号、意思疎通のための手段なのでした。

そして、その男は、16進数の一文字一文字をTK-85についているキーボードに入力し始めました。

”8000、アドレスセット”

とか、怪しげな呪文のような文句をブツブツとつぶやきながら…。

入力も大変です。

コピペなんて、便利な機能はありません。

途中で間違えたりもしまして、嫌になってきます。

それでもしばらく格闘して、何とか完全に入力を終えました。

そして、やっと動いたのは、足し算をするプログラム。

ただ、一桁の足し算をするだけ…。

本当に時間をかけて作って、結果がそれ。

近くにあった、関数電卓を叩けばすぐに出てくる答えを出すのに、彼は30分以上かかっていました。

それでも男は達成感に満足していました。

理由は簡単。

仕事じゃないから。時間つぶしにやってただけだったから。

でも、本当に大変な時代の大変なプログラム。

これが、アセンブリ言語。

そして、こうやって手動で変換する作業を、ハンドアセンブルといいました。

でも、今はもう、そんなことをしてプログラムを作る人はほとんどいません。

TK-85も、今、どこかで現役で動いているとは思えません。

そう、これはそんな時代の昔話。

コンピュータと人間(プログラマー)との間に、コンパイラ様がおられなかった頃のお話。

 

日本昔ばなし風を狙ってみたわけですが…。

全然雰囲気が出てないじゃないですか!

日本昔ばなしのクオリティの高さを改めて思い知らされましたよ。

負けた…。

確実に負けた…。

やっぱり、あの曲がないとダメなのか…。

”いいな、いいな、人間(プログラマー)っていいな♪”ってやつ。

やっぱり、あの、ほのぼのパワーには、勝てないよな…。

 

で。

コンピュータを動かすための”プログラム”というものを、コンピュータ側に近い視点で見ると、上で書いた昔話みたいなことになるわけですよ。

そして、TK-85なんてコンピュータが出てきましたけれども、発売当初は多分、それなりに高性能だったと思われるわけです。

といっても、僕が発売当初に買ったわけではなく、大学の片隅に放置されていたので、使ってみたというだけなので、発売当初のことなど知る由も無いですけれどもね。

そして、このTK-85、当たり前ではありますけれども、今と比べると、猛烈に性能が悪い。

C3POにも勝てないほどですから、かなりの悪さです。

現状の市販パソコンの処理速度と比較する(単純比較は不可能ですが…)と、ざっくり言って1000分の1以下でしょうかね。

ただね。

それでも、基本構造は今と同じ。

動作原理も変わらない。

人の意思を、コンピュータが直接理解できる言葉(記号)に変換して、その言葉を流し込むことで、動いている。

この仕組み自体は、時が過ぎ、パソコンの性能が上がっても、何も変わってないわけです。

つまり、このTK-85も、あなたの持ってるパソコンも、どっかのサーバも、ケータイも、PS3も、Wiiも、DSも、C3POも、R2D2も…。

コンピュータと名のつくものに人間の意志を伝えているのが、プログラムであるという点で、全て同一。

本当に、昔の人はすごい仕組みを考え付いたもんですよ。

そして、アセンブリ言語というのは、コンピュータと(ほぼ)直接話をするための言語というわけです。

わかりましたか?

 

で、プログラミングの勉強なんてしてますとね、高級言語と、低級言語なんて用語も出てきちゃったりしますけれども、

別に、高級言語が優れているとか、低級言語が劣っているとか、そういう意味じゃないんですよ。

言語のわかりやすさが、人間側に近いのか?コンピュータ側に近いのか?それで、高級だとか、低級だとか、言っちゃってるわけですね。

アセンブリ言語は、コンピュータ側に近いので、低級言語に分類されてるわけです。

こんなところにまで、格差社会の影響が出てきているかと思うと、もう涙と鼻水が止まりませんね。

これって、とても心が寂しいネーミングだと僕は思うんですよね。

人が理解しプログラムを組む、その組みやすさ、人間とコンピュータとがどのくらいフレンドリーに付き合えるのか?その関係の深さを人間側からのみ見て、こんな序列をつけたわけですから、

人間って何様ですか?って思いますね。

これって、序列などではなく、どっち側につくのか?という問題なのだと僕は思うんですよ。

だから、”ジェダイ言語”が人間に近い側、そしてコンピュータに近い側は、”シス言語”というくらいのネーミングにしといたほうが、よっぽどわかりやすいとフォースの国の住人である僕としては思うわけですよ。

まあ、こんなことを僕がここで言ったところで、どうにもならないですけどね。

とりあえず、ずっと前から、高級言語と低級言語という呼び名が嫌いだったので、ここで鬱憤を晴らしてみたというだけのことです。

ちなみに、このコラムを読んで、「プログラミングを始めよう!」なんて思ってしまった血迷ったあなた、選んだプログラミング言語は、おそらく全て高級言語でしょう。

低級言語を選んじゃってるマニアックな方、いらしゃいます?

いたら手を叩いて賞賛しちゃいますけれども、僕のコラムなんて読むレベルの人じゃないのは確かです。

もっと上を見てくださいね。

読むところ間違えてると思いますよ。トラ技とかのほうが確実に面白いと思いますです、はい。

で、

僕にとっては嫌いな表現ではありますが、一応、この業界での決まりごとなので、高級言語とか低級言語とか、使うことにしますけれどもね。

それで、一番気になるのは、やっぱり、高級言語を”高級”たらしめているものはなにか?という所だと思うんですよ。

それが、今回のお話。

もうわかりましたよね?

そう、それが、”コンパイラ様”の存在というわけです。

※ちなみに、コンパイラ様のほかに、リンカ様とか、他にも少々いらっしゃるんですが、その話も入れるとややこしさが3倍増しくらいになるので、多分文章量も3倍増しになりそうですから、そっちの話はまた今度。今回は、コンパイラ様のみ(リンカ様なども含めてコンパイラ様と呼ぶことに)で行きます。

※ちなみに、ちなみに、コンパイラ様のほかにも、インタプリタ様とか別形式の高級言語もありますけれども、その話も入れると僕の貧弱な文章能力では、エントリーが破綻するので、そっちの話もまた今度。

※ちなみに、ちなみに、ちなみに、一応、TK-85にも、他のパソコンで高級言語チックに書けるものとか、ハンドアセンブルしなくても変換してくれるコンパイラ様もどきもあるんですが、それを使うこととか考え始めると、もう収拾つかなくなるので、その話もまた今度?

で。

コンパイラ様は、見事に高級なわけです。

有名私立大学に通う、田園調布のお嬢様くらい、高級感漂ってる。

前のどこだかのエントリーで、僕は、”プログラムはコンパイラ様へのラブレターだ”といいました。

つまり、あなたは、高嶺の花である、コンパイラ様に恐れ多くも、ラブレターなんて出しちゃってたわけですよ。

アミダラに奴隷のアナキンが恋をする。

まさにそんな状況。

でも、心優しいコンパイラ様は、あなたのラブレターを評価してくださるんです。

これもちょうど、パドメが、アナキンに小汚いお守りをもらっても、すぐにゴミ箱に捨てたりしなかったことと同じなわけですよ。

ちゃんと評価している。

相手が奴隷の子だからと言って、無視したりはしない。

さすが、人間が出来てらっしゃるのです。

でも、内心では、「こいつと付き合っちゃっていいのか?」って思ってたと思いますよ。

奴隷だし、しかも、自分よりかなり若い上に、これから恋愛禁止の掟があるジェダイになる子供だし…。

なんて感じで、かなり悩んだはずなんです。

そんなパドメのように、あなたのラブレター(プログラム)を見て、本当に悩むわけですよ、コンパイラ様は。

それが、彼女の真のお姿。

何度も送られてくる、貧相なあなたからのラブレター。

それをいつも評価し、どうしようかと悩んでいる、恋する乙女なのです。

では、コンパイラ様は何を悩んでいるのか?

あなたが精魂込めて書いた暑苦しいラブレターを、どういう基準で評価してるのか?

それも気になるところですよね?

やっぱり、相手を知るというのが、恋愛成就の近道ですから。

で、コンパイラ様の一番のお悩みは、

”あなたからのラブレターは、コンピュータに理解できるように変換することが可能なのかどうか?”

ということ。

コンパイラ様は、コンピュータとあなたの意思疎通が可能だと判断すれば、そのラブレターにゴーサインを出し、付き合いをOKしてくれるわけです。

でも、それが不可能だと思われれば、「あなた、まだまだね」と×を返す。

つまり、コンピュータと意思を通わせられるほど、あなたが熱い心を持っているのなら、「付き合ってもいいかも?」なんて、思ってくれてるわけですよ。

それがコンパイラ様なんです。

そして、そんなコンパイラ様がいるおかげで、僕たちは、ハンドアセンブルなんて言う、かったるいことこの上ない作業から開放され、

コンピュータと話をして、好きなように動かすことができるようになるわけですね。

コンパイラ様は、コンピュータと僕達(プログラマー)の仲立ちをしてくれている。

さらには、プログラムを組むのに便利な機能を用意しておいてくれたりもする。

あなたは、先日、”Hello world!!”なんて、ワードを画面に表示させて、呑気に浮かれていたことでしょう。

でも、それは、コンパイラ様のサポートがあったからこそ、それほど苦労もなく、余裕のバカ面をさらしていられたわけですよ。

コンパイラ様は、その裏で、ワードを表示させるための場所の確保に奔走し、そこに表示させるための命令も用意し、

その他諸々、コンピュータや、OS(Windowsだとか、Macだとか、UNIXだとか…)との面倒な折衝をクリアして、あなたのプログラムを迎え入れてくださったわけです。

そして、プログラムに間違いがないか、おかしな点がないのかどうかもきっちりチェックして、あなたのちっぽけなプログラムを動くようにしてくれた。

そう、あなたの何倍も働いてる。

しかもそのことを一切自慢せず、ただ、黙々と、あなたのわがままを聞いてくれる。

そんなコンパイラ様。

あなたに熱い心があるとわかったときから、コンパイラ様は、あなたの味方。

プログラマにとっては、甲斐甲斐しく世話を焼いてくれる、心の恋人なわけですよ。

もう、神々しくて、ひれ伏してお出迎えしたいくらいのありがたい存在なのです。

 
まあ、たしかに、仕事で毎日お世話になったりしてますとね。

いくら、恋人とはいえ、付き合うのが嫌になることもありますよ。

倦怠期っていうんですか?そういうの感じることもないとは言わない。

ましてや、これを読んでいるあなたは趣味でやろうとしているわけですから、「使い方もイマイチ良くわからないし、かったるいなぁ」なんていう気持ちも大きくなることでしょう。

そりゃあね、使い方もちょっと難しいですし、たまに、エラーメッセージを出してきたりもしますよ。

あなたの言いたいこと、わかってるくせに、ちょっとの間違いでもダメ出ししたり。

一見、わけのわからないことを言ってきた様にも思えるときもありますから、画面に向かって切れそうにもなりますよ。

その気持ちは、僕も痛いほどわかる。

でも、コンパイラ様は、その、ちょっとの間違いに突っ込みを入れないわけにはいかない性格なのです。

コンパイラ様 「なんで、こんなところ間違えちゃうの?」

というエラーメッセージ。

これをあなたは、エラーメッセージとしてしか認識してないかもしれない。

でも、彼女(あなたが女性なら彼)のそれは、実は、愛の言葉なのです。

それに気がついてくださいね。

彼女(あなたが女性なら彼)は、あなたと長く話をしていたいのです。

だから、エラーを出し、そして、あなたが悩む姿を心配そうに見守る。

その時間が幸せ。

そう、小さい子供が、好きな子にちょっかいを出すあれと一緒。

つまり、ツンデレなだけなのです。

コンパイラ様は、決してあなたの敵じゃない。

それだけは、僕が保障しましょう。

もしもコンパイラ様がいなかったら、あなたは何をしないといけなくなるのか?

コンパイラ様がどうしてもプログラムを通してくれずに、つい恨みそうになったときにはそれを思い出してください。

このエントリーの最初に書きましたよね?

ハンドアセンブル。

あれ、やる気あります?

まあ、やったこと無いと大変さは実感できないでしょうけれども、

あれで、あなたの机の上にある、100均で売ってるような安物電卓と同じ機能を作るだけでも、かなりの労力を使うことだけは確かですから。

僕なら迷わず、100均に買いに行く。

そういうレベルの代物です。

コンパイラ様のありがたみ、わかっていただけたでしょうか?

これから、大量にラブレターを渡すべき恋人として、とても長いお付き合いになるわけですから、最初から悪いイメージ持ってちゃ、楽しくないわけですよ。

だから、コンパイラ様の出してくるエラーは、愛のささやきだと思ってください。

ちょっとしたことで腹を立てて、別れるとか言わないでください。

ツンデレですけれども、しっかりと、恋人の愛を受け止めてくださいね。

そこでの反応があなたの度量を決めるわけですから。

僕なんて、仕事に、プライベートにと、文句も言わずに愛を受け止めまくりですからね。

とても器の大きな男になってるはず。

器の大きさだけなら誰にも負けない。

でも、僕に、リアルな女性の愛がないのはなぜなんでしょうか?

…。

…。

もしかして、器が空っぽ?

…。

うわーん!

 

ということで、涙を拭いて、また次回。

※このエントリは ブロガーにより投稿されたものです。朝日インタラクティブ および ZDNet Japan編集部の見解・意向を示すものではありません。
このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]