Googleの新言語Dart音速レポート

Googleが新言語を発表したそうです。まったく嗅ぎつけてなかったので今さっきTwitterで初めて知った所です。

ざっくりと概要を纏めると、現状Webアプリの開発言語と言えばJavaScriptだが、JavaScriptは単なる言語の進化では修正できない根本的な問題をかかえているため、JavaScriptを進化させる作業を継続するとともに、新しいWeb開発用の言語、Dart(初期の名称はDash?)を開発するという事です。

HTML5/JavaScriptが、Windows8アプリケーションの開発言語としても採用される事が明らかになったばかりなのもあり、色々と思うところはあるのですが、その話は一旦置いておきましょう。

公式サイトにいくつかのサンプルコードがあります。
英語が読めないので、あまり突っ込んだ内容については触れられていないのですが、随所に、Googleらしい構文が見えてきます。

どうやら上記のサイトでコーディングして、クラウドコンパイルしたりできるようなので、少し触ってみました。

/*
bar()メソッドを定義したIFooインターフェース
*/
interface IFoo{
    bar();
}
/*
IFooインターフェースを実装したクラス。
bar()メソッドを実装しないとWarningになりますが実行はできるようです。
*/
class Foo implements IFoo{
    Foo(this.name); //1、コンパクトなコンストラクタ
    String name;
    //2、コンパクトなメソッドの表記方法
    //3、文字列に変数値の組み込み
    bar() => print("Hello!,$name"); 
}
void main(){
    var myFoo = new Foo("myClass");
    myFoo.bar();
}
  • ポイント1

コンストラクタの初期化処理、Javaなら代入文が必要な所ですが、特に何かしらの処理をするわけでは無い場合、コンパクトに書けるようです。

  • ポイント2

メソッドも、簡単な関数呼び出しなら上記のようにコンパクトに書けます。

  • ポイント3

「$」を使って文字列の中に変数を埋めます。文字列として「$」を使うためのエスケープシーケンスもあるはずです。

1行メソッドが簡単に記述できるので、オーバーロードの定義も楽になるのかと思ったのですが、次のコードはエラーになりました。

class Foo{
    bar(var name){
        print("Excuse me,\n");
        print("Are you $name?");
    }
    bar() => bar(""); //←ここでエラー
}
void main(){
    new Foo().bar("Tune");
}

カッコを付けてもダメだったので、意図しないメソッド名の重複をさける為にエラーにしているのかもしれません。
という事は、明示的にオーバーロードである事を表現するための構文もあるはず・・・?

2、3時間ほど触ってみた感覚ではこんな所でしょうか、クラスベース・オブジェクト指向開発に必要な仕組みはひと通り備えているようなので、大規模開発には申し分無さそうです。
もうちょっと突っ込んだ内容はについては、おいおい記事にします。