ベイダー卿

プログラムを始める人へ(その11:インタプリタ様の慈悲)

2009-08-04 13:01:58

 
コーホー、コーホー、こんにちは、最近、忙しいのと暑いのとで、妙なシステムを思いついたり、ちょこっと実装してみたりして楽しく過ごす、ベイダー卿です。

 

前回は、恐れ多くもコンパイラ様のことを、書かせていただいたんですけどね。

そのコンパイラ様と双璧をなすのが、今回、ご紹介するインタプリタ様。

でもね。

すでにプログラミングがわかっている方なら、お気づきかと思いますけれども。

前回のコンパイラ様のお話には、実はインタプリタ様のこともかなり混ざっていたわけでして…。

コンパイラ様(やインタプリタ様)の役割、という意味で書きましたから。

今更、インタプリタ様のことを重ねて書く必要があるか?というと、ちょっと疑問なわけです。

しつこいジェダイは嫌われますしね。

でも、この一連のエントリーは、初心者向け。

そういう突込みができるくらいの知識や、突っ込もうというイジワル心が無い、素直で純粋なあなたのような初心者向け。

考えてみたら、僕と正反対の人に向けて書いてるんですよね。

ということは、僕が男なので、この文章は女性向きなんだ!

女性のためのプログラム入門!

なんと素晴らしい!これで女性にモテモテ。

…。

すいません。暑さで、つい浮かれてしまいました。

で。

やっぱり、コンパイラ様だけ書いて、もう片方のインタプリタ様を書かないというのは、感じ悪いというか、気持ち悪いというか、

僕がパダワン時代にもよくいましたけれども、「もう片方も同様だから、わかるよね?」とかいって、

わかるかどうかを確認もせず、そして反応しない学生が悪いんだと、勝手に説明を途中で端折った教師のごとき、中途半端なことになってしまいますから。

お客様第一主義の僕としては、それは避けたい。

というか、それでさえも些細なこと。

何よりも、プログラミングについて、一分の隙も無く、一言も漏らさず、熱く熱く語りたいわけですよ、僕は。

燃え滾るこの血潮を、そのままキーボードにぶつけて文章書いてるんですから。

だから、builderでブログ書いてるわけですね。

そう、しつこいのが僕の存在意義なのです!

ということで、今回は、インタプリタ様をメインに、コンパイラ様との違いについて語っちゃおうかなぁなんて思ってるわけです。

 

前回、本当にちょろっとだけ書きましたけどね。

大まかに言えばインタプリタ様と、コンパイラ様のお役目は同じ。

つまり、人間が書いたプログラムという名のラブレターを、コンピュータがわかるように翻訳する。

僕らの熱いラブレターについて、誤字、脱字、文法、その他諸々の問題点が無いかどうかをチェックし、エラーメッセージという、愛の言葉でささやき返してくれる。

実行に支障がないプログラムが出来上がれば、「OK、良くやったね!」と褒めてくださり、実行を許してくれる。

という役割を持っておられるわけです。

これは同じ。

じゃあ、何が違う?

コンパイラ様とインタプリタ様の性格の違いはどの辺りにあるのか?

 

まず、ツンデレなコンパイラ様の性格を確認しておきます。

コンパイラ様は、僕らの熱い思いがいっぱい詰まったプログラムを見て、まずはエラーが無いかどうかを最初から最後まで完全チェック。

そして、エラーが無く、他にも問題がないことを確認して初めて、実行を許してくれます。

でも、許すだけ。

すぐには実行してくれない。

基本的には、実行できるファイルの形(アプリケーション)にして、コッソリ作っておいてくれるんですね。

すぐに実行して「ほら出来たよ」なんてこと、言ってはくれないのです。

「わざわざ作ってあげたんだから、実行くらい、自分でやりなさいよね!」

という典型的ツンデレ態度を最後まで崩さないわけですよ。

本当に、素直じゃないんです、コンパイラ様は。

まあ、そこが彼女のいいところ。

で。

それに対して、インタプリタ様は、全く違う態度を示します。

言うなれば、超素直な天然ボケタイプ。

僕らの熱い思いのこもったラブレターをもらっても、その場で開封しちゃっていきなり声を出して読み始める。

そんな感じ。

そういう空気の読めてないことをおっぱじめてくださいます。

わざわざラブレターにしたんだから、家に帰ってから読んでくださいよ。せめて黙読でお願い。

なんて言っても、天然ボケのインタプリタ様には、

「どうして、今読んじゃいけないんです?」

なんて、小首を傾げられるのがオチなわけです。

もう、そういうもんだと思って付き合ってください。

これがインタプリタ様の最大の特徴なのですから。

インタプリタ様は、プログラムというラブレターを最初から一行ずつ、素直に実行してくださいます。

読み始めたら、読んだ分だけ、すぐに実行しちゃうんです。

