ECMAScript 第5版 承認 21
ストーリー by soara
普及にどれくらいかかるだろう 部門より
普及にどれくらいかかるだろう 部門より
sekia 曰く、
Publickeyのエントリで知ったが、 ECMA-262第5版の仕様策定が完了した(ECMA Internationalの発表)。 仕様書はECMA InternationalのWebページからダウンロードできる。
1999年発行の ECMA-262第3版以来、実に10年ぶりの新規格である(第 4版は欠番)。 ECMAScriptの新規格策定においては、 Microsoft/Yahooが主導するマイナーチェンジとバグフィックスが主のECMAScript 3.1と、 Adobe/Mozilla/Opera/Googleが主導する野心的な機能拡張である ECMAScript 4の間で対立があったが、 ECMAScript Harmonyと呼ばれる統合計画によって ES3.1をベースに ES4のサブセットを取り込む形で両者が合意した経緯がある。
プレスリリースで触れられている主だった新機能は次の通り:
- アクセサプロパティ
- オブジェクトのreflective creation (反映的生成?)とイントロスペクション
- プロパティ属性のプログラム制御
- 追加的な配列操作関数
- JSONのサポート
- エラーチェックとセキュリティを拡張するstrictモード
主要ブラウザベンダの多くが策定プロセスに参加しており、早期の導入が期待できるだろう。また、本規格はファストトラック制度を用いてISO/IEC JTC 1にも提出されるとのこと。
本家でも取り上げられている。
新機能: reflective creation and inspection of objects (スコア:3, 参考になる)
「イントロスペクション」は間違いではないでしょうか。プレスリリースでは対応する部分は (introspection ではなく) inspection となっています。 inspection は検査とか調査といった意味です。
ECMAScript 5 仕様書の中で inspection という言葉はイントロダクションの中にしか出てこないようですが、オブジェクトの inspection とはおそらく ECMAScript 5 で追加された Object.getPrototypeOf, Object.getOwnPropertyNames 等の関数のことを指しているのでしょう。
参考:InfoQ の記事 (スコア:1)
http://www.infoq.com/jp/news/2009/12/ecmascript5 [infoq.com]
JavaScript とか詳しくないですが順当で妥当な進化っぽいですね。
ActionScriptはどうなる? (スコア:1, 興味深い)
先走っちゃったActionScriptはどうするんだろう?
このまま、継続?
Re:ActionScriptはどうなる? (スコア:2)
Adobe の動向を追っているわけではありませんが、まあこのまま継続でしょうね。 ECMAScript として標準化されなかったからやめるという類のことではないと思います。
僕は変数が型を持っていてコンパイル時型検査がある言語の方が好きなので、 Adobe 側の陣営に頑張ってほしかったのですけれど。
ECMAScript 5 に対応したブラウザーがまだない段階で言うことではないかもしれませんが、 ECMAScript の次の版はどうなるんでしょうね。
リフレクション? (スコア:0)
Re:リフレクション? (スコア:2, 参考になる)
それに関連する表現なのは確か。というかリフレクション/イントロスペクションは殆ど同じ用語です(よね?)。
ただJavaScriptって名前空間(もどき)がオブジェクトだし、プロトタイプ自身もオブジェクトなので今までもやろうと思えばいくらでもリフレクションできた訳で、今更挙げる分には何か特別のAPIでもできたのかと思って訳しあぐねました。まあ訳さなくても大体分かるよね。
# 今仕様書を簡単になめてみたけど"reflect"とか"object creation"といった単語が出てくる部分にはそれっぽい文章は見当たらず
言ってないことに反論するなよ
Re: (スコア:0)
あんなのリフレクションじゃねえと怒りだす人たちもいますけどねww
Re: (スコア:0)
>>リフレクション/イントロスペクションは殆ど同じ用語です(よね?)。
たぶん全然違うと思う。
リフレクションはリフレクション。
リフレクションはそれがない言語だと奇妙に感じるかもしれないけど、
ソフトウエアサイエンスの普通の専門用語だから。
>あんなのリフレクションじゃねえと怒りだす人たちもいますけどねww
それが普通の反応だと思うよ。
ちょっとでもリフレクションを勉強したら、その荒唐無稽ぶりに驚かされます。
Re: (スコア:0)
> たぶん全然違うと思う。
イントロスペクションはリフレクションの一部
ECMAScriptって何? (スコア:0)
「JavaScript」ならいっぱいあるのに。
なんていうか、もう少し読みやすい文字列にはならなかったのかな・・・
通じるべき相手に通じればいい言葉 (スコア:2, 興味深い)
> 「JavaScript」ならいっぱいあるのに。
「JavaScript」で求人しておいて、
「ECMAScriptって分かります?」
「え? 何でしょうか?」
「(あぁ、こいつ素人か)」
と判別出来るメリットがあります。
求人広告で最初から「ECMAScript」と明示すると、
「JavaScript」出来ると自認してる人が「ECMAScriptとは何か?」を予習して応募するため、
この手が使えません。
Re:通じるべき相手に通じればいい言葉 (スコア:2, おもしろおかしい)
「JavaScript」で求人しておいて、
「絵熊Scriptって分かります?」
「え? 釣りですか?」
「(あぁ、こいつ2ちゃんねらか)」
Re: (スコア:0)
" \ ∩─ー、 ====",
" \/ ● 、_ `ヽ ======",
" / \( ● ● |つ",
" | X_入__ノ ミ そんな餌で俺様が釣られクマ——",
" 、 (_/ ノ /⌒l",
" /\___ノ゙_/ / =====",
" 〈 __ノ ====",
" \ \_ \",
" \___) \ ====== (´⌒",
"
Re: (スコア:0)
ActionScript (スコア:2)
ActionScript は以前ちょっと触ってみただけで、まともにプログラムを書いたこともありませんが、知ったかぶりをして答えます。
ActionScript は ECMAScript を元にしていますが、一番目立つ違いとしては、 ActionScript 2.0 以降では変数が型を持っていてコンパイル時型検査があります。 ECMAScript 3 の次の版でこのあたりの仕様を入れるかどうか揉めた、というのはタレコミ文にも書かれている通りです。
それと、言語の違いを無視しても、使える API が違うので互換性はありません。例えば、ブラウザー用のスクリプトの中でブラウザーが持つ API (document.getElementById('...') とか) を使うように、 Flash Player 用のスクリプトでは Flash Player が持つ API (Sprite クラスとか) を使うわけです。
Re: (スコア:0)
LispにおけるCommon Lispみたいなもんだよ。
Re: (スコア:0)
"use strict;" (スコア:0)
今回から入った、コーディングミスを減らすための制約が強いモードなのですが
なんだかPerlみたいですね。
http://www.infoq.com/jp/news/2009/12/ecmascript5 [infoq.com]
http://ejohn.org/blog/ecmascript-5-strict-mode-json-and-more/ [ejohn.org]
に解説があります。
そのPerlでは (スコア:0)
いつの間にかUNIX環境では最も使われている言語になってるっぽいのに、
use strictって書くだけで動かない糞プログラムが量産されてるしなぁ・・・
制約の緩い言語って、プログラムを書ける人が気楽に書くには便利なツールだけど、
プログラム書いたこともない奴が適当に書いても(というより既存のソースをコピペして
適当に改竄しても)、なんとなく動いてしまうってのが最悪に始末が悪いと思う。
それをまた「経験のないオレでも出来た」とか自慢げに語るんだよなー。
個人の趣味でやるんなら別にいいけど仕事でやるなって思う。
後からメンテする人の事くらい考えろorz
Re: (スコア:0)
それはあなたの同僚がダメなのであって、Perlがダメなわけじゃないと思いますけど
クラスは・・・・ (スコア:0)
クラス定義はこのバージョンでもないのですね。
今後もprototypeプロパティで疑似クラスを実装するのか・・・・。