1 名前:デフォルトの名無しさん [2007/09/19(水) 09:08:01 ] 《ECMAScriptを語るスレ》 1. - 概要 - ECMA-262規格として知られる言語(通称 ECMAScript)についての利用法や言語仕様、 その他四方山話をするスレです。 - ECMA-262 3rd Edition 標準規格(英語)- www.ecma-international.org/publications/standards/Ecma-262.htm Under Translation of ECMA-262 3rd Edition (日本語訳) www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/ 前スレ ECMAScript デス 2 pc11.2ch.net/test/read.cgi/tech/1088298991/ 過去スレ JavaScript デス pc5.2ch.net/test/read.cgi/tech/1052273054/
285 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 19:33:44 ] >>280 いや、MSBを保存することを「更にシフトする」という言い方では普通は理解不能だろ。 俺もわからんかった。普通の算術シフトの後にもう1回シフトするのかと思ったよ。
286 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 19:50:15 ] >>284 わざわざ「最上位ビットを0にする」って訳じゃない。 左シフトだって、別に最下位ビットを0に「する」んじゃない。 アセンブラ経験者だと判ってくれるかな。 シフトは、左、右、算術右で、 論理型がデフォ、算術は敢えて明示するみたいな。
287 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 00:07:50 ] 間違った自分はバカじゃないと同意してほしいわけですね、わかります。
288 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 03:22:22 ] 結局、なんで「さらにシフトする」なんて言ったのか、ワケワカランと思うのは俺だけか? 自称よくわかった人が複数いるみたいだからw、教えてよ。 算術シフトのどこがどう「さらにシフトする」ことになるのか。
289 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 08:10:19 ] 「更にシフト」じゃなく、「更にひと手間」だな。
290 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 09:07:18 ] 更にひと手間つーか、MSBをイジらないだけじゃん。全然手間じゃないよ。
291 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 10:17:28 ] 元の奴の感覚は判るが、言葉が悪い。 動作で<<と(空き位置に0が入るという)対称性があるのは>>>だが、 見た目の対称性は<<と>>だから、違和感がある。 と書けばよかった。
292 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 10:17:37 ] 符号「拡張」っていうくらいで、 nビット(n>1)シフトする時は、 上位nビットに補填するけどな。 (いまどき1ビットづつシフトしない)
293 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 10:20:01 ] >>291 無理やり論理演算の視点になってるよ。 *2, /2だという算術演算の視点なら逆だ。 プログラマは暗黙の仮定に拘泥してはならない。
294 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 13:46:11 ] >>293 無理やりも何も、シフトは論理演算でしょ。
295 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 13:54:51 ] シフトはビット演算です。 11.7 Bitwise Shift Operators 11.7.1 The Left Shift Operator(<<) >>は符号付き算術演算です。 11.7.2 The Signed Right Shift Operator(>>) >>も符号なし算術演算です。 11.7.3 The Unsigned Right Shift Operator(>>>)
296 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 14:02:04 ] >>293 なまじ*2、/2の代用になってるからなー。 っつーか、この発想こそアセンブラだ。 なのにアセンブラ的発想は少数派になってる不思議。
297 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 14:22:08 ] C/C++みたいにbit長も内部表現も仮定しない仕様を持つ言語の「仕様を」知っ ている人と、Java,Javascriptのようにbit長規定、内部表現も暗に仮定し ている言語しか知らない人では、かなり温度差があるんじゃないでしょうかね。 前者は、言語習得時に仕様を確認する習慣があると思います。仕様を確かめな い感覚派は、アセンブラ知っていればこう考えるはずと、自分の感覚に陥って しまうんじゃないでしょうか。
298 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 15:15:53 ] ビット演算で32ビットに丸められるのは、レジスタ幅等の効率の面から判るんだけど、 整数リテラルの±2^53って、どういう根拠なんだろう。 IEEE754の64ビット表現だと、仮数部は52ビットだし。
299 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 16:08:22 ] 仮数部52ビットの上に、見えない1が立ってるからでは?
300 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 16:32:06 ] 本当にアセンブリ言語を知ってる人ならば符号付き演算と符号無し演算に最低限の注意は向けるはずです。 変な思い込みで符号に注意を向けない人は、生兵法でアセンブリを使っている人でしょう。
301 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 17:15:40 ] >>299 あーそっか。俺バカ。
302 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 17:16:55 ] >>300 最初のネタに戻ると、間違えて逆に解説してる本やサイトがある。
303 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 22:35:02 ] そりゃ注意はしてても、まさか演算子の動作を逆に解説してるとは思わないよな。 複雑な関数やバグの確認ならともかく、演算子を事前にテストしてから使う様な事はしないし。
304 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 23:38:29 ] Webのクソみたいな解説サイトとかあてにしてたらダメだろ 書籍で間違った解説してるものがあるなら被害者を減らすためにも書名を晒すべき
305 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 23:45:52 ] 今なら乗除はコンパイラ任せの*/で良いね。シフトはunsignedだけで良いんじゃね?
306 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 23:49:18 ] コンパイラの意義は抽象化にあるんだから、 シフトはビット操作にだけ使うべきでしょ。 符号の有無じゃなく。
307 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 23:58:03 ] My UNIX Series 『入門 JavaScript』、久野靖、アスキー P.43 ■2項演算子 〜(中略)〜 ●<<、>>、>>> 左シフト、右シフト、算術右シフト。 奥付では初版。 以降の版で直ってるかは不明。
308 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 00:27:41 ] まさかだけど、==と===みたいに 途中で意味が入れ替わった訳じゃないよね?
309 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 09:58:00 ] あれは痛かったなw
310 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 10:27:43 ] >>308 revision 1の仕様書を読んだが、 The left shift operator ( << ) The signe3d right shift operator( >> ) The unsigned right shift operator( >>> ) というわけで、変わってはいないようだな。 久野さんにしては珍しいチョンボだね。
311 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 12:04:33 ] 久野さんって、fjでお馴染みの、 高校の情報の教科書を書いてたりする人?
312 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 13:15:28 ] fjナツカシスw
313 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 18:53:58 ] ES4では、byte型、int型, uint型が増えますが、 shift演算子の意味はES3のままのようですね。 少なくともtamarinでは、今のところそう実装されています。
314 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 19:25:44 ] だからなに?
315 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 19:46:11 ] つ お知らせ
316 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 23:54:34 ] random seed ってないのね。 まったく同じ乱数列をもう一度再現したいんだけど、 自前でそういう乱数を持つしかないか。 そういや、seed を2回設定すると 副作用で時刻が得られる言語があったよね。
317 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 00:48:57 ] >>313 > ES4では、byte型、int型, uint型が増えますが、 byte 型は× bugs.ecmascript.org/ticket/234 https://mail.mozilla.org/pipermail/es4-discuss/2008-March/002547.html int, uint 型も多分× bugs.ecmascript.org/ticket/371 AS(Tamarin) は独自拡張として残すんだろう、多分。
318 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 10:01:48 ] tamarinは、ES4モードじゃなくてASモードの時だけ 既存のint, uintを有効にするんじゃないかな。 ES4のint, uint除外は最近のことなので、 // lib-march-2008に関連ドキュメントも至急削除のコメント tamarinはまだ追いついてないと思う。
319 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 10:20:45 ] >>316 awkだ。 srandすると、現在時刻がseedになる。 もう一度srandすると、前のseedを返す。
320 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 12:37:48 ] 仕様変更しすぎだな
321 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 00:01:36 ] Number型、桁あふれで内部で勝手にfloat, doubleに昇格されると、 疑似乱数生成のアルゴリズム実装に神経使うよなあ。
322 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 03:24:05 ] var a() = function { this.b = function() {} } を、prototypeを使って書き直す場合、どうやって書けば良いのでしょうか?
323 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 03:29:37 ] なんだそりゃ var a = function() { }; a.prototype = { b: function() { } };
324 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 14:29:38 ] >>322 一応言っとくが>>322 と>>323 のコードは等価じゃないぞ。
325 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 18:07:23 ] 誰が等価なコードを望んだんだろう
326 名前:デフォルトの名無しさん [2008/07/18(金) 05:17:50 ] aを実行しちゃっててわろた
327 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 14:56:37 ] var o = new Object(); o.f = function() { return; // 内容は何でもいい } // ←ここにセミコロン (function() { void 0; // 内容は何でもいい })(); このままだとエラーで、o.f に代入する関数リテラルの最後にセミコロンを付けると問題ない。 ここは暗黙で文の区切りにならない?
328 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 16:47:10 ] ならないからエラーになるんじゃないかな。 とりあえず{}かfuncton() {...}に対する関数呼び出しとして扱われてるはず
329 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 19:35:26 ] 暗黙な 文の区切りなんて obsolete ね いつか動かないはずのコード
330 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 01:43:38 ] というか仕様書読み直して来い どの識別子が終端文字とみなされるか調べて来い
331 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 16:05:45 ] >>321 uintは欲しかったな。 ハッシュ計算、疑似乱数、ビット演算用に。 ブラウザ専用言語だと需要が少ないところだろうが。
332 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 23:46:54 ] es4は組み込み言語としての汎用性を求めてなかったっけ?
333 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 00:46:57 ] 331だが、ちょっと調べてみると、 JITで型推論するからNumberあれば十分という戦略らしい。 少なくともtamarinはその方向みたいだ。 そりゃmodulo演算してれば、整数型なことが分かるけどなあ…
334 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 04:35:05 ] >>333 え、型推論をコンパイル時ではなくJITでやるのか・・・ある意味すげーな、それ。 一般の型推論は理論上NP完全だぞ。実際にはそこまで最悪なケースは滅多にないけど。
335 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 21:42:36 ] >一般の型推論は理論上NP完全 VMが型推論のパターンを学習すればいいんだ!
336 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 22:24:16 ] 「できる」と「簡単にできる」は別物だろ 自分とこの処理系ならできるからいいって言われても…
337 名前:デフォルトの名無しさん [2008/08/17(日) 08:30:22 ] ttp://tech.slashdot.org/article.pl?sid=08/08/16/1552227 ttps://mail.mozilla.org/pipermail/es-discuss/2008-August/003400.html
338 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 09:42:55 ] ECMAScriptHarmony - ECMAScript Harmony www.hyuki.com/yukiwiki/wiki.cgi?ECMAScriptHarmony
339 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 11:56:26 ] ES4あぼん、か。
340 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 12:27:53 ] >>339 packageがなくなるのも確定か… packageだけは欲しかったのに early binding, namespaceがなくなるのはいいんだが
341 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 23:55:05 ] ES ed.4がなくなってES ed.3.1を作るってこと? まあ無難だがモジュール性の確保がなぁ。
342 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 23:59:08 ] プロトタイプベースOOP派の勝利だな。
343 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 02:37:40 ] >>341 4はなくなるわけじゃない。将来の候補の一つ。 大きく変える前に3.1を出して様子見。 MicrosoftとしてはActionscript牽制に成功。
344 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 02:50:29 ] >>342 それはまだこれからの協議。 package, early binding, namespaceがなくなること決定らしいが、 これは全く意味が分からない。 言語的にライブラリ管理補佐機構が大きく後退。 Ajaxに暗雲垂れ込める感じ。
345 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 15:46:07 ] early binding はコンパイル時エラー検出や、class や namespace を コンパイル時(静的)に決定することで速度改善と実行時書き換えによる セキュリティエラーを防ぐ、ということだったんだが複雑化と実行時定義との 衝突がうまく解決できないということで OUT package は namespace の構文糖、4月の段階で既に OUT だった。 namespace は識別子の拡張だったんだが、early binding 抜きだと 速度が落ちまくる。 ライブラリ機構は ES-ML ではいまのところ、Scheme の RSR5 というか、 Perl 類似のものを Dojo で採用されているような構文で検討中。 個人的には catchall が何とかなって欲しいんだが、namespace 抜きだと面倒そうなんだよなぁ
346 名前:345 mailto:sage [2008/08/20(水) 18:23:47 ] > Dojo で採用されているような構文で検討中。 間違えた、ES-ML で出てるのは Helma NG と Caja だった。 dev.helma.org/wiki/Modules+and+Scopes+in+Helma+NG/ google-caja.googlecode.com/svn/trunk/doc/html/cajaModuleSystem/index.html まぁ議論のベースになってるのはこれ。 wiki.ecmascript.org/doku.php?id=proposals:modules
347 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 23:22:37 ] es4にはwktkがない!何故だ!?
348 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 11:38:18 ] 公式に終わってんだからあっても困る、ES3.1 は?
349 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 12:19:00 ] 型指定変数宣言 var hoge:Number; も無くなったの?
350 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 14:12:33 ] それは困るなぁ
351 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 16:57:42 ] 型周りは一からやりなおし。どうなるかわからんが素案には wiki.ecmascript.org/doku.php?id=harmony:types > A type annotation has the syntax " : type-expression ". とあるがな。
352 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 19:37:51 ] ECMAScript デス 3 が らぶ デス 3に見えたメガネ買い替えてくる・・・。
353 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 20:01:58 ] メガネより変えるべきものがあるだろ
354 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 20:57:29 ] >>353 替えの入手先の問題が。メガネは店で売ってるが。
355 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 21:41:59 ] >>354 脳へ渡す情報なら幾らでも買えるが人生は売ってないからね。
356 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 08:17:51 ] 死ねば負債は清算できるぜ ES4は修正して継続するようだが。
357 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 08:23:20 ] へ?ES4は一旦清算するんでしょ? やりたきゃES3.1ハーモニーの後にしろと。
358 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 08:34:14 ] ttp://weblogs.mozillazine.org/roadmap/archives/2008/08/tracemonkey_javascript_lightsp.html もう Nightly に入ってるって聞いたぜ
359 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 14:58:15 ] おまいら的には Chrome よりコッチだよな ttp://code.google.com/p/v8/
360 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 15:39:27 ] もうJITしていられんな
361 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 19:48:00 ] V8 はコンパイラオンリーな実装なんだね。 これも JIT に入るのかな。
362 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 21:38:11 ] コードざっと見たけども「V8で(だけ)速く動く」書き方がありそうなんだよ google提供のjavascript(mapsなんか)はそう書き直されるんじゃなかろうか いわゆるひとつの非関税障壁になりそうな予感
363 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 21:58:32 ] ARMあたりに対応してるからそのうちアンドロイドに組み込まれるんじゃないかと
364 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 00:32:47 ] >>362 そんなものがない実装なんてないよ。
365 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 03:40:08 ] >>362 その懸念はありかもね 他インプリもgoogleのjavascriptを基準に最適化しはじめたりしてね アホすぎるが
366 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 10:29:19 ] ようするに方言が増えて、移植性の壁が高くなっただけだな。
367 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 11:07:56 ] 修正BSDだから他も全てV8エンジンベースになるんじゃねーの これだけ速度の違いを見せつけられるとね
368 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 11:20:04 ] IEはならない。 firefoxもtamarinがあるし、XULを考えると差し換えはかなりの大作業。
369 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 19:49:13 ] Rhinoはもとから十分早いし。
370 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 23:53:41 ] >>368 firefox に tamarin が入る目はもはやほとんどないよ tamarin jit だけ移植して終わり
371 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 00:27:30 ] ホント、タマリンはこれからどうするんだろね
372 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 01:47:29 ] MLでそんな議論になってる?
373 名前:デフォルトの名無しさん [2008/09/05(金) 21:01:13 ] 超超初歩の質問です document.write("hogehoge"); document.clear(); と書いても、clearを無視されてhogehogeと表示されます。 document内容を動的に消去したいです
374 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 21:22:59 ] document.open();
375 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 13:07:23 ] >>370-372 > The project was canceled mainly because tamarin-tracing never caught > up to SpiderMonkey's speed. Tamarin-tracing also would have needed > a lot of other features to be useful on the web: https://wiki.mozilla.org/JavaScript:ActionMonkey (13:32, 4 September 2008 変更) ML にもアナウンスはなかったと思う
376 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 21:00:24 ] tamarin自体を放棄ってことかい こりゃtamarin
377 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 23:22:51 ] chrome/JSv8の影響かな?
378 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 00:03:54 ] TraceMonkeyに吸収合併じゃねえの?
379 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 00:10:46 ] Adobeカワイソス
380 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 00:19:04 ] 今のとこ >>370 のとおり Tamarin-tracing の nanojit のみ TraceMonkey(SpidirMonkey + nanojit) に入れてるだけ。 Adobe が使うから Tamarin-central と Tamarin-tracing の開発は続いてる。 しばらく前に DOM の GC に MMgc(Tamarin の GC) を使うか jemalloc 利用した GC 作るかって話があったんだが、結論がどうなったか よくわからん、後者っぽいんだけど…
381 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 00:31:18 ] >>378 コードとアイデアを Tamarin-Tracing プロジェクトと共有してるっぽい? 英語つよいひと だれか たすけて > It is based on a technique developed at UC Irvine > called "trace trees", and building on code and ideas > shared with the Tamarin Tracing project. wiki.mozilla.org/JavaScript:TraceMonkey
382 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 02:31:35 ] そう。 "trace trees"ってのは、 コード列を木構造にして、JIT対象単位とする手法。
383 名前: 190.90.128.210.bf.2iij.net mailto:sage [2008/09/10(水) 14:45:40 ] >>346 >> まぁ議論のベースになってるのはこれ。 >> wiki.ecmascript.org/doku.php?id=proposals:modules > | ModuleName '.' '*' 'as' Ident '*' # all with prefix こんなの入れるくらいなら、階層を持つモジュール名をprefixにして、 参照できるようにしてくれよ!
384 名前: 190.90.128.210.bf.2iij.net mailto:sage [2008/09/10(水) 17:15:45 ] v8のソース、10万行ありますね。
385 名前: p31195-adsau15honb9-acca.tokyo.ocn.ne.jp mailto:sage [2008/09/10(水) 20:39:48 ] tamarinが15万行ぐらいだし普通じゃね?