そして、間違いが見つかったところで止まって、

「あらら、ここ、間違ってますけど…」

なんて、後から言いだす。

コンパイラ様みたいに、ちゃんと全部チェックして、間違いを全て洗い出して直させてから、実行ファイルを作るわけではないのです。

実行されてるけど、それが全部終わるまでは、本当にプログラムに間違いが無いかどうかはわからない。

だから、インタプリタ様にプログラムをお渡しすると、途中まで実行されて、その後が全く動かないなんてこともザラ。

そのあたり、コンパイラ様が最初から完璧さを求めてくるのに比べますと、かなり抜けておりましてね。

さすがは天然ボケ。

やることが常人とは違います。

インタプリタ様とお話していますとね

「頼むから、先に言ってくれよ…」

なんて思うことも良くある話。

でも、インタプリタ様はあくまでもマイペースですから。

「ゆっくりやればいいじゃないですか。うふふ」

なんて、ゆる~い、ふわふわな感じで、後からエラーを出してくる。

小出しにしてくる。

そんなあなたに、僕はいろいろな意味でメロメロ。

インタプリタ様は、そういう性格なのですから、それはそれで認めないといけません。

でも、これのおかげで、ちょっと困ることもありましてね。

プログラムが複雑になってきたときなんかに増えてくるんですけれども、普段は使わずに、何かのときだけ稀に動く部分とか、出てくるわけですよ。

例えば、ちょっと頑張っちゃったホームページなんかについている、”このページをお気に入りに登録する”なんていうボタン。

押したことあります?

僕の場合、間違えて押しちゃったことならありますけど、一度だって自分の意思で押したことが無いボタンの筆頭なわけですよ、あれ。

お気に入りに追加するなら自分でブラウザを操作しますって。

というか、そういうボタンや装飾に凝ってるページに限って、お気に入りに入れる価値を感じなかったりするのが、世の常なわけですね。

寂しいことに…。

って、話がそれましたけれども、そんな不遇なボタンにも、当然ですがプログラムは書かれていて、押されたときの動作を記述してあるわけですよ。

そして、インタプリタ様の場合。

押されるまで、実行されないから、そこが間違ってるかどうかはわからない。

それでも、押される前のホームページは正常に表示され、ボタンも当然表示され、パッと見、プログラムは間違っていないかのように思われる。

これがインタプリタ様の怖いところなのですよ。

いろいろなところが、いつの間にかユルユル。

まあ、ボタンくらいなら、多分、そのホームページを作った人が動作確認のために自分で押してみてるでしょうけれどもね。

でも、個人のホームページくらいの規模ならまだいいですよ。

これが大きなプログラムになったとき、稀にしか動かない部分が何箇所もある場合、テスト段階で動かし忘れるところも出てくるわけでしてね。

そこに間違いがあっても、気づかずに通過する。

リリースしちゃう。

そして、その稀にしか動かないはずの部分を、動かしちゃう人が絶対に出てくる。

その結果が不幸を招くことはいうまでもないわけですね。

ほんと、この辺りがインタプリタ様のすごいところです。

エラーを抱えながらも、気にせず平気な顔で実行しちゃいますから。

実行時にエラーの箇所さえ触らなければ、普通に動いちゃいますから。

そして、エラーの箇所に差し掛かったときにだけ、反応する。

「あらあら、ここ、間違ってたわ。どうしましょう?」なんて感じで、全く悪びれることも無く…。

というわけ。

さらに、インタプリタ様の天然っぷりは、これだけじゃなくてですね。

ラブレターの文章を逐一解釈して実行しているので、コンパイラ様よりも、一般的に実行速度が遅いとか、そういうこともよく言われるわけですよ。

確かに、ゆったりしてるとき、ありますよ。

もう少し早く動いてくれないかなぁ、なんて思うこともありました。

でも、

「そんなに急いでやらなくても、いいと思うの」

なんて、舌っ足らずな声が聞こえてきそうな勢いでしてね。

そして、そうなると、もう、「それでもいいかなぁ…」なんて思ったりもするわけです。

仕方が無いんだと。

なにせ、インタプリタ様だから…。

と。

だから、僕はインタプリタ様って、天然ボケなんだろうなぁなんて思うわけですよ。

 

でね。

こういう風に書きますとね。

どう考えても、コンパイラ様のほうが、インタプリタ様よりも、良さそうに見えるわけです。

昨今の、ツンデレブームじゃないですけれども、最近、そういう性格って人気ですしね。

天然ボケよりも、ツンデレのほうがしっかり者っぽいですしね。

だから、プログラミングのパートナーとしても、ツンデレのほうがいい。

実は、天然ボケのほうが好みだけど、この際、ツンデレで我慢する。

とか、そういうこと、あなたも思っちゃったりするかもしれませんけれどもね。

