1 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 05:16:18.29 ] 《ECMAScriptを語るスレ》 1. - 概要 - ECMA-262規格として知られる言語(通称 ECMAScript)についての利用法や言語仕様、 その他四方山話をするスレです。 Standard ECMA-262 ECMAScript Language Specification Edition 5.1 (June 2011) 標準規格(英語) www.ecma-international.org/publications/standards/Ecma-262.htm Annotated ECMAScript 5.1 es5.github.com/ Draft Specification for ES.next (Ecma-262 Edition 6) wiki.ecmascript.org/doku.php?id=harmony:specification_drafts Under Translation of ECMA-262 3rd Edition (日本語訳) www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/ ■前スレ ECMAScript デス 3 toro.2ch.net/test/read.cgi/tech/1190160481/ ■過去スレ JavaScript デス pc5.2ch.net/test/read.cgi/tech/1052273054/ ECMAScript デス 2 pc11.2ch.net/test/read.cgi/tech/1088298991/
67 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 13:19:34.99 ] >>66 イミフ
68 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 13:20:57.64 ] fxでも失敗するね const hoge; hoge = "aaaa"; // aaaa hoge; // undefined
69 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 13:26:20.85 ] >>67 仕様書を読んでみるといい
70 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 13:41:28.54 ] 6ドラフトの12.2.1 Let and Const Declarations 読んだけどわからん そんなこと書いてあるかな?
71 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 14:11:35.11 ] すごくおおざっぱに説明すると、プリミティブに対してオブジェクトとして アクセスしようとすると、オブジェクトが作られて、それに対してアクセスする、 というのが言語仕様。 だから、その作られたオブジェクトの属性として設定されるけど、そのオブジェクトに アクセスする方法がないし、元の変数は元のプリミティブを指したままなので…… というのが >>63 で起きてること。
72 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 22:57:50.88 ] ゴミな仕様だな
73 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 12:10:26.90 ] 普通に例外吐いて止まってくれるだけでだいぶ助かるんだが
74 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 13:06:49.34 ] strict mode + Object.sealed でおk
75 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 15:41:31.94 ] foo.bar() みたいな明らかに一文が終了してるときもセミコロンいるやん。 if(foo) a+b; みたいなコード書くヤツのほうを撲滅しろよ。
76 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 16:27:47.76 ] 波括弧を必須にするだけでよかったのにな
77 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 16:59:47.58 ] ;の省略とかややこしくなるだけだからいらんわ
78 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 17:09:36.40 ] セミコロン省略はそこまで混乱しないだろ
79 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 18:12:22.52 ] 多分シェルでも全ての行末にセミコロンを付けるような人なんだろう
80 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 21:28:42.23 ] セミコロン省略はあっていい 自分も付けるか気分と見やすさと必須性で決める 基本は全く無駄な物だから付けない
81 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 22:12:51.55 ] 必要ないならなくなってるよ。必要だから残ってる。 httpを使うことを考えると無くせない。
82 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 07:52:42.83 ] 俺は実際全くセミコロン付けないで書けている。よって必要ない。 改行せず一行に詰め込む時にだけ必要、という主張だね。
83 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 08:48:23.26 ] そんなことは言ってない 必要ないところで省略した方が逆に見栄えもよく感じられて 問題もないこともあるから省略できていいって言ってる セミコロンは必要、だけど省略も必要 わかる?
84 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 08:57:11.06 ] 省略したほうがいい場面ってどこだよ array.filter(function(v) { return v % 2 == 0 }); みたいに関数本体が一文で済むところなら セミコロンなしでもいいかなという気はするけど、 それ以外になんかあるか?
85 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 09:25:23.96 ] 一律つけた方が法則がシンプルな分 見栄えもいいよ セミコロンの場合実害が少ないからなくても困らないけど
86 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 09:46:43.49 ] メモ帳で長いコード書くとき カッチリしたもう変更がないだろう機械的なコードはセミコロンで固めて 個性的な変更しまくりのふわふわしたコードには付けないな
87 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 09:49:49.99 ] >>84 いや、むしろそういうごちゃごちゃした1行には付けるべきだろ。 a=1 b=2+a みたいなのには必要ない、もしくは、 a=1;b=2+a; にする。
88 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 09:54:58.57 ] >>86 こーいう、背後に哲学が感じられる使い分けが コードから読み取れれば問題ない 無分別に一貫性なくつけたりつけなかったり は醜いし読みにくい。 考えなさっぽさが滲みでてみっともないし。
89 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 10:28:52.18 ] スマホで作ってるとセミコロン付ける付けないとインデントはかなり悩む それはそうとMathやStringが拡張される話で今盛り上がってるのは個人的にもありがたいんだけど 数の進数やbit数に関しての拡張と現在milli秒で扱ってる範囲ををmicro秒にして欲しいんだけど そういう話は挙がってないの?
90 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 11:54:26.69 ] なんでもかんでもマイクロ秒管理したら 既存APIが遅くなるんでねーの?
91 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 12:18:42.55 ] OSから取得するナノ秒までで約60bit マイクロ秒までで約50bit ミリ秒までで約40bit 全部64bit整数使ってるだろうから変わりないのでは?
92 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 14:11:47.69 ] 非力な組み込みでもecmascript使うんだから標準で仕様化したらだめだ。
93 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 14:45:30.95 ] 非力というか万が一タイマーがサポートしてないのなら0埋めで返せばいいだけじゃない? スクロールとか描画なんかの演算とタイマー設定をもう少し正確にやりたいだけでしょ? まあディスプレイ付きのデバイスなら今時間違いなくマイクロ秒まではサポートしてるタイマー使ってるはずだけど
94 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 18:40:05.14 ] セミコロン問題は、一応プラグマのopen issueのままです。 wiki.ecmascript.org/doku.php?id=harmony:pragmas
95 名前:デフォルトの名無しさん mailto:sage [2012/05/02(水) 00:11:18.62 ] >>93 だから、ECMAScriptなんつー総本山規格じゃなくて、ディスプレイ付デバイスで動かすような実装のレベルで 何とかしてよってのが>>92 なんじゃねーの。
96 名前:デフォルトの名無しさん mailto:sage [2012/05/02(水) 05:02:25.84 ] マイクロ秒単位のタイマは、むしろ非力な組み込みでの需要の方が大きいんじゃねーの なんにせよ非リアルタイムな環境でのマイクロ秒タイマは 信用ならない精度になるだろ そういう話をするとしたらQueryPerformanceCounter的な高精度カウンタを新設して 自前でポーリングしれって感じになるんじゃねえかな
97 名前:デフォルトの名無しさん mailto:sage [2012/05/03(木) 08:04:21.13 ] コンストラクタを呼び出すとき applyを使って引数を配列で指定したいときがあるんだけど可能かな? 例えばコンストラクタが var C = (function(){ var c = 0; return function (a,b) { this.a = a; this.b = b; alert([a,b,++c]); }; })(); として、とりあえず以下はダメだった。 var o = new C.apply(null, args); var o = new (C.apply(null, args)); var o = (new C).apply(null, args); エラー var o = C.apply(new C, args); コンスタラクタが二回呼ばれる oが返されない var o = new C(); C.apply(o, args); コンスタラクタが二回呼ばれる var o = {}; C.apply(o, args); oがCのインスタンスにならない アイデアあったらヨロ
98 名前:デフォルトの名無しさん mailto:sage [2012/05/03(木) 08:34:31.35 ] >>97 Function#bind を活用してみてください。
99 名前:デフォルトの名無しさん mailto:sage [2012/05/03(木) 09:00:22.22 ] >>98 それじゃ無理だろ。 そもそもbindさせるオブジェクトを これから作ろうって話な訳だし。 evalして無理やりパースするくらいじゃね?
100 名前:デフォルトの名無しさん mailto:sage [2012/05/03(木) 11:47:48.86 ] >>97 もともとそのコンストラクタをどう使うつもりなのか
101 名前:デフォルトの名無しさん mailto:sage [2012/05/03(木) 12:58:18.91 ] >>97 これがしたいんだろ? calleeと分割代入使うか__parent__書き換えるからecma標準じゃできんぞ。 calleeはYコンビネータにして分割代入はカリー化してループ回すと出来るかもしれんがこんな所じゃ貼れんよ。 function getConstructor(){ var c = 0; return (function ([a,b]) { this.a = a; this.b = b; print([a,b,++c]); }).bind(arguments.callee, Array.prototype.slice.call(arguments)); }; var cons = getConstructor(1,2); var o = new cons();
102 名前:デフォルトの名無しさん mailto:sage [2012/05/03(木) 13:59:28.01 ] >>97 ES5仕様のbindがあるならこんなんでどうよ? function applyNew(ctor, args) { var a2 = [null]; a2.push.apply(a2, args); return new (ctor.bind.apply(ctor, a2)); } applyNew(C, [2,3]);
103 名前:デフォルトの名無しさん mailto:sage [2012/05/03(木) 14:19:49.87 ] それじゃapplyNewの戻り値が関数になるし[2,3]がインスタンスにバインドされない。 隠蔽したいのはCのvar c=0だけだと思う。
104 名前:デフォルトの名無しさん mailto:sage [2012/05/03(木) 14:32:30.10 ] いい忘れた。 a2.push.apply(a2, args)じゃなくてArray.prototype.push.apply(a2, args)じゃね?
105 名前:デフォルトの名無しさん mailto:sage [2012/05/03(木) 15:32:29.16 ] >>100 基本的には「コンストラクタを呼び出す時に apply的な呼び出しは可能なのか」ということ。 限定的な使い方ではなくクロージャとかになっていても 問題ないような記法が自分では見つけられなかった。 あるコンストラクタのユーティリティ関数を作るときに 関数内からコンストラクタを呼び出す際、 引数の数が一定じゃない場合などは配列で渡せるとシンプルだなと思ったので。 強引な代替案なら思い付くんだけど ハッとするようなスマートな記法をお持ちの方がいたら 勉強になるなと思ったですw
106 名前:デフォルトの名無しさん mailto:sage [2012/05/03(木) 17:23:25.41 ] >apply的な呼び出しは可能なのか 関数の仮引数を分割代入するだけだからnextが標準化されるまで待つよろし。 (function ({"a": a, "b": b}){return a+b;}).call(thisObj, {a : 1, b : 2})//->3 (function ([a,b]){return a+b;}).apply(thisObj, [1,2]);//->3 >クロージャとかになっていても thisがレキシカルじゃないから元から出来るけどecmaが許さない。
107 名前:デフォルトの名無しさん mailto:sage [2012/05/03(木) 17:54:48.87 ] 言っておくが >>102 でできるからな。
108 名前:デフォルトの名無しさん mailto:sage [2012/05/03(木) 20:53:52.00 ] >>107 jqueryとかのbindメソッドじゃダメだよね? 現時点で実装してる処理系ってFirefoxくらい?
109 名前:デフォルトの名無しさん mailto:sage [2012/05/03(木) 21:15:07.89 ] ES5だからIE9以上を含む全てじゃね? IEはしらんがFxやらGoogleChromeやらOperaは実装済のはず
110 名前:97 mailto:sage [2012/05/03(木) 23:41:34.06 ] >>102 ありがとう! 勉強になったよ pushの結合もオレには新しかったw concatより早いんかな あとで調べてみようっと
111 名前:デフォルトの名無しさん mailto:sage [2012/05/04(金) 11:32:46.04 ] 形だけなら別にbind 要らねんじゃね? var Func = (function(){ var c = 0; return function (a,b) { this.a = a; this.b = b; alert([a,b,++c]); }; })(); function applyNew (C, args) { function F() {}; F.prototype = C.prototype; var o = new F(); C.apply(o, args); o.constructor = C; return o; } var args = ["A", "B"]; var o1 = applyNew(Func, args); var o2 = applyNew(Func, args); var o3 = applyNew(Func, args); alert(o1 instanceof Func)
112 名前:デフォルトの名無しさん mailto:sage [2012/05/04(金) 13:43:47.26 ] __proto__使わずに同じ事する懐かしの方法だな。 >>105 はnew(C.apply(...))の形式が取りたいって最初の要件は良かったのか?
113 名前:デフォルトの名無しさん mailto:sage [2012/05/04(金) 13:45:14.01 ] 最初の要件かそもそも、不明確なので
114 名前:デフォルトの名無しさん mailto:sage [2012/05/04(金) 15:36:13.38 ] >>112 実引数に配列を渡したいだけかと思ってたが。
115 名前:デフォルトの名無しさん mailto:sage [2012/05/04(金) 15:47:45.81 ] >コンストラクタを呼び出すときapplyを使って引数を配列で指定したい これが要件で >として、とりあえず以下はダメだった。 >var o = new C.apply(null, args); >var o = new (C.apply(null, args)); >var o = (new C).apply(null, args); >コンスタラクタが二回呼ばれる >oが返されない >oがCのインスタンスにならない これを解決したいって話だったが>>97
116 名前:デフォルトの名無しさん mailto:sage [2012/05/04(金) 16:43:37.62 ] >>115 そうか、>>111 は忘れてくれw
117 名前:デフォルトの名無しさん mailto:sage [2012/05/23(水) 01:38:00.11 ] ECMAからES5.1仕様書のHTML版公開 ecma-international.org/ecma-262/5.1/
118 名前:デフォルトの名無しさん mailto:sage [2012/05/23(水) 11:26:27.98 ] 素晴らしい。
119 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 06:55:06.70 ] お兄ちゃん、感心しているだけじゃなくてちゃんと読まないとダメだよ?
120 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 16:23:57.05 ] あー毒舌な妹がこんなところにまで
121 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 04:12:22.56 ] なあお前ら。 関数が結合されるのがヤダヤダ!って場合は__parent__の代わりにbind使えばいいが__proto__はどうするよ? あと自己反映のときのcalleeとか。harmonyにProxyがあるのにcalleeがダメな理由てなんだ?
122 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 11:15:47.27 ] >>121 __proto__のgetterはObject.getPrototypeOf、setterはObject.createである程度代用できる arguments.calleeについてはtogetter.com/li/215907 が参考になる
123 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 07:47:35.23 ] >>122 そこ色々間違ってるから鵜呑みにしないほうがいいぞ。
124 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 10:30:16.63 ] >>123 どこがどう間違っているのか分からないとあなたの情報を鵜呑みに出来ない
125 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 10:30:27.73 ] >>123 ご指摘ありがとう よろしければ、より参考になる資料を示して頂けると嬉しい
126 名前:デフォルトの名無しさん mailto:sage [2012/06/14(木) 17:49:57.32 ] 古い情報も相当残ってるけどwiki.ecmascript.orgが確実。
127 名前:デフォルトの名無しさん mailto:sage [2012/06/14(木) 18:28:36.68 ] >>126 古い情報が相当残っているのに確実とする理屈がわからない 結局、どこが間違っているかも言及なしだしあてにはできないなー
128 名前:デフォルトの名無しさん [2012/06/15(金) 08:25:24.62 ] 書いた本人は分かってるんだろうけど書き方がイマイチだから読む人がちゃんと分からないのではってことかな? いずれにしろ1つのサイトだけあてにするのはダメ
129 名前:デフォルトの名無しさん mailto:sage [2012/07/01(日) 15:23:04.66 ] ttp://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts >removed <| and TriangleLiterals これだからTC-39はダメなんだ!
130 名前:デフォルトの名無しさん mailto:sage [2012/07/01(日) 16:24:38.17 ] そらそうよwww これでもう復活はないなw 嫌いじゃないけどちょっと無理がありすぎたんだw
131 名前:デフォルトの名無しさん mailto:sage [2012/07/02(月) 11:09:20.07 ] ダメなところを改善したいBrendan EichといじりたくないTC39の戦いはまだまだつづく!
132 名前:デフォルトの名無しさん mailto:sage [2012/07/02(月) 13:59:41.98 ] AS3が一番とばっちりだよな。 先走りすぎたせいでJS2とも別モンになっちまったしhaXeの方がJS2に近いくらいだわ。
133 名前:デフォルトの名無しさん mailto:sage [2012/07/02(月) 14:57:01.97 ] Q. JS2とは?
134 名前:デフォルトの名無しさん mailto:sage [2012/07/02(月) 16:48:46.88 ] ActionScript3は、少し先走りすぎだったし、 Mozillaに提供した実装Tamarinのコードの質が悪く、 仕様の安易な部分と合わせて、反対派を団結させてしまったね。 結局Mozilla.orgでもTamarinを利用するTraceMonkeyプロジェクトはなくなったし。 ECMAScript 4で議論された機能については、議論継続中だからいいんだけども。
135 名前:デフォルトの名無しさん mailto:sage [2012/07/02(月) 17:20:57.92 ] 議論継続中て言ったてこれだろ? >Tentative addition of Class Definitions Syntax and Semantics in 13.5 based upon Maximally Minimal Strawman. NOTE-Classes do not yet have full consensus within TC39 and may not survive. 11.1.5 make super references illegal in method definitions within object literals >removed <| and TriangleLiterals subtypingのないjs1.xにclass definition入れたってFoo.prototype={}やObject.definePropertiesの構文糖でしかないし 1.xの延長である以上型変換が暗黙の強制型変換しかないから2.0と違ってタイプルーズで真の structural typeでないから言語仕様の問題は解決できないだろ。HarmonyやStrawmanにある型付き前提の仕様入れる気無いだろTC39。 10年無駄にして最初ゴネたimport,exportとライブラリ強化入れただけだけどその間に 本来的に必要なのはclassじゃなくてsubtypeというのを少しでも認識させたのが唯一の功績だよ。
136 名前:デフォルトの名無しさん mailto:sage [2012/07/06(金) 16:22:49.91 ] ECMAScript 4に戻ってやり直すのが皆一番幸せになるわ
137 名前:デフォルトの名無しさん mailto:sage [2012/07/06(金) 16:26:33.37 ] つか明らかにJavaScriptの土管化が進行中な件 ウェブのC言語と言えば聞こえはいいが、要は誰も直で書きたがらないってことだからな。 そういう用途に応えるためにLLJSとか開き直ったものも出してきてるしw
138 名前:デフォルトの名無しさん mailto:sage [2012/07/06(金) 16:31:52.47 ] そして 問題点1:土管としては低効率 問題点2:土管が土管化を嫌がっていらんことするリスク
139 名前:デフォルトの名無しさん mailto:sage [2012/07/07(土) 01:50:08.30 ] それって土管って表現するの?
140 名前:デフォルトの名無しさん mailto:sage [2012/07/07(土) 09:45:23.03 ] 6の仕様を見ていると結構いい感じだな。早いとこ普及してほしいよ。一応仕様のリリースは来年らしいけど。
141 名前:デフォルトの名無しさん [2012/09/10(月) 09:02:29.57 ] >JavaScriptの土管化 >JavaScriptの土管化 >JavaScriptの土管化 >JavaScriptの土管化 >JavaScriptの土管化 >JavaScriptの土管化 >JavaScriptの土管化 >JavaScriptの土管化 >JavaScriptの土管化
142 名前:デフォルトの名無しさん mailto:sage [2012/09/27(木) 00:40:57.35 ] ECMAScript6にいつのまにかclassが追加されててワロタw どうやら6/15のDraftに追加されたようだ。 さがしたら>>135 で話題になってたけど、言ってる意味がわからん。。 ちょっと勉強するか。
143 名前:デフォルトの名無しさん mailto:sage [2012/09/27(木) 01:36:15.53 ] しかし仕様書を見てもよくわからんな。。 もう少し土管化するまで待つか
144 名前:デフォルトの名無しさん mailto:sage [2012/09/27(木) 08:05:08.60 ] 土管化が何を指してるのかさっぱりだ
145 名前:デフォルトの名無しさん mailto:sage [2012/10/01(月) 02:35:37.39 ] www.slideshare.net/agigigigi/ecmascript-study-2-esnext-updates constellation.github.com/slides/contents/20120812/presentation.html この辺りを見てclassについてある程度理解出来た。 単なるシンタックスシュガーなんだな。それで十分だ。 それにしても、モジュールの機能が無いみたいだけどそれ以外は普通にモダンな スクリプト言語になっちゃうね。
146 名前:デフォルトの名無しさん mailto:sage [2012/10/01(月) 12:03:59.01 ] 言語設計は最初からモダンだけどな。 ライブラリ設計は古かったけど。(殆ど無いに等しいし)
147 名前:デフォルトの名無しさん [2012/10/14(日) 16:38:50.03 ] ECMAScriptの最新 = TypeScriptなの?
148 名前:デフォルトの名無しさん mailto:sage [2012/10/15(月) 00:05:30.16 ] 私も興味があります 現在策定中のECMAScriptとTypeScriptの相違はどの程度なのでしょうか?
149 名前:デフォルトの名無しさん mailto:sage [2012/10/15(月) 00:19:27.67 ] マージされることがあるとしても、バージョン二つくらい後だろ。 クラス仕様については、ECMAScriptとほぼ同じ機能になってるな。 違いは組み込みかライブラリ化の違いくらい。
150 名前:デフォルトの名無しさん mailto:sage [2012/10/15(月) 17:18:28.74 ] >>149 ありがとうございます そうなると、あと10年位掛かりそうな・・・ オプショナルな静的型付けとかジェネリックとか、次の仕様に取り込まれないかな
151 名前:デフォルトの名無しさん mailto:sage [2012/10/15(月) 17:47:41.70 ] ECMAScript4の失敗を忘れたのか? そこまでやるならいっそ新しい言語にしてくれたほうがマシ 糞みたいな互換性やら名前やらとはさっさとおさらばしたいぜ
152 名前:デフォルトの名無しさん mailto:sage [2012/10/15(月) 20:19:01.64 ] ECMAScript4の失敗についてはよく知らないけど TypeScriptはJavaScriptの上位互換だよ TypeScriptのように、既存のJavaScriptが動くように仕様を拡張したら問題ないのでは?
153 名前:デフォルトの名無しさん mailto:sage [2012/10/15(月) 20:43:43.76 ] ECMAScript4の失敗 ja.wikipedia.org/wiki/ECMAScript#ECMAScript_4 developers.slashdot.jp/story/08/08/19/0714251/ news.mynavi.jp/news/2008/08/18/027/
154 名前:デフォルトの名無しさん mailto:sage [2012/10/15(月) 22:08:55.95 ] >>153 の記事を読んでの感想。 ECMAScript 4の失敗というのは、ECMAScript 4の仕様自体の問題というよりも、 Adobe、Mozilla、Opera、Google陣営と、Microsoft、Yahoo!陣営による政治的な問題 という色彩が強いように感じた。 例えば、ECMAScript 4が決裂した2008年当時は、Microsoftは「Web標準」を軽視し、 Silverlightを普及させようとしていたのではなかったか。 つまり、当時のMicrosoftは、Silverlightを普及させるために、JavaScriptが高機能になるのを嫌った。 一方、JavaScriptの重要性を認識していたMozillaやGoogleなどは、JavaScriptを大幅に拡張したかった。 そうした各陣営の様々な政治的な思惑があって、ECMAScript 4は決裂したように思う。 しかし、今は、Microsoftも「Web標準」にシフトして、業界全体でJavaScriptの重要性に対する認識が 共有されるようになったのではないか。 Webサイトに限らず、デスクトップアプリケーションやモバイルアプリ、サーバーサイドにまで JavaScriptが使われている。 そうした中で、JavaScriptによる開発が行いやすいよう、ECMAScript 4のような大規模な拡張が JavaScriptには求められているし、こうした要求に異を唱える陣営は今はもういないのではないか。 だから、合意に達するのであれば、慎重かつ大胆にECMAScript 6の仕様を拡張してほしいというのが、私の考え。
155 名前:デフォルトの名無しさん mailto:sage [2012/10/15(月) 22:58:57.10 ] MicrosoftはMicrosoftで思惑あったと思うが、 ・AdobeがActionScriptをECMAScript4にしようとしていた。 ・既に広く広まったECMAScript3との互換性の問題が軽視。 古いコードをどうやって実行するのか議論が深まらないまま。 ・ECMAScript4の新機能の多くがActionScriptをコピーしただけで、 入れることの是非、設計詳細部の議論が深まらないまま。 ・ActionScriptの機能の多くが実装者の思いつきで設計。(Adobeの公開MLに残ってる) ・参照実装であるtamarinのコードの質の低さ。 というわけでストップになった。 ただしECMAScript4で導入されそうになった機能は捨てられたわけでなく、 多くは議論を深めてから入れる方向で考えられている。 Webの現状を考えると時間をかけるのが妥当と判断された。 それはBrandenの声明にもはっきり書かれている。
156 名前:デフォルトの名無しさん mailto:sage [2012/10/15(月) 23:48:22.01 ] >>155 ActionScriptはECMAScript 4を元に作られたと思っていたのですが、 実際は逆で、ActionScriptを元にECMAScript 4の仕様を決めようとしていたということでしょうか? ECMAScript 4は2回決裂しているようなので、そこらへんの前後関係は良く分かりませんが、 少なくとも2回目の決裂に関しては、Adobeの強引さとActionScriptの出来が問題になったということですかね。 ECMAScript 6に関してはしっかり議論して合意に達してほしいですね。 便利な機能が入ることを期待しつつ、時間が掛かることをもどかしく思ったりしつつ、 末端プログラマとして、仕様策定者に期待したいです。
157 名前:デフォルトの名無しさん mailto:sage [2012/10/16(火) 08:10:49.32 ] >実際は逆で、ActionScriptを元にECMAScript 4の仕様を決めようとしていたということでしょうか? ドラフトを先走って実装しただけ
158 名前:デフォルトの名無しさん mailto:sage [2012/10/18(木) 19:10:41.39 ] >>154 前半の陰謀論はまったく要らないな
159 名前:デフォルトの名無しさん mailto:sage [2012/10/19(金) 21:05:59.32 ] JavaScriptの未来? brendaneich.github.com/Strange-Loop-2012/#/
160 名前:デフォルトの名無しさん mailto:sage [2012/10/19(金) 21:13:28.34 ] >>159 ちなみにBrendan Eichのスライド
161 名前:デフォルトの名無しさん mailto:sage [2012/10/19(金) 21:25:10.17 ] Brendan Eich @BrazilJS 2012 - The State of JavaScript www.youtube.com/watch?v=DASvUIAfoRU
162 名前:デフォルトの名無しさん mailto:sage [2012/10/20(土) 00:54:46.78 ] typescript出たばかりなのに、No Classかよw