第7回 言語の重要性その2:まつもとゆきひろのハッカーズライフ(2/2 ページ)
世の中にこれだけたくさんの言語があるのに、さらにまた新しい言語を作ろうと思いつく時点で、すでに相当INSANEでしょう。しかし、言語を変化させることはあらゆるもののありかたを変化させることでもあります。つまり、言語のデザインは、究極の自由なのです。
自分言語を作るのは難しくない!?
正直なところ、世の中にこれだけたくさんの言語があって、それぞれに特徴を持っているのに、さらにまた新しい言語を作ろうと思いつく時点で、すでに相当INSANEでしょう。常識的な人間であれば「これだけいろんな言語があるのだから、この中から自分の目的に合うものを探そう」という発想をするはずです。そこを「自分の言語を作ろう」と思っちゃうんですから、INSANEといわれても仕方がありません。しかも、言語を作ってそれを成功させようと思ったら、ただ単に言語をデザインするだけでなく、
- 処理系を実装(誰も代わりに「自分言語」の処理系を書いてくれない)
- ドキュメントを書き(誰も代わりに「自分言語」のドキュメントを書いてくれない)
- Webサイトを用意(誰も代わりに……以下省略)
などする必要があります。なかなか厳しい茨の道ですよね。
じゃあ、「自分の言語」を作るのは本当に非現実的なことなのでしょうか。まつもとがRubyを作ったのは、本当にわたしが「正気じゃない」からでしょうか。そうでないとは言いきれないのが悲しいところですが、わたしも最初からほかの人と違ったことをしたいからRubyを作ったわけではないのです。「成功しよう」とか「完ぺきなものを作ろう」とか最初から気負うから大変なのですが、実際には「作りたい」という思いがあったから作った、そして言語の設計や実装はそれほど難しいことではないから実現できたわけです。
冷静に考えてみると、システムをデザインするということは、ある意味、言語に語彙を加えていくことにほかなりません。「どのような語彙(ごい)をそろえているか」は言語の性質を決定しますから、自分の言語をデザインしていることでもあります。その辺をもうちょっと突き詰めて、語彙(ごい)を越えて文法の領域にまで手を入れたくなると、アラ不思議、自分言語の出来上がり、となります。
ここ数十年のコンピュータサイエンスの進歩により、言語処理系の開発は本当に簡単になりました。特別に変な文法でなければ、BNF*に似たような記法で文法を定義するだけで、コンパイラコンパイラと呼ばれるツールを使ってあっという間に構文解析器を自動生成できます。今や性能のことを第一に考えなければ、簡単な言語を作ることなんて数日あればできることです。
しかし、自分言語を作ることで何かメリットがあるのでしょうか? ええ、あるんです。
1つ目のメリットは、言語処理系というものがプログラミングの中でしばしば登場するテクニックの集合体であることです。例えば、設定ファイルを読み込むルーチンなどは、言語処理系の字句解析、構文解析そのものです。また、言語処理系はコンピュータサイエンスの総合芸術ですから、処理系を実装するために用いたテクニックはあらゆるプログラミングに応用できます。
また、良い言語をデザインしようという行為は、人間の気持ちをより深く考えることでもあります。つまり、インタフェースのあるべき姿について、より深い考察を行うことでもあるわけです。自分言語を作る2つ目のメリットとしては、言語レベルでの使い勝手を考えることで、プログラムの使い勝手に関するより深い経験と知識を身に着けられることがありそうです。
一段高いプログラマーへの道
最後に、言語デザインはとにかく面白いです。プログラミングの世界は、結局すべてのものが言語によって表現されるので、言語を変化させることはあらゆるもののありかたを変化させることでもあります。つまり、言語のデザインは、究極の自由だといえるでしょう。このような自由を享受する機会は、それほど多くはないはずです。
自分言語をデザインするという作業は、より一段高いプログラマーへの道に通じているのかもしれません。例え結果的に、その言語がほかの人にまったく使われなかったとしても……。そう思って、2004年から新しい言語の作成をテーマにしたlangsmithメーリングリスト*を運営しています。言語好きな人たちが集まって、自分の新言語を発表したり、議論したりしています。この中から未来を担う言語が登場したり、時代をリードするプログラマーが誕生したりするといいなと思っているのです。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
このページで出てきた専門用語
BNF
Backus Naur Formの略。BNF記法は、ALGOL 60の文法定義を形式的に行うために考案されたものである。「右辺::= 左辺」という形式で文法要素を決定するルールを並べていくことで、全体の文法を定義する。yacc(yet another compiler com
piler)のようなツールは、BNF(に似た)記法を受け入れて構文解析を行うソースコードを出力する。
langsmithメーリングリスト
アドレスは<langsmith@quickml.atdot.net>。参加するには、まつもとのアドレス<matz@ruby-lang.org>にCCしながら上のアドレスに参加希望のメールを出すこと。
本記事は、オープンソースマガジン2005年10月号「まつもとゆきひろのハッカーズライフ」を再構成したものです。
関連記事
- まつもとゆきひろのハッカーズライフ:第1回 ハッカーとの遭遇
- まつもとゆきひろのハッカーズライフ:第2回 キーボードへのこだわり
- まつもとゆきひろのハッカーズライフ:第3回 ハッカーと仕事
- まつもとゆきひろのハッカーズライフ:第4回 Emacs対vi
- まつもとゆきひろのハッカーズライフ:第5回 ハッカー環境問題
- まつもとゆきひろのハッカーズライフ:第6回 言語の重要性
- 「民主主義国ではすべての人がハッカー」――OSS Roundupにて
- オープンソースの世界での通貨は反響?――OSS Roundupにて
- まつもとゆきひろ――第1回:オープンソースという「お仕事」
オープンソースソフトウェアの開発にかかわっている人のインタビューをシリーズでお届けする「Open Source People」。記念すべき第1回はMatzのニックネームでも知られるまつもとゆきひろ氏の「人となり」に迫る。 - まつもとゆきひろ――第2回:Rubyを開発するということ
周囲がまつもと氏のまれたぐいまれなプログラミング言語アーキテクトとしての才能に気づき、まつもとがそれに専念できるような体制が自然に形作られつつある――Rubyはいま、そういう状況にあるように見える。今回は、Rubyの開発におけるまつもと氏の考えに迫る。 - まつもとゆきひろ――第3回:僕の存在価値はそこにある
過去2回にわたってお届けしてきたまつもとゆきひろ氏へのインタビューは今回が最終回となる。「誰かがRubyを実装し直したとしたら、いまのRubyよりもずっとエレガントで速いものができるはず」と語るまつもと氏は自身の存在価値をどのように見ているのかに迫る。
Copyright © ITmedia, Inc. All Rights Reserved.