天然ボケには、天然ボケのよさってものがあるわけですよ。

そこを見ないで、安易にツンデレに走っちゃうのは良くないと思うのです。

 

インタプリタ様の良さというのは、プログラミングのときの応答性の高さ、もっと簡単に言えば、融通の利くところ。

プログラムを組みながら、実行結果を即座に見ることが出来るんですね。

これが、プログラムを組むときの大きな利点になるわけですよ。

コンパイラ様のように、実行するためのファイルを作る必要が無い。

しかも、プログラムが途中まででも実行できる。

プログラムを組んでいくと、まだ作ってない部分とか、作るのが大変で後回しにしたいところとか、絶対に出てくるわけですよ。

でも、それをちゃんと作らないと、エラーが出ちゃって、コンパイラ様は通してくれないときがある。

実行すらさせてもらえないことがある。

なにせ、エラーが全部消えるまで、実行ファイルを作ってくれないから。

だから、コンパイラ様が怒らないように、なんとかそれを回避するように、プログラムを組むことは出来ますけれども、

そういう作業は面倒なわけですし、本来のプログラムではないものを組み込むことになる。

そうすると、それが今度は新しいエラーの元になったりする。

もう、大変ですよ。

でも、それに比べて、ユルユル天然ボケなインタプリタ様は、

「作ってないところはとりあえず、放っておきましょうね~」

なんて言いながら、プログラムを通してくれるのです。

実行させてくれるんです。

そして、プログラムが出来てるところまで実行し、出来ていないところに差し掛かったら、エラーで止まる。

「続きは、また今度ね」

なんて、優しく微笑みかけながら…。

そう、これが、インタプリタ様のすごいところなのですよ。

こういうプログラムの組み方が可能なのです。

ラブレターを半分だけ書いて、残りの半分はまた今度。なんて、現実的には難しいことですけれども、それさえも許してくれる。

天然ボケなんて書いてますけど、慈悲深いとすら言える、広いお心を持っているのがインタプリタ様なのです。

ドラゴンボールの願い事は1回だけですし、仏の顔ですら3度まですけれども、そんなケチなことはありません。

インタプリタ様なら、数千回、数万回でも、OK。

あなたの体力と気力とフォースが続く限り、いつまででも間違いを含んだプログラムの実行に付き合ってくれる。

もう、神龍より、仏様よりも慈悲深い、最強の天然ボケ。

それが、インタプリタ様なのです。

 

ということで、コンパイラ様と、インタプリタ様の違い、わかっていただけましたでしょうかね?

とりあえず、大まかに分けると、上記のようなことになるんですよ。

でもね。

世の中、やっぱりいいとこ取りをしたいなんて人が出てくる。

人間は欲深い生き物ですから。

ツンデレも、天然ボケも、両方愛しちゃう人っていうのがやっぱりいるわけでしてね。

要するに、二股。

どっちにも相手にされない僕にしてみると、ホント、ずるいくらいですよ。

そういう男がいるから、僕には誰も回ってこないんだ…。

僕に…。

うわーん。

 

でも、現実にそういうものが存在するから、この世は面白いのです。

何のことかといいますとね。

コンパイラ様も、インタプリタ様も、完全に分かれてない場合も多かったりするんですよ。

言語自体がそういう感じに設計されていたり、プログラミング環境でフォローしたり、エディタやいろんなツール、ランタイム、その他の力を借りたりしましてね。

プログラムの途中で実行できるコンパイラ環境だとか、

実行ファイルやそれに順ずるものを作ることもできるインタプリタ環境だとか、

他にも、お互いの良い特徴を実現できて、実質的に、この二人の違いをそれほど感じさせないようにする試みは多数存在しています。

ほんとに色々とあるわけ。

しかも、ハードウェアの処理速度が格段に速くなってる昨今ですから。

そういう意味でも、体感的にはあんまり差が出なかったりもします。

だから、ぶっちゃけて言いますけどね。

現状、インタプリタだからとか、コンパイラだからとか、そういう理由でプログラミング言語を選ぶ必要ってほとんど無いんですよね。

少なくとも、このコラムを読んでいる、趣味で片手間にプログラミングをやろうという、あなたには無い。

「ツンデレでも、天然ボケでも、どっちも最高にかわいいよなぁ」などとのたまう、優柔不断な浮気野郎に成り果ててるわけです。

でも、どっち選んでも、幸せになれるのは僕が保障しましょう。

要するに、あなたの好みの問題なんですよ。

好みで選べるなんて、本当に便利な世の中になったものです。

で、そうなると、もうお気づきかと思いますけどね。

気づいちゃったかと思いますけどね。

僕が今回書いたエントリーって、両者の違いの解説なんですよね…。

実は必要なかったんじゃ…。

あっ…。

 

ということで、また次回。

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