本当は怖いHPC

HPC屋の趣味&実益ブログ

次世代のプログラミング言語についてもったいぶって語ってみる

いつも思うのですが、次世代のプログラミング言語はプログラムの『構造』を再利用できる文法を持った言語なんだろうなぁと漠然と想像しています。

もちろんそれはLispのマクロが持っている能力ですが、マクロはいろいろ含んだ雑多な概念なので、そのエッセンスを抽出して提供するのが次世代の言語なんでしょうね。

そういう意味でRubyのブロックっていうのはその走りなんだろうなと思います。

最近話題のフレームワークとかもその路線ですよね。処理の中身はプログラマーに任せて、プログラムの構造や処理の流れを提供するわけです。現在のところ、それはソース生成という伝家の宝刀によって実現されている部分が大きいと思うのですが、これを言語の機能として提供できるようになるべきですよね。


現在のライブラリの機能というのは、処理の中身を再利用できる仕組みです。これはこれで必要ですが、プログラムの構造を再利用するには向きません。クロージャを使うことによって無理矢理に「処理再利用」を「構造再利用」として転用しているのが現状だと思います。

処理の流れ、プログラムの文の構造をライブラリのように再利用できる仕組みが必要です。


たぶん小飼弾さんのインタビューだったと思うんですが、Larry Wall師が、「新しい言語を設計するのは、Lispのラッパーを設計することと同じ」みたいな発言をしていたような気がします。(Web+DB Pressだった気がしますが、違ったらごめんなさい)

しかし、現在のところの自分の予想としては、構造再利用の仕組みというのはLispのマクロとは違うものになるだろうなと。Lispのマクロは結局シンボル処理と構文木の生成ですから、主流のプログラミング言語にはなじまないのではないでしょうか。

「構造を再利用する」という目標に対して、現在主流の言語が取っているアプローチは、

  • 言語自体を構造レスにする、シンプルな構造で統一する(LispとかHaskellとか)
  • クロージャなどを駆使して、処理の再利用を構造の再利用に転用する(Rubyとか)
  • 潔くあきらめる (Javaとか)

かなー。

最近はIDEも含めて言語だよみたいなことも言われますが、きっともう一度、言語の文法とEmacs主義者の時代が来るに違いありません。
ほんまかいな。

【広告】