The Future of JavaScript の個人的なメモ

少し時間が空いてしまいましたが、先週金曜日(2007-11-02)、Mozilla & Shibuya.js によるトークイベント"The Future of JavaScript"に行って話を聞いてきました。
普段コーディングをしていない人間なので、理解しきってない部分が多々ありますが、個人的なメモをdumpしておきます。自分自身で理解できず書いてる部分あるので、あまり参考にしないでください。

ES4については、一言で言うと、下位互換を重視しつつ、固くオブジェクティブに作ろうと思えば作れるように拡張していく、といった感じでしょうか。

堅苦しい言語になってしまうのでは?と懸念する空気が会場にありましたが、クラス定義などはあくまで拡張であり、それを使うかどうかは書き手次第、逆に使わなければこれまでどおり柔軟なものとして扱えるよ、ということを主張されていたと思います。

たとえば、class 型で宣言したものはかなり堅牢に隠蔽化がされるようですが、dynamic class という型もあり、それを使えば property の動的な割り当てもできる、さらにその中でも、private を指定すればプライベートな変数も宣言できる、といった感じで、利用シーンや必要に応じて使い分けることが重要そうです。

その他、Class関連の言語仕様について。。。

  • 継承とインタフェースがサポートされる
  • final で継承されるのをブロックできる
  • 継承は1つ(多重継承はできない)、インタフェースは複数OK
  • Catch-All = rubyでいう"Method Missing"(methodがなかった場合の振る舞いを定義)

さらにそれ以外の細かな言語仕様について。。。

  • type と interface の違い?
    • type は構造定義のみ、like で一致をみる
    • interface は is で一致をみる
  • this: 受け取る引数の形式を指定(違ったらエラーを返す)
  • arguments は fake array じゃなくて実際の array になる
  • Map = key と value を保持する
    • key には Object も使える
  • let は Perl でいう my みたいなものっぽい
  • Package →隠蔽化。public のものだけが外から呼べる。
  • multimethod → いわゆるオーバーロード ?
  • Unit ≠ Package (このへんがよくわからない…). Unit はインポートに使う

その他、ES4をとりまく環境などについて

  • IEにも "Screaming Monkey" というサブプロジェクトを通じて互換性のあるエンジンを搭載させる
  • ActionScript 4 は、ECMAScript 4に沿うために ActionScript3 との互換性を捨てた
  • 各ブラウザが対応して、実際に動作環境が普及してくるのは2009年ごろでしょう
  • 型指定しなくても、Tamarinのエンジン内で最適化してるから速度は出るけど、指定したほうが速い
  • グローバルなクラスは直接いじれないけど、グローバルなオペレーションはいじれる
    • たとえば「+」は intrinsic namespace (?)