帰ってきた「しっぽのさきっちょ」

しっぽのさきっちょ: 2016-10-30 付

Dart 言語に関する覚え書き

no extension

最初の頃は Dash とか呼ばれていたこの言語だが,正直に言ってあまり関心は高くなかった。 昔 Microsoft が JScript/VBScript や ActiveX で似たようなことをやろうとして大失敗したのを見ていたので「大失敗の2番煎じとか(笑)」という感じだったのだ。

でも

を見てちょっと調べてみることにした。 個人的に TypeScript や CoffeeScript の構文は好みじゃないし(もちろん仕事ならやりますよ), Dart でそういったものの代わりになるのなら悪くないと思ったのだ。

Dart 環境は以下から取得できる。

Windows の場合は Chocolatey 経由で導入するかサード・パーティのインストーラが用意されている。 今回はサード・パーティのインストーラを使ってみた。 インストール後にコマンドプロンプト等で

$ dart --version
Dart VM version: 1.20.1 (Wed Oct 12 15:07:45 2016) on "windows_x64"

てな感じになれば成功である。 さっそく,みんな大好き “Hello World” から

void main() {
    print('Hello World!');
}

これを DartVM 上で実行する。

$ dart hello.dart
Hello World!

よーし,うむうむ,よーし。

じゃあ,これを JavaScript コードに変換してみようか。

$ dart2js -ohello.js hello.dart
Dart file (hello.dart) compiled to JavaScript: hello.js

うひゃ! なんか凄いコード吐いたな。 元の3行のコードに対して300行くらいあるぞ。 でも node.js1 に食わせると一応ちゃんと出力される。

$ node hello.js
Hello World!

出力された JavaScript コードの一部を抜粋するとこんな感じのコードを吐いている。

var dart = [["dart2js._js_primitives", "dart:_js_primitives",, H, {
  "^": "",
  printString: function(string) {
    if (typeof dartPrint == "function") {
      dartPrint(string);
      return;
    }
    if (typeof console == "object" && typeof console.log != "undefined") {
      console.log(string);
      return;
    }
    if (typeof window == "object")
      return;
    if (typeof print == "function") {
      print(string);
      return;
    }
    throw "Unable to print message: " + String(string);
  }
}], ["", "hello.dart",, G, {
  "^": "",
  main: function() {
    H.printString("Hello World!");
  }
}, 1]];
setupProgram(dart, 0);

いや,うーん。 いいのか,これ。 “Hello World” ごときでこれって,もう少しスリムなコードを吐けないのだろうか。

たとえば仕事で Dart を使うようなプロジェクトでもあれば面白そうだが,それ以外で積極的に使おうという気にはならないかなぁ,これは。 制御用の言語を統一するのなら JavaScript (ES6) で十分だし,バックエンド側のみということであれば Go 言語のほうがよさ気だし。 うーん。

というわけで,もう少し様子見。

ブックマーク


  1. node.js は最近 v7.0.0 が出ている。 [return]