新進気鋭のプログラミング言語「Neko」

「Neko」というプログラミング言語をご存知だろうか。発音は「ネコ」である。2年ほど前の2005年8月に最初のバージョン「Neko 1.0」がリリースされたばかりのかなり若いプログラミング言語である(現在の最新版は1.6.0)。目的は野心的だがアプローチは現実的で、すでにそれなりの成果物があり、ドキュメントも豊富に揃っているなどかなり興味深い。

Nekoは、JavaやPHP、JavaScriptのような表記を持った動的型付け言語。型付けが動的であることからどっちかといえばスクリプト言語といえるが、仕組みや発想はJavaやC#のようでもある。フォーマットやシンタックスは主流のプログラミング言語によく似ており、慣れるまでにほとんど時間はいらない。言語の規則もシンプルかつ強力で、学習時間が短く効率的だ。

それでいてJavaやC#のように一旦コンパイルした成果物を実行環境で実行するというアプローチをとっている。このあたりはPythonっぽいともいえる。Java、C#、Ruby、Python、PHP、Perl、JavaScriptなどいわゆる今ホットなプログラミング言語を使ったことがあるなら、Nekoは導入ドキュメントを読む程度で使えるようになるだろう。Neko Language Specificationに言語仕様がまとまっているので興味がある方はざっと目を通してみてほしい。

JVM / CLR でスクリプト言語を動かしてるけど、開発はけっこう大変

プログラミング言語に関する最もホットなトピックといえば、JVMやCLRといったプラットフォーム/VMでスクリプト言語やほかの言語を実行するという技術だろう。この点ではCLRに一日の長があるように思えるが、Javaでも先日同アプローチを推進するために「JVM Language Runtime」プロジェクトが発足している。とにかくホットだ。すでに普及し、稼働実績のあるJVMやCLRをプラットフォームとして利用するというのは、それなりに理にかなった発想だろう。

しかし、JavaやC#の特性上、このアプローチには難しい問題点がいくつか含まれている。同プラットフォームで動的な型付け言語やオブジェクト指向に対応していないプログラミング言語を動作させようとした場合、実装に対していくつかのトリックを導入したり、型のマッピングを実施したりする必要がある。JavaやC#が静的な型付け言語であるため、違う特性の言語を同じVMで動作させるにはそれなりの労力が伴うわけだ。

スクリプト言語のプラットフォームを目指す"Neko VM"

Nekoはいわばこのプラットフォームとして動作するべく開発された言語だ。RubyやPython、Perl、PHP、JavaScriptといった言語は強力で便利だが、実装系や実行環境はそれなりに複雑だ。Nekoはこれらプログラミング言語を実行するプラットフォーム/VMとして動作するべく開発されており、そうすることで個別に実行環境を開発するという労力を下げつつ、高速に動作するプラットフォームの恩恵を受けられるという寸法だ。本当に実現できるかどうかは別として、発想としては合理的なように思える。Nekoの言語仕様が簡単でありつつもこれら言語のどの面影も感じられるのは、このような開発目的が根底にあるからだろう。

Nekoは動的型付けであり、なおかつ型のマッピングが現実的であるように整理されている。Nekoで想定しているアプローチはRuby、Python、Perl、PHP、JavaScriptといったスクリプト言語をNekoに変換してから利用するというもののようだ。Neko自身はシンプルであらかじめ変換を考慮して設計されていることから、Nekoのコードに変換するのが現実的なアプローチというわけだ。Boehm GCを使ったガベージコレクタもあるし、すでにJITも実装されている。Windows、OSX、Linux、FreeBSDなどすでに複数のプラットフォームでも動作する。