altJSの言語を触ってみる

グッド・バッド問わず何らかのプラクティスを学ばないと書けない、 しかも人や時期によって何がグッドかが変わるjavascriptに嫌気がさしてきたので、 altJSを触ってみている。

altJSを検討するモチベーションになった、javascriptの不満点が以下。

  • context(this)がコロコロ変わる
  • foreachすらまともにできない(jQuery.each等々検討したが、return, break, continue, context保持を全部備えるものはなかった)
  • 動的型付け
  • クラスベースで書きたい

必然的にこの観点で評価することに。

触ってみたのは ・TypeScript ・Haxe ・Dart

TypeScript

  • JavaScriptの正統進化というか、ちょこっとラッパーかぶせただけっぽい感じ。  (JavaScript + class + 静的型付け = TypeScriptな感じ)
  • 別に何の勉強もしなくても明日から使えそう。
  • sourcemapもきれいに動く。
  • 出力されたjavascriptコードも読める程度に綺麗なので、JavaScriptを下手に書くくらいなら断然こっち。
  • 生のJSを書くという選択肢はこれで消滅。
  • 今ver. 0.9なので1.0になるのをまってもいいかも

でもthisはやっぱりコロコロ変わる。 ここだけなんとかしてくれないかな・・・

Haxe

  • ActionScriptっぽい
  • 静的型付け + 型推論が綺麗に動く
  • 人によっては若干めんどくさく感じるレベルまで型が強い
  • 関数型っぽい書き方もできる
  • JavaScriptのライブラリも、ラッパークラスを書けば動く。
  • 出力されたJavaScriptは、読めないことはないけど、これを引き継いで書く気はしないレベル  (個人的には出力されたJSを読む必要は特にないので気にならない)
  • バージョンは3

ええんちゃう。正直一番好感触。 但しpackaged appsを書くときに、source mapが上手いこと動かない。 ここだけクリアできればHaxe常用でよさそう。 検討中。

Dart

  • Javaっぽい
  • 動的型付け + 型チェック
  • コンパイルせずにDartエンジンでそのまま動かせるので、デバッグは楽
  • Blink版ChromeにDartエンジンがそろそろ乗るらしい
  • その他のブラウザ向けにはjsにコンパイルして実行
  • コンパイルされたjsは全く読めない
  • つい最近ver 1.0になった

別にjs読めなくていいので、むしろ最適化されたjsが出てくる方が嬉しいんだけど、 出力されたjsは別にそんなに速くない・・・

ぶっちゃけまだ安定していないみたい。 言語がバージョンアップするたびにライブラリも動かなくなることがあるので、 もう少ししてから触ればいいかな。

Dart結構期待してたんだけど、言語仕様はなんか今ひとつ。 Haxeの方が好き。 TypeScriptを使いつつ、ぼちぼちとHaxeの使い方を勉強する感じで進めるか・・・

・12/25追記 解決しました。

Written on November 25, 2013