2012年はプログラミング言語を作りたい

本当は2011年の1-3月の間にやろうと思っていたのだが、卒業の危機などがあり思うように進まなかった。しかし今年Perl/XS以外にもC++, Objective C++, Java, ActionScript, JavaScript, Rubyなどでコーディングする機会があり、自分が欲しい言語が具体的になってきた。

私が欲しいのは、Perlの次を担えるような言語だ。それは必ずしも私の言語でなくてもいいのだが、とにかく「next Perl」が欲しい。
Perl言語のいいところは何か。それは言語に密結合した正規表現構文とテキスト処理機能、シンボルテーブルなど内部データ構造*1や後付けのOOP*2のような原始的な機能の露出、標準ドキュメントフォーマット*3とビューア*4、RAIIとダイナミックスコープだ。私は、これらすべてを備えている言語をPerl以外に知らない。

一方で、不要な機能もある。特に多様なコンテキスト*5とシジル*6Perl初心者が必ずハマるところであり、多様な言語を使いこなす必要に迫られる現代ではむしろ無いほうがよい。またPerlはコードを実行しながらでないと構文解析できないという特徴があり、「perlだけがPerl構文解析できる」*7と言われる。これが、perl以外のPerl実装を難しくしている*8

そして、足りない機能もある。私は未来のプログラミング言語型推論のある静的型付けが主流になるとみているのだが、はじめに動的言語として設計された言語に後からこれらの機能を付けるのは難しい。あとは使い物になるネイティブスレッドやバイトコードコンパイラJITも今のPerlに加えるのは難しい機能である。

新しいパラダイムや夢のような新機能はいらない。むしろ、言語仕様は小さくあるべきだ。それでいてより良い。そんな「next Perl」を作りたい。

*1: %package:: と *typeglob、およびB.pm

*2:bless

*3:pod

*4:perldoc

*5:void/scalar/array

*6:$@%*&

*7:Only perl can parse Perl

*8:Language::PやPerlitoのように実験的なPerl実装がまったくないわけではないが