ActionScript3は意外とよくね?

  • ひがやすを blog スクリプト言語とタイプセーフな言語の生産性
  • id:nowokay:20070112 プログラム言語の次の5年,動的でもあり静的でもある言語

上記のエントリやその他でも多くのブログ等で同様の議論が行われていますね選択肢としてメインストリーム以外なら動的でもあり静的でもあるを実現している言語って
HaskellOCamlConcurrent CleanNemerle
とか型推論系だったりコンパイラインタプリタをあわせもった言語もいろいろあるみたいですが、趣味でつつくのはともかく業務で使うとなるとちょっと無理。

プログラミングパラダイムも「OOPAOP」に加え「FP」を加えたハイブリット、言語も「JavaJavaScriptJRuby|Groovy」とか「C#IronPythonJScript」とかを使い分けなければならないとしたら、局所的にはEoDになったとしても根底から理解するためのハードルは高くなるばかりですねぇorz

MSもC#3.0はFPの要素を取り入れ型推論を加える方向へ進化するみたいだし、Javaも関数型を入れるとかって話ですが(僕的にはそれよりもオペレータのオーバーライドを局所的にでも許してBigDecimalの演算とかを自然に記述できるような細かな点をどうにかして欲しいですが)

本題のFlex2に採用されているActionScript3ですが、初めて数ヶ月なのでまだまだ素人なのですが、mxmlcコンパイラオプション
・strict=true|false
・as3=true|false
・es=true|false
やクラス属性のdynamicを使い分ける事でJavaScriptと同様prototypeベース、Java等クラスベースのハイブリットな構成が可能です。
as3ネームスペースの切り替え以外にもコンパイラオプションが[メタデータタグ]で細かくしてい出来たりフィルタリング指定できると更に嬉しいところですが、今業務に投入できると自分が思える言語の中ではかなりお気に入りな言語仕様となっています。
前回のエントリでも言いましたけどLLスクリプト系のさくさく感とは程遠いのはあれですが(wそのおかげでJavaScriptより高速に実行できるのでまあ我慢ですね。実験するため、おとなしく自宅のハードも6年ぶりに新調しま〜す

標準ライブラリも同じECMAScriptをルーツとするJavaScriptより強力になっています。Arrayのメソッドsort,map,every,filterなんかの高階関数prototype.jsとかのAjaxライブラリに頼らずとも組み込まれていますし、後からprototypeを拡張するとしてもsetPropertyIsEnumerableがあるので有害プロトタイプ汚染も防げます。

標準だとリフレクションが使い難かったり([メタデータタグ]はランタイムで読めない、E4X式で帰る)してちょっと困ったところもありますが、Flex2は画面周りだけでなくプログラムマ視点からみるActionScript3もマルチプログラミングパラダイムをサポートしている点で悪くないのではないでしょうか?

ちなみにJScript.NETの構文がちょっと確認しただけですけどActionScript3とほとんど同じでびっくり!!
今ならVisualStudioのサポートが他の言語同様にされればAjaxブームに乗って使われたかもしれないなーっと思ってみた。だれかバリバリ使っている人がいるのかしら?