2011-10-12

Dartすごい。マジすごい。美しい

Dart : Structured web programming

というわけで、Dartが発表されてからこのかた、Dartの規格を読んでいたのだが、これはすごい。マジですごい。ヤバイほどすごい。美しすぎる。

私が多少なりともかじっている言語は、C++とJavascriptとアセンブリである。私は、もうこれ以上、学びたいと思う新言語が出てくるとは思っていなかった。たしかに、C#はWindowsでアプリを作るには面白そうだし、PythonやらRubyやらは、かなり人気だ。しかし、これらの言語を学びたいとは思わなかった。昔、Schmeに興味を持ち、SICPを買った。しかし、未だ綺麗なまま、本棚の中に眠っている。Haskellに興味を示したこともあったが、やはり最初の感動が覚めると、学ぶ気にはならなかった。つまりは、わざわざ学ぶほどの魅力がなかったのだ。しかしどうやら、私は間違っていたようだ。Dartが来た。

Dartは美しい言語である。規格書を読むと、その美しさが一目瞭然である。従来のどの言語にもない完璧なまでの美しさを備えている。

Dart Programming Language Speci cation

まず、規格書が短い。現在のドラフトは、たったの78ページしかない。この規格書は、コア言語だけを定義している。この短さには理由がある。Dartのコア言語は、美しいほどにシンプルだからである。

たとえば、Dartには、暗黙の型変換が、boolean conversion以外に存在しない。Javascriptのように、改行が文脈によっては終端記号と解されるような仕様もない。この美しい言語を設計したのは神ではなかろうか。よくぞここまで思い切ったものだ。

ときくと、そんな厳格な言語がWebのクライアント言語として使えるはずがないと思う人もいるかもしれない。実は、暗黙の型変換のチェックは、コンパイルエラーとはならない。静的型警告(static type warning)が発せられるだけで、コンパイルには影響を及ぼさない。たとえば、

void main
{
    int x = 0.1 ; // static type warning
    print("${x}") ;
}

これは、静的型警告を出すが、コンパイルや実行には、何の影響もない。もちろん、出力も、0.1である。これは、あたかもvar x = 0.1 ;と書いたかのように振る舞う。

記述は厳格に、実行は寛容にというのが、過去に成功したWeb上でのクライアント言語に共通する理由である。HTML然り、Javascript然り。Dartはこの点からみても、失敗する余地はない。

コア言語側には、組み込み型というものがない。intやdoubleといった基本的な型でさえも、ライブラリである。

そして重要なことに、DartはJavascriptの代替として、Chromeに組み込まれることが決定している。もちろん、DOMも使える。

とにかく、Dartは信じられないほどに美しい言語だ。早くこの言語でプログラミングがしたい。Dartが使えるようになれば、Javascriptなどは即座に絶滅してしまうだろう。

おいおい、オメーのブラウザ、Dartも使えねーのかよ。さっさとDartが使えるブラウザーにしろよ。

8 comments:

  1. 賛同します。私も仕様書を読んでいると脳汁が溢れ出ました。生涯、Dartと共に生きていきたいとさえ思いました。

    ReplyDelete
  2. 私は正直、Xcodeという時点でのーさんきゅー。

    何?開発環境がXcode?
    ぷじゃけるなよ…
    あんなもん仕事以外で触りたくないよ…

    そんな雰囲気でした。個人的好みなだけですが
    流行るかどうかのポイントとして、開発環境ってのは超重要です。
    Eclipseで開発できるプラグインが作られたら劇的に拡散するでしょう。

    Cを置き換えるGoにしろ、JSを置き換えるDartにしろ
    Googleが独走した挙句にコケないといいですね。
    なんだかんだ言ってIEとFoxもサポートしてくれないと流行らないわけですよ、悲しいことに。

    ReplyDelete
  3. 型宣言ができ、コンパイル時チェックができる、コンパイルしたらJSになる言語。
    これだけでどんだけ喉から手が出るほど欲しかったか。

    特にコンパイルしたらJSになるおかげで、IEとFoxが仮にサポートしなくても十分流行る素養があるのが◎

    ReplyDelete
  4. Google Web Toolkit を利用すれば、Java で開発し、JavaScript にコンパイルされます

    ReplyDelete
  5. Google Web Toolkitの後継かと思いました。構文がJavaに似てるし、GWTの開発メンバーもDartに入っているし。

    ReplyDelete
  6. ここからC++OXを知って、こちらにも感動しました! 遅すぎる(_ _)

    ReplyDelete
  7. Xcodeが開発環境?って言ってる奴は、ドキュメント(今は英語しかないけど)を読んでから出なおしてこい。

    ReplyDelete
  8. 動的メソッドハンドリングってだけで、ゴミ屑同然だと思うんですけど
    何のための静的型付け言語なのやら…

    ReplyDelete

You can use some HTML elements, such as <b>, <i>, <a>, also, some characters need to be entity referenced such as <, > and & Your comment may need to be confirmed by blog author. Your comment will be published under GFDL 1.3 or later license with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.