かがみんとつかさのよくわかるLisp講座

お、お姉ちゃんー!今日の宿題、難しすぎてゼンゼンわかんないよー。
何よ。SICPの設問でもやらされてるの?
うん。たぶん近からず遠からず・・・。
どれどれ・・・ホントにLispの問題じゃない。 あの先生、理系っぽいと思ったらやっぱり関数型言語フェチだったか。 あんたも厄介な先生の受け持ちになったわね。
どうしよう、お姉ちゃん。 私ベーシックしかわかんないよ。
しかも、Visualなほうじゃなくて私のお古のポケコンのBASICね。 いい加減パソコンぐらい買いなさいよ。
だって、お小遣い足りないし・・・ 勉強も大切だけどお菓子とマンガも・・・あーうー。
そんな事いってたら技術書だけで1冊5千円以上したりすんのよ。 まぁ図書館で借りてくればいいんだけど。
そういうとき便利だよね、図書館って。 それで一回、すごく重くて高い本を借りてきたことがあるんだけど、 そのまま忘れてたら図書館から催促状が届いて、 お母さんに怒られたことが・・・。
あんたって子は・・・。
さて、第一問です。Lispの名前の由来はなんですか?
うっ。なんか緊張するかも。
えーと、リスプ、リスプ・・・・・・リスの名前・・・?
・・・・・・。
あ、思い出した。スズメバチを英語で言うとリスプなんだよね。
ぜんっぜん違うわ。 ちなみにスズメバチはワスプ・・・。
あ、あれ。そうだっけ・・・
LispはList Processingの略ね。リストで処理するってこと。
ま、こんなの覚えてもゼンゼン役に立つことなんてないんだけど。
そうそう。学校の勉強って、暗記ばっかりで役に立ちそうにないものって多いよね。
でも、リストで処理するっていうのは重要ね。 その名のとおり、Lispではすべてをリストで表現できるの。 配列やデータ構造はもちろん、プログラム自体すらリストで表現されているわ。
それって普通のプログラミング言語とはぜんぜん違うってことなのかな? なんだか、わたしには荷が重過ぎるような気が・・・
Lisp自体の構文は単純だし、インタプリタの実装も簡単だから、 処理系の実装はいっぱいあるんだけど、なぜか使う人が少ない言語なのよね。 ま、あんたがわからないのも無理はないわ。 もともとプログラミング言語というよりラムダ計算の記法だし。
そんな難解な言語を宿題に出されても困るよう。
あんたも一応、この近くじゃ一番の進学校に通ってるはずだがな・・・
あはは・・・でもお姉ちゃんはすごいよね。 勉強だけじゃなくて、プログラミングもいろんな言語が使えるし。 やっぱり出来が違うのかなぁ・・・。
うーん・・・向き不向きはたしかにあると思うけど、 プログラミング言語なんて一つ覚えればあとはみんな一緒よ。 ・・・って言うとかなり語弊があるんだけど、二つ目以降の言語は最初よりはずっとラクに習得できるのは間違いないわね。 ようするに最初に手を出した言語をマスターするまでが一番の難関なワケ。
な、なるほど。たしかに最初にはじめた時は、どこから手をつけていいのか全然わからなかったよ。 お姉ちゃんが手取り足取り教えてくれなかったらとっくに挫折してたかも。
うんうん、ぞんぶんに感謝してくれたまえ。
でも、プログラミング言語っていっぱいありすぎて、 どれを使ったらいいのかわかんないよね。
実装したいもので大体どの言語を使うかっていうのは決まるものよ。 私たちだって日本語を使いたくて使ってるわけじゃなくて、日本に住んでるから日本語を話すしかないってだけでしょ。 英語が使いたいからってアメリカに移住する人は変人よ。
た、たしかに・・・。 でも話し言葉とプログラム言語だとやっぱり違うんじゃないかな。
まぁそうね。 Forthみたいな逆ポーランド記法の言語は日本語の文法に似てるってよく言われるけど、それが日本人にとって使いやすいかって言われたらビミョーだし。
私はやっぱり、ベーシックがいちばんわかりやすいから、 ベーシックでいいかなって思っちゃうな。
ひとつのプログラミング言語で何でも書こうとするよりも、自分の実装したいプログラムをまず頭の中に思い浮かべて、そのプログラムを実装するのにいちばん適した言語は何かを考えてから言語を選択したほうがいいわね。 書くプログラムと相性の悪い言語を選ぶよりは、たとえ自分の使ったことのない言語でもいちばん相性のよさそうな言語を選んだほうが結果的に手間もかからないしうまくいくのよ。
ふむふむ。 それでLispはどんなプログラムを書くのに適しているの?
え・・・?そ、そうね。えーっと、ちょっと待って。メールきたから。
な、なんでそこで詰まるの?
いいわ、Lispが実際に何に使われてるのかってことね。人工知能の研究が盛んだった70〜80年代は、人工知能に適した言語だってことで一躍Lispが脚光を浴びたの。まあ、他にもPrologとかMLとか、雨後の竹の子のごとく前衛的な言語がぽこぽこ生まれた時代でもあるから、必ずしもLispだけの時代じゃないんだけどね。
ふうん、そうなんだ。 人工知能っていうとすごいSFチックでよくわからないものって感じだけど、よく考えれば人工知能プログラミング言語で作るものなんだよね。そんなこと考えたこともなかったかも。
そうね。たとえば手塚治虫火の鳥の未来編では、人工知能が人間社会の政治を代行してるんだけど、これなんか当時の人たちの人工知能に寄せていた期待の大きさがよくわかるエピソードよね。 まあ、そのせいで火の鳥の未来編は人類滅亡しちゃったんだけど・・・ 最近で言えばエヴァのMAGIなんかも人工知能ね。
あ、火の鳥、中学時代のころ読んだことあるかもー。 あのころは読んでてすごく怖くて、トラウマになりそうだったよ。 あれ?でもそんなに期待が大きかった割には、最近あんまり人工知能って聞かないような・・・ロボットならアシモとかあるけど。
・・・・・・。
ご、ごめんなさい・・・
まぁ人工知能はともかくとして、インターネットの普及した現代でもLispは隠れたところで活躍してるのよ。 例えば「ハッカーと画家」っていうエッセイで有名になったポール・グレアムは、世界初のWebアプリケーションを実装する時にプログラムのすべてをLispで書いたのよ。
え。Webアプリケーションっていうと、JavaとかASPとかPHPで作るものなんじゃないの?
今でこそRailsとか色々と選択肢はあるんだけど、当時はWebアプリケーションに近いものって言うと掲示板とかアクセスカウンターみたいなものしかなかったから、プログラムを作る環境がぜんぜん整備されてなかったの。 ポールは自著の中で、自分たちのベンチャーが成功したのは、Lispプログラミング言語としての潜在能力の高さのおかげだったとすら豪語しているわ。 彼のLispに対する執念は並々ならぬものがあって、最近ではLispって単語がある所にはほとんどこの人の話題が出てくるぐらいね。
やっぱり凄いひとは使うものからして違うんだね。 あれ?でもLispがそんなに便利なものなら、なんでASPとかPHPとかRailsみたいなものがあるんだろ?Lispのおかげで成功したって言うぐらいだから、その後に続く人達もLispを選ぶのが普通だと思うんだけど・・・。もしかして単にLispが好きだったからLispを選んだだけなんじゃ・・・
おっと、それ以上は言うな。世の中誰がサイト見てるかなんてわかんないんだから。 「ハッカーと画家」を翻訳したGaucheの中の人とかに見られたらどうなるかわかんないって。 あまつさえどっかのお調子者が英訳してポールに送りつけようものなら・・・全世界的にLisp村八分の憂き目にあうのは確実よ・・・
そ、そうなんだ。ごめん、もう黙ってるね・・・