プログラミング言語研究に未来はあるか? - IPLAB

プログラミング言語研究に未来はあるか?
– スクリプト言語のすすめ –
田中 二郎
筑波大学 電子・情報工学系
305-8573 茨城県つくば市天王台 1-1-1
[email protected]
1
はじめに
昔は計算の結果として数字が出れば満足して
いたが最近では GUI(グラフィカルユーザイン
コンピュータというのが人類の歴史の中で画
タフェース) というものが全盛となっていて、
期的な発明だということについては異論を持つ
計算結果としてグラフィックスがでないと満足
人は少ないだろう。コンピュータはハードウェ
しなくなっている。コマンドベースであったオ
アとソフトウェアから構成されるがどちらがよ
ペレーティングシステムも Windows のような
り重要なのだろうか?(一部にはハードウェア
GUI に基づくものになっている。 GUI とはま
が好きな人がいるかもしれないが)疑いなくソ
ことに便利なお化粧道具であり、これを用いれ
フトウェアの方である(と私は思う)。
ば普通のプログラムでも実に格好良く変身する
そのソフトウェアの中心的な部分を担うのが
ことができる。
プログラミング言語である。過去においては、
現在のような Windows パソコンの先駆けは
コンピュータに興味を持つことはプログラムを
80 年代後半から流行したマッキントッシュであ
書くことであった。
ろうが、このころから段々プログラムを書かな
いまから 30 年以上も前になるが、私がまだ大
い人間が増えてきた。ただプログラムを買って
学の学生の当時、コンピュータのプログラムを
きてインストールし実行するだけである。コン
Fortran や Algol、あるいはアセンブラで書いて
ピュータとは計算をする道具から電子文房具に
楽しんだ。また、 80 年代のパソコンブームの
なり、文書を書いたりメールを送ったりする道
時代でも、 Basic などで各種のプログラムを書
具、 Web ページを読む道具になった。
いて楽しむことがコンピュータマニアの喜びで
私もずいぶんとマッキントシュを愛好したが
あった。
恥ずかしいことにマッキントッシュでプログラ
コンピュータサイエンスという学問において
ムを書いたことがない。実は GUI とは厚化粧の
もプログラミング言語こそが中心であり、コン
システムで、このシステムを使いプログラムを
ピュータサイエンスにおける King of Kings で
書くのは至難の技という印象である。
あると思ってきた。
その辺のプログラムの書きにくさ、操作性の
2
悪さは今日の Windows でも変わっていない。
プログラムを書かない時代
通り 一遍 のこと をや ろうと すれば アイ コンを
しかしながら、このコンピュータサイエンス
クリックすればよいが、何か自分流にやろうと
する時には DOS 窓を開くことになる。 (先日も
の王道にも昨今暗い影が忍び寄っている。
1
Windows にはディレクトリのファイルの一覧を ために過ごした。当時、米国にいた私はこのプ
印刷する機能がないことを知って唖然とした。)
ロジェクトに参加できることになり、日本人が
プログラミング言語の世界で世界に貢献できる
伝統芸能としてのプログラミング言 チャンスであると感じ、参加することに興奮を
3
覚えたことを思い出す。このプロジェクトは論
語研究
理型言語をベースとして世界征服を志したもの
であったが残念ながら我々のプログラミング言
プ ロ グ ラ ミ ン グ 言 語 と は ユー ザ に 使っ て も
語は世界を征服することはなかった。
らってなんぼの世界である。新しい言語を発明
してもユーザがつかないようでは何にもならな
一般には新しいプログラミング言語が提案さ
い。
れそこに新しいプログラミング言語の研究成果
が採用されて技術が進展するわけである。
プ ロ グラ ミ ン グ 言語 と は 保 守的 な 世 界 であ
る。 Fortran が発明されたのは 1954 年、 Lisp
最近のプログラミング言語界のニューフェイ
が発明されたのは 1962 年である。 Lisp につい
スは Java であろうが、この言語には、オブジェ
てはそろそろ処理系のメインテナンスが怪しく
クト指向、仮想機械、リフレクションなどの概
なっているという話も聞くが、 Fortran につい
念がそれなりにスマートにとりいれられ、プロ
ては、現在まだ第一線のバリバリである。
グラミング言語に関心を持つものとしては嬉し
Fortran にしても Lisp にしても、まだパーサ い限りである。
という概念もなかった頃のプログラミング言語
である。 Fortran はバラバラに空白など関係
5
国際的なハンディキャップ
なくプログラムを書くことができるし、 Lisp は
括弧だらけである。そのような言語には早く御
米 国 にい た 時 に はあ ま り 意 識す る こ と もな
隠居願いたいというのが本音であるが特に For-
かったが国際的なハンディキャップというのは
tran については、今後およそ 100 年間は安泰で たしかにあるかも知れない。コンピュータサイ
エンスという学問が米国を中心に回っており、
あろう。
このように年寄りが頑張っていれば新人が活
コミュニティのテイストに合う形で論文を書か
躍 す る余 地 は な い。新 し い 言 語が 現 れ な けれ
ないと受け入れられない。同じ研究をしていて
ば、プログラミング言語研究は活力を失い、プ
も日本にいて影響力を保つのは難しい。
一 方、 ネッ ト ワー ク の 発 達 に よ り コ ミュ ニ
ログラミング言語研究者は細々と伝統芸能を守
ティのバーチャル化が進行し、田舎にいても世
り続けるだけの集団となってしまう。
界に向けてソフトウェアを発信することが可能
4
となった。昔は東京にいないとトレンドを掴む
プログラミング言語の研究
ことが難しかったが、現在は筑波にいる不便を
プログラミング言語においても、 80 年代に
感じることは少ない。
は、関数型言語、論理型言語、オブジェクト指
今後、国際的なハンディキャップはなくなる
向言語がこれからのプログラミング言語として
方向なのか、あるいは依然として何らかの障壁
注目された。しかしながら、この中で社会的に
が残るのか、その辺は気になるところである。
認知されたのはオブジェクト指向言語のみであ
り、関数型言語や論理型言語については、あい
6
そこでスクリプト言語
かわらずイバラの道を歩んでいる。
私自身も 80 年代の後半を、 ICOT という国
なぜ最近の人間はプログラムを書かないか?
策組織で第五世代コンピュータプロジェクトの
前述したようにその原因は GUI にある。パソコ
2
ン上でも Visual Basic, Visual C++ といった統
うなおかしな言語はとても学生には教えられな
合環境が出ていて、それらを使えばそこそこの
い」とか「Tcl/Tk は本まで書いたのに好きにな
プログラムを楽しむことができる。しかしなが
れない」とか真顔でいう方がいて嬉しくなって
ら、そこで面白くないのは作ったプログラムを
しまう。 (Tk の功績と、電報言語としての性格
既存の環境にシームレスに結合して使えないこ
から私は Tcl/Tk を高く評価している。) Perl に
とである。
ついてはもっとも使われているスクリプト言語
私 が 注目 し て い るの は ス ク リプ ト 言 語 であ
と言っても良いかもしれない。 Perler という言
る。 5 年くらい前からプログラミング言語の未
葉もあるくらいで学生が今プログラムを書くと
来形としてスクリプト言語を意識しており、こ
するとだいたいがこれである。
第三世代が Ruby や Python のオブジェクト
れからはスクリプト言語の時代となると主張し
ている [1]。
指向スクリプト言語、オブジェクト指向を採り
スクリプト言語は、いわば電報言語で、「一
入れて実用言語としての色彩がより強くなって
筆啓上、おせん泣かすな、馬肥やせ」と要点を
いる。また、動的な HTML を作るために、従
さささっと書くとあとは処理系がやってくれる
来は CGI に Perl を使うことが多かったが、最
という「お便利言語」、もしくは Unix のコマン
近 で は、ク ラ イ ア ント サ イ ド スク リ プ ト とし
ドをただで使えるようになっている「宿り木言
て Javascript、サーバサイドスクリプトとして
語」、あるいは Unix の力を借りて敵を投げる
PHP, ASP などを使うことも増えてきた。こう
「巴投げ言語」であるということができる。
した言語を第三世代のスクリプト言語と呼んで
もいいかもしれない。
プログラムを書かなくなった世代へプログラ
スクリプト言語の世界における Ruby の健闘
ミング言語を復権させるにはスクリプト言語に
については、いまさらいうまでもない。使って
活躍してもらうしかないと思っている。
ま た ス ク リ プ ト 言 語 に は、 日 本 人 の 感 性 に
みると Ruby は GUI との相性も良く、言語仕様
あった簡潔さがある。 HAIKU の世界である。
も最近のプログラミング言語の研究成果を採り
年とってプログラムを書かなくなった人でも、
入れていてそこそこに洒落ている。 Ruby は、
スクリプトをちょこちょこと書いて動かして見
世界に誇るスクリプト言語になっているのかも
せるのは、竹内郁雄氏の好々爺、老人力の世界
しれない。
である。
8
7
原点に戻る
スクリプト言語の分類
要するに伝統芸能化したプログラミング言語
スクリプト言語を世代に分類して挙げると以
の研究、米国の追従だけのプログラミング言語
下のようになる。
研究から脱皮し、これからのトレンドであるス
まずは sed, awk, shellscript。これが第一世
クリプト言語の研究を行なおうと言うのが本稿
代のスクリプト言語である。基本的には sed や
の趣旨である。
awk は フィ ル ター 言 語、 shellscript は Unix の
昔の IBM を中心とした大型コンピュータ全
コマンド処理言語であるが、これらによりスク
盛の時代には、国産メーカによって IBM 風の
リプト言語の基礎が築かれた。
OS が作られ、その上にさまざまな言語処理系
つぎが Tcl/Tk と Perl。これが第二世代のス
も作られた。しかしながら Wintel の時代とな
クリプト言語で、スクリプト言語が実用言語と
り、パーソナルコンピュータの CPU は Intel の
しての体裁を持つようになった。 Tcl/Tk につ
マイクロプロセッサであり、 Windows の上に
いては評価が分かれるかも知れない。「このよ
Visual Basic や Visual C++ を買って載せるよ
3
うになった。そのため言語処理系の技術も一般
の回帰という揺り戻しがあるかも知れないと考
には不要となりつつある。また、一般には言語
えている。
処理系は買わず、 Office と Web ブラウザだけ
また、 GUI とより親密になったビジュアルな
しか使わないユーザも増えつつある。時代はよ
スクリプト言語の開発というのが考えられるか
り悪くなっていると言えよう。
もしれない。現在のアイコンベースの GUI は単
この辺で我々も原点に返って考える必要があ
にアイコンを押すだけで、コマンド言語のよう
るのではないか。プログラミング言語とはそも
なプログラミング構造をつくり出す能力を十分
人間とコンピュータのインタフェースをとるた
に持っていない。本来 GUI は二次元なので、一
めのものであり、人間のコンピュータに関する
次元のコマンドと比べより多くの表現力を持つ
活動すべてがプログラミング言語となるはずで
はずである。スクリプト言語の未来像としてビ
ある。そう言った意味ではスクリプト言語は、
ジュアルなスクリプト言語を描くのはまだ早過
プログラミングの原点にもっとも近いところに
ぎるだろうか。
ある言語と言うことができる。
参考文献
インタープリティブな言語には、インタープ
リ ティ ブで あ る こ とに よ る 反 応の 明 解 さ があ
[1] 座談会「スクリプト言語とは」 bit,
る。昔から Lisp はインタープリティブであるこ
2001 年 1 月, pp.66-75.
とに拘ってきたし Java にしてもまた然りであ
る。スクリプト言語は、動的であることを最大
限に楽しめる言語になっている。
9
今後にむけて
今後のスクリプト言語を考えると、いくつか
の可能性を挙げることができる。
一つは読みやすいスクリプト言語の開発。そ
もそもが電報言語でモジュール化も不十分なの
で読みにくい、そこで読みやすいスクリプト言
語というのが流行るかもしれない。そう言った
点をつきつめていくとスクリプトベースの仕様
記述言語というのもありかもしれない。
もう一つは宿り木スクリプト言語への回帰。
そもそもスクリプト言語は独立した言語として
ではなく、何かに寄生し、その上にちょこちょ
ことソフトを書くことで出発したものである。
そういう点では最近のスクリプト言語は巨大化
し、それ自体が独立した言語になってきた。私
が Tcl/Tk を愛好するのは、それが言語として
ほとんど目立たないところにある。くどくど書
くスクリプト言語より、何かに寄生しそのくせ
要所は押えるというのがスクリプト言語の原点
である。この辺で再び宿り木スクリプト言語へ
4
共立出版,