ECMAScript デス 2

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
《ECMAScriptを語るスレ》

1. - 概要 -
ECMA-262規格として知られる言語(通称 ECMAScript)についての利用法や言語仕様、
その他四方山話をするスレです。
- ECMA-262 3rd Edition 標準規格(英語)-
http://www.ecma-international.org/publications/standards/Ecma-262.htm


前スレ http://pc5.2ch.net/test/read.cgi/tech/1052273054/l50
2. - JavaScriptについて -
JavaScriptは動的Webページ作成専用言語ではありません。
このスレでは、★言語★としてのECMAScript(JavaScript、JScript等)の話題を扱います。
ブラウザ環境でのJavaScriptはWeb製作板へ。ASP、CGIなどはWebProg板へ。

●スレ違い●なレスの例
 + JavaScriptによるWebページの挙動実現に関する疑問/質問、は、
   ■スレ違い■です。→Web製作板へどうぞ
 + Webブラウザの動作挙動に関するの疑問/質問         は、
   ■スレ違い■です。→Web製作板へどうぞ
 + そのほか、Webページ作成に限定した内容の疑問/質問    は、
   ■スレ違い■です。→Web製作板へどうぞ

■参考■[Web製作板] + JavaScript の質問用スレッド vol.29 +
http://pc5.2ch.net/test/read.cgi/hp/1087889503/l50

※JavaScriptが板違いと言いたい人へ
運営サイドから次のような見解が出ています。
|459 飛べない削除屋 ★ sage :04/05/30 15:38 ID:???
|>‍>458
|ローカルルールにはひどく単純化されて書かれていますが、
|Javascript という言語そのものが板違いなのではありません。
|用途によって板違いかどうかを判断してください。
3. - 主な実装 -
Rhino (Mozilla.orgでメンテナンスされている組み込みを目的としたJava製の実装)
http://www.mozilla.org/js/rhino/

SpiderMonkey (同上。ただしこちらはCによる実装)
http://www.mozilla.org/js/spidermonkey/

NJS (旧NGSを引き継いで開発されている独立したインタプリタ実装
http://www.njs-javascript.org/

JScript (Microsoft社による実装。WSHを介したローカルマシン用のバッチスクリプトとして使用に加え、.NETの開発言語のひとつでもある。
また、WebクライアントサイドスクリプトやASPにも利用することができる。)
http://www.microsoft.com/japan/msdn/library/ja/script56/html/js56jsoriJScript.asp
JScript .NET
http://www.microsoft.com/japan/msdn/vs/jstchjscripttechnicalarticles.aspx

DMDScript (Digital Mars社による実装。Windows上で利用できるJScript置き換え的な位置づけ
スタンドアロンのインタプリタに加え、COMコンポーネントとして組み込むこともできる。)
http://www.digitalmars.com/dscript/index.html

FESI (ECMAScript第一版に準拠したJava実装)
http://www.lugrin.ch/fesi/index.html

DMonkey ( Delphi(ObjectPascal)への組み込みを目的とした実装 )
http://sourceforge.jp/projects/dmonkey/
4. - 関連スレ -
Web上におけるクライアントサイドスクリプティングに特化した実装(通称Javascript)については
WebPrograming板などの専門スレをご利用ください。

[Web製作板] + JavaScript の質問用スレッド vol.29 + ((クライアントサイド方面))
http://pc5.2ch.net/test/read.cgi/hp/1087889503/l50
[WebProg板] JavaScript質問コーナー ((サーバーサイド方面))
http://pc5.2ch.net/test/read.cgi/php/1065151808/l50
よく分からんがWeb特化以外のJavaScriptってWSHなJScript位か?
後はFlashのActionScriptか。
6デフォルトの名無しさん:04/06/27 11:16
JavaScriptスレがあるだろと書き込もうと思ったら、そのスレの次スレなのかよ・・・・
Ver1.0のころのEclipseにはRhinoが内蔵されていたんだよな。
最近だとPDFに埋め込みってのがはやりかも。
8デフォルトの名無しさん:04/06/27 11:50
WSHをJavaScriptで書いてるんだけど、このスレでいいんだよね?
Web関係ないし。
9デフォルトの名無しさん:04/06/27 11:56
jsでもvbsでもいいけどアイコン張れないかねぇ
あとはTcl/Tkばりのフォーム生成機能があれば完璧
10デフォルトの名無しさん:04/06/27 11:57
>>8
お前ら、WindowsScripting使ってますか? Part3
http://pc5.2ch.net/test/read.cgi/win/1058829737/l50
というスレもあるので、内容によっては↑の方がいい場合も
あるでしょう。
いい仕事だ>>1
せっかくの>>2-4へ、>>1からリンクが貼られてないのはもったいない。
>>1からリンクがないと、レスが50を超えたら>>2-4は見られなくなる。
>>12
「全部読む」を押しましょう。
て言うか専用ブラウザ使えや。
14デフォルトの名無しさん:04/06/27 21:37
>>9
JScript .NETは?
目下 SVG でのみお世話になってます。
多用するのは美しくありませんが。
1612:04/06/28 02:07
>>13
俺に言ってどうする。このスレをこれから目にする
不特定多数の人間に対して問題だっつーの。

>>15
アニメに使うの?FlashしらんけどASみたいなもん?
多用しちゃあかんかったら代替手段あんの?
VMLなら使ってるけど。
何か埋まってた。
梅乙
だがしかし、
20禁句:04/06/30 13:49
JavaScript
ECMAScriptデシタ
マクロ代わりになる拡張スクリプトにコレって使えます?
agaちゃった
24デフォルトの名無しさん:04/06/30 15:56
>986 デフォルトの名無しさん :04/06/29 16:28
>現在のウィンドウの座標値ってどうやったら取得することが出来るんですか?

//こんな感じかな
import System;
import System.Drawing;
import System.Windows.Forms;

Application.Run(new MyForm());

public class MyForm extends Form {
    private var textbox1 : TextBox;
    public function MyForm() {
        textbox1 = new TextBox();
        textbox1.Location = new Point(10, 10);
        this.Controls.Add(textbox1);
    }
    protected override function OnMove(e : EventArgs)
    {
        this.textbox1.Text = String.Format("X = {0}, Y = {1}",
            this.Location.X, this.Location.Y);
    }
}
25デフォルトの名無しさん:04/06/30 15:59
これってなに?JScript.NETとかそういうやつ?
27デフォルトの名無しさん:04/06/30 21:25
JScript .NET デス
>>22
マクロ代わりになる拡張スクリプトって具体的になんだかわからない
けど使おうと思えば使えるかな。
さすがに人気ないね
30デフォルトの名無しさん:04/07/03 14:15
JavaScriptは別に禁句でないよ。
これが正しい姿だな。
デス。
ActionScriptってどうよ。
>>31
胴衣。
三年は持つな、このスレ。
ワラタ
ちゃんと保守しとけよ。
ActionScriptはだめですか?
>>36
ECMAScript/JavaScriptの仲間ならいいよ。
>>36
ベタにFlash固有のネタは基本的に禁止だろ。つかFla板あるしな。
ECMAScript実装としてのネタなら問題あるまい。
>>38
JavaScript:DOMネタ禁止
WSH:Windows系クラスネタ禁止
ActionScript:FLASHオブジェクトネタ禁止

しゃべることが無くなるぞ。


とはいえそれらは、より適切な答えの返ってくる可能性の高い専用スレが他にあるわけで。
>>40
では問うがなぜ存在しているの?このスレは。

それら実装系にかかわらないネタに適したスレがほかにないから
隔離スレとして存在しているわけだよ。ただその話題すら、高度な
ものになると、プロトタイプベースオブジェクト指向言語スレと
かぶるわけであるが。
なんでDOMネタ禁止なん?
>>43 Web系禁止の間違いじゃないのかな。
DOMネタ禁止っていう話あったっけか。別にWeb系じゃないけど
DOMやってるし。
>>43
>>39はActionScriptを禁止にするようなら
DOMネタやWindowsクラスネタも禁止になるべきだ
ってことを言ってるのでは?
最大公約数を取るならDOMを実装してないのもあるからダメだろうな。

それこそ各種ライブラリ禁止のCスレのような悲しい状況になる。
>>45
ああ、そういう意味か。ありがと。
Web系だけ禁止でいいと思う。
DOMやActionScriptなどは,高度だったり
このスレの消費が大きくなりそうなら他に誘導
すればいい。
>>48
DOM&Flash質問スレになりますた。
5148:04/07/04 23:06
>>49
深い意味ないから余り深く考えなくていいよ。
ぶっちゃけRhinoとかDMDScriptとか需要ないのかなぁ・・・
Perlスレみたいな感じが良い俺は
>>52 Rhinoはなあ...
JVM上で動くスクリプト言語だと、Groovyがきそうな感じ。
かつてRhinoを搭載していたEclipseもR2.0で決別して、
最近だとeScriptに走りそうな感じでRhinoには戻ってこないだろうな。
eScriptなんて今始めて聞きましたが・・・。
5754:04/07/06 01:30
>>56 最近eclipseで動くようになったスクリプト。まだ公式APIになってないけど
すでにパッケージ名がorg.eclipse.escriptになってるから、Rhinoの実装系
だった凍結中のorg.eclipse.scriptingと置き換わるんじゃないかと思う。
>>55
MocaScriptはもともとエディタのPeggy用マクロのため
文字列操作の関数が揃っていて便利ですね。
文字コードはPeggyがUnicode対応になるまではSJISです。
59デフォルトの名無しさん:04/07/15 15:29
MocaScriptいいですね。
末端のユーザーが使うスクリプトって例えばAcrobatやMacromediaなんかを見てて
JavaScriptが中心になるかと昔は思ってたけど、どうも最近の流れではPythonに
代わってきてるっぽい圧力を感じる。
>>60
・・・さすがにそれだけは無いな
SpiderMonkeyをlib化する方法をご教授ください
環境はWin XPです
6362:04/07/18 02:20
自己解決。
VC4.2のプロジェクトファイルが旧式だったので存在に気づきませんでした。
コンバートして開きなおせばあっさり。
>>60
OOoOだけじゃ無いかい?
UNO って .Net も使えるんじゃなかったっけ?
66デフォルトの名無しさん:04/08/24 03:07
ECMAScriptでは、なぜprototypeを触れないのですか?
仕様が肝の部分でデグレこいてるのではありませんか?
>>66
prototypeってクラスみたいなのが定義できる奴?
はじめて見たときは正直ちびった。

JavaScriptは
ブラウザいっちょでプログラミングはじめられるところがとても素晴らしい。
>>67
http://pc5.2ch.net/test/read.cgi/tech/1070886635/

まあたしかに一番普及しているプログラミング環境ではあるだろうな。
しかし、それと言語仕様がデグレートしていいかは(ry
69デフォルトの名無しさん:04/09/20 10:59:47
このスレ本当に必要なのか
70デフォルトの名無しさん:04/09/20 11:22:40
Rubyがあればいらない
71デフォルトの名無しさん:04/09/27 11:47:06
JavaScript を Ruby から使いたいのですが、
Ruby/JS が採用している NJS がいまいちしょぼい気がするので、
SpiderMonkey の Ruby binding が欲しいのですが、
もしかして既に実装されてたりするでしょうか?
もしあれば教えて下さい。
72デフォルトの名無しさん:04/10/01 13:03:15
糞スレデス
73_gunzip:04/10/09 12:12:55
SpiderMonkeyをWindowsでビルド(やっつけ)

・MSVCで
src/ディレクトリに古いVC用のjs.mdpがあるので、それを開き(&コンバート)コンパイルするだけ。
VC6で何の問題もなくビルドできた。

・Mingwで(gcc3.2.3)
src/fdlibmディレクトリに http://wxjs.sourceforge.net/mingw/fdlibm.mak をコピー
fdlibm.makのSRCDIRをてきとーに修正(SRC=../fdlibm)
make -f fdlibm.mak

次、src/ディレクトリに http://wxjs.sourceforge.net/mingw/jsmingw.mak をコピー
jsmingw.makのSRCDIRをてきとーに修正(SRC=../src)
さっきのfdlibm.libをリンクできるよう、5X行に-L../src/fdlibmとか付け加えるか、もしくはfdlibm.libをsrc/にコピーしておく。
CFLAGSの-DXP_PCを-DXP_WINに修正。
src/jsosdep.hに

#ifdef _MINGW
    #undef JS_HAVE_LONG_LONG
#else
    #define JS_HAVE_LONG_LONG
#endif

を追加。
make -f jsmingw.mak
js.dllとlibjs.aが出来ていることを確認する。
74デフォルトの名無しさん:04/10/09 12:19:21
//いいかげんなテスト
#include <string>
#include <iostream>
#include "jsapi.h"
JSClass globalClass = {
    "Global", 0, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub,
    JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, JS_FinalizeStub
};
int main(int argc, char *argv[])
{
    if (argc != 2)
        return 1; //usage ./testjs javascript-code
    JSRuntime *rt = JS_NewRuntime(1000000L);
    JSContext *cx = JS_NewContext(rt, 8192);
    JSObject *global = JS_NewObject(cx, &globalClass, 0, 0);
    JS_InitStandardClasses(cx, global);
    std::string script(argv[1]);
    jsval retval;
    JSBool ok = JS_EvaluateScript(cx, global, script.c_str(), script.length(), "script", 0, &retval);
    if (ok != JS_TRUE)
        return 1;
    JSString *str = JS_ValueToString(cx, retval);
    std::cout << "retval = " << JS_GetStringBytes(str) << std::endl;
    JS_DestroyContext(cx);
    JS_DestroyRuntime(rt);
    return 0;
}
--------------------------------------------------------------------------------
$ g++ -Wall -Werror -g -DXP_WIN -D_MINGW -DWIN32 -L. -o testjs testjs.cpp -ljs
$ ./testjs "var today = new Date(); date.toString();"
retval = Sat Oct 09 2004 13:13:12 GMT+0900
75_gunzip:04/10/09 13:27:12
誤爆スマソ
76デフォルトの名無しさん:04/10/09 14:03:03
誤爆、なのか?
77デフォルトの名無しさん:04/10/15 04:54:43
誤爆デス
78デフォルトの名無しさん:04/10/23 04:11:24
unicodeとかUTF8の読み書きが普通に使えるのないですか?
79デフォルトの名無しさん:04/11/07 23:20:51
>>78
JScript .Net
80デフォルトの名無しさん:04/11/08 04:28:04
>>79 SDKかぁ、そんな大仰なことしないからなぁ。
でもVS2005 Express Editionなんてのあったのを思い出せた。



JScriptないじゃん…
82デフォルトの名無しさん:05/02/04 09:31:12
ecmascriptにウインドウオブジェクトや描画クラスがサブセットでいいから規定されないかな。
そうすりゃ相当汎用性上がるとおもうんだけど。
ライン引けるだけでも大分違うと思う。
83デフォルトの名無しさん:05/02/04 09:32:57
あ、上げてしまった。
84デフォルトの名無しさん:05/02/04 09:38:23
ActionScriptのノリで言ってる?
85デフォルトの名無しさん:05/02/04 11:11:00
actionscriptは使ったことないです。
使ったことあるのは、IEのJavascriptだけです。

actionscriptってそういう方向なのかな?
>ライン引けるとか云々。
86デフォルトの名無しさん:05/02/04 12:16:57
_root.createEmptyMovieClip( "triangle", 1 );
    with (_root.triangle){
    beginFill (0x0000FF, 50);
    lineStyle (5, 0xFF00FF, 100);
    moveTo( 200, 200 );
    lineTo (300, 300);
    lineTo (100, 300);
    lineTo (200, 200);
    endFill();
}

ActionScriptだとこれで三角形になる
87デフォルトの名無しさん:05/02/04 18:41:40
>86
ちょっと文が長いですね。
それでも一応グラフィック関係があるのは良いナー。
88デフォルトの名無しさん:05/02/22 17:13:13
真・スレッドストッパー
89デフォルトの名無しさん:05/02/22 17:52:25
90デフォルトの名無しさん:05/03/21 00:35:52
DMDScriptに自作オブジェクトを追加・取得ってどうすればいいの?
これでエディタのマクロ作りたいんですよね
91デフォルトの名無しさん:2005/03/23(水) 10:47:09
で、 JavaScript とはどう違うの?
92デフォルトの名無しさん:2005/03/24(木) 15:45:47
msのJscriptとネットスケープのJavascriptをすり合わせて作られたのがECMAScript。
93デフォルトの名無しさん:2005/03/25(金) 10:08:47
>>92 で、いまの著名なブラウザは ECMAScript に完全準拠?
94デフォルトの名無しさん:2005/03/25(金) 14:58:50
>>93
Operaは対応状況を公開しています。
http://www.opera.com/docs/specs/js/ecma/

これを見る限り、Opera 7はECMAScriptを完全にサポートしているようです。
他のブラウザは知らない。
9592:2005/03/26(土) 14:55:33
僕も知らない。
96デフォルトの名無しさん:2005/03/26(土) 15:01:50
あhrっっば
97デフォルトの名無しさん:2005/03/26(土) 15:12:38
SpiderMonkey、またはDMDScriptに関する日本語版APIリファレンスってありませんか?
98デフォルトの名無しさん:2005/03/26(土) 15:28:10
最近調べたが無い。
99デフォルトの名無しさん:2005/03/26(土) 15:56:40
そっか。残念。
100デフォルトの名無しさん:2005/03/27(日) 20:48:19
Ajaxの話題はここでよい?
101デフォルトの名無しさん:2005/03/27(日) 21:03:44
XMLHttpRequestってECMA規格になったっけ?
102デフォルトの名無しさん:2005/03/28(月) 00:27:07
>>101 しらんけど、最近はやってるなぁ。
103デフォルトの名無しさん:2005/03/28(月) 09:02:49
AjaxについてはWebProg板にスレが立ってる
104デフォルトの名無しさん:2005/03/28(月) 09:10:00
try {
  xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
  try {
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  } catch (e) {
    xmlhttp = false;
  }
}
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
  xmlhttp = new XMLHttpRequest();
}

↑を見る限りECMAScriptではないね。規格外技術。
105デフォルトの名無しさん:2005/03/28(月) 21:47:25
>>4
> Web上におけるクライアントサイドスクリプティングに特化した実装(通称Javascript)については
> WebPrograming板などの専門スレをご利用ください。

> [WebProg板] JavaScript質問コーナー ((サーバーサイド方面))

このテンプレ変じゃね?
106デフォルトの名無しさん:2005/03/28(月) 23:08:34
Webブラウザ上でのJavaScriptに関する質問はWebProg板へ
Flash上でのActionScriptに関する質問はFlash板へ行ってください。

【誘導先リンク】
JavaScript質問コーナー
http://pc8.2ch.net/test/read.cgi/php/1065151808/
ActionScript 誰かが物凄い勢いで解答するスレ 6
http://pc8.2ch.net/test/read.cgi/swf/1108207742/
107デフォルトの名無しさん:2005/03/28(月) 23:26:32
JavaScript はクライアントサイドなので Web 制作板の管轄です

+ JavaScript の質問用スレッド vol.35 +
http://pc8.2ch.net/test/read.cgi/hp/1110578338/
108デフォルトの名無しさん:2005/03/28(月) 23:31:39
> JavaScript はクライアントサイドなので
ん・・・なんか変だ。
109デフォルトの名無しさん:2005/03/30(水) 01:57:25
>>107
そりゃもっと変だ。
WebProg板への誘導があるのはサーバーサイドJavaScriptが存在するからで、
修正すべきなのは
> Web上におけるクライアントサイドスクリプティングに特化した実装(通称Javascript)については
> WebPrograming板などの専門スレをご利用ください。
という文言のほう
110デフォルトの名無しさん:2005/03/30(水) 02:43:15
ん、サーバーサイドJavaScript??

エディタマクロの elisp スレがオッケーなら、ブラウザ組込み言語としての
JavaScript スレもオッケーな気がするが、そうなっていないのは話題の
レベルが低すぎるからなんだろうね。それとも、エディタマクロ板がないから
elisp はオッケーなのかな。

JavaScript は良い言語だと思うが、不遇すぎるな。
111デフォルトの名無しさん:2005/03/30(水) 03:35:11
適当にぐぐってみたけどこことか。
http://docs.sun.com/source/816-5930-10/sampapp.htm
112デフォルトの名無しさん:2005/03/30(水) 03:37:03
つーかWebProg板のリンク先見ればいいじゃん…と思ったら見事なまでに
サーバーサイドJavaScriptの話題なんかないな。orz
113デフォルトの名無しさん:2005/03/30(水) 11:46:32
サーバサイドECMAScriptは、ASPのJScriptとFCSのActionScriptがある。
ASPはVBSが主流だし、FCSはそもそも使われない。

テキストエディタとかのマクロを全部JavaScriptにすれば皆幸せになれるのにな。
114デフォルトの名無しさん:2005/03/30(水) 13:19:23
http://developer.netscape.com/はお陀仏なようなので↓張っとく

Object Hierarchy and Inheritance in JavaScript
http://www.cs.rit.edu/~atk/JavaScript/manuals/jsobj/

JavaScript Language Resources
http://www.mozilla.org/js/language/

Object-Oriented Language: JavaScript / ECMAScript
http://www.objenv.com/cetus/oo_javascript.html
JavaScript Online Resources
http://www.mountaindragon.com/javascript/resources.htm

それからMac OS Xが、desktop widget用の言語にJavascriptを
Dashboard
http://www.apple.com/macosx/tiger/dashboard.html
http://developer.apple.com/macosx/tiger/dashboard.html
115デフォルトの名無しさん:2005/03/30(水) 13:52:48
おまけ

The Web Hypertext Application Technology
http://www.whatwg.org/
116デフォルトの名無しさん:2005/04/07(木) 22:48:08
引数をとって初期化処理を行うようなオブジェクトからプロトタイプ継承する時、
継承元のダミーオブジェクトをnewするのって面倒くさくないですか。

function Parent(foo, bar) {
  foo.init_for(this);
  bar.init_for(this);
}
:
:

function Child(foo, bar) {}
:
:

Child.prototype = new Parent( /* ここをどうするか */);

Parentのコンストラクタの中でfooやbarにメッセージを送ってるから
fooやbarもダミーで入れとかないといけなくなっちゃう。
みなさんどうしてます?
117デフォルトの名無しさん:2005/04/10(日) 00:36:05
オブジェクトを作るのにapplyみたいな方法はありませんか?
要するに次のようなことがしたいのですが。

obj = new F; // ここではコンストラクタを呼び出さない
F.apply(obj, arguments); // 任意の引数でコンストラクト
118デフォルトの名無しさん:2005/04/20(水) 08:01:18
http://www.mozilla.org/projects/seamonkey/

このページの桜玉吉みたいなのなんなん?
119デフォルトの名無しさん:2005/04/20(水) 08:12:58
Adobe が Macromedia を買収したね。
PDF, SVG, SWF とスクリプティングは ECMAScript な訳だけど、
何か面白い事起きないかな。
120デフォルトの名無しさん:2005/04/20(水) 16:28:07
アクメスクリプト誕生の予感
121デフォルトの名無しさん:2005/04/20(水) 19:36:54
>>118
ワラタ
桜玉吉かよw
122デフォルトの名無しさん:2005/05/02(月) 04:55:18
IE上で、任意の文字列のHTMLを表示させたいんだけど、
それって可能?

BODYだけではなくて、HTML、HEAD、SCRIPTも書き換えたい。
(BODYだけならINNERHTMLの上書きで可能なのはわかってる。)

感覚としては、「???.INNERHTML="<HTML>.....</HTML>"」みたいにできればいいんだけど。

123デフォルトの名無しさん:2005/05/02(月) 06:45:50
document.all(0).outerHTML
124デフォルトの名無しさん:2005/05/02(月) 15:42:12
125デフォルトの名無しさん:2005/05/02(月) 15:44:26
objIEDoc.all(0).outerHTML = "<HTML></HTML>"

「outerHTMLプロパティを設定できませんでした。この操作に対して無効なターゲット要索です」
126デフォルトの名無しさん:2005/05/02(月) 16:48:36
>>122-125
ブラウザ上のJavaScriptについてはWeb製作板のJavaScriptスレで。
なんでまたECMAScriptスレでこんな質問してるの?
127デフォルトの名無しさん:2005/05/02(月) 16:53:49
ブラウザ上のスクリプトではなく、ECMAScriptからIEの操作を話しているじゃん
128デフォルトの名無しさん:2005/05/02(月) 18:53:08
「IEのオブジェクトをnewして・・・」って話から始まるのか?
129デフォルトの名無しさん:2005/05/02(月) 23:02:56
>128
>125の続きでいいんでない?
130デフォルトの名無しさん:2005/05/02(月) 23:45:52
ん。簡単にできそうだと思ってたけど、意外と難しいかも。
131デフォルトの名無しさん:2005/05/05(木) 03:29:46
できないよ
132デフォルトの名無しさん:2005/05/06(金) 11:35:34
>>122-125 >>129-131
できる。回答はこちらに書いた。
http://pc8.2ch.net/test/read.cgi/hp/1114774413/151
133デフォルトの名無しさん:2005/05/07(土) 06:21:01
>>132
すげぇ
134デフォルトの名無しさん:2005/05/10(火) 22:34:44
>>132
いい仕事
135デフォルトの名無しさん:2005/05/12(木) 19:13:47
遅レスだけど。

>>117
obj = F;
new obj(arg1, arg2, ...);

ではどう?
136117:2005/05/14(土) 22:49:30
>>135
えーと、よく分かりません。
次の(1),(2)に何か違いがあるのですか?

function F() { ... }
f = F;
F(arg1,arg2, ...); // (1)
f(arg1,arg2, ...); // (2)

それと、求めているものは
obj = new F(arg1,arg2,arg3, ...) の代わりに、
obj = new F( [all_arguments] ) することなのですが。

こんなかんじで。
obj = new Object;
obj.__proto__ = F.prototype
o = F.apply(obj, args)
if (o instanceof Object)
 obj = o;

でもこれはECMA準拠じゃないし。
137デフォルトの名無しさん:2005/05/14(土) 22:52:15
あ、それともう一つ別の質問が。

継承元の親を動的に切り替えたいのですが。
function A() {} A.prototype.x = 1;
function B() {} B.prototype.x = 2;
function C() {}
C.prototype = new A;
C.prototype.constructor = C;
o = new C;
alert(o) // 1
o.__proto__ = new B
o.__proto__.constructor = C;
alert(o) // 2
これをECMAScriptではどのように書けばよいですか?

こっちが実現できればなお良いのですが。
// A,B については同上
function C() {}
C.prototype = new A;
C.prototype.constructor = C;
o = new C;
alert(o) // 1
C.prototype = new B
C.prototype.constructor = C;
alert(o) // 2

これはCの全インスタンスのコレクションを管理する
以外に方法がなさそうな気がします。
しかしそうすると明示的に削除メソッドを呼ばないと
Cのインスタンスが永久に消えない罠。
138デフォルトの名無しさん:2005/05/15(日) 00:56:08
× alert(o)
○ alert(o.x);

つーか、そこかしこで行末の ; が抜けてたり……
思いつきで書いてテストしてないから悲惨 orz
139デフォルトの名無しさん:2005/05/15(日) 09:57:10
>>136
あんたさあ、ECMA-262をちゃんと読んでいるの?
f.apply(thisとして扱うオブジェクト, 引数配列)
というそのものズバリがあるんだけど。

そしてprototypeの動的書き換えはECMA-262として標準化
されたときにわざと落されたんで、存在していない。
140デフォルトの名無しさん:2005/05/15(日) 10:02:10
>>136
すまそ、applyではnewとは動作が違うよね。申し訳ない。
newの代わりは…eval()しかないかな…
141デフォルトの名無しさん:2005/05/15(日) 10:06:36
>>136
たびたびで申し訳ない。再度ECMA-262のnewの所を読んでみると、
「new f.apply(null, 引数配列)」でいいような気がしてきたがどうよ?
142136:2005/05/15(日) 11:20:50
>> 141
すばらしい。 まさに求めていたとおりのものです。
ECMA-262 3版 邦訳のnew演算子のところは見たのですが、自分には
少々難解で、そのような動作が可能だとは、全く読み取れませんでした。

それと、prototypeの動的書き換えは無理ですか。
折角のプロトタイプベースな言語なんだから、それくらいやらせて欲しい
ものですが、わざわざ禁止したからには何か理由があるのでしょうか。
Stateパターンの実装にもってこいだと思ったのですが、残念ですね。
どうもありがとうございました。
143デフォルトの名無しさん:2005/05/15(日) 13:29:52
>>141
>new f.apply(null, 引数配列)

すみません、やっぱりうまくいかないみたいなんですけど。
朝方やったときは寝惚けて変な勘違いしたようです。
144デフォルトの名無しさん:2005/05/15(日) 15:19:29
>>117でいいと思うよ
f.apply(new f, 引数)
145デフォルトの名無しさん:2005/05/15(日) 16:31:27
プロトタイプの動的書き換えを禁止したのは最適化とか
可能にするためじゃなかったかな。
146デフォルトの名無しさん:2005/05/15(日) 16:50:44
前スレ↓あたりにその話題出てたね

http://pc8.2ch.net/test/read.cgi/tech/1052273054/688-698

俺も最適化(キャッシュ)説だな
147デフォルトの名無しさん:2005/05/15(日) 17:14:02
>>144
それだとコンストラクタが2回呼ばれるので、場合によっては不具合が。
例えばコンストラクタからグローバル変数やクラス変数を変更しているときとか。
やっぱり eval() っきゃないですかね。

>>145-146
なるほど。参考になります。
148デフォルトの名無しさん:2005/07/16(土) 22:17:57
ECMAScriptの一般流通状況はどうなってますか?
SpiderMonkeyの日本語マニュアルが無くて以前は挫折したんだよなぁ
149デフォルトの名無しさん:2005/07/18(月) 15:24:10
150デフォルトの名無しさん:2005/07/30(土) 12:12:05
OpenSourceクローンな
http://www.konfabulator.com/ってないんですかね?

FESIならJavaのオブジェクトが使えるけど…
151デフォルトの名無しさん:2005/08/29(月) 15:19:14
遅レスだが、
>>116
Function.prototype.inherit = function(superClass){
function Temp(){};
Temp.prototype = superClass.prototype;
this.prototype = new Temp;
this.prototype.constructor = this;
}

Child.inherit(Parent);
152デフォルトの名無しさん:2005/10/01(土) 21:17:34
SpiderMonkeyをエディタに組み込もうかと思ってるんだけど
ステップ実行とか中断とかある?

評価開始したら終わるまで戻ってこないとかだとちょっと困る
153デフォルトの名無しさん:2005/10/01(土) 22:33:38
154デフォルトの名無しさん:2005/10/01(土) 22:52:10
んじゃmozzilaって一度JSの実行始めたらとまんないの?

そんなこたないよねえ
どうやってんだろ
155デフォルトの名無しさん:2005/10/01(土) 22:54:21
グローバルオブジェクトを更新してるんだろ
156デフォルトの名無しさん:2005/10/01(土) 23:02:45
どういういみ?
157デフォルトの名無しさん:2005/10/01(土) 23:05:50
window.title="hoge"ってグローバルオブジェクトがあったら
スクリプトでwindow.title="boke"って更新したら
次実行するときもwindow.title="boke"を保持できるようにすればいい

それの繰り返し
158デフォルトの名無しさん:2005/10/01(土) 23:11:06
いやそういう話でなくて、
アプリからspidermonkey制御するとき、
無限ループを中断する機能がなかったら
ブラクラになるでしょ? ていう話

jsdbgapi使うのかなあ
159デフォルトの名無しさん:2005/10/01(土) 23:22:50
kodersで発見

JS_SetBranchCallback

を使うらしい
160デフォルトの名無しさん:2005/10/01(土) 23:23:26
ステップ数カウントして中断処理が入ってないか調べるとか
161デフォルトの名無しさん:2005/10/02(日) 18:37:14
firefox 1.0.x は while(1); とかやるとメッセージダイアログが出てくる。
その辺追っかけると JS_SetBranchCallback 使って時間計って止めてる。
http://lxr.mozilla.org/aviarybranch/source/dom/src/base/nsJSEnvironment.cpp#411


ステップ実行とは別の話じゃないかな。
162デフォルトの名無しさん:2005/11/21(月) 01:07:56
spidermonkeyって、単体のバイナリ配布ないのん?Windowsで。
163デフォルトの名無しさん:2005/11/21(月) 02:22:12
いまさらながら、このスレで許されそうなリンク集

オブジェクトなJSの基礎講座 (入門向)
http://www.parkcity.ne.jp/~chaichan/src/2ndthema.htm

Effective JavaScript
http://www.interq.or.jp/student/exeal/dss/ejs/

檜山正幸のキマイラ飼育記 JS編
http://d.hatena.ne.jp/m-hiyama/20050808/1123486683

discypus.jp/wiki/規格/ECMA/ECMAScript (リンク集)
http://discypus.jp/wiki/?%B5%AC%B3%CA%2FECMA%2FECMAScript

世界で最も誤解されたプログラミング言語 
http://d.hatena.ne.jp/brazil/20050829/1125321936
164デフォルトの名無しさん:2005/11/21(月) 03:22:07
おまえら、JSをWeb以外で何に使ってるの?
普通のスクリプト言語に比べて標準ライブラリがなさすぎでアプリ書くには向かんだろ。
言語としても特に便利な機能が揃ってるわけでもないし。

メリットって、仕様がシンプルでいろんなアプリに
マクロ言語として組み込みやすい程度じゃね?
それって、使う側のメリットじゃないよな。
165デフォルトの名無しさん:2005/11/21(月) 04:04:53
>>163に追加
ECMAScript - on Surface of the Depth -
http://www.kmonos.net/alang/etc/ecmascript.php
166デフォルトの名無しさん:2005/11/21(月) 04:39:46
E4X こいつは便利そう。既にRhinoに実装されてる。

日本語サンプル
http://www.kmonos.net/wlog/49.php#_1520050427

もうちょっとサンプル
http://developer.mozilla.org/presentations/xtech2005/e4x/

仕様
http://www.ecma-international.org/publications/standards/Ecma-357.htm
167デフォルトの名無しさん:2005/11/21(月) 04:41:23
168デフォルトの名無しさん:2005/11/21(月) 08:57:05
>>164
そもそもincludeがないが。
169デフォルトの名無しさん:2005/11/21(月) 09:29:42
>>164
俺はJScriptでIrvineの操作を自動化しているが、これは使う側のメリット足り得ないのかい
170デフォルトの名無しさん:2005/11/21(月) 10:05:55
Windowsドメイン用の初期スクリプトとしても使えるしな。
171デフォルトの名無しさん:2005/11/21(月) 12:49:21
>>164
だからまともなスクリプト言語として使うには問題なんだろ。

>>169,170
だから、それはWindowsなりに簡単に組み込めたっていう提供側のメリットだろ。
使う側には、JScriptじゃなくて例えば代わりにPythonが組み込まれてたとしても問題ない。
マクロが書けるという使う側のメリットは、JScriptだからじゃなくて、
マクロ機能を提供されてること自体によるもので、
選ばれた言語自体によるメリットではない。
172171訂正:2005/11/21(月) 12:50:54
- >>164
+ >>168
 だからまともなスクリプト言語として使うには問題なんだろ。
173デフォルトの名無しさん:2005/11/21(月) 13:47:59
RhinoでE4Xやってみた。おもろい。
xmlbeansは2系はダメみたい。1系を使う。
あと、js.jarはMANIFEST.MFに、
Main-Class: org.mozilla.javascript.tools.shell.Main
Class-Path: xbean.jar
となってるから、-jarするときはjs.jarと同じ所にxmlbean.jarがないとダメみたい。

C:\jar\rhino1_6R2>java -cp C:\jar\rhino1_6R2\js.jar;C:\jar\xmlbeans-1.0.4\lib\xbean.jar org.mozilla.javascript.tools.shell.Main
Rhino 1.6 release 2 2005 09 19
js> x = <hoge><p>puge</p></hoge>
<hoge>
<p>puge</p>
</hoge>
js> x.p
puge
js>

C:\jar\rhino1_6R2>java -cp C:\jar\rhino1_6R2\js.jar;C:\jar\xmlbeans-2.1.0\lib\xbean.jar org.mozilla.javascript.tools.shell.Main
Rhino 1.6 release 2 2005 09 19
js> x = <hoge><p>puge</p></hoge>
js: "<stdin>", line 3: uncaught JavaScript runtime exception: ReferenceError: "XML" is not defined.
js>

C:\jar\rhino1_6R2>java -cp C:\jar\rhino1_6R2\js.jar;C:\jar\xmlbeans-1.0.4\lib\xbean.jar -jar C:\jar\rhino1_6R2\js.jar
Rhino 1.6 release 2 2005 09 19
js> x = <hoge><p>puge</p></hoge>
js: "<stdin>", line 2: uncaught JavaScript runtime exception: ReferenceError: "XML" is not defined.
js>
174デフォルトの名無しさん:2005/11/21(月) 17:52:35
>>171
使い慣れた構文で書ける事がメリットなんじゃない?

実際はホストのオブジェクトを調べにゃならんから結局面倒だけどさ、

ECMA では例えば出入力みたいなライブラリの標準まで面倒みるつもりは
ないみたいだから。
http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/4_Overview.html
> メリットって、仕様がシンプルでいろんなアプリに
> マクロ言語として組み込みやすい程度じゃね?
そーゆーもんなんでしょ。
175デフォルトの名無しさん:2005/11/21(月) 17:57:55
>>173
xhtml を操作しようとすると 'class' が予約語で使えなくってはまる。
TokenStream.java の Id_class が出てくる行をコメントアウト&コンパイルしなおして
無理やり使えるようにしたけど、何とかならんもんか。
176デフォルトの名無しさん:2005/11/21(月) 18:13:50
トーカナイザをいじれるならもっとやりようはあると思うが、
とりあえず逃げるなら別の属性にしておいて後で変換かな?
177デフォルトの名無しさん:2005/11/21(月) 21:30:27
ECMAScript 4.0のclassってお前さんがたどう思う?
Java風class取り入れてJavaもどきにする位なら言語非標準の機能使わないと
ちゃんとしたプロトタイプチェーンがつなげないのを何とかしろって思うんだが。
178デフォルトの名無しさん:2005/11/21(月) 22:02:15
Java もどきにする予定があったからわざわざプロトタイプチェーンを手作業で繋ぐような仕様にしなかった
っつー考えなんでないかい?Java もどきよりは真性プロトタイプに走って欲しいと俺は思うがな。
179デフォルトの名無しさん:2005/11/21(月) 22:18:21
まあ、JavascriptとJavaの予約語がかぶってたり、LiveConnectがあったりと
何となくJavaとの連携を視野に入れてるのかもなぁと思ったりもしたが、
だからといってJavaもどき化という路線もどうかなぁと思うんだよな。
JavaソースのインタプリタならBeanShellがあるわけだし、Java風の文法が使えるようになったって
スクリプト言語的にあまり旨くないと思うし。

でもまぁしょうがないのかねぇ。JavascriptはJavaとはまったく違う言語です、ってのが覆されることになるんだろうか。
180デフォルトの名無しさん:2005/11/21(月) 22:50:32
Mustang には JavaScript が標準搭載らしいからね。まさにマルチプラットフォーム。

A. Sundararajan's Weblog
http://blogs.sun.com/roller/page/sundararajan?entry=e4x_is_not_mustang
http://blogs.sun.com/roller/page/sundararajan?entry=easy_to_use_xpath_api

でも E4X は入らないぜ!YEAH!('A`)
181デフォルトの名無しさん:2005/11/22(火) 11:30:47
Mustangって、Rhino自体が乗るんだろ。E4X入ってるじゃん。
すくなくとも、XMLBeansがあれば動くんじゃね?SUNのJAXBとぶつかっちゃう?
182デフォルトの名無しさん:2005/11/22(火) 12:24:23
>>164

http://www.openjsan.org/


ま、「標準」じゃあないけど。
183デフォルトの名無しさん:2005/11/22(火) 16:25:22
>>181
Mustang snapshot で試すべぇ
http://download.java.net/jdk6/binaries/
ベースが Rhino 1.6R2 になってるから E4X つかえるかもしれん。
https://mustang.dev.java.net/files/documents/2817/21109/mustang-b53.html
https://mustang.dev.java.net/files/documents/2817/23494/mustang-b59.html

>>180 のリンク先最初の記事からすると駄目っぽいが…
効率上げるためにE4Xのコードを取り除いたってあるぞ。
184デフォルトの名無しさん:2005/11/22(火) 18:27:07
効率のためじゃなくて、Javaの立場がなくなるからだベ。プ
185デフォルトの名無しさん:2005/11/22(火) 22:41:50
http://www.interq.or.jp/student/exeal/dss/mozilla_translation/js20/
http://weblogs.mozillazine.org/roadmap/archives/008325.html
http://weblogs.mozillazine.org/roadmap/archives/009177.html
http://weblogs.mozillazine.org/roadmap/archives/009255.html

読んでたら Java っぽくというより動的オブジェクト言語ってことで
Ruby っぽくなってる気がしてきた。構文は全然違うけど。
型(つってもオプショナル)があるから Java 風ってことでいいけど。
186デフォルトの名無しさん:2005/11/23(水) 00:24:38
よく解ってないし、そんな英語読む根気もないんだけど、
そのClassって単にコンストラクタのprototypeの構文糖だったりしないの?

Class導入のメリットとデメリットおせーて
187デフォルトの名無しさん:2005/11/23(水) 04:06:27
>>186
構文糖レベルではなく、むしろ型をクラスベースで構築し直して
プロトタイプは見切りを付けて捨てるつもりか、二極化してそのようにも書くことはできる、
というレベルになる気がする。
クラスの導入のメリットは型の存在そのものだろう。
動的な型のオブジェクトが介入すると、そこは必ず遅くなる原因になる。
全てのプロトタイプ型の言語はこの問題を解決できない。
静的な型を導入することで、パフォーマンスの重要な部分について
最適化の可能性を与える。
さらに型の制約により実行前にエラーを検出できる。→メリット

言語の学習期間が長くなる。→デメリット
188デフォルトの名無しさん:2005/11/23(水) 04:23:07
そこまで実行効率を重視するような言語なのかね。
189デフォルトの名無しさん:2005/11/23(水) 04:37:21
アメとムチだよ。
初心者にはこれまで通りprototypeで書かせて
上級者やライブラリ作成者はより緻密にclassで書かせる。
これでユーザーのハートをがっちりキャッチ。
190デフォルトの名無しさん:2005/11/23(水) 05:05:07
【特命】ソニーコネクトカンパニーを語ろう【匿名】
http://hobby8.2ch.net/test/read.cgi/sony/1104231834/
なんかソニーがFSKっていうECMAScriptベースのVM開発環境を作ってるらしい。
191デフォルトの名無しさん:2005/11/23(水) 11:36:12
【SONY】CONNECT Player 作ったやつ挙手
http://pc8.2ch.net/test/read.cgi/prog/1132642979/
192デフォルトの名無しさん:2005/11/23(水) 12:03:59
>動的な型のオブジェクトが介入すると、そこは必ず遅くなる原因になる。

言語の常識なのかも知れないけど、インタプリタで静的型があると何で速くなるの?

>さらに型の制約により実行前にエラーを検出できる。→メリット

コンパイルするってこと?半端な静的型でも意味あるの?

>言語の学習期間が長くなる。→デメリット

それだけ?だったら、クラスベースの方が修得者も情報も圧倒的に多いんだから、
むしろ学習期間は短くなるんじゃね?
俺自身、コンストラクタのprototype?とか、とまどったし?
とすると、デメリット無し?
193デフォルトの名無しさん:2005/11/23(水) 14:08:46
JScript.NETで静的型付けをして使ってると、これならC#でいいやってなるよ。
中括弧のスコープが無いのにちょっと戸惑うし。
ECMAScriptは、動的言語だから面白かったんだよ。
C#に動的言語風の機能を静的流に翻案して、無理矢理付けるくらいなら、
こちらを改善していけば良かったのに。
194デフォルトの名無しさん:2005/11/23(水) 14:30:36
動的言語マンセー




動的言語って何?
195デフォルトの名無しさん:2005/11/23(水) 14:45:47
IDispatch::Invokeメソッドしかない言語のことだよ
196デフォルトの名無しさん:2005/11/23(水) 15:03:30
動的に文法が変わる言語のことだよ。
197デフォルトの名無しさん:2005/11/23(水) 16:28:51
>>196
Lispのことかー
198デフォルトの名無しさん:2005/11/24(木) 06:44:05
>>197
Lispで動的に文法が変わる例をきぼんぬ。コンパイラな処理系でね。
199デフォルトの名無しさん:2005/11/24(木) 07:48:30
>>175
予約語がタグ名に使えない仕様って事はないと思うから、
現在の実装の制限に過ぎないだろう。
200デフォルトの名無しさん:2005/11/24(木) 07:50:10
HD DVDはインタラクティブの仕様がJavascript + XMLだったのに、
Blu-rayに負けそうだね。
201デフォルトの名無しさん:2005/11/24(木) 13:47:55
>>198
197じゃないので文法が変わるのは知らないけど、
動的に生成するって事ならここのマクロ関係の章を読んでみるとか。
ttp://user.ecc.u-tokyo.ac.jp/~t50473/onlispjhtml/index.html
C++のテンプレートみたいな。
202デフォルトの名無しさん:2005/11/24(木) 14:59:01
それ動的に生成するわけじゃないと思うよ。コンパイラと指定してあるわけだし。
203デフォルトの名無しさん:2005/11/24(木) 16:20:03
コンパイラで動的に文法が変わるってどういう意味よ
マシン語の文法が変わるのか?
204デフォルトの名無しさん:2005/11/24(木) 16:41:24
>>199
タグ名じゃなくて
var doc = new XML(readFile("./event001.xhtml"))
var target = doc.body..div.(@class = "date")
とかすると駄目なのよ。'class' が JS の識別子とみなされる。

Firefox 1.5RC の SpiderMonkey だといけるんで、
上層にバイパスする仕掛けをつくりゃいいんだろうけどさ。
205デフォルトの名無しさん:2005/11/24(木) 16:46:25
>>204 間違えた
× @class = "date"
○ @class == "date"
206デフォルトの名無しさん:2005/11/24(木) 18:07:16
var target = doc.body..div.(@{"class"} = "date")
こんな感じ?
207デフォルトの名無しさん:2005/11/24(木) 19:25:56
クラスより、インクルードができるようにして欲しいな。
208デフォルトの名無しさん:2005/11/24(木) 19:34:26
>>198
lexicalなところはreaderをいじれば即変わるし、
制御構造はdefmacroで即変わるだろ。もちろんコンパイル
する処理系でも。何が問題なの?
209デフォルトの名無しさん:2005/11/24(木) 22:04:23
反論がないようですね。LISP最強ってことでFA?
210デフォルトの名無しさん:2005/11/24(木) 22:22:04
>>206
var target = doc.body..div.(@["class"] == 'date')
これでいけたよ。ありがとう!
'@' は E4X 特有の演算子かと思ってたらオブジェクト名なのね...
211デフォルトの名無しさん:2005/11/24(木) 22:24:01
>>207
JS2 ならあるな。
設計からして import の方が大事なんだろうが。
212デフォルトの名無しさん:2005/11/24(木) 22:30:01
>>209
あるサイトによるとJavascriptはCの皮を被ったLISPだそうだ。
S式を取っ払い、C風の構文に変えたLISPのサブセットと見ることもできなくはない。
213デフォルトの名無しさん:2005/11/24(木) 23:06:02
スクリプトエンジンスレの荒らしが来てるのか
まあホントにLisp最強ならそのうち再興することもあるだろうし
変に押し付けず時流に乗ったもの使ってりゃいいよ
214デフォルトの名無しさん:2005/11/25(金) 00:25:39
>>212
http://www.crockford.com/javascript/javascript.html
http://d.hatena.ne.jp/brazil/20050829/1125321936
これね。わざと過激に言ってるので注意。
Java や C より Lisp, Scheme に近いってのはまぁそうかもしれんが
別のところで Self にも近いってちゃんとかいてるし。

http://www.crockford.com/javascript/little.html
http://www.crockford.com/javascript/scheme.html
この辺はやるなあと思うけど。

でも NewtonScript の方が Lisp に近いと思うがね、全部式だし。
http://www.k-inet.com/~brown/newton/plns.html
JS のオブジェクトのハッシュ表現の元はたぶんこれ。ある意味退化。
215デフォルトの名無しさん:2005/11/25(金) 01:14:49
Newton、5年火を入れてないな…。
216デフォルトの名無しさん:2005/11/25(金) 01:18:52
>>209
schemeのdefine-syntaxの方がアレかも
217デフォルトの名無しさん:2005/11/26(土) 19:36:18
4th Edition ベースの実装はなかなか普及しませんな。
218デフォルトの名無しさん:2005/11/30(水) 16:10:15
ところで、JavaScriptの良いところは
プロトタイプオブジェクト指向は有効だっていうのを
一般プログラマにも理解させたことなんだと思うんだけど
プロトタイプオブジェクト指向って、JavaScript以前にはどういうのが存在したのかな?
オブジェクト指向関連って、歴史とかがゼンゼン本になっていない気がする…
219デフォルトの名無しさん:2005/11/30(水) 16:35:57
ECMAの仕様書の最後の方に
>Free printed copies can be ordered from:
ってあるけど、コレって翻訳して配布しても文句言われないのかな?
一応参考として…。

220デフォルトの名無しさん:2005/11/30(水) 16:40:28
221219:2005/11/30(水) 16:55:14
>>220
thx!
222デフォルトの名無しさん:2005/11/30(水) 23:29:43
223デフォルトの名無しさん:2005/12/01(木) 13:19:21
うぉー。すっげー。
今までの疑問が氷解した(厨

結構本や図書館を探し回ったりしたんだけど海外文献か…
時々思ったこともあったけど、もしかして日本って恵まれていない?
224デフォルトの名無しさん:2005/12/01(木) 17:31:47
何を今更。。
225デフォルトの名無しさん:2005/12/01(木) 20:56:24
>>223
日本人なら全員英語が読めるのだから、日本語の文献が追加で読めるぶんだけ
恵まれているのだよ。
226デフォルトの名無しさん:2005/12/02(金) 00:36:30
技術書がローカライズ(翻訳)されるのって、世界中でも日本くらい、と聞いたことがある。
227デフォルトの名無しさん:2005/12/02(金) 01:24:15
Web関係の仕様書だったら様々な言語に翻訳されているよ。
ローカライズとは違うかもしれないけど。
http://www.w3.org/Consortium/Translation/
228デフォルトの名無しさん:2005/12/02(金) 01:38:25
うちには83年だかのOOPSLAの日本語版があるが…
229デフォルトの名無しさん:2005/12/02(金) 18:38:00
良くも悪くも日本は翻訳文化。
230デフォルトの名無しさん:2005/12/02(金) 21:19:19
翻訳というかJapanize
231デフォルトの名無しさん:2005/12/02(金) 21:53:08
ECMAScripter
232デフォルトの名無しさん:2005/12/04(日) 04:05:25
javascriptでサーバーってつくれるのかな
233デフォルトの名無しさん:2005/12/04(日) 04:23:01
Flash Communication Saverだっけ?
234デフォルトの名無しさん:2005/12/05(月) 20:15:36
>>218
使う奴のほとんどはプロトタイプベースだと思ってない。
残念だったね。
235デフォルトの名無しさん:2005/12/05(月) 23:59:54
>>218
>JavaScriptの良いところは
>プロトタイプオブジェクト指向は有効だっていうのを
>一般プログラマにも理解させたこと

「プロトタイプオブジェクト指向は、有効」なのか、
「プロトタイプオブジェクト指向でも有効」なのか。

前者だというなら、どこが、何に有効?
236デフォルトの名無しさん:2005/12/06(火) 15:49:20
>>218
Prototype.jsとかの有名どころのライブラリが、軒並み
「擬似的にクラスを定義する仕組み」を実装している
実態をどう見ますか。
237デフォルトの名無しさん:2005/12/06(火) 17:56:14
Server、な。ただサーバってのは既存の仕様を詰め込んだようなもんだから
どんな言語使ってもガチガチで大して差は出ないような気もするが。
238デフォルトの名無しさん:2005/12/06(火) 18:32:33
>>236
元の作者がプロトタイプベースでなくクラスベースの言語に長けていると言う事以外に何も表してないと思うよ。
239デフォルトの名無しさん:2005/12/06(火) 18:33:05
スマン、sage忘れた。
240デフォルトの名無しさん:2005/12/06(火) 18:35:31
(ノ∀`) アチャー
241218:2005/12/08(木) 22:44:48
>「プロトタイプオブジェクト指向は、有効」なのか、
>「プロトタイプオブジェクト指向でも有効」なのか。
個人的な感想として、メソッドにprivateもprotectedもいらない、メソッドにあるのは
「書き換えてはいけないメソッド」ではなくて
「書き換えない方が良いメソッド」だと思ってる
なら、必要な時に柔軟に書き換え可能にメソッドは出来ていないといけない
変数もそれと同じ

書式は全然関係ないよ。可読性の許すままに書けば良いと思う
242デフォルトの名無しさん:2005/12/09(金) 10:04:07
>>238
だとしたら一般的なプログラマとやらは、プロトタイプベースの有効性ってやつを
どんなコードを読んで理解したと言えるのだろう。
243デフォルトの名無しさん:2006/01/02(月) 15:18:35
__parent__って何で__proto__とかと同じくらいの場所にいるのか
分かる人いますか
244デフォルトの名無しさん:2006/01/02(月) 15:32:39
プロトタイプベースであることが有効だったかというと疑問だなあ
>>236 にもあるけど、規模がある程度を超えると
結局クラスっぽくし、モジュール化したくなる。

流行ったのは、(1)型を意識させない(2)宣言不要の2点に尽きると思う。
VBがシロウトに受け入れられやすかったのと同じ。

ただ、この2点は製品強度のソフトウェアを作るには障害でしかないんだよね。
独りでオナニーしたり、ソッコーでRADするには便利だけど、
そこまででしかない。

今の流行を「プロトタイプベースが受け入れられた」
とするのは妄想に近いと思うよ。
245デフォルトの名無しさん:2006/01/02(月) 16:05:54
>>244
妄想っつーと語弊があるよ、どっちかって言うと誤解じゃないかな。

この手の柔らかい言語系っていうのはプロトタイプとかRADとかパッと片づける必要のあるものには
とても向いているのは確かな事だし、自分が一番不思議でならないのはRADやプロトタイプを生成して
プレゼンをしたあとで、その構成を分析、再構築する橋渡しをもったIDEなりなんなりが何故存在しないのかって事なのだけど
スレ違いは承知で聞きたいよ。(ECMAに限らないんだよね、あらゆるスクリプト処理系付きプログラムにいえる事だと思うんよ)
246241:2006/01/02(月) 17:20:27
>>245
>この手の柔らかい言語系っていうのはプロトタイプとかRADとかパッと片づける必要のあるものにはとても向いているのは確かな事だし
個人的には、JavaScriptではここを理解できたのを結構評価して居るんだけどね

「まずはRubyでプロトタイプ、製品はJavaで開発(泣」
みたいに同じ物の作り直しをするのって格好悪いことをやめさせるためには
プロトタイプを拡張して、そのまま製品に持って行ける言語がいるとおもうんだよね
スクリプト系の使い捨て言語が、あとでプロジェクトを巨大化させるのに向かないのって

1.名前の衝突などの、部品強度の問題
2.スクリプト言語故の、実行速度等のパフォーマンスの問題

自分はここらへんは、IDEで解決される部分よりも、言語使用で解決される部分の方が大きいと思う
247デフォルトの名無しさん:2006/01/02(月) 17:37:06
そういう言語は過去に Common Lisp, Smalltalk, Dylan, OCaml 等ありましたが、
いまいち時流に乗れずじまい。Perl の Parrot に期待するも、何時リリースされる事か。
248デフォルトの名無しさん:2006/01/02(月) 21:37:11
プロトタイプベース言語とは関係なくなってきたな笑

>>246
>プロトタイプを拡張して、
>そのまま製品に持って行ける言語がいるとおもうんだよね

似たようなことをやろうとして沈没したプロジェクトを3つほど見た。
原因は言語云々ではなく、仕様書・設計書を誰も作らずズルズル続けたから。
まあ論外っぽいが。

ところが、仕様書や設計書がしっかりしていたら、
プロトタイプを使い続ける必然性は薄いんだよね。
どう作ればいいかわかってるから。

となると、枯れた実装があり、周辺ライブラリが多く、
人員を動員しやすいというほうがファクタとして強くなる。
今はおそらくJava。
249デフォルトの名無しさん:2006/01/02(月) 23:41:58
プロトタイプピングは問題空間を探索して視野を広げることだから、
その成果物であるプロトタイプが十分良い解には必ずしもならないよね。
プロトタイプを必ず捨てるよりは捨てなくてもいいかもしれない方がよい
だろうが、それがどれくらい嬉しいかっつーと最初の探索でその後拡張しても
問題にならない解が得られる可能性が、
使い捨て言語の使い勝手と捨てると割り切ってプロトタイピングすることによる
探索速度を諦めることにどれくらいひきあうかという問題になるんじゃね?
賢くて探索初期に十分良い解が得られる可能性がかなり高い
(それってプロトタイピングする意味が半分なくなりそうな気も)人か、
アホで使い捨て言語使ってもろくにプロトタイピングが進まない人か、
なんじゃないかなあ、嬉しいのは。
250デフォルトの名無しさん:2006/01/03(火) 00:01:33
> 最初の探索でその後拡張しても
> 問題にならない解が得られる可能性

その可能性がある程度分かってるのにプロトやるってのは

> 探索初期に十分良い解が得られる可能性がかなり高い
> (それってプロトタイピングする意味が半分なくなりそうな気も)

これと同じくおかしな話

> アホで使い捨て言語使ってもろくにプロトタイピングが進まない

アホだったら何やっても同じだから(笑)
251デフォルトの名無しさん:2006/01/03(火) 00:13:14
>>246
Common Lisp Scheme スレの 82 に良い事書いてあったんで引用。
ちなみに Common Lisp は名前空間もそこそこの実行速度も備えているよ。

>本当に複雑な問題っていうのは、まず (hoge ムッチャ複雑な処理)
>の中身をどうすべきか、っていうのが事前にわからない。
>問題の本質自体が見えていない。そこが出発点。
>
>とりあえず手元には生のデータがある。その生のデータをいじくりながら、
>まず問題を記述するための単語にあたるパターンを見つけ出す。もちろん
>最初はそれが正しいかどうかはわからないが、仮説を立てて、生データを
>単語にまとめるルーチンを書いてみる。それがmogeやjojo。
>
>その単語を色々組み立てて、問題を記述できる句が構成できないどうかを
>調べてみる。句できたらそれを色々組み合わせて文ができないか調べてみる。
>その途中で、最初のパターン化が間違ってたことがわかり、下に戻る
>こともある。ときには、多少間違っていてもそれを使って無理矢理全体を
>組んで様子を見てみると、どこがおかしいかわかる場合もある。そうやって
>粘土をこねたりLegoを組み立てるみたいに作っていくと、最後に
>
>「(hoge ムッチャ複雑な処理の中に
>(poge まぁ複雑な処理の中に(moge 単純な処理))
>(jo まぁ複雑な処理の中に(jojo 単純な処理)))」
>
>と書けば問題がきちんと記述できることがわかる。これがわかれば後は簡単だ。
>君の言うように、どんな言語にだって落とせる。もっともこれが分かった時点で
>Lispの場合は既に動くプログラムが手元にあるわけだが。
>まあ、大抵はこのあとリファクタリングして整理してゆくがね。
>
>君は、答えが分かった後どうするかって話をしている。難しいのはその前だ。
252デフォルトの名無しさん:2006/01/03(火) 04:42:31
Lispは

> 枯れた実装があり、周辺ライブラリが多く、
> 人員を動員しやすい

を満たしませんね。
253デフォルトの名無しさん:2006/01/03(火) 05:26:21
>>252
別に Lisp の宣伝をしに来た訳ではなくて、別の言語でも良いんだけど、
プロトタイピングから納品出来る所まで一気通貫でいける世界もあるんじゃ
ないかと。ちなみに一行目は ACL とか LispWorks とか商用の環境がある。
254デフォルトの名無しさん:2006/01/03(火) 13:15:13
で、プロトタイプベース言語云々はどうなったのかな
255デフォルトの名無しさん:2006/01/03(火) 13:27:38
OpenLaszlo はどうなん?
256デフォルトの名無しさん:2006/01/03(火) 23:43:18
>>255
あれECMAScriptなの?
257デフォルトの名無しさん:2006/01/04(水) 23:36:11
>>243
SpiderMonkey か?
__parent__ は 変更不可で読み出し専用の [[ProtoType]]
評価順は __proto__ が先だったと思う。自信ないけど
258デフォルトの名無しさん:2006/01/04(水) 23:41:40
>>257
レス感謝。
あれから調べてみたけどobsoleteみたいっすね・・・
とりあえず使わない方向でやってみます
259デフォルトの名無しさん:2006/01/05(木) 14:35:04
>>257
__proto__はプロトタイプチェーン、
__parent__はスコープチェーンと理解していたけど違うのかな?

obj.propertyとしたときpropertyはプロトタイプチェーンをさかのぼって調べられる、
a = variableとしたときvariableはスコープチェーンをさかのぼって調べられるといった具合に。

要は[[Scope]]じゃないの?
260デフォルトの名無しさん:2006/01/06(金) 14:07:26
くだ質ですみませんが、以下の違いについて説明してもらえると助かります。
あるオブジェクト階層の中にいる状態で
[this.parent.xyz]と[parent.xyz]

[this.x]と[x]
は何か違いがあるのですか?
ちなみに
[var x = 10;]と[x = 10;]
の違いはわかっているつもりです。
(前者が局所変数で後者が大域変数ですよね?)
個人的に明示的なthisの指定には何か抵抗があるのですが。。。
ちなみに自分はC/C++/Javaプログラマです。
お手数ですがよろしくお願いします。
261デフォルトの名無しさん:2006/01/06(金) 14:37:59
明示もクソもjavascriptではオブジェクトのメンバにアクセスするときにthisを使います。
使わないやつは全部タダの変数です。
262260:2006/01/06(金) 14:47:10
>>261
ありがとうございます。それでは約束として覚えることにします。
263デフォルトの名無しさん:2006/01/07(土) 12:49:50
xが通常の変数なら
this.xはクラス変数
と言う風に理解すれば、実用上問題ないと思うんだ、…俺は。
264デフォルトの名無しさん:2006/01/07(土) 13:10:45
クラス変数?
インスタンス変数じゃねーの?
265デフォルトの名無しさん:2006/01/07(土) 14:28:09
ECMAScriptではクラスという概念を持ち出さないほうがいい気がするが…
266デフォルトの名無しさん:2006/01/07(土) 14:51:02
もしかしてthisがキーワードじゃないってこと?
267デフォルトの名無しさん:2006/01/07(土) 15:06:59
>>266
この会話の流れでどうしたらその発想が出てくるのか不思議だ
268デフォルトの名無しさん:2006/01/07(土) 20:07:05
ECMAScriptはSchemeの流れからくるものだからね。
やっぱりLispが原点だね。
269デフォルトの名無しさん:2006/01/08(日) 15:44:24
ところで、JavaScriptって、教科書に恵まれない不幸が良く語られるんだけど
http://ja.wikibooks.org/wiki/JavaScript
せっかく、舞台もあることだし、だらだらみんなで完成させない?
270デフォルトの名無しさん:2006/01/08(日) 16:48:49
お前が1人でやれ
271デフォルトの名無しさん:2006/01/08(日) 18:22:22
経験少ないからどこまでやれるか分からんけどちょと参加してみたい
272デフォルトの名無しさん:2006/01/09(月) 00:35:49
>>271
書ける所からダラダラかいていけばいいんじゃないかな?
内容のおかしい所があったら、誰か直してくれるよ
273デフォルトの名無しさん:2006/01/09(月) 01:13:07
>>269
Javascriptが独立した言語でないとか書いてあるんだけど。
HTMLとの連携はDOMでやるんでなかったかな。
初心者を囲い込むためにわざとかいてるのかな・・・。
274デフォルトの名無しさん:2006/01/09(月) 01:47:26
・JavaScript:入門 プログラムの流れ
書いてみたがスタブにする方法がわからない・・・。
275デフォルトの名無しさん:2006/01/09(月) 15:32:01
>>236

http://kengai.my.land.to/h/?%28ClickableTooltip%29prototype.js%B4%D8%CF%A2%A5%E1%A5%E2

 しかし、その実態は、 クロージャーや高階関数を持った本格的な関数型言語であり、 「プロトタイプ指向」という
最新のパラダイムの上に設計された、 かなりとんがったプログラミング言語です。
 ですから、JavaScriptを、言語仕様が本来持つ可能性全開で使用したら、 普通のプログラマには、
ついていけなくなります。 特に、「プロトタイプ指向」という考え方は、パターンも決まってなくて、 これを
ダイレクトに使用したら、 その柔軟性が裏目に出て、理解しにくいコードが書けてしまいます。
 prototype.jsは、そういう自由度が高いけど使いこなすのが難しいJavaScriptという言語を使い、大半のプログラマ(特に
Javaプログラマかな)が慣れ親しんだ、 クラスベースのオブジェクト指向でコードを書くためのフレームワークです。
276デフォルトの名無しさん:2006/01/09(月) 15:38:22
Wikipediaは何かを一生懸命書いても
しばらくたつと張り切ったアフォによってわけのわからん編集をされて
そのうち跡形も無くなるよ。

Wikipediaに間違った記事や低質な記事が多いのは、
正しいことを書く奴がいないからじゃなくてアフォの破壊活動のせい。
ググった方がが明らかにましな情報が早く手に入るという現実。

アフォとの無駄な論争を続けないと記事が維持できなくなるし、
その結果浅い内容の記事ばっかりになる(実際そうでしょ?)

本業の哲学者が哲学のエントリに説明文を書いたけれど、
しばらくするとアフォが正義感で編集してデムパ化したり
構成が分けわかんなくなったりして跡形もなくなっていたという話とかね。
277デフォルトの名無しさん:2006/01/09(月) 15:49:01
>>276
質うんぬん以前に、情報量が少なすぎるページの方が多い罠。
278デフォルトの名無しさん:2006/01/09(月) 15:52:19
>>277
276にも書いたように、情報量の多い力作を書き込んでも、
そのあとアフォに破壊されて長生きしないことが多いようです。
なので、砂で作った城みたいに作っては崩されの繰り返しで、
情報量が少なすぎるページが多いと。
279デフォルトの名無しさん:2006/01/09(月) 16:01:27
プロトタイプベースの言語が受け入れられつつある。

なんて書いたらもうタイヘン(笑)
280デフォルトの名無しさん:2006/01/09(月) 17:50:08
>276 >278
問題が出るならwikiじゃなくてもいいわけで
281デフォルトの名無しさん:2006/01/10(火) 00:30:08
>>280
というかwiki使ってありがたいところは
ライセンスがGFDLってところなんだよね。

根本的に、後々の再掲載とか改変とかが自由なライセンスだから
後々ダメになっても、誰かがとっていたバックアップで、自分なりに仕切り直せる
Webを徘徊した人間なら「え”−、あのサイト消えちゃったのぉ!」
と一度は思うモノだから、後に残るフォーマットであるというのは大きい
282デフォルトの名無しさん:2006/01/10(火) 01:14:53
>>281
Wikipediaな、"というかwikiつかって・・・"だとwiki全般になっちゃうよ
283デフォルトの名無しさん:2006/01/10(火) 17:12:00
わざわざwikipediaを使わなくても、他に自前でwikiを立ち上げればいいじゃない。
俺はやらないけど。
284デフォルトの名無しさん:2006/01/20(金) 22:06:23
ECMAScript独特のプログラミングパラダイムを学ぶ良い参考文献/参考URLはありませんか?
和文英文問いません
285デフォルトの名無しさん:2006/01/20(金) 22:14:58
プロトタイプベースでググってみ
286デフォルトの名無しさん:2006/01/20(金) 22:22:37
>>284
JavaScript
http://www.amazon.co.jp/exec/obidos/ASIN/4873110270/
こういうのは卒業しているレベルですかね。

>>114にあげた
Object Hierarchy and Inheritance in JavaScript
http://www.cs.rit.edu/~atk/JavaScript/manuals/jsobj/
はJavascriptでOOを始めるにあたって参考になった。
287デフォルトの名無しさん:2006/01/20(金) 23:51:42
>>286
上の書籍程度は理解しています。

JavaScriptで従来のObject Orientedなプログラムを組むのは、
間違いだと思っていて、無名関数などを使ったECMAScriptならではの
組み方があるのではないかな、と

というわけで、>>285さんありがとうございました
288デフォルトの名無しさん:2006/01/21(土) 00:11:46
今のECMAScriptは普通にクラスあるけど?
289285:2006/01/21(土) 00:52:58
ラムダとかの高階関数なら関数型言語かな
俺はHaskell覚えてるとこだけど
手続き型はお腹いっぱい
290デフォルトの名無しさん:2006/01/21(土) 10:49:00
> JavaScriptで従来のObject Orientedなプログラムを組むのは、
> 間違いだと思っていて

勉強しなおしたほうがいいんじゃないか
291デフォルトの名無しさん:2006/01/21(土) 14:46:29
>>290
お前がな…
292デフォルトの名無しさん:2006/01/21(土) 15:17:32
>>290は何を言いたいんだろう?
293デフォルトの名無しさん:2006/01/21(土) 18:10:50
> 間違いだと思っていて
294デフォルトの名無しさん:2006/01/21(土) 18:57:52
「奥が深い症候群」に陥りそうな奴だな
295デフォルトの名無しさん:2006/01/22(日) 16:59:21
奥が深い症候群!出た!奥が深い症候群出た!得意技!奥が深い症候群出た!
奥が深い症候群!これ!奥が深い症候群出たよ〜〜!
296デフォルトの名無しさん:2006/01/22(日) 17:32:38
これか

ttp://namazu.org/~satoru/misc/bad-knowhow.html
>それは、そういった使いにくいソフトウェアを使いこなす事に対して、
>「奥が深い」といって喜びを見出す「奥が深い症候群」によるものである。
297デフォルトの名無しさん:2006/01/24(火) 15:51:29
× 従来のObject Orientedなプログラムを組むのは、間違いだと思っていて、
○ 従来のクラスベースOOなプログラムを組むのは、間違いだと思っていて、

では?
298デフォルトの名無しさん:2006/01/24(火) 17:05:42
WebProgのAjaxスレでJSONの話題が出てるけど
おもしろいねコレ
299デフォルトの名無しさん:2006/01/26(木) 18:17:27
>>287
こういう議論もあるよ。

ttp://tiki.is.os-omicron.org/tiki.cgi?c=v&p=JavaScript%2F%BB%A8%C3%CC

ページの後ろのほうの「JavaScriptとコンストラクタとレキシカルクロージャ」
という部分が参考になるかも。
300デフォルトの名無しさん:2006/01/27(金) 21:31:12
ActionScript3.0まじすげえぞ。
ECMAScript最先端。
301デフォルトの名無しさん:2006/01/27(金) 21:40:22
>>300
詳しく
302デフォルトの名無しさん:2006/01/31(火) 18:16:56
ActionScriptのエンジンを他のアプリで使ったりできないの?
303デフォルトの名無しさん:2006/01/31(火) 22:38:37
アクションスクリプトコンパイラがフリーであるから
それ使ってなんとかしろ
304デフォルトの名無しさん:2006/02/01(水) 03:49:21
>>303
捜したんだけど見つからない、どこ?
305デフォルトの名無しさん:2006/02/01(水) 11:21:54
もしアクションスクリプトインタプリタっていうのが存在するなら
アプリからエンジンとして使えるような気がするけど。

>>303
アクションスクリプトコンパイラって、もしかして.swfじゃなくて
.exeを生成するの?

306デフォルトの名無しさん:2006/02/01(水) 15:23:32
307デフォルトの名無しさん:2006/02/01(水) 22:07:05
ActionScriptの仕様って糞だな
308304:2006/02/01(水) 23:42:52
dx
309デフォルトの名無しさん:2006/02/02(木) 05:14:47
>>307
具体的には?
310デフォルトの名無しさん:2006/02/02(木) 07:33:09
>>306 のサイトみればわかるよ
311デフォルトの名無しさん:2006/02/02(木) 14:42:05
mtascで開発可能なのはActionScript2.0までだぞ?
ActionScript3.0はえらいことになっとる。
312デフォルトの名無しさん:2006/02/02(木) 22:11:26
>>311
具体的には?
313デフォルトの名無しさん:2006/02/02(木) 23:14:47
>>306 のサイトみればわかるよ
314デフォルトの名無しさん:2006/02/03(金) 20:33:50
mtascで開発可能なのはActionScript2.0までだぞ?
ActionScript3.0はえらいことになっとる。
315デフォルトの名無しさん:2006/02/04(土) 02:16:48
だからなんだ低能が
316デフォルトの名無しさん:2006/02/04(土) 22:01:16
ネタにマジレスかっこ悪い
317デフォルトの名無しさん:2006/02/05(日) 00:11:47
ネタにマジレスかっこ悪いレスかっこ悪い
318デフォルトの名無しさん:2006/02/05(日) 00:20:00
ネタにマジレスかっこ悪いレスかっこ悪いラモスが悪い
319デフォルトの名無しさん:2006/02/05(日) 06:45:22
>>318
帰れ
320デフォルトの名無しさん:2006/02/05(日) 09:29:12
>>318
括弧だらけですか?Lispですか?
321デフォルトの名無しさん:2006/03/02(木) 09:56:12
その場だけじゃなくいろいろ使われるようなオブジェクトって作る?
フレームワーク的なモノを作ろうとかいう意図があれば別だけど
普段は、ビルトインのオブジェクトを使うばっかりで、
連想配列以上の使い方をするオブジェクトを作ることがほとんどないんだけど、どう?
322デフォルトの名無しさん:2006/03/02(木) 09:58:16
あと、継承(プロトタイプの設定)とか全然しない。普段する?
323デフォルトの名無しさん:2006/03/02(木) 12:54:51
>>321
フレームワークと言うか、ライブラリみたいなもの作るかどうかじゃないか?
隠蔽、名前空間がないからアレだけど >>299 先参照

使い捨てスクリプトみたいに書くなら汎用オブジェクトは当然いらんわな
324デフォルトの名無しさん:2006/03/02(木) 18:24:39
というか、コンストラクタ自体全然書かない。
325デフォルトの名無しさん:2006/03/02(木) 19:07:23
罵詈針書くね。息を吸うように。
326デフォルトの名無しさん:2006/03/03(金) 21:38:32
罵詈針書くね。息を吐くように。
327デフォルトの名無しさん:2006/03/04(土) 00:13:04
>>321
俺もそうだな。
大規模な物作るとWebページ重くなると思って。
prototype.jsとかも、dom.jsとか切り分けられたのを必要に応じて読み込んでる。
(だって、HTMLの内容が6kなのに、ページノスクリプトで40kとか読ませられないだろ)

他の環境だと、ライブラリの読み込みっていうのが機能として備わっていないから
(WSHは有る程度出来るか)
育てるのもなんかなって気がするしねぇ。
328デフォルトの名無しさん:2006/03/04(土) 02:34:19
Rhinoで、JavaのStringのインスタンスを、
JavaScriptの普通の文字列オブジェクトにするにはどうすればよいでしょうか。

附属の ScriptingJava.html の最後に違うから気をつけてと書いてあるし、
Javaから取得したらみんなJavaのStringオブジェクトなので、実際ハマりまくりなのですが、
どうやって普通の文字列オブジェクトにすればよいでしょうか。
329デフォルトの名無しさん:2006/03/04(土) 07:53:14
javaString = new java.lang.String("test");
jsString = String(javaString);
javaString.length()
jsString.length

じゃダメなの?
330328:2006/03/04(土) 13:14:45
ありがとうございます。
なんか、くだ質以下でしたね…。
でも、その仕様ってどっかに書いてあります?当然すぎて書かれる必要なし?
331329:2006/03/04(土) 16:40:53
ECMAScriptの仕様とrhino付属のドキュメント、
"Scripting Java"から自明ではないでしょうか。
332デフォルトの名無しさん:2006/03/04(土) 17:16:15
それは自明とは言わない。
333デフォルトの名無しさん:2006/03/04(土) 17:38:12
俺こないだスレで答えてる時に思わず「じめぇ」なんて喘いじゃったんだよ。
そしたら「それは自明とは言わない」とか言われてさ。
「もう一回言ってごらん。じゃないとオチンチンいじめてあげないよ?」って。
もうね、じめぇ連呼したよ。
「馬鹿じゃないの?馬鹿じゃないの?」って罵られながらヤられた。
Mならわかると思うけど、正直最高だった。
で、それ以来じめぇプレイがスタンダードになったんだけど、
おかげで彼女のS度が上昇しちゃったみたいでさ、
つい先日「ほら、こういう事されるの大好きでしょ?じめぇ?」なんてナメた口調で言いながら
(省略されました…全てを読むにはじめぇ連呼してください)
334329:2006/03/04(土) 17:52:25
このあんパン、まじウメェ
335デフォルトの名無しさん:2006/03/04(土) 20:41:32
ぱんすきやねん!
336デフォルトの名無しさん:2006/03/04(土) 21:02:44
ぱんおいしいねん! だアホ知らんならしゃべんな。口臭い
337デフォルトの名無しさん:2006/03/11(土) 21:44:40
ちょっとスレタイからズレているかもしれないけど質問です

Mozillaで使えるJavascriptのメソッド、プロパティの一覧って、何処かで分かりませんかね
昔Netscape社のサイトで英語で見かけた気がするんだけど、消えたのかな?
338デフォルトの名無しさん:2006/03/11(土) 21:54:10
ツール→DOM Inspectorで逐一見るってのはだめ?
339デフォルトの名無しさん:2006/03/12(日) 02:25:00
340デフォルトの名無しさん:2006/03/12(日) 04:34:29
>>339
心遣いありがとう…

でも、今探しているのは
window.location
とかのブラウザ独自のプロパティなんだ…
「ないはずはないだろー」
と思いながら探しているんだけど、わからないまま炸裂に迷っていて…
341デフォルトの名無しさん:2006/03/12(日) 04:37:58
for でプロパティ・メソッド列挙できるのって IE だけなんだっけ?
342デフォルトの名無しさん:2006/03/12(日) 04:54:02
>>340
> でも、今探しているのは
> window.location
> とかのブラウザ独自のプロパティなんだ…

英語読めない人?
>>339にあるじゃん…
343デフォルトの名無しさん:2006/03/12(日) 04:54:39
344340:2006/03/12(日) 05:36:21
>342
orz

…はい、英語苦手な人です。
なんというか、すいませんでした。
345デフォルトの名無しさん:2006/03/12(日) 08:07:04
> 炸裂に迷っていて…
理解しない
346デフォルトの名無しさん:2006/03/12(日) 20:53:52
>>341
プロパティが DontEnum 属性を持ってなければどの処理系でも列挙されるはず。
347デフォルトの名無しさん:2006/03/17(金) 09:21:28
基本的なこと聞いていいすか

ecmascript って、Array のメソッド少ないし、
まして Hash は Object で擬似的に再現ていう
パターンが多いわけですが、なんかめっちゃ
不便じゃないですか?

もっと便利なメソッドがほしいんですが、みんな
そういうのは自分で書いてるの?

例えば Hash の中に特定の値があるかどうか
っつーのを一発で確認したい(Ruby の has_value?
みたいなやつ)とか、そういうことない?

それとも公開されてるライブラリを探すのが普通?
348デフォルトの名無しさん:2006/03/17(金) 09:34:12
>>347
API が少ない=不便 という思考なら、不便です。
その考え方だと C なんて物凄く不便ですね。

例えば Hashtable くらいなら大抵のプログラマは自分で簡単に書けるわけですが、
もちろん元からあればそれに越したことはないし、確かに不便かもね。

例えば JavaScript なら、prototype.js という悪名高いライブラリがありますし、
そういうのを利用するのもありだとは思いますが、
ECMAScript に限った公開ライブラリって聞いたことが無い気がします。
349デフォルトの名無しさん:2006/03/17(金) 09:54:02
>>348
スクリプト言語と C を比較しても意味ないと思いますが…
まぁ少なくともいま求めている機能がないという意味では
不便ですね。

実際には JScript で管理用のツールを書くというのが目的
なので JScript で動くライブラリであればいいんですが、
まぁもうちょっと調べてみます。一から書くという選択肢は、
あくまで管理用のツールですからできればパスしたいです。
350デフォルトの名無しさん:2006/03/17(金) 09:54:44 BE:66235032-
> 例えば JavaScript なら、prototype.js という悪名高いライブラリがありますし、

どういう所が悪名高いのか具体的に教えてください
351デフォルトの名無しさん:2006/03/17(金) 10:18:36
>>347
> 例えば Hash の中に特定の値があるかどうかっつーのを
> 一発で確認したい(Ruby の has_value?みたいなやつ)とか、

typeof(a[key]) != 'undefined'
352デフォルトの名無しさん:2006/03/17(金) 10:28:56
>>350
最近JavaScriptスレで的確な突込みがありました。スレ違いなのでそちらでどうぞ
353デフォルトの名無しさん:2006/03/17(金) 10:32:58
スレ違いだからってリンクくらい示してくださってもよろしくてよ。
354デフォルトの名無しさん:2006/03/17(金) 10:39:45
そうね
+ JavaScript の質問用スレッド vol.46 +
http://pc8.2ch.net/test/read.cgi/hp/1142242220/

Prototype.js で検索すればいい感じです
355デフォルトの名無しさん:2006/03/17(金) 10:49:03
>>351
それは key であって value じゃないように見えるんだが
356デフォルトの名無しさん:2006/03/17(金) 18:49:26
Array なら some が Firefox 1.5 以上に入ったけどな。
http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Objects:Array:some
357デフォルトの名無しさん:2006/03/18(土) 11:53:16
>>347(=>>354?)
つうか、foreachとかhasとかくらい、
数行で書いてArray.prorotypeに追加すりゃいいじゃん。

ってそれがいやなのか?
358デフォルトの名無しさん:2006/03/18(土) 12:26:57
>>354
大して悪評ないじゃん
64bitに対応したトリップ検索プログラムありますか?

TextSS のWindowsXP(Professional)64bit化おながいします

もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?

360デフォルトの名無しさん:2006/03/18(土) 19:51:51
// ↑のようなのがスレが落ちる原因になるんだよね
361デフォルトの名無しさん:2006/03/18(土) 20:12:25
Prototype.jsなんてものがあったのか
362デフォルトの名無しさん:2006/03/19(日) 19:17:19
>>361
あー、中身ひどいから特に気にしなくていいよそれ。
363デフォルトの名無しさん:2006/03/19(日) 20:48:03
prototype.jsを見て変数名等に$が使えるのを初めて知った。
364デフォルトの名無しさん:2006/03/19(日) 20:51:01
document.getElementByIdの置き換えメソッドだっけか
目新しさのほかに、意味論的ネーミングセンスに脱帽したよ
nameやtagNameはそのままなんかな?
365デフォルトの名無しさん:2006/03/19(日) 22:32:39
いや Ruby ですから
366デフォルトの名無しさん:2006/03/19(日) 22:47:11
Perl風に変数名の前に$付けたり
BASIC風に文字列変数の後に$付けたりの
ようにできるわけだな。
367デフォルトの名無しさん:2006/03/20(月) 15:52:50
>>366
$は識別子の先頭にしかつけられない

Identifier ::
  ReservedWord でない IdentifierName
IdentifierName ::
  IdentifierStart
  IdentifierName IdentifierPart
IdentifierStart ::
  UnicodeLetter
  $        ← ココ
  _
  \ UnicodeEscapeSequence
IdentifierPart ::
  IdentifierStart
  UnicodeCombiningMark
  UnicodeDigit
  UnicodeConnectorPunctuation
  \ UnicodeEscapeSequence

368デフォルトの名無しさん:2006/03/20(月) 16:05:12
>>367
「嘘!?」と思ったら嘘じゃないか。
IndentifierPartにもIndentifierStartが含まれとるだろ。
369デフォルトの名無しさん:2006/03/20(月) 16:16:47
ネーミングセンスが悪すぎると思う。> IdentifierStart
370デフォルトの名無しさん:2006/03/20(月) 16:25:53
IdentifierStartは、識別子の開始文字に使える文字ってことで、
開始にしか来てはいけないと言うことじゃないよね。
371デフォルトの名無しさん:2006/03/20(月) 21:45:35
>367の介錯だと_も先頭にしか付けられないぞ
372デフォルトの名無しさん:2006/03/20(月) 22:13:02
>>367
IdentifierStart ::
  ...
  \ UnicodeEscapeSequence
IdentifierPart ::
  IdentifierStart
  ...
  \ UnicodeEscapeSequence

ぱっと見て「ヘタだなぁ」と思う定義
373デフォルトの名無しさん:2006/03/20(月) 22:20:11
洞察力のある >>372 が良い例を示してくれ
374372:2006/03/21(火) 19:25:00
すいません。
ちょっとしたミスを、鬼の首を取ったかのように騒いでしまった
こんなバカな自分では、良い例を示すことが出来ませんでした。

本当に申し訳ありませんでした。
375デフォルトの名無しさん:2006/03/22(水) 00:11:09
ECMAScriptの実装をオープンソースでやってるのってどんなのがありますか?
376デフォルトの名無しさん:2006/03/22(水) 00:43:59
>>375
SpiderMonkey
Rhino
Narcissus
KJS
JavaScriptCore
DMDScript
NJS
SEE
ixlib
QSA
DMonkey
FESI
Scriptonite
xwt
JANET

ttp://en.wikipedia.org/wiki/ECMAScript#External_links
からそれっぽいライセンスのものを拾ってきただけなので間違いがあるかも。
377デフォルトの名無しさん:2006/03/22(水) 00:46:28
RhinoはJava6で標準入りしたから大出世だな
これにより名実ともにJavaScriptになった
378375:2006/03/22(水) 03:00:27
>>376
おおー!THXです!
調べてみます。
379375:2006/03/22(水) 21:26:27
>>376
おおー!THXです!
調べてみます。
380デフォルトの名無しさん:2006/03/24(金) 09:01:53
ECMAScriptの仕様だと
function () { 〜 }();
とか
(function () { 〜 })();
ってパースエラー出るべき?
381デフォルトの名無しさん:2006/03/24(金) 11:05:32
>>376
できるだけ幅広いプラットフォームで動いて
かつ継続してメンテされてるものっていうと
結局 SpiderMonkey  と Rhino くらいしかないなぁ

haXe
http://haxe.org/

は面白いと思うけど、実行環境はちょっと限られるな
flash player か Apache module になるみたい
Windows バイナリもあるからヒトバシラーの出現期待
382デフォルトの名無しさん:2006/03/24(金) 18:45:06
(function () { 〜 })(); の方はエラーにならない
383デフォルトの名無しさん:2006/03/24(金) 19:22:09
>>382の書き方ってどういうメリットがあるの?
384デフォルトの名無しさん:2006/03/24(金) 19:33:42
関数の内外でスコープが違うからそれを利用できることかな
385デフォルトの名無しさん:2006/03/24(金) 19:46:50
なるほど。変数名のバッティングを避けたりとか、そんな感じですか。
386デフォルトの名無しさん:2006/03/24(金) 20:03:49
つか関数名考えるのメンドいじゃん
387デフォルトの名無しさん:2006/03/24(金) 20:14:05
>>386
それは違うw
388デフォルトの名無しさん:2006/03/24(金) 21:01:54
JavaScriptは単純ブロックがないから
cとかだと
{
int i;
ほげほげ
}
でいいんだけどね
389デフォルトの名無しさん:2006/03/24(金) 21:39:46
暗黙のグローバル宣言回避にも使えるな
390デフォルトの名無しさん:2006/03/24(金) 21:45:01
>>389
なるほど

D:\>type foo.js
(function() { a = 123; print(a); })();

D:\>jsc /nologo foo.js
foo.js(1,15) : error JS1135: 変数 'a' が宣言されていません。

D:\>
391デフォルトの名無しさん:2006/03/24(金) 21:47:42
変数を宣言しないで使えるように /fast- 付けるべきだったか

D:\>jsc /nologo /fast- foo.js
foo.js(1,15) : warning JS1135: 変数 'a' が宣言されていません。
392デフォルトの名無しさん:2006/03/24(金) 21:52:21
>>391
そのjscってのが何かしらんが、
ECMAScriptはオプションで言語仕様が変わるのか?VBじゃあるまいし。
393デフォルトの名無しさん:2006/03/24(金) 22:00:00
.NET Frameworkがインストールされていれば(SDKがインストールされてなくても)
通常↓にjscがある。
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\jsc.exe
旧バージョンは
C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\jsc.exe
C:\WINDOWS\Microsoft.NET\Framework\v1.0.3705\jsc.exe
394デフォルトの名無しさん:2006/03/24(金) 23:44:01
>>392
はぁ?そのVBってのはあまり知らんが、
VBはオプションで言語仕様が変わるのか?jscじゃあるまいし。
395デフォルトの名無しさん:2006/03/25(土) 06:29:14
>>393
MSの製品かい
それってECMAScriptの仕様に準拠してる保証ってあったりする?
396デフォルトの名無しさん:2006/03/25(土) 08:28:57
深く考えないと幸せになれる壷みたいな製品です。
397デフォルトの名無しさん:2006/03/25(土) 08:38:17
398デフォルトの名無しさん:2006/03/25(土) 14:08:43
再帰とかのために、関数自身を表すselfみたいなキーワード欲しいな。
でないと無名関数で再帰ができない。
(function (n) { return n <= 1 ? 1 : n * self(n - 1); })(5); // 即席で5の階乗を計算
399デフォルトの名無しさん:2006/03/25(土) 14:25:51
無名関数を再帰するテクニックはどこかで見かけた気がする
400デフォルトの名無しさん:2006/03/25(土) 14:28:30
arguments.callee か
401デフォルトの名無しさん:2006/03/25(土) 14:38:23
ECMAScriptだと初期の規格ではあったのに
クラス化を導入してから無かったことにされたな<再起コール
プログラムを組む上でよろしくない副作用があるのかも
402デフォルトの名無しさん:2006/03/25(土) 15:28:11
不動点オペレータY使って。
http://www.ice.nuie.nagoya-u.ac.jp/~h003149b/lang/fix.html
403デフォルトの名無しさん:2006/03/25(土) 16:30:41
>>398-400
ECMAScriptは無名関数に名前を付けられるよ

(function func(n) { return n<=1 ? 1 : n*func(n-1) } )(5);

スコープは関数の中だけだったはず
404デフォルトの名無しさん:2006/03/25(土) 16:45:02
名前が付いてたら無名ではないような
405デフォルトの名無しさん:2006/03/25(土) 16:57:04
>>404
いやその通りだが、仮の名前という意味合いなんだろうか…
一般的に名前付き無名関数と呼ばれている奴ってこれだよね
406デフォルトの名無しさん:2006/03/25(土) 16:59:12
題名のない音楽会のようなものか
407デフォルトの名無しさん:2006/03/25(土) 17:07:33
寒いよ
408デフォルトの名無しさん:2006/03/25(土) 17:37:07
>>403
名前つけるならこういうふうに書きたいです。
function func(n) { return n<=1 ? 1 : n*func(n-1) }
fact(5);
409デフォルトの名無しさん:2006/03/25(土) 17:51:24
>>408
じゃあそうかけよ。死ねよ
410デフォルトの名無しさん:2006/03/25(土) 17:56:12
うん
411デフォルトの名無しさん:2006/03/26(日) 02:01:52
無名関数という物を、分かってないな。
412デフォルトの名無しさん:2006/03/26(日) 07:27:44
>>405
一般的に「名前付き無名関数」と呼ばれるものなんてない。(あったらネタでしょ・・・)
ただ関数「式」に名前をつけるのは、たしかに再帰に使うのが目的らしいね(ECMA-2.6.2 13のNoteのとこ)。

function func(n) { 〜 } // 関数「宣言」
 ・・・ 「func」は外のスコープに影響あり
(function func(n) { 〜 }) // 関数「式」
 ・・・ 「func」は外のスコープに影響なし

>>403
> スコープは関数の中だけだったはず
ってのが、funcという識別子が関数内のスコープになるって意味ならおk。

ただ話の流れは「宣言」か「式」かを問題にしてるわけではなくて、無名関数(名前のない関数)でどう再帰を扱うかってとこだったわけで、名前をつけた時点で意味ないじゃんって話。
413デフォルトの名無しさん:2006/03/26(日) 08:43:45
>>412
Yの話が出てるだろうが
414デフォルトの名無しさん:2006/03/26(日) 08:46:03
話はでてるけど誰もレスしてないからスルーされてるのかとおもた
415デフォルトの名無しさん:2006/03/26(日) 09:31:41
function Y(func) {
  return (function (self) {
    return func(function () {
      return self(self).apply(this, arguments);
    });
  })(function (self) {
    return func(function () {
      return self(self).apply(this, arguments);
    });
  });
}

Y(function (self) {
  return function (n) {
    return n <= 1 ? 1 : n * self(n - 1);
  }
})(5);

ECMAScript的には禿しく実用性低そうです。
再帰のためのキーワードやプロパティがあったほうがまし。
416デフォルトの名無しさん:2006/03/26(日) 09:37:38
関数式に名前つければいいじゃない
417デフォルトの名無しさん:2006/03/26(日) 09:44:30
まあね。
ただ、中で再帰する関数オブジェクトをさっと作ってreturnしたり引数として渡したり等をするときに、名前つけずにすんだら楽なのにと思うことはある。
別に、死んでも名前をつけたくないとか言ってるわけじゃない。
418デフォルトの名無しさん:2006/03/26(日) 09:53:57
再帰は言語仕様で実現可能なことだから、正直どうでもいいな
419デフォルトの名無しさん:2006/03/26(日) 09:55:25
>>415のY関数が解読できません orz
self(self).apply のあたりの意味を教えてもらえませんか?
420デフォルトの名無しさん:2006/03/26(日) 10:03:44
arguments.callee で FA じゃないのか?
421デフォルトの名無しさん:2006/03/26(日) 10:10:34
>>420
なんか>>401に無かったことにされたって書いてあるから、最新バージョンのECMAScriptでどっちが正しいのかわからん。
誰かソースおねがい
422デフォルトの名無しさん:2006/03/26(日) 10:29:36
JScript .NET にはあるみたいだけどあんま関係ないか。
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jscript7/html/jsprocallee.asp

3rd → 4th に当たっては基本的に後方互換性が保たれると思ってたんだけどそんなことは無いってこと?
今あるコードをいちいち見直す必要があるとなるとモチベーションが大分下がるのだけれど。
423デフォルトの名無しさん:2006/03/26(日) 10:36:54
JScript .NETにあるにはあっても /fast- だし。
424デフォルトの名無しさん:2006/03/26(日) 10:43:18
そもそも arguments が /fast- だべさ
425デフォルトの名無しさん:2006/03/26(日) 10:45:24
名前つき無名関数は日本語として意味的におかしいが、一般的な言い方。
lambdaを無名関数と略す人にとっては、named lambdaは名前つき無名関数となる。
426デフォルトの名無しさん:2006/03/26(日) 10:53:55
named-anonymous-function - Google 検索
http://www.google.co.jp/search?hl=ja&q=named-anonymous-function

まぁこんなの使ってる奴は居ないわな
427デフォルトの名無しさん:2006/03/26(日) 11:08:52
>>425
lambda → ラムダ ≒ 関数式
anonymous function → 無名関数
では?
428デフォルトの名無しさん:2006/03/26(日) 12:43:06
Lispの世界だとlabelって言うよ。
ラムダ式で再帰書くために使う名前。
429デフォルトの名無しさん:2006/03/26(日) 12:44:09
>>419
無理やり名前つけて冗長に書くとこんな感じか

function Y(_wrapper) {
    function self(_self) {
        function myself() {
            var _myfunc = _self(_self);
            return _myfunc.apply(this, arguments)
        }
        return _wrapper(myself);
    }
    return self(self);
}

function wrapper(_myself) {
    function myfunc(n) {
        return n <= 1 ? 1 : n * _myself(n - 1);
    }
    return myfunc;
}

var _myfunc = Y(wrapper);
_myfunc(5);

Y(wrapper)はself(self)を返し、self(self)はwrapper(myself)を返し、wrapper(myself)はmyfuncを返す。
結果的にY(wrapper)はmyfuncを返す。
で、再帰するときmyself()のなかでmyfunc.apply(this, arguments)してるから、間接的に再帰が実現する。

まーこのコードが使用されることはありえないと思うけどねー
430デフォルトの名無しさん:2006/03/26(日) 13:05:07
今更だが嫌がらせのようなスレタイのつけ方だな。
431デフォルトの名無しさん:2006/03/26(日) 14:15:20
>>429
ありがとう。読みやすくなったよ
432デフォルトの名無しさん:2006/03/26(日) 15:03:19
>>430
前スレを見れば理由が解る。
JavaScriptをスレタイに入れたらどうなるか。
433デフォルトの名無しさん:2006/03/28(火) 10:44:17
ECMAScript(ECMA262-3rd)のJavaCC用文法ファイルを作ってみたが、
初めて文法を書いたので正しいのかどうか自信がもてない。
434デフォルトの名無しさん:2006/03/28(火) 11:46:58
2つのCFGの等価性を完全に決定するアルゴリズムは存在しないことが証明されてるからね。
いろんな入力で試行錯誤するしか道はないかも。

つーかECMAの仕様に書かれてるBNFってすでにLALR(1)だからそのまま書けば何の心配もないんじゃないの?
ってそんな単純な話じゃないのか・・・
435デフォルトの名無しさん:2006/03/31(金) 22:24:53
LALRなんですか。
JavaCCはLL(k)だから、そのまま書いたら色々な場所でコンフリクトが起きてしまって。
436434:2006/03/31(金) 22:32:29
>>435
あぁ、JavaCCってLLだったのか。
てっきりLALRあたりかと思ってた。スマソ。
437デフォルトの名無しさん:2006/03/32(土) 11:19:44
ここはJFlex+cupで。
438デフォルトの名無しさん:2006/04/19(水) 01:59:18
Rhinoで、-opt -1 か -opt -2 で末尾再帰が最適化されるちゅうからやってみた。
が、全然効かない。
と思ったら、再帰の呼び出し文がreturn文でないとダメらしい。
return文にしたら無限に再帰できた。
439デフォルトの名無しさん:2006/04/19(水) 17:56:24
>>438
ソース気本
440デフォルトの名無しさん:2006/04/19(水) 17:57:30
あ、情報元の方ね。コード貰ってもしゃーない
441デフォルトの名無しさん:2006/04/19(水) 19:01:28
>>438
そもそも「再帰の呼び出し文がreturn文」じゃないと末尾再帰と言わないのでは?
442デフォルトの名無しさん:2006/04/20(木) 03:29:51
>>440
末尾呼び出しの除去(⊃再帰最適化)については「継続 rhino」で具具ってくれ
"return "が要るってのは俺実験。

>>441
そうなん?返り値なし関数だったんで、ただ"return "の7文字追加しただけの違いなんだけど。
443デフォルトの名無しさん:2006/04/20(木) 04:38:53
あたりまえ
444デフォルトの名無しさん:2006/04/20(木) 08:12:41
なぜ当たり前なの?
445デフォルトの名無しさん:2006/04/20(木) 10:39:00
関数末尾に return 文がない場合、関数は値 undefined を返しますよね。
つまり再帰呼び出しから帰ってきて、undefined を返す必要がありますよね。
それが再帰呼び出しの継続になっています、って説明でよろしいですか?
446デフォルトの名無しさん:2006/04/20(木) 10:52:16
アホで済まんけど、
それってreturnがあっても同じじゃないの?
447デフォルトの名無しさん:2006/04/20(木) 11:44:43
おれは説明できるほど極めてないけど...

function f() {
  if (hoge) { return }
  f()
}

は、次のものと等価

function f() {
  if (hoge) { return }
  unused_return_value = f()
  return undefined
}

関数の返り値を受け取り、評価しないといけないので、
関数呼び出しのスタックを省略できない。だと思う。
448デフォルトの名無しさん:2006/04/20(木) 11:53:24
まあ、処理系がそこまでやってくれないというだけでしょ?
Schemeみたいに仕様で末尾ジャンプが決まっているわけでもないし。
449デフォルトの名無しさん:2006/04/20(木) 14:18:20
言語仕様の制限じゃないのか。
戻り値がないことになっている関数でundefined以外の戻り値をとれたらまずいだろう。
C等のように呼び側のコンパイル時に静的にチェックできるなら
関数側はセマンティクスを破っても構わんだろうが、動的にチェックするしかない
言語ではそうはいかんのじゃないか。
450デフォルトの名無しさん:2006/04/20(木) 21:43:30
単に一行づつ解釈してるから末尾かどうか、その行終って次読むまで分からないんじゃ?
451デフォルトの名無しさん:2006/04/20(木) 23:56:32
BASICじゃあるまいし……
452デフォルトの名無しさん:2006/04/21(金) 01:08:06
>>449
末尾再帰だけなら、

> 戻り値がないことになっている関数でundefined以外の戻り値をとれたらまずいだろう。

は起きないんじゃない? 末尾ジャンプがあると、

function f() {
g() // returnがないので、undefinedを返す
}

int g () {
return 1;
}

を末尾ジャンプしちゃうと、1が返っちゃう。
453デフォルトの名無しさん:2006/04/21(金) 02:50:48
何が言いたいのか不明
454デフォルトの名無しさん:2006/04/21(金) 09:29:55
>>452
んーいや、f の中の g() は末尾呼び出しじゃないです。
関数は必ず値を返し、
関数から抜けるところで return が記述されていない場合については
return undefined; が省略されている、
という風に考えた方がすっきりすると思います。
そう考えればこの場合について末尾呼び出しにならないのが判るかと思います。
455デフォルトの名無しさん:2006/04/21(金) 11:00:09
>>454
>>452は同じ事を言ってる気がするが。
要するに、呼び出しから帰ってきたあと、
スタックに誰かが勝手に返値を置いちゃってるかも知れないから、
それをundefinedで上書きしてやらなくちゃいけない、って事では?
456452:2006/04/22(土) 09:00:22
一言で言うと、帰り値の型が違うし、末尾でもない。
457デフォルトの名無しさん:2006/05/04(木) 06:49:15
Lisp in C's Clothing...
http://www.crockford.com/javascript/

今さらだけど、e4x って便利そうね。
ttp://web.paulownia.jp/script/ajax/e4x.html
458デフォルトの名無しさん:2006/05/23(火) 23:19:26
誰かjsdocの普及のためにドキュメントの邦訳とかやってくれないかな
俺がやると中学生レベルにしかならない…
459デフォルトの名無しさん:2006/05/24(水) 01:14:15
460デフォルトの名無しさん:2006/05/24(水) 02:28:34
なんでPerlなんだよ。
JSでやれよJSで…ってファイル読む事すらできねえw
461デフォルトの名無しさん:2006/05/24(水) 02:47:39
>460
気持ちはわかる

自分はちょっと触って分かったらすぐにほおってしまったんだけど
人のソース読んでいるとちょくちょく見かけるんだよ
それじゃあ、解説書いておおいに広めるのもありかな…と
462デフォルトの名無しさん:2006/05/24(水) 02:54:59
Perlはイヤだし(俺が解んないだけだが)、バリバリのクラス指向だし、ちょっとな…。

Ecmaはなんで、最低限の標準ライブラリを作らないんだろ。
必須の標準じゃなくてもオプションでもいいのに。
463デフォルトの名無しさん:2006/05/24(水) 03:14:59
せめてincludeみたいな仕組みが欲しい
464デフォルトの名無しさん:2006/05/24(水) 07:25:09
>>462
ECMAは持ち込まれた規格を承認するだけの小さな組織です。

Netscape社が崩壊して、W3Cがweb専門なのが、
ライブラリがいつまでも増えない理由かと。

そんなわけで自分はGroovyに浮気始めてしまった...
465デフォルトの名無しさん:2006/05/24(水) 08:09:50
RhinoならFile IOできるでないの
466デフォルトの名無しさん:2006/05/24(水) 13:05:48
JScriptでもできるべ。
467デフォルトの名無しさん:2006/05/24(水) 13:06:42
>>464
> ECMAは持ち込まれた規格を承認するだけの小さな組織です。

よし。持ち込め。頼んだ。
468デフォルトの名無しさん:2006/05/24(水) 13:17:08
includeだってできるが特定実装固有じゃなくて、標準で、って話だろ。
標準がないから、Web以外のツールが出てこないんじゃないか?
469デフォルトの名無しさん:2006/05/24(水) 13:31:49
4th Edition はもう標準化されたんじゃないの?
470デフォルトの名無しさん:2006/05/24(水) 14:00:29
たとえば、
var f = new File("data.txt","r");
var str;
while ((str = f.readLine()) != null){
  //ごにょごにょ
}
とかできたらいいなぁって話?
471デフォルトの名無しさん:2006/05/24(水) 15:38:05
JScriptでできる
472デフォルトの名無しさん:2006/05/24(水) 16:12:22
jcp.orgのJSRには、groovyもbeanshellもあるよね。
javascriptは1.6からJREに含まれるから、
JVMは結構たくさんのscript言語のplatformになるねえ。
473デフォルトの名無しさん:2006/05/31(水) 16:05:34
そんな独自の勝手言語なんていらね
IronPythonが羨ましい
474デフォルトの名無しさん:2006/06/01(木) 11:16:12
>>472
こいつらはクラスライブラリが共通だけど、
言語が違うってちょっと面白いアプローチだね。
475デフォルトの名無しさん:2006/06/01(木) 19:55:19
Web製作板のスレッドにも書いたんだが、連想配列欲しいのって俺だけ?
476デフォルトの名無しさん:2006/06/01(木) 20:03:58
はい?普通にサポートされてるじゃん。
this["hoge"] = mogera;
477デフォルトの名無しさん:2006/06/01(木) 20:05:46
てかスクリプト専用のセキュリティマネージャを設定できなきゃ怖くてマクロに使えないよ
専用セキュリティマネージャが組み込まれるなら、ゲームライブラリに実装したい
478デフォルトの名無しさん:2006/06/01(木) 20:18:17
>>476
キーが"constructor"とか"__proto__"とかだったらおかしなことになる。
それに、キーに文字列しかとれない。
479デフォルトの名無しさん:2006/06/01(木) 23:22:12
>>478
予約語くらいあきらめろよ。語彙の乏しい奴だな。

クラス名・変数名に迷ったら書き込むスレ。Part7
http://pc8.2ch.net/test/read.cgi/tech/1144978008/
480デフォルトの名無しさん:2006/06/01(木) 23:30:23
なんだこのヘタな煽りは。
481デフォルトの名無しさん:2006/06/01(木) 23:47:15
>>479
スクリプト書く時に決まってたらいいんだが、そうもいかない。
他からデータを取ってきて連想配列に入れておく、ということをするときに困る
482デフォルトの名無しさん:2006/06/02(金) 00:50:42
>>478,481
>キーに文字列しかとれない。
配列のキーは実数、関数、真偽値、オブジェクト、なんでも使えないか?

>他からデータを取ってきて連想配列に入れておく、ということをするときに困る
キーが文字列の時は適当なaffixをつければ済む話じゃないのか?
483デフォルトの名無しさん:2006/06/02(金) 01:08:04
>>482
マジで?
ar = [];
a = new Object();
b = new Object();
ar[a] = 'AAA';
ar[b] = 'BBB';
alert(ar[a]); // => BBB
alert(ar[b]); // => BBB
ってなったんだが(Firefox)

>適当なaffix
別にいいんだが、それっていわゆるバッドノウハウじゃね?
484デフォルトの名無しさん:2006/06/02(金) 01:34:24
>>483
文字列型や文字列オブジェクト以外がキーになった場合文字列化されて比較されるからそうなる.
var hash = new Object()
var objKey = new Object()
hash[objKey] = 'aaa'
alert(hash[objKey]) // => 'aaa'
hash["[object Object]"] = 'bbb'
alert(hash["[object Object]"]) // => 'bbb'
alert(hash[objKey]) // => 'bbb'
そういうわけでオブジェクトのプロパティは厳密な連想配列の代りにはならない.
485デフォルトの名無しさん:2006/06/02(金) 01:54:48
>>484
>文字列型や文字列オブジェクト以外がキーになった場合文字列化されて比較される
はい、そういう意味で「キーに文字列しかとれない」と書いたんです。
486484:2006/06/02(金) 11:13:52
他にもユーザが Object.prototype にメソッド追加した場合に必ずEmumerableなプロパティ
になるので for(key in hash){ alert(hash[key])} みたいに回した場合にメソッドも表示される
とかの問題もある…

オブジェクトは簡易的な連想配列としてしか使えない.そんなわけでブラウザ用
の JavaScript ライブラリとかだとわざわざ Hash オブジェクトが用意されていたりする.
487デフォルトの名無しさん:2006/06/02(金) 11:49:56
>>484,486
うげ、そうだったのか、しらんかったよ。

>>483
すまん、自分で試したときは問題なく使えると思ったのだが、
単にオブジェクトといっても"[object]"と"[object Object]"で
キーが違っていたのでたまたまうまくいっただけだった。
488デフォルトの名無しさん:2006/06/02(金) 12:31:54
元の>>475に戻ると
Hashオブジェクトにもoperator[]が使いたいって事なのかな?

Javaみたいにcollection objectにfor文使えるようになったり。
489デフォルトの名無しさん:2006/06/02(金) 19:07:19
>>488
Hashオブジェクトってprototype.jsの?
いや、Arrayみたいに気軽に使えたらなって([]使えたらさらにいいけど)。
490デフォルトの名無しさん:2006/06/02(金) 22:01:22
文字列ハッシュで探索するのと自前二分木探索とではどっちが早くなりますか?
主にWebブラウザの実装系あたりで試された方いらしたら教えてください。
491デフォルトの名無しさん:2006/06/02(金) 23:39:19
>>489
気軽ってのは具体的にはどういうこと?
492デフォルトの名無しさん:2006/06/02(金) 23:56:23
>>491
単にビルトインオブジェクトにあったらいいなという話です。
493デフォルトの名無しさん:2006/06/03(土) 01:55:14
>>478
おかしなことになるってどうなんの?
494デフォルトの名無しさん:2006/06/04(日) 02:02:01
>>493
設定してないのに(変な)値が返ってくる
495デフォルトの名無しさん:2006/06/04(日) 02:22:11
>>492
お前氏ねや
496デフォルトの名無しさん:2006/06/04(日) 02:27:02
>>494
サンプルコード見せてもらえます?
497デフォルトの名無しさん:2006/06/04(日) 02:33:53
>>486にあるだろ
498デフォルトの名無しさん:2006/06/04(日) 03:12:51
>>495
なんでそんなこと言うんですか><

>>496
hash = new Object(); //ハッシュのつもり
key = '__proto__';
foo = hash[key];

普通のHashなら、fooはnullとかundefinedになるはずなのに…
499デフォルトの名無しさん:2006/06/04(日) 11:21:18
>498
foo = hash.__proto__ と同義になるんだよな確か
500デフォルトの名無しさん:2006/06/04(日) 12:36:08
javascriptでは、
object.属性名とobject['属性名']が同じだからね。

JavaのELも。
501デフォルトの名無しさん:2006/06/04(日) 17:40:44
js> hash = new Object();
[object Object]
js> key = '__proto__';
__proto__
js> foo = hash[key];
js> typeof(foo);
undefined
502デフォルトの名無しさん:2006/06/04(日) 19:35:55
>>501
__proto__ってECMA-262の規格にはないのね。
Firefoxでしか動かしてないから知らんかったw
constructorとかtoStringならどうよ
503デフォルトの名無しさん:2006/06/04(日) 19:43:17
Object.getOwnProperty = function (obj, key) {
 if (obj.hasOwnProperty(key))
  return obj[key];
}
504デフォルトの名無しさん:2006/06/04(日) 20:38:19
js> hash = new Object();
[object Object]
js> var keys = ['_proto_', 'toString', 'constructor'];
js> for (i in keys) {
key = keys[i];
print ('hash["' + key + '"] is ' + typeof(hash[key]));
}
hash["_proto_"] is undefined
hash["toString"] is function
hash["constructor"] is function
505デフォルトの名無しさん:2006/06/07(水) 20:58:25
新版 ES4 仕様予定 出ただよ
http://developer.mozilla.org/es4/

ざっとしか見てないが、prototype 属性 が変ったり
for each 構文が増えてたり、他色々
506デフォルトの名無しさん:2006/06/07(水) 21:03:59
そういやXMLの構文埋め込みってこっちが先立ったけど
Java7のが早く普及しそうな気がしないでもないw
507デフォルトの名無しさん:2006/06/10(土) 07:04:57
this って動的スコープなのね。
508デフォルトの名無しさん:2006/06/10(土) 10:42:22
>>506
まあ、SEやEE版JVMはjavascript込みだから、
処理系の数は常に同じくらい。(携帯やJavaCardを抜くと)
後はweb以外で使って貰えるかどうか。
509デフォルトの名無しさん:2006/06/18(日) 03:58:36
prototype.jsで

function foo( request ){ }
new Ajax.Request( "ファイル名",{ method:'get',onComplete:foo });

と書いたんだけど、IE、Mozillaだと動いて、Operaだと動かないんだけど
だれか対処法って知っている…かな?
510509:2006/06/18(日) 04:01:58
ああ、書き足りないかもしれないけど
Opera(8.0)だと、foo関数が呼ばれて、実行されてくれないんです
代りに
new Ajax.Request( "ファイル名",{ method:'get',onComplete:foo() });
と書くと呼ばれてくれるんだけど、今度は、引数:request に何も代入されない…
511509:2006/06/18(日) 10:03:44
…ゴメン
Operaバージョンアップしたら無事動いた
んー、なんか怖いけど一応解決したと言うことで(汗
512デフォルトの名無しさん:2006/06/18(日) 16:08:36
Operaなんかムシムシw
513デフォルトの名無しさん:2006/06/19(月) 08:12:35
>>512
糞はWeb板でも逝け。キリ番のくせに。
514デフォルトの名無しさん:2006/06/30(金) 00:24:17
>>513

糞とか言ってるお前、生産効率悪そう...
515デフォルトの名無しさん:2006/06/30(金) 19:30:24
生産効率が幾ら良くたって使われなかったら何の意味も無い
516デフォルトの名無しさん:2006/07/05(水) 01:38:06
Java6からRhino外されちゃうの?
517デフォルトの名無しさん:2006/07/05(水) 01:50:18
>>516
ソースは?
518デフォルトの名無しさん:2006/07/05(水) 01:55:12
他スレで見た。
519デフォルトの名無しさん:2006/07/05(水) 09:54:11
http://pc8.2ch.net/test/read.cgi/tech/1147881822/487
> b90でRhino削除されてないか?

これか?

>>516は飛躍しすぎでは?
不確定情報だし、buildだし。
520269:2006/07/13(木) 12:41:27
http://ja.wikibooks.org/wiki/JavaScript
まー、なんだかんだで誰も手をつけてこないみたいなので、一人で始めることにした…
ダラダラ書いて…、多分ライブラリ書く前に文法周り終わったところで気力が付きそうな予感だけど
読んで、何か思うところ合ったらカキコよろ
521デフォルトの名無しさん:2006/07/13(木) 15:15:41
>>520
>文字列(String)型、数字(Number)型、真偽値(Boolean)型、配列(Array)型、
>オブジェクト(Object)型、Null型、Undefined型。

Array はオブジェクト型だろう…
参考 ttp://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/8_Types.html
522デフォルトの名無しさん:2006/07/13(木) 15:35:43
>>520
サンクス。俺のような文句はたれるが自分からは行動しない人間にとってあんたは仏だ。

で一通り読んでみたんだがブラウザ上のJavaScriptに偏りすぎてるな。
ブラウザ上で実行する場合に焦点を当てるのはかまわんが
「JavaScriptというひとつの完結したプログラミング言語ではなく、
HTMLと組み合わさって初めて有効となるプログラミング言語です。」
というのは明らかに言いすぎだと思うぞ。
WSHとかRhinoとかの立つ瀬がなくなるじゃないか。

「オペレータと表現」という題が意味不明。
「演算子」で統一しないのかという以前に内容とあってない。

> i = i+1;
> i += 1;
> i++;
厳密に言えばiが数値のときi = i+1と同じ意味なのは++iのほうだがな。

なんか個人的にはdocument.writeで結果を出力する方法を教えたら
後はCore JavaScript 1.5 Guideを訳して与えたほうが
いいような気もするんだがまあがんばってくれ。
ttp://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Guide
523デフォルトの名無しさん:2006/07/14(金) 00:52:57
>>522
> 厳密に言えばiが数値のときi = i+1と同じ意味なのは++iのほうだがな。

式じゃなくて文だからいいんじゃないの?
まあ演算子の章に書いてあるんだけど…
524デフォルトの名無しさん:2006/07/14(金) 00:53:22
ECMAScriptの仕様書を訳すのもいいと思う。
いくらwikiという道具があっても仕様書をちゃんと読んでない、個人の変な思い込みを
いちいち修正してくれる暇人はそういないぞ。

少なくとも俺はこんなのを直したくはない(他にも盛りだくさんだがとりあえず基本スタイルより抜粋)
> * ソースコードは他のプログラムと同様に上から下の方向へと実行される。
> * 必ず一行ごとの終わりに「;」(セミコロン)をつけなければならない。
> * 変数宣言に型は必要ない。var 変数名;で行う。しかし、これは型変換が自由なのであって、数値や文字、配列の区別が無いわけではない。
> * イベントに処理(主に関数)を指定することによって、イベント発生時にその処理が行われる。
> * ソースコードはHTMLファイル内に書き込むか、外部ファイル(*.js)をロードすることができる。

はっきり言って駄目な点を挙げたらきりがないので、心機一転翻訳で頑張ってほしい。
行動力だけは認めるので。
525デフォルトの名無しさん:2006/07/14(金) 01:12:59
526520:2006/07/14(金) 02:28:33
とりあえすはまず…
「多様なご意見、ありがとうございます(ぺこり」

>WSHとかRhinoとかの立つ瀬がなくなるじゃないか。
今のところHelloWorld〜関数あたりまでが自分の書いたところで、他は以前から書き残してあった所なんだけど
…やっぱ、勝手に書き換えるのは悪いよなぁ
と控えていたのですが、一応オリジナルも手元に保存しておいて、書いた人から文句が出れば元に戻す事で勘弁してもらおうかなぁ

ここからは良いわけじみているかな
> 厳密に言えばiが数値のときi = i+1と同じ意味なのは++iのほうだがな。
間違いは書けないですよね、是非直させていただきます。
> Array はオブジェクト型だろう…
うん吊ってくる、書いてるとき気にしていませんでしたorz。
527デフォルトの名無しさん:2006/07/14(金) 04:58:05
旧い版を復元する必要が出たら、履歴からできるでしょ?
528デフォルトの名無しさん:2006/07/14(金) 13:39:33
function () {
print("a");
}();

こういう風に名前を付けないで実行したいんだけどできないかな。
529デフォルトの名無しさん:2006/07/14(金) 13:59:43
(function () {
print("a");
})();
530デフォルトの名無しさん:2006/07/14(金) 14:21:59
(function () {
print("a");
}());
これが動くのはどうしてなんだろう
531デフォルトの名無しさん:2006/07/14(金) 14:52:16
>>530
ttp://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/
をよく読め。(特に11章)
カッコ内でfunctionキーワードが現れたらそれは
FuctionDeclarationではなくFunctionExpressionの始まりとみなされる。
532デフォルトの名無しさん:2006/07/14(金) 16:17:40
>>531
わかった。読んでないけどサンクス
533デフォルトの名無しさん:2006/07/14(金) 17:13:27
("a")
534デフォルトの名無しさん:2006/07/14(金) 17:19:20
("p")
535デフォルトの名無しさん:2006/07/14(金) 18:58:02
('A')
536デフォルトの名無しさん:2006/07/14(金) 20:37:07
>>529
できた!ども!
537520:2006/07/15(土) 22:35:47
JavaScript講座なんだけど、関数あたりまで書いたとして、その次あたりで
・三項演算子等の文法面を補足する
・オブジェクト指向の「さわり」を教える
…どっちが良いだろ
まぁ、ハッシュと関数オブジェクトをごちゃまぜにしたトリッキーなコードを最後に持っていくのが目標…
538デフォルトの名無しさん:2006/07/16(日) 02:52:09
>>537
スタンスとかターゲットによる。
チュートリアル的要素を持った入門書寄りにするなら、そこで三項演算子なんて
教えてどうするっていう話。
逆にリファレンス的にじっくり語るつもりなら、章立てをしっかりして
類似項目を近づけた方がいいだろうから、オブジェクトは後回しになるかな。

とりあえず迷うなら、下書き程度にでも両方書いてみれば?
直接干渉する内容じゃないし、並べてみれば自ずと順序が見えてくると思う。
539デフォルトの名無しさん:2006/07/31(月) 10:55:12
NJS使ってるんだが

$ js -e "print(eval('{foo:1}'))"
undefined
$ js -e "print(eval('({foo:1})'))"
[object Object]

この挙動はどういうことなの?
540デフォルトの名無しさん:2006/07/31(月) 11:27:39
>>539
そりゃおかしいな。
上の例は"1"が表示されるべきだ。
下の例はあってるよ。
541デフォルトの名無しさん:2006/07/31(月) 11:57:41
>>540
上は1が正しいのか。
よく分からないから詳しくお願いします。
542540:2006/07/31(月) 13:43:02
>>539
ttp://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/を読め

{foo:1}
という文字列はevalによってProgramとして解析される。
そしてその文脈ではこの文字列はExpressionStatement "1;"
(セミコロンは自動挿入による)を含むLabelledStatementを含むBlockとして評価される。
この場合、evalの返り値はProgramの評価結果であり、
Programの評価結果はBlockの評価結果であり、
Blockの評価結果はLabelledStatementの評価結果であり、
LabelledStatementの評価結果はExpressionStatementの評価結果であり、
ExpressionStatementの評価結果は1(正確にはCompletion型(normal, 1, empty))なので
"1"が表示されるべきである。

……と思ったんだがLabelledStatementに対する
アルゴリズムがステップリストとしては載ってないな。
「L を Identifier と等しいとして Statement 評価の結果が (break, V, L)」
の場合以外はStatementの評価結果がそのまま
LabelledStatementの評価結果になるということでいいんだよな?
543デフォルトの名無しさん:2006/07/31(月) 19:05:39
オブジェクトリテラルじゃなくブロックになるのか。
丁寧に説明してくれて感謝です。
544デフォルトの名無しさん:2006/07/31(月) 21:57:38
rhino で試したところそれぞれ 1 と [object Object] になるね
545デフォルトの名無しさん:2006/08/03(木) 14:24:42
セミコロンの自動挿入で思い出したんだが
以前Web政策板のJavaScriptスレで

function f() {} // FunctionBodyが空

は許されないんじゃないかという話があってさ。
ttp://user.ftth100.com/mirrorhenkan/javascript/read.php/1120728555/n610-618

そこでは結局セミコロンの自動挿入によって空文になるから
OKじゃないかってことで話が終わったんだが、
改めて仕様書読み直してみると
セミコロンの挿入によって空文ができる場合は
セミコロンは挿入されないってあるんだよね。
ということはやっぱりFunctionBodyが空なのはエラーじゃないの?
これは仕様書のミスなのかそれとも仕様としては空なのは
いけないけど実装が気を利かせてエラーにしてないだけなのか。
546デフォルトの名無しさん:2006/08/04(金) 00:35:48
仕様書だと確かに空はダメっぽいね
でもECMA-262 が出る前から function() {} って書き方は使われてたからなぁ
547デフォルトの名無しさん:2006/08/04(金) 01:06:34
あー、KJSだとFunctionBodyが空の場合は"not in spec"と明記してあるわ。
ttp://lxr.kde.org/source/KDE/kdelibs/kjs/grammar.y#831

少なくともKJSの場合はFunctionBodyが空でもいいのは
仕様書のミスじゃなくて実装側の拡張ってことになってるのね。
548デフォルトの名無しさん:2006/08/09(水) 23:41:02
ECMA-262 第3版に8進数のリテラルって無いのか
549デフォルトの名無しさん:2006/08/13(日) 06:06:43
SpiderMonkey1.5で日本語処理やってみたいんですけど、
普通にビルドして普通に使うだけだと

print("あ".length); //=> 3

となります(ソースはUTF8)。
バイト単位でなく、文字単位で処理することはできるでしょうか?
ソースの関数名を見るとutf8は扱えそうなんですが。
レベルの低い質問で恐縮です。

LANG=ja_JP.UTF-8 LC_ALL=ja_JP.UTF-8 js -f test.js


とはやってみましたが、変わらずです。
550デフォルトの名無しさん:2006/08/21(月) 17:02:47
たまーに、このすれで連想配列について話題が出るけど、
JScript なら、new ActiveXObject("Scripting.Dictionary"); で連想配列使えるよね。
551デフォルトの名無しさん:2006/08/21(月) 21:03:59
わざわざ ActiveXObject 使う意味ってあるのか?
552デフォルトの名無しさん:2006/08/22(火) 10:10:12
JScript でファイルの読み書きをしようと思ったら、ActiveX を使わざるを得ないし。
なら、ActiveX 使ってどんどん便利にしていけばいいべ。
Dictionary で連想配列や、DynaCall/DynaCallWrapper で WinAPI にアクセスするとか。
553デフォルトの名無しさん:2006/08/22(火) 13:00:55
ActiveXObject("Scripting.Dictionary")を使うまでもないのでは
554デフォルトの名無しさん:2006/08/22(火) 20:57:04
までもない。
555デフォルトの名無しさん:2006/08/22(火) 21:49:39
Itemsメソッドを使いたいならScripting.Dictionaryを使うかも。
556デフォルトの名無しさん:2006/08/23(水) 00:43:03
連想配列で Items 使う利点……?
557デフォルトの名無しさん:2006/08/25(金) 12:22:20
JSON っていうか、ECMAScript の仕様上↓の文は有効ですか?

var json = {
 "multiline" : "
   改行付き
   テキストデータ
  "
};
558デフォルトの名無しさん:2006/08/25(金) 12:26:12
var json = {
 "multiline" : " \n\
   改行付き\n\
   テキストデータ\n\
  "
};

なら有効。ただし行末の\の直後で改行すること。
559デフォルトの名無しさん:2006/08/25(金) 13:07:51
>>559
ありがと
560デフォルトの名無しさん:2006/08/25(金) 17:21:56
>>558
嘘はよくない。ECMAScriptの仕様上その文は無効だぞ。
まあJavaScriptでもJScriptでも有効だけど。
561デフォルトの名無しさん:2006/08/26(土) 16:52:34
>>549
今更だが、SpiderMonkey 付属の js shell だと
Unicode 対応 API を使ってないのでダメ。
JS_CompileUCScript, JS_EvaluateUCScript を使うように直せばいいが、
対応してるのは UTF-16(LE) なので
UTF-8 への変換関数も自前で用意する必要がある。
562デフォルトの名無しさん:2006/09/01(金) 14:34:23
>>561
ありがとうございます。
ちょっと自分の技量を超えますね。
Zaurus向けにコンパイルしたのですが、
試作、学習用途のみで実用はしないので、あきらめることにします。
Blogに転載させてくださいね。
563デフォルトの名無しさん:2006/09/16(土) 19:09:42
if (obj.foo) obj.foo();
else obj.bar();
ってしたいときに、
(obj.foo || obj.bar)();
ってするのは正しいの?

(obj.foo || obj.bar) が評価されるときGetValueが呼び出されているから
Reference型にはならず、呼び出すときにthisがnullになってしまって正しく動かない。
と仕様からは読み取ったんだが、いくつかの処理系では最初のと同じように動いてる
564デフォルトの名無しさん:2006/09/16(土) 19:50:07
仕様に正しくないと書いてあるなら、正しくないよ。
565デフォルトの名無しさん:2006/09/16(土) 22:29:19
>>564
俺の解釈が間違ってるんじゃないかと思って聞いてみた
566デフォルトの名無しさん:2006/09/17(日) 00:12:05
>>563
thisはnullじゃなくてそのときのグローバルコンテクストになるんじゃないの。
正しくないという言い方は変な感じがするが、同義にはならないね。

ところで
> いくつかの処理系では最初のと同じように動いてる
っていう変な実装はどれ?
567デフォルトの名無しさん:2006/09/17(日) 00:32:26
Fxだとそうなるな
568デフォルトの名無しさん:2006/09/17(日) 01:18:52
ECMAScript4では、(obj.foo || obj.bar)()は狙いどおりの動作をする
569デフォルトの名無しさん:2006/09/17(日) 01:46:33
>>568
狙い通りっていうのはthisがobjになるということか?
すまんがそのECMAScript4ではというのが書かれているソースを教えてくれ。
570デフォルトの名無しさん:2006/09/17(日) 02:22:29
ぐぐれや
571デフォルトの名無しさん:2006/09/17(日) 02:36:32
俺の証拠はお前が探せってか。
せめてどういうキーワードでぐぐれば先頭近くに出てくるか示すべきでは。
572デフォルトの名無しさん:2006/09/17(日) 02:43:05
それが人にモノを尋ねる態度か?
敬語が使えるようになってから出直してこい。
573デフォルトの名無しさん:2006/09/17(日) 07:22:05
>>566
http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/11_Expressions.html#CallExpression
を読んでnullになると思ったんだが…。もう一度読んでみる
あ、俺もFirefoxで確認した

>>568
そうなのか。そのほうが便利だな。

>>569
http://www.mozilla.org/js/language/es4/index.html
かな? 長くてまだよく見てないけど
574デフォルトの名無しさん:2006/09/17(日) 12:57:21
http://www.mozilla.org/js/language/es4/
http://developer.mozilla.org/es4/ のどっちを読んでも
LogicalOrExpressionを評価する際には
各オペランドにreadReferenceが適用されて、
その結果値だけが返るからthisは
(obj.foo...)()がトップレベルで実行されていれば
グローバルオブジェクトになるような気がするのだが。

…とここまで書いて気づいた。ひょっとして
class Clazz() {
575デフォルトの名無しさん:2006/09/17(日) 12:59:39
書きかけで失敬。

…とここまで書いて気づいた。ひょっとして
class Clazz() {
 function foo() {...}
 function bar() {...}
}
var obj = new Clazz();
という場合のことを言ってる?
それだったら確かにthisはobjになる罠。
576デフォルトの名無しさん:2006/09/17(日) 13:00:42
再び失敬。classの識別子の後に()はいらなかったな。
577デフォルトの名無しさん:2006/09/17(日) 15:16:01
>>572
プッ www
578デフォルトの名無しさん:2006/09/17(日) 19:00:27
こっちのreadReferenceはReferenceを返すから>>563のobjの情報は保持されるみたいだよ。
http://developer.mozilla.org/es4/spec/chapter_4_fundamental_concepts.html#reading
ってことは、(obj.foo || obj.bar)()の最終的な呼び出しの時に渡されるthisはちゃんとobjになる。

こっちのreadReferenceはObject(つまり値)を返しちゃってるね。
http://www.mozilla.org/js/language/es4/formal/parser-semantics.html#V-readReference
そしてORを評価するときにそのObjectを返してる。
http://www.mozilla.org/js/language/es4/formal/parser-semantics.html#N-LogicalOrExpression

ECMA262でも>>563の言う通り、ORを評価するときにGetValueが呼ばれて、Referenceではなく値([[Get]]の結果)を返しちゃってるから、(obj.foo || obj.bar)()に渡されるthisはnullになるらしい。
http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/8_Types.html#section-8.7.1
http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/11_Expressions.html#LogicalORExpression

いろいろ読み漁って疲れたけど、いい勉強にはなったわ。
ところで、>>1を見た限りでは、このスレ的にはECMA262を中心に語るべき?
579デフォルトの名無しさん:2006/09/17(日) 19:31:24
そうでしょ
ブラウザオブジェクト関連のネタを語ってもしょうがないし
580デフォルトの名無しさん:2006/09/17(日) 19:39:48
>>578
乙です
ECMAScript4の話も普通にいいかと
581デフォルトの名無しさん:2006/09/18(月) 04:14:17
ECMAScript4ってごちゃごちゃした感じでわかりにくくなりそうだなあ。
582デフォルトの名無しさん:2006/09/18(月) 12:01:20
ECMAScript4の名前空間について話さないかね?

ECMAScript4では、メソッドの可視(public, private, internal)も名前空間で実装されるらしい。
583デフォルトの名無しさん:2006/09/19(火) 11:54:16
>>582
俺もチェックしてみた。
http://developer.mozilla.org/es4/spec/chapter_1_tutorial_introduction.html
http://developer.mozilla.org/es4/spec/chapter_12_namespaces.html

E4の名前空間、面倒くさそうだと思って敬遠してたけど、よくできてるな。
名前空間が、クラスや変数に対してだけではなく、プロパティに対してにも使えるようになっているのは、なるほどと思った。
他にもそういう言語ってすでにあるのかな?

まあでも、関数宣言とかに、いろんな修飾子とか名前空間とか戻り値の型とかくっついて、長々してくるのはちょっと嫌だな。
標準化の弊害か。
584デフォルトの名無しさん:2006/09/19(火) 16:26:07
C++の名前空間と似てるような違うような……。
Cの#defineと#ifdefみたいな使い方をすればいいのかな?
585デフォルトの名無しさん:2006/09/19(火) 16:51:11
>>583
これってselector namespaceってやつ?
586デフォルトの名無しさん:2006/09/19(火) 22:25:36
>>584
C++の名前空間とは全然異なるよ

>>585
そう。

C++の名前空間に相当するのはパッケージでしょ。
587デフォルトの名無しさん:2006/10/07(土) 21:42:41
ひつもんです。
EcmaScriptというかDOMのネタかもしれないけど、
Opera9使ってるんでとりあえずここに書かせてください。
Opera9のDOM+EcmaScriptでクリップボードを扱う事ってできますか?
やりたい事は簡単で表示中のウェブページのいろんな情報を調べて
クリップボードにコピーしたいだけなんです。
ブックマークレットとかで。
クリップボード弄るのはセキュリティの問題があるので多分できないように
なっていると思うんだけど無理無理そうしたい場合はどうすればいいですかね?
あと、ついでに同様のネタでローカルファイルを弄ったりとかできないですか?
これもできないところを無理無理やりたい場合はどうすればいいですかね?

よろしくお願いします。
588デフォルトの名無しさん:2006/10/07(土) 22:03:31
無理無理が無駄無駄に見えた
589デフォルトの名無しさん:2006/10/08(日) 00:33:23
ムリムリってなんだよ。無理矢理だろうが。

無理矢理出来たらセキュリティも糞もないだろ。
590デフォルトの名無しさん:2006/10/08(日) 01:57:32
>>587
「JavaScript Flash クリップボード」でググってみると幸せになれるかもしれない。
それ以上はスレまたは板違いだからそれに見合ったところでどうぞ。
591デフォルトの名無しさん:2006/10/08(日) 06:07:22
__proto__ や __parent__ ってのはFirefoxオンリーですか。それとも他の実装でも使えますか。
手元にFirefoxしかないんで調べられない。だれか教えて。
592デフォルトの名無しさん:2006/10/08(日) 06:44:04
FirefoxっていうかSpiderMonkeyな。
Rhinoも限定した形でサポートしているっぽい。
KJS、JavaScriptCoreは__proto__のみサポートしてるっぽい。
593デフォルトの名無しさん:2006/10/08(日) 14:17:40
>>591
とりあえず ECMAScript 3rd の規格外なので期待しないほうがいいよ
594デフォルトの名無しさん:2006/10/08(日) 14:31:12
w3.orgが主導権発揮してくれないかなあ。
595デフォルトの名無しさん:2006/10/08(日) 18:31:17
W3Cいったら開発スピード落ちそうな気がする。なんとなくだけど。
596デフォルトの名無しさん:2006/10/08(日) 18:45:47
XLinkは何故用無しになったか思い出せ
597デフォルトの名無しさん:2006/10/09(月) 16:00:32
jcp.orgなんて狂ったようなスピードで
新たなクラスライブラリやフレームワークを加えてるよな。

提案権、タイムリミットをうまく設定するとうまく運びそうだ。
598デフォルトの名無しさん:2006/10/09(月) 16:11:16
>>597
groovyのJSRは狂ったように止まってるがな。
単にやる奴のやる気の問題じゃないのか?
599デフォルトの名無しさん:2006/10/09(月) 16:52:48
秩序だって進んでるよ、groovyは。

Beanshellの方はもうちょっと速く出来る気がするけど、
"Dynamic Scripting Language"が通ってもうすぐでしょう。
600デフォルトの名無しさん:2006/10/09(月) 17:25:13
groovyは、Scripting for the Javaとは別に、groovyの言語自体のJSRがあるんだよ。

スクリプト一般 http://jcp.org/en/jsr/detail?id=223 ← もうすぐ。Java6に見切り搭載?
Groovy http://www.jcp.org/en/jsr/detail?id=241 ← 2年以上経って、討議グループの形成すら未完了。
601デフォルトの名無しさん:2006/10/09(月) 18:38:09
だからその言語規格の方が、秩序だって進んでるって。
こんなに秩序だって進むのは言語規格では珍しい。
602デフォルトの名無しさん:2006/10/09(月) 21:56:50
討議グループの形成すらできてないのに?
http://www.jcp.org/en/jsr/detail?id=241 は見たかい?なんら規格制定が進んでない。
いまここで話してるのは、実装じゃなくて、デジュアな規格の事だろ?
単なる俺言語の俺実装の話をしてるんじゃないでしょ?
603デフォルトの名無しさん:2006/10/10(火) 20:21:46
>>590
> 「JavaScript Flash クリップボード」でググってみると

それはいわゆる脆弱性をりようするつーわけですか?
そういうのはあんましやりたくないです。

クロスドメインでなければというかローカル限定なら
クリップ板だろうがファイルだろうが安全じゃないかと思うんですが?
それでも駄目何ですかね?

ECMAScりptスレではW3C DOMとかは無視で
ジェネリックなオブジェクトを対象としているんですか?
604デフォルトの名無しさん:2006/10/10(火) 20:24:06
むしろウェブブラウザは無視なんだと思うけど。
605デフォルトの名無しさん:2006/10/10(火) 23:56:25
このスレタイで紛れ込んできた根性はすごいが、>>2を嫁。
606デフォルトの名無しさん:2006/10/11(水) 19:56:23
じゃ、参考のためにお尋ねしますが、
皆さんはどんな処理系を?
ライブラリは?
どのような利用目的で?
607デフォルトの名無しさん:2006/10/11(水) 20:00:38
608606:2006/10/11(水) 20:00:41
やっぱ答えなくていいや。
組み込み用途で一切合切ECMASCRIPTを使う積もりないし。
DOM+ECMASCIRPTか
OPERA9+ECMASCRIPTスレ捜してきます。
無いと思うけど。
609デフォルトの名無しさん:2006/10/11(水) 20:11:40
ム板にくるのがそもそもの間違い
610デフォルトの名無しさん:2006/10/11(水) 23:01:42
もういないだろうけど、
Rhinoでちょっとしたテストとか自動化スクリプト書いてるよ。
今度出るJava6からRhinoが標準搭載だよ。
611デフォルトの名無しさん:2006/10/11(水) 23:11:28
もうJavaいらないんじゃね?VMとスクリプト言語だけでいいんじゃね?
612デフォルトの名無しさん:2006/10/12(木) 00:55:31
そういや確かに
Mozilla+XULならム板にもスレがあるけどOpera+ECMAのスレは無いんだな。
613デフォルトの名無しさん:2006/10/12(木) 01:36:20
XULは必ずしもWebじゃないだろ。
まあOperaもウィジェットあるけど、まさかそのこと?
614デフォルトの名無しさん:2006/10/12(木) 03:45:13
俺は最初からそのことだと思ってたんだけど、ちゃうの?
615デフォルトの名無しさん:2006/10/12(木) 18:04:39
Operaのウィジェットって
設定用XMLが必要なのとクロスドメインXMLHttpRequest可能なくらいで
あとは普通のWEBページ(HTML)と同じだから
専用スレが必要だとは思えないんだが
616デフォルトの名無しさん:2006/10/12(木) 20:05:03
あえて立てるならGoogle WidgetとかYahoo Widgetとかと合わせてウィジェット総合スレか?
Yahoo Widgetはもうスレあるみたいだが。
617デフォルトの名無しさん:2006/10/12(木) 20:13:34
Dashboard WidgetとかMicrosoft Gadgetsは?
618606:2006/10/14(土) 18:15:47
剥いたって何?
別にオペラでミゼットとか作るつもり有りませんが?

詳しく説明しても迷惑かもしれませんが一応説明しときますと
クロスプラットホームのオペラ用ツールが欲しかっただけです。
Operaに不足してる機能を補うようなヤツね。
そんで特にウェブパネルにできるようなヤツ。
その手のヤツで少しだけあるのは殆どがウェブサーバ型になってる
けどそれは嫌なんで、なんとかしてみたかっただけです。
619デフォルトの名無しさん:2006/10/15(日) 19:34:37
>>617
Dashboardスレは新Mac板にある。
620デフォルトの名無しさん:2006/10/15(日) 21:50:27
>>593,594
遅れたけど、どうもありがとう。
個人的に、__proto__と__parent__はとても便利なのでほかの処理系でもサポートしてほしいなあ。
つか、__proto__はプロトタイプ型なら自然な機能なんじゃないかと思う。

ひとりごとすまん。
621デフォルトの名無しさん:2006/10/15(日) 22:47:19
4thに期待
622デフォルトの名無しさん:2006/10/26(木) 18:25:13
おまえら、ECMAScript/JavaScriptでUnitTestはどうしてますか?
623デフォルトの名無しさん:2006/10/27(金) 07:11:13
jsunit
624デフォルトの名無しさん:2006/10/27(金) 14:17:17
UnitTestって何ですか?
625デフォルトの名無しさん:2006/11/02(木) 23:24:01
今年の春先にIANAにMedia Typeが登録されてたんだね。
遅まきながら、ようやくtext/javascriptが公認されたわけだ。
626デフォルトの名無しさん:2006/11/02(木) 23:32:21
すでにtext/javascriptは非推奨な罠
627デフォルトの名無しさん:2006/11/02(木) 23:47:03
普通に<script type="text/javascript">してるけど…
628デフォルトの名無しさん:2006/11/02(木) 23:52:33
登録されていきなりobsolete

>>627
実は今までそれ、違反だったんだよ
他に方法がないから、みんなやってたけど
629デフォルトの名無しさん:2006/11/03(金) 00:05:49
http://www.rfc-editor.org/rfc/rfc4329.txt

Use of the "text" top-level type for this kind of content is known to
be problematic. This document thus defines text/javascript and text/
ecmascript but marks them as "obsolete". Use of experimental and
unregistered media types, as listed in part above, is discouraged.
The media types,

* application/javascript
* application/ecmascript

which are also defined in this document, are intended for common use
and should be used instead.

This document defines equivalent processing requirements for the
types text/javascript, text/ecmascript, and application/javascript.
Use of and support for the media type application/ecmascript is
considerably less widespread than for other media types defined in
this document. Using that to its advantage, this document defines
stricter processing rules for this type to foster more interoperable
processing.
630デフォルトの名無しさん:2006/11/03(金) 11:44:44
http://developer.mozilla.org/es4/
更新きただよ

…Python 化してるなぁ…multiline string literal(ヒアドキュメント)は嬉しいけど。
631デフォルトの名無しさん:2006/11/03(金) 13:02:53
いいよ、いいよ、PythonもRubyも食っちゃってさ。
632デフォルトの名無しさん:2006/11/08(水) 15:17:33
ttp://www.mozilla-japan.org/press/releases/2006/11/07/
ヤターヨ
ライセンスが気になるけど
633デフォルトの名無しさん:2006/11/08(水) 15:33:55
でも 4th edition が市民権を得るには IE が実装するのを待つしかないんだろうな
634デフォルトの名無しさん:2006/11/08(水) 16:42:40
>>633
JScript.NET は 4th edition 準拠だから、次あたりのIEには
IronJScript みたいな形で実装されるかもね。
635デフォルトの名無しさん:2006/11/08(水) 22:02:18
>>634
あれは昔の草案をもとにしたもので、現在の4th edition草案とはかけ離れてるだろ。
636デフォルトの名無しさん:2006/11/09(木) 23:32:43
MozillaさんAdobeさんから何かもらったらしいねぇ。
637デフォルトの名無しさん:2006/11/09(木) 23:45:05
>>636
>>632 の事?
spidermonkey とモロ被りな気がするけど、どうするんだろうか。
JIT だからこっちの方が速いんだろうけど。
638デフォルトの名無しさん:2006/11/10(金) 03:05:24
>>637
ttp://www.mozilla.org/projects/tamarin/ のロードマップ見ると
提供されたVM機能やGCをSpiderMonkeyに取り込んでいく方向みたいね.
639デフォルトの名無しさん:2006/11/10(金) 10:54:20
そりゃその気なければあんな発表にならんわな。

Javascriptの世界は、実装依存コードが幅をきかせているから、
Adobeは、自分達のコードのシェアを広げる作戦かな。
640デフォルトの名無しさん:2006/11/10(金) 11:13:03
HTMLの次はJavaScriptですかそうですか
641デフォルトの名無しさん:2006/11/10(金) 12:31:08
ほー、正規表現エンジンはPCREなのか。
642デフォルトの名無しさん:2006/11/10(金) 12:42:59
PCRE が Google で使われてるのは知らんかった。しかも C++ か。
643デフォルトの名無しさん:2006/11/11(土) 03:58:39
Number って double, decimal, int, uint だけなんだ...
float は double で良いとして、byte は欲しかったな
644デフォルトの名無しさん:2006/11/11(土) 10:16:41
はぁ?何のために?
仮にbyteを用意しても、4〜8バイトのメモリを消費するんだが?
645デフォルトの名無しさん:2006/11/11(土) 10:25:08
4つのbyteを4バイトの領域に詰め込んでくれたらいいなぁって話じゃね?
まあどの道、全体的に見れば大した違いは出ないだろうけど。
646デフォルトの名無しさん:2006/11/11(土) 17:06:56
つか byte array が欲しいんだけど。
647デフォルトの名無しさん:2006/11/11(土) 17:44:38
何に使うんスか?www
648デフォルトの名無しさん:2006/11/11(土) 18:06:04
そんなものより演算子オーバーロードがほしい。
649デフォルトの名無しさん:2006/11/11(土) 18:12:35
バイナリファイルを弄るのに。
650デフォルトの名無しさん:2006/11/11(土) 20:08:53
Stringじゃあかんの?
651デフォルトの名無しさん:2006/11/11(土) 20:59:53
そりゃあかんだろ。お前使ってないだろ。
652デフォルトの名無しさん:2006/11/11(土) 21:15:15
なんだ、無知な低脳の戯言か。
653デフォルトの名無しさん:2006/11/11(土) 21:21:56
バイナリファイルを直接いじるなんてECMAScriptっぽくないね。却下。
654デフォルトの名無しさん:2006/11/11(土) 21:25:00
655デフォルトの名無しさん:2006/11/11(土) 21:30:31
>>654
> A ByteArray can be thought of as similar to an Array of uint ([uint]) with each element truncated to the integer range of 0..255.

これはバイナリデータ1バイトにつき4バイト/8バイト(マシン依存?)のメモリを食うってことか?
656652:2006/11/11(土) 21:34:13
ボクは650に言いました。紛らわしい書き方だったのでage
657デフォルトの名無しさん:2006/11/11(土) 21:42:25
>>654
演算子オーバーロードも検討中じゃないの?
どっちもproposalsにあるけど。
658デフォルトの名無しさん:2006/11/11(土) 21:50:32
>>657
http://developer.mozilla.org/es4/proposals/proposals.html
:-) マークつきは仕様に入ることは決定してる(spec も見よ)
内容は修正されるかもしれん。
!マークつきは仕様に入るかどうかまだこれから。
659デフォルトの名無しさん:2006/11/12(日) 04:27:59
>>655
それはbyte arrayとは何かを知らん人向けの説明であって、実装がそうだと
いってるわけじゃないよ。
660デフォルトの名無しさん:2006/11/12(日) 05:19:50
byte arrayとは何かを知らん人に、「uintの0〜255の範囲以外切り捨てたものと考えていい」なんて説明が、なぜ必要?
661デフォルトの名無しさん:2006/11/12(日) 09:26:39
もうCでいいよ
662デフォルトの名無しさん:2006/11/12(日) 15:54:18
>>660
JavaScriptにはbyteという型がないから。
その下のPopulating a ByteArrayを見ればわかると思うが。
663デフォルトの名無しさん:2006/11/12(日) 20:35:12
タマリンのは U8 の配列になってるから、unsigned char なのかな。
ちゃんと見てないけど。内部表現は実装依存なんじゃないの。
664デフォルトの名無しさん:2006/11/12(日) 23:37:33
パターンマッチングが欲しい
665デフォルトの名無しさん:2006/11/14(火) 01:55:40
J Scriptは、やめて欲しい
666デフォルトの名無しさん:2006/11/15(水) 01:29:49
素晴らしい♪E C M A
667デフォルトの名無しさん:2006/11/18(土) 16:44:01
コンパイラが出来るまでは Adobe VM 使えないのね。
668デフォルトの名無しさん:2006/11/27(月) 02:57:21
ESの正規表現ってPerl互換なの?
669デフォルトの名無しさん:2006/11/27(月) 03:14:33
670668:2006/11/27(月) 03:57:40
>>669
本当だ。ちゃんとPerl5を模して作られるって書いてある。
ありがとん。
671デフォルトの名無しさん:2006/11/28(火) 16:42:13
なんでこの板には曖昧javascirptスレが無いの?
672デフォルトの名無しさん:2006/11/28(火) 17:01:03
>>671
荒れるから
673デフォルトの名無しさん:2006/11/29(水) 04:56:23
JavaScriptって書くとすごいのが湧いてくるからなぁ
674デフォルトの名無しさん:2006/11/29(水) 05:50:51
JavaScript
出でよ、すごいの!
675デフォルトの名無しさん:2006/11/29(水) 07:49:55
          ____
       / \  /\ キリッ
.     / (ー)  (ー)\
    /   ⌒(__人__)⌒ \  JavaScript
    |      |r┬-|    |  出でよ、すごいの!
     \     `ー'´   /
    ノ            \
  /´               ヽ
 |    l              \
 ヽ    -一''''''"~~``'ー--、   -一'''''''ー-、.
  ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒))

         ____
       /      \
      / ─    ─ \
    /   (●)  (●)  \
    |     (__人__)     |
     \     ` ⌒´    ,/
    ノ            \
  /´               ヽ
 |    l              \
 ヽ    -一''''''"~~``'ー--、   -一'''''''ー-、.
  ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒))
676デフォルトの名無しさん:2006/11/29(水) 07:52:30
出ませんな
677デフォルトの名無しさん:2006/11/29(水) 08:00:18
今なら何を書いても怒られない予感…
678デフォルトの名無しさん:2006/11/29(水) 09:05:36
>>673
なるほど、>>674-675を見てお前の言っていた意味がわかった。
679デフォルトの名無しさん:2006/11/29(水) 10:53:23
>>678
ワラタ
680デフォルトの名無しさん:2006/11/29(水) 18:26:20
>>671
曖昧javascirptって何?
681デフォルトの名無しさん:2006/11/29(水) 22:25:13
>>669
文字クラスのところ、珍しい仕様だな。

>15.10.2.16
>パターン /[E-f]/i は大文字小文字含めた ASCII 文字だけでなく
>記号 [, \, ], ^, _, ` にもマッチする。

試しに "ABCDEFXYZ".match(/[E-f]+/i) をしてみたら、
確かにIE6では全体にマッチしたわ。

FirefoxとOperaは EF にだけマッチした。
682デフォルトの名無しさん:2006/11/30(木) 02:55:25
>>681
>パターン /[E-f]/i は大文字小文字含めた ASCII 文字だけでなく
>記号 [, \, ], ^, _, ` にもマッチする。

珍しくないよ。ASCIIテーブルの通り。

131 89 59 Y
132 90 5A Z
133 91 5B [
134 92 5C \
135 93 5D ]
136 94 5E ^
137 95 5F _
140 96 60 `
141 97 61 a
142 98 62 b

「ASCII文字」は、「アルファベット」の間違いかな。
683デフォルトの名無しさん:2006/11/30(木) 04:21:57
原文だと "/[E-f]/i matches all upper and lower-case ASCII letters"
って書いてあるね

ってことは、この仕様書通りに実装しようとすると、A-Dとg-zも
引っかかるようにしないといけないのか。めんどくさいな
684デフォルトの名無しさん:2006/11/30(木) 12:12:09
>>683
i だから当たり前だろ。
685デフォルトの名無しさん:2006/11/30(木) 16:50:13
>>683
15.10.2.8の最後のパラグラフによれば、
大文字に変換してから、比べろってことみたいだね。
それならそんなに面倒でもない。rangeは展開することになりそうだが。

/[e-F]/iはエラーですかね。
686デフォルトの名無しさん:2006/11/30(木) 18:05:09
どうしよぉ 生理こないぜー
687デフォルトの名無しさん:2006/11/30(木) 18:48:39
昨日から尻が生理です
688デフォルトの名無しさん:2006/12/01(金) 07:54:49
/[E-f]/i
ってのが、
/[E-Fe-f]/
と扱われるか、
/[A-z]/ (E-fの範囲にA-Z全体の大文字or小文字がどの道カバーされてるため)
と扱われるかの違いか。

Perlでも/[A-z]/扱いになるみたいね。
今までそんなの意識したことなかったな。
まあ、iオプションつけといて、正規表現の中に大文字と小文字を混ぜるのもどうかと思うけど。
689デフォルトの名無しさん:2006/12/01(金) 10:18:58
>>688
> 今までそんなの意識したことなかったな。

a-z, A-Z, 0-9の範囲外のrange指定の動作は未定義、
としている正規表現規格も結構多いよ。

むしろはっきり記述してある方が珍しいと思われ。
いまやcharacterはASCII&Unicodeの世界ってことですかね。
690デフォルトの名無しさん:2006/12/08(金) 14:50:37
ECMAScriptの正規表現のコンパイル結果は、キャッシュされてたりするの?
691デフォルトの名無しさん:2006/12/09(土) 00:37:24
そりゃさすがに実装依存だろ
692デフォルトの名無しさん:2006/12/10(日) 01:22:39
というか正規表現のパース結果をプールするために正規表現リテラル使うんじゃなくて正規表現オブジェクトをnewして変数に突っ込んでんだけどオブジェクトをnewしたりcompileプロパティで内部表現にコンパイルできるのはECMAの仕様外だっけ?
693デフォルトの名無しさん:2006/12/10(日) 08:16:22
関係ないけど正規表現リテラルを変数に突っ込むのではあかんのかいな
694デフォルトの名無しさん:2006/12/10(日) 11:33:52
>>692
正規表現リテラルは構文解析時にパースされてオブジェクトが生成される。
ソース位置が同じなら常に同じ参照を返す(と仕様書には書いてある)
関数リテラルはキャッシュしてもいいしキャッシュしなくてもいい(クロージャの問題があるので)
どちらもソース位置が別なら別のオブジェクトへの参照を返す
695694:2006/12/10(日) 11:40:41
サンプルコード(FireFoxで確認)

alert(/ / === / /); //=>false

function a(){return / /};
alert(a() === a()); //=>true
696デフォルトの名無しさん:2006/12/10(日) 19:27:14
>>694
>(と仕様書には書いてある)
まるで仕様だけの話にも聞こえかねないが、そうじゃない実装例があればプリーズ。
697デフォルトの名無しさん:2006/12/10(日) 21:35:27
>>695
ところで、正規表現のコンパイル結果がキャッシュされるかどうかってのは、
例えば/ /がソース中の2箇所に出現するとして、いわゆる「正規表現オブジェクト」としての実体は別々でも、それらが実際にマッチングに使われたときに、同じコンパイル結果が使われているのかどうか、
ってことだと勝手に考えていたんだが、そういうわけではない?

実装としては、「正規表現を表す文字列(+フラグ)をキーとし、キャッシュされたコンパイル結果への参照を値とするハッシュテーブル」みたいなものが内部でマッチングのたびに使われるみたいなのを想像してた。

まとまりのない文章になってしまった。スマソ
698デフォルトの名無しさん:2006/12/10(日) 21:55:59
>>697
そういう実装があってもいいけど、実際に実装が
そうするかどうかは仕様の範囲外、だと思う。
699デフォルトの名無しさん:2006/12/10(日) 22:32:57
受理マシンが毎回作られるのがヤってこと?
700697:2006/12/10(日) 23:06:19
あーこのスレは仕様の話をするスレだったのか。
仕様には規定されてないのを前提で、どういう実装が考えられるかってのを書いてた・・・
701デフォルトの名無しさん:2006/12/11(月) 00:58:02
>>697
複数の場所で同じ正規表現を使うのってそんなに頻繁にあるのかしら?
あとそのコンパイル結果はいつ破棄するのかな?
オブジェクトでキャッシュしてプログラマが使いまわせば十分な気がするけど…
702デフォルトの名無しさん:2006/12/11(月) 01:23:30
リテラルが複数個所ってよりも、newで作ったオブジェクトの場合はキャッシュしててくれたら、ちっとはパフォーマンスに寄与するんじゃないかな
703デフォルトの名無しさん:2006/12/27(水) 03:48:41
なんか正規表現のキャッシュってよりインスタンスの効率的なキャッシュの実装云々の話に寄ってるな

ところでこのスレ的にはECMA-357はおk?
ECMA-262 ed.3の拡張仕様で文法までいじってるからECMA-262から切り離せないけど・・・

ECMA-357(E4X)
ttp://www.ecma-international.org/publications/standards/Ecma-357.htm


実装例

Rhino
ttp://www.mozilla-japan.org/rhino/index.html

SpiderMonkey
http://www.mozilla-japan.org/js/spidermonkey/

他はAS3とjdk6のjavax.scriptingパッケージで使えたような気がしないでもない。
704デフォルトの名無しさん:2006/12/27(水) 03:56:22
ありでしょ。E4Xは内部メソッドの動作にもいろいろ変更加えててより変態的。
JDK6のって要はRhinoでしょ。なんか上のほうで
E4Xは外すっていう情報があったけど結局どうなったんだろ。
705デフォルトの名無しさん:2006/12/27(水) 21:48:40
>>変態的
けどECMAScript4だったかJS20だったかの仕様に取り込むって話があるんだよな
706デフォルトの名無しさん:2007/01/05(金) 08:54:36
こりゃホントに三年持ちそうだな
707デフォルトの名無しさん:2007/01/06(土) 06:53:17
ワラタ
ちゃんと保守しとけよ。
708デフォルトの名無しさん:2007/01/19(金) 08:18:35
そもそも何故JavaScriptの標準化がECMAなんだ?
って話は禁止?あと、標準化されてるHost Objectは何処でやればいい?

W3C DOMやWindow Objectの仕様・・・。Native Objectの内Built-in Objectまでがここ?
709デフォルトの名無しさん:2007/01/19(金) 13:33:21
ECMAが一番手っ取り早かったんでしょ。
ISOへの近道にもなるし金積めば通してくれるってうわさもあるし。

それからこれはあくまでも個人的な意見だが、
W3C DOM、Window ObjectなどはWeb製作板ではないかと思う。
Native Objectはここでいいかと。

ちなみに巷でネイティブオブジェクトといったとき、
documentのようなブラウザ組み込みオブジェクトも
含めることがあるけど、ECMA-262の定義だと
そういう環境依存のオブジェクトは
ネイティブオブジェクトに含まれないんだよな。
まあその定義自体informalだけど。
710デフォルトの名無しさん:2007/01/19(金) 16:03:33
ECMAScript 仕様書に載ってる範囲までがここ、でいいんじゃね?
711デフォルトの名無しさん:2007/01/19(金) 18:14:58
mynamespace = {};
mynamespace.global = this;

mynamespace.Namespace = function( name, parent, obj ) {
 this.__name__ = name;
 this.__fullname__ = parent ? parent.__fullname__ +"."+ name : name;
 this.__namespace__ = function( child, cont ) {
  if( child in this ) {
   cont( this[child] );
  } else {
   this[child] = new mynamespace.Namespace(child,this,cont);
  }
 }
 this.__marge__ = function( cont ) { ... }
}

mynamespace = new mynamespace.Namespace( "mynamespace", null, mynamespace );

mynamespace.__namespace__( "utility", function(_) {
 _.MyUtilityClass = function() {
  ...
 }
});

var obj = new mynamespace.utility.MyUtilityClass;

やべぇ、javascript 面白すぎ
712デフォルトの名無しさん:2007/01/19(金) 18:23:10
あ、Namespace のコンストラクタで __marge__(obj); してないや。

無名関数があるからあんまり意味無いけど、Boost.Bind が超簡単に実装できるとか楽しすぎ。
713デフォルトの名無しさん:2007/01/20(土) 04:37:59
Boost.Bindて知らんけどクロージャでスコープ引っ張りつつInvok関数みたいなので任意コンテキストに縛って実行って感じで出来る?

NamespaceてよりScriptContextだな。

714デフォルトの名無しさん:2007/01/21(日) 14:05:41
よく考えたらjdk6のrhinoは
ant -Ddebug=off -Dno-regexp=true -Dno-e4x=false smalljar

なsmalljar.jarをベースにしてんだな。
仕様には関係ないが
715デフォルトの名無しさん:2007/01/25(木) 03:03:21
>>714
PC用途なくせに、なんでそんな事を…。
みんなJavaじゃなくてJavaScriptにいっちゃわないためか?
716デフォルトの名無しさん:2007/01/25(木) 03:03:56
717デフォルトの名無しさん:2007/01/25(木) 13:45:44
>>715
フットプリントを小さくしたかったらしい。
JAVA的にはScripting APIの仕様が適応出来て
親しみ易くJAVA実装のある言語を選んだ訳だから最低限インタプリタで動いてJAVAと通信できれば良いらしい。

だからコンパイルモードのコードは削除され、一部LiveConnectのコードも削除・簡易代替に変更されてる。
E4Xは文法いじるからとっつき難くなるから排除らしい。
rhino独自の組み込み関数も削除されてる。help()が効かないんで驚いたよw
rhinoは色々な用途向けにビルドオプションを用意してるからコアエンジン部分はビルドし直せば影響ないし。

元もとrhinoは内部プロパティにアクセスする__proto__とか__parent__とかはサポートしてないし、
LiveConnectも一部機能をサポートしない変わりにJavaとの通信性を高めてる。
EcmaScriptに毛が生えただけの本家実装だから他の実装よりこのスレ向きだろうね。
718デフォルトの名無しさん:2007/01/25(木) 18:09:27
>>717
ほー。
でもそんなの言い訳でしょ?
MEならわかるけどSEでフットプリントガリガリ削る必要性なんてないじゃん。

>help()が効かないんで驚いたよw
ってことはprintもreadFileもloadもない??ダメすぎwww
719デフォルトの名無しさん:2007/01/25(木) 22:27:38
>>718
readFile はない。
print,load はあるな。
720デフォルトの名無しさん:2007/01/25(木) 23:56:28
>>718
削る必要性ないのに「言い訳」ってどういうこと?
言い訳って、理由があって出来ないことを、誤魔化すことでしょ?
フットプリント的に削る必要がないのに、
削るって事は、ポリシーの問題って事なんじゃないの?
721デフォルトの名無しさん:2007/01/25(木) 23:57:00
>>717
> E4Xは文法いじるからとっつき難くなるから排除らしい。

Javaの方でもやっているからって事はないかな?
722デフォルトの名無しさん:2007/01/28(日) 00:21:01
>>720
>言い訳って、理由があって出来ないことを、誤魔化すことでしょ?

Rhinoをフル搭載することは、Sunの都合上の理由があって出来ない。
それを、

>ポリシーの問題

という風に問題をずらして誤魔化す、という「言い訳」をしてるんでしょ。
723デフォルトの名無しさん:2007/01/28(日) 04:51:41
>>722のレスは本質をついていて参考になる。
このような高度な内容を平易に語れる人は少ない。
さんくす。
724デフォルトの名無しさん:2007/01/28(日) 09:24:21
Java側に類似のクラスがあって、
ECMAScript標準でないものは、外す候補になるとは思う。
ただし外しすぎるとJavascriptとしての使い勝手が、
既存コードやノウハウの流用上、悪くなり、バランスを考えないといけない。
725デフォルトの名無しさん:2007/01/28(日) 11:02:14
使い勝手のみ考えたら-Dno-regexp=falseでビルドしてJava 1.4の正規表現ライブラリラップした方がJava使いには良いだろうね。

>>722
幾つかあってどれが今回のに当てはまるかよく分からんw

JavaVM上で動く言語を黙認してたくせに突然Groovyを標準化して一本化しようとした事か?

標準化も実装も間に合わなくて知名度、安定性、入り易さの優れるrhinoを選んだは良いがコンパイラもデバッガも排除ってオチか。

考えてみるとjsソースを事前にコンパイルしといてdefineClass()でオンデマンドロードの方が使い勝手良いのに。

Ecmaの仕様から考えるとコンテキストとスコープの関係、プロトタイプチェーン、深い部分の仕様ミス、そもそもクラスベースOOPな人間にプロトタイプOOアプローチは出来ない。

その上、Javaとの通信もマシン型の未実装で不完全。暗黙の変換時のみ使われる予定のCharクラスも無い、でまだ言語として問題点山盛りなのにな。
726デフォルトの名無しさん:2007/01/28(日) 12:21:14
始めてRhinoに触れるならその文化を残す理由も余りない
むしろimportで割り切ってくれたほうが学習コストも低くすむ
727デフォルトの名無しさん:2007/01/28(日) 16:27:07
表面上の学習コストは元々低いよ
728デフォルトの名無しさん:2007/02/15(木) 09:29:27
RhinoのScriptableインターフェイスについてなんですが、
get、put、hasが持ってるパラメータScriptable startって
何のためにあるんでしょうか。
いくらか試してみたんですが常にthis == startになりました。
this != startになることってあるんでしょうか ?
729デフォルトの名無しさん:2007/02/15(木) 18:30:40
あの引数startはスコープじゃなかったか?
そりゃthisになると思うけど。
いわゆるインスタンスの動的メンバにアクセスするためじゃない?

JavaDocが今手元にないけどそれ読んでみればいい
730デフォルトの名無しさん:2007/03/05(月) 09:19:43
ネタないねage

jdk6のrhinoが使えねぇー
sunの勝手な解釈でJavaAdapterがインタフェースの単一実装しか出来なくなりました。

GUI書くときは無名オブジェクトに対してリスナー系インターフェイス+α実装とコンポーネント系クラス継承を一度にしてサクっとインスタンス化しちゃうのに・・・

いちいちnewした後に関数再定義してJavaAdapterでインタフェース実装しなきゃいけなくなった・・・

そもそもJavaAdapterとかはjsの機能じゃなくてLiveConnectの機能なんだからネスケの実装しかつかえねぇーYO!
731デフォルトの名無しさん:2007/03/05(月) 13:29:59
ぅゎー、そんな無体なことに。sun腐ってるな。
732デフォルトの名無しさん:2007/03/09(金) 00:30:41
FirefoxのJavascriptエンジンは1.7とかいってPythonくさい機能を大量に装備したけど、
それらはECMAScript 4th ed.(Javascript 2.0)には入るのかな?
733デフォルトの名無しさん:2007/03/09(金) 07:48:56
↓は更新跡絶えているし、どういう状況なんだろうね。

ECMAScript 4 Netscape Proposal
http://www.mozilla.org/js/language/es4/
JavaScript 2.0 and ECMAScript Edition 4
http://developer.mozilla.org/en/docs/JavaScript_Language_Resources#JavaScript_2.0_and_ECMAScript_Edition_4

734デフォルトの名無しさん:2007/03/09(金) 11:32:27
js17はjs20の先行実装。fx2.0系のgeckoは次世代仕様の為の先行実装されまくり。
実験的な意味が強い。rhinoが1.6止まりなのもそのせいじゃない?

むしろjs16がspidermonkyのGCバグフィックスリリースなのにrhino1.6が出たのが不思議。Date.nowがrhinoでもサポートされただけだし。
rhinoエンジンのバージョン定数の1.6のところの値が1.5と同じ"1.5"になってるから見てみ?
735デフォルトの名無しさん:2007/03/09(金) 15:20:56
じゃあjs1.7はproposal用reference implementationの一つなのかな。
736デフォルトの名無しさん:2007/03/09(金) 19:51:57
いやjs20の仕様を全て実装した訳じゃないよ。じゃなきゃバージョンが2.0になってるだろ?

実験的先行実装たしかDOM lv3もまだ実験段階だし、ていうかmozillaのとこ探せば開発者向け文書落ちてる
737デフォルトの名無しさん:2007/03/10(土) 03:10:57
タマリン用のコンパイラはちゃんと出来るのかのう。
Perl 6 みたいな事にならないと良いけど…
738デフォルトの名無しさん:2007/03/15(木) 11:34:44
http://developer.mozilla.org/es4/ 更新来ただよ。
今回は差分も見やすく?
http://developer.mozilla.org/es4/export-diff/

enum キタ━━━ヽ(∀゚ )人(゚∀゚)人( ゚∀)ノ━━━ !!!
739デフォルトの名無しさん:2007/03/15(木) 15:15:06
>>737 タマリン用じゃなくてタマリン自身がFlash9の開発環境(AVM2+IDE)のうちのAVM2のソースコードの一部のJITコンパイラ+GCフレームワーク+AS実行のためのコアライブラリだよ。

swfファイルはJITじゃなくて事前コンパイルされたAVN2バイトコードだ。

んで次期ASも次期JSもES4に取り込む予定だから基本的な部分は流用出来るから、
まず、次期Fxに載せて小手調べするんだろ。

タマリン自体はOSSで汎用のES4ランタイムになってそれをベースに将来のmozilla製品とadbe製品用の実装しちゃうって事だろ。

残りのECMA-262WGであるアップルとMSとオペラが反応なしってのが何か起こりそうだ。
740デフォルトの名無しさん:2007/03/15(木) 17:45:51
http://ja.wikibooks.org/wiki/JavaScript
もー、なんかたまに気が向いたら書いてるけど、飽きたー
誰か書き足せー(一部そうしてくれた人もいるけど
741デフォルトの名無しさん:2007/03/15(木) 19:37:32
これjavascript2.0が出たら殆ど書き直しになるんだよね。
だから手出してない。2.0は項目分けるのかな?
742デフォルトの名無しさん:2007/03/15(木) 19:40:22
>>740
入門まで呼んだ。続きは気が向いたら。
- 「JavaScript 導入」「JavaScriptとは?」の中のブラウザ意外の実装の話は
独立した節にして「JavaScriptの歴史」の中身あたりを「JavaScriptとは?」に
ひっぱってきたらどうだろう?
- Number Type が数字型になってたり数値型になってたりするけど
プログラミング言語界隈一般では数値型だと思う。
(すう‐じ【数字】:数を表す文字。アラビア数字・漢数字またはローマ数字など。)
743デフォルトの名無しさん:2007/03/17(土) 04:12:20
>740
アドバイスありがとう、若干直した。

> JavaScript 導入」「JavaScriptとは?」の中のブラウザ意外の実装の話は
独立した節にして「JavaScriptの歴史」の中身あたりを「JavaScriptとは?」に
ひっぱってきたらどうだろう?

「ブラウザ意外の実装の話は独立した節にして」っというのは何処まで独立して扱えばいいのかな?
オブジェクト指向に関しては、詳しい解説は後で書くにしても
JavaScriptとJavaの比較を独立した解説とするのは何処までやれば良いんだろう?
簡単にJavaとJavaScriptのほぼ同じ機能のコードを並べてしまうのかな?
それとも、Perlとかの言語まで含めて、JavaScriptはどのように動いているのかを詳しく書いた方がいいのかな?


簡単なJava

> Number Type が数字型になってたり数値型になってたりするけど
すいません。これは完全に私の凡ミスですね。移行気を付けて行こうと思います。
744741:2007/03/17(土) 04:15:36
> これjavascript2.0が出たら殆ど書き直しになるんだよね。
普通は分けると思う。

ところで自分なりに思うんだけど、JavaScript2.0って将来普及するのかな?
自分あまり詳しくないのですが、簡単に読んだ感じでは、変にガチガチになっちゃってイライラするところがあるんだけど。
正直、2.0は2.0があうところで独立に共存しそうなんですが…
745デフォルトの名無しさん:2007/03/17(土) 04:56:02
ブラウザが古いJavaScriptを無視することはないだろ。
Flash 9では、実行性能が欲しけりゃECMAScript 4、
という縛りをつけてきた。

高機能なIDEが前提なら、strictな型はいいことづくめ。
Flash 9のIDEがどうだかは知らんが。
746デフォルトの名無しさん:2007/03/17(土) 10:50:22
実行時に型を特定するのはしんどいんだなw
747デフォルトの名無しさん:2007/03/17(土) 10:58:27
実行してみなきゃ型がわかんないから実行してみるわけだけどでも副作用が、
748デフォルトの名無しさん:2007/03/17(土) 13:30:19
>>743
>>742ではないしまだ殆ど読んでないから外してるかも知れんが、「JavaScriptの歴史」辺りにLiveScriptの話出してjavaとは別物である事を強調しつつ
マーケティング的な理由でsunからライセンス受けてjavaの名前を使ってるってのを解説した方が良いと思う。

>簡単にJavaとJavaScriptのほぼ同じ機能のコードを並べてしまうのかな?
Groovyじゃないんだからそれは止めた方が良いと思う。
プロトタイプベースとクラスベースは本来アプローチが違うんだから並べて比較は出来ない。
プロトタイプベースの方が言語仕様レベルでデザインパターンを駆使して楽にコード書こうとしてるし、
javascriptの場合、関数型言語に近い作法が多い。だから何処かで他のプロトタイプベース言語や関数型言語の概念を
「仲間」として出すとかした上で敢えてクラスベースと比較した方が効果的だと思う。

749デフォルトの名無しさん:2007/03/17(土) 13:32:26
>プロトタイプベースの方が言語仕様レベルでデザインパターンを駆使して楽にコード書こうとしてるし、

kwsk
750デフォルトの名無しさん:2007/03/17(土) 13:39:12
>>744
静的プロパティが導入されればIDEの入力支援とマッチするからクラスベースしかできない連中が喜ぶんじゃない?

まあ、callオブジェクトがなくなる時点でjavascriptじゃなくなるが。
無名再帰はどうやってすればいいんだ!?

クラスベースイラネ!mix-inの規約化された仕組みとjava並みの単純で強力な名前空間があればそれで良い!
751デフォルトの名無しさん:2007/03/17(土) 14:10:28
>>749
javascriptの話だけどプロトタイプチェーン自体がPrototypeパターンのChain of Responsibilityだからオブジェクトのクローニングとメッセージ処理の委譲を同時にやっていわゆる継承を実現してる。

雛型であるクラスを定義してサブクラス化してインスタンス化して使う、より使うためのプロセスが減る。

ただし、この継承部分が今の所、複数の方法があって、しかもネットスケープの__proto__や__parent__以外は効果が曖昧だったりする。
クラスベースな連中が想像する継承を実現するのはこれ位だろう。

で、javascriptはオブジェクトをただの連想配列として扱ってて、各プロパティはStrategy パターンとも捉えられる。
「javascriptのプロパティは呼び出せるプロパティ」とよく言われるしね。
まあ、オブジェクトに対するメッセージがStrategy パターンと言うならそれまでだけど。

だから、全ての連想配列についてPrototypeパターンのChain of Responsibilityを構築してツリー状になっててそのリーフ一つ一つがStrategy パターンです。って感じ。

コンテキストとスコープとプロトタイプチェーンの関係はややこしくなるから省くよ。
752デフォルトの名無しさん:2007/03/17(土) 14:15:51
あーと、javascriptの場合
>リーフ一つ一つがStrategy パターン
の部分が自分そのものや自分の所有者や呼び出し元をreturn出来るから厳密にはツリーってよりフラグになるんだけど・・・。
753デフォルトの名無しさん:2007/03/17(土) 14:27:14
>>751
プロトタイプベースの何がいいの?つったら、いつもCoRが出て先が続かないw
Strategyはそうとも言えるかも知れないけど、CoRとStrategyだけじゃ
>プロトタイプベースの方が言語仕様レベルでデザインパターンを駆使して楽にコード書こうとしてるし、
とは言い難いような。

つうか、Strategyはプロトタイプベースかどうかより、
関数やクロージャがファーストクラスかどうかの問題の気が。
754デフォルトの名無しさん:2007/03/17(土) 15:37:04
>>748
> 「JavaScriptの歴史」辺りにLiveScriptの話出してjavaとは別物である事を強調しつつ
> マーケティング的な理由でsunからライセンス受けてjavaの名前を使ってるってのを解説した方が良いと思う。

このあたりWikipediaでは「要出典」になってるんだけど
検証可能性を満たすソースは存在するの?
755デフォルトの名無しさん:2007/03/17(土) 17:36:13
>>754
要出典なの!?
常識だと思ってた・・・。てことはLiveScriptが実装された頃からjs叩いてた俺は生き証人ってやつになるのか・・・。

>検証可能性を満たすソース
難しいね。W3CとかIETFとかnetscapeが歴史資料の一部としてなら保管してるだろうけど。
その他の場所に信頼性のあるソースが転がってるとは思えない。
古臭いMLやネットニュースのアーカイブを片っ端から当れば出てくるかもしれないけど
古来のサーバーは軒並み死んでるからね。

それこそ当時を知る人間じゃないとそんな鯖を見つけ出す事は不可能だし・・・。
756デフォルトの名無しさん:2007/03/17(土) 18:06:11
遅レススマソ。737 だけど、

>>739
そういう意味では AVM2 用のバイトコンパイラがちゃんと出来るのかなって意味ね。
ECMAScript のソースコードをバイトコードにコンパイルする為のコンパイラが欲しい。

今ある選択肢は↓こんな感じだけど、3 が出来たらインタラクティブシェル的に使える
様になるので嬉しいなと。

  1. Adobe の開発環境を使う(有料)
  2. OCaml で書かれたオープンソースのコンパイラ MTASC を使う
  3. SpiderMonkey のコンパイラを AVM2 用のバイトコードを吐ける様に
     改修する作業が終わるのを待つ
  4. AVM2 のセルフホストコンパイラが完成するのを待つ
757デフォルトの名無しさん:2007/03/17(土) 19:12:58
もそも経緯を考えれば要出典もクソもないけどな。LiveScriptの開発コードはMochaって言うんだけどMochaを作った理由はNN1.1に実装されてた
LiveDocumentっていうサーバープッシュ・クライアントプル技術を利用した動的文書技術でその延長としてMochaを実装したんだが
サーバープッシュ・クライアントプルじゃCGI使うんで鯖に負荷をかけるし当時はCGIの脆弱性が問題視されててクライアントサイドで完結した動的文書の為にMochaを開発し始めたんだよ。

んでNN2.0bに搭載されたんだけどこの頃は確実にLiveScript(Mocha)だったんだけど95年12月にsunと契約してJavaの商標権借りてJavaScriptに変えたんだけど、
その理由がお互いクライアントサイドのみでwebページに動的な変更を与える能力を付加するって目的が一致してて
(当時のjavaは組み込みとサーバーサイドにアピールして両方ボロクソに叩かれてクライアントサイドに逃げてきたって経緯がある)
758デフォルトの名無しさん:2007/03/17(土) 19:14:24
かつBrendan Eichがjavaに興味持って利害が一致したんでお互いjavaの名前を使ってwebページを動的に変更できる部分をアピールして行こうって事で契約が成立したはず。
これがマーケティング的な理由って部分。問題はいつ名称変更されたかでNN3.0XのどれかのマイナーアップかNN2.0の正式版で既に名称変更してるかで意見が分かれるんだよ。
2.0が96/3、3.0が96/8なんだけど2.0だと実際に権利処理が間に合うか疑問だし。どのverで変更したか確認できればいいけどね。

なんで変更したかはやっぱアーカイブの記事あさるしか・・・
759デフォルトの名無しさん:2007/03/17(土) 20:17:19
国内鯖探してみたけどパッとしないね。

javascriptの関連技術にLiveがつくのはLiveDocumentから来てる事だし、JS13までJS仕様にDOMが含まれてたのも元々DOMの根源たる根源がLiveDocumentの思想で
それをクライアントサイドで完結させるためのLiveScriptだからね。
JS14からコアとDOMが分離されたのはW3C標準になったからだろう。こうみてもLiveScriptにJavaなんて一切関係ない。

信頼できるソースが転がってるとはやっぱ思えんなぁ。wikipedia自体間違えまくってるしね。
Netscape Navigatorの項の「当初は「Mozilla」という名前でリリースされる予定だったが、マーケティングの理由により、「Netscape」に変更されている」とか。

本当はmosaic開発チームがNCSAの方針に反発して独立してMosaic Communications Corporationを作って
Mosaic Communications Corporation版mosaicを開発して、
その開発コードがmozillaなんだけどその次期mozillaであるmozilla 2.0
(Mosaic Communications Corporation版mosaic 2.0)をシェアウェアとして売ろうとしたら
正式リリース直前でNCSAが離反報復に出てmosaicの商標権はうちにあるから使うなって言いだして
了承せざるを得なかったからしぶしぶNetscape Navigatorに変えてNetscape Communicationsに社名変更したんだしね。

ここらへんはMozilla Application Suiteのwikipediaの方が正確だし「sunからライセンス受けてjavascriptにした」が要出典なら
「NCSA Mosaicで知られるNCSAの圧力により、社名も製品名もMosaicから Netscapeに改名を迫られた経緯」も要出典だと思うよ。

出典出せって言われても当時は何処でも当たり前に言われてたんで出典が何処かは今となっては分からないんだよ・・・。

現在のwww自体また聞きに次ぐまた聞きでしか知らない連中が曖昧なまま垂れ流してるんだし。ムズカシス
760デフォルトの名無しさん:2007/03/18(日) 09:36:28
>>756
1. は今のところ無料で出来るぞ。
http://usrb.in/amachang/static/wcan200701/
http://d.hatena.ne.jp/nitoyon/20070131/asc_authoring
http://d.hatena.ne.jp/nitoyon/20070201/tamarin_trial

Tamarin とは別に、Ecma TC39-TG1 で Standard ML ベースの
ES4 の参照実装を作ってるので、数ヵ月後の公開を期待。
(Tamarin の CVS にさっぱり動きがないのはこれに注力中なのかな?)
https://mail.mozilla.org/private/es4-discuss/2007-March/000447.html
761デフォルトの名無しさん:2007/03/18(日) 10:11:33
>>754 >>757-759
ES3 以降しか知らんし、又聞きの大元でしかないと思うが参考資料あげとく。

Brenden Eich による記事・発表
http://wp.netscape.com/comprod/columns/techvision/innovators_be.html
http://www.mozilla.org/js/language/ICFP-Keynote.ppt

95年12月の Sun,Netscape の発表
http://wp.netscape.com/newsref/pr/newsrelease67.html

"JavaScript" 自体はそれ以前から Sun の商標
http://web.archive.org/web/20031206081810/http://www.sun.com/suntrademarks/#J

Mozilla Classic に残る Mocha
http://lxr.mozilla.org/classic/source/lib/libmocha/
http://www.mozilla.org/classic/libmdesc.html
762デフォルトの名無しさん:2007/03/18(日) 15:48:12
>>761
> 95年12月の Sun,Netscape の発表
> http://wp.netscape.com/newsref/pr/newsrelease67.html
>
> "JavaScript" 自体はそれ以前から Sun の商標
> http://web.archive.org/web/20031206081810/http://www.sun.com/suntrademarks/#J

「それ」って95年を指すのか? そのわりに2003年のものを持ってきても仕方
ないと思うんだが。
だいいち95年末じゃあ、まだwaybackmachineはなかったと思う。
waybackmachine始動は96年か97年。
763741:2007/03/18(日) 18:27:26
>>748
> プロトタイプベースの方が言語仕様レベルでデザインパターンを駆使して楽にコード書こうとしてるし、
> javascriptの場合、関数型言語に近い作法が多い。だから何処かで他のプロトタイプベース言語や関数型言語の概念を
> 「仲間」として出すとかした上で敢えてクラスベースと比較した方が効果的だと思う。

実は自分、LispとかHaskellくらいを「あー、こんなもんなのかー」と思いながらサッと流してしまった人間なので、正直少々荷が重い所があります。
少しどうすればよいのか、コードなんかの具体的な所が欲しい。ごめん…。

組み込んだデザインパタンな所は、言語使用というよりは、柔軟なプログラミングのための機能といえる様な所があるから
確かにデザパタ組み込んだ、は大げさな言い方と思う。
764デフォルトの名無しさん:2007/03/18(日) 19:35:13
waybackmachineってwebページを保存するってサイト?
じじいの記憶が正しければ96年だと思う。

>Mozilla Classic
NN5ナツカシス。
765デフォルトの名無しさん:2007/03/18(日) 19:37:42
>>762 ごめん。10年間違えた。
766デフォルトの名無しさん:2007/03/18(日) 20:04:16
どうぶつ奇想天外でオマキザルが出てる。

タマリンの仲間だぜ?
767デフォルトの名無しさん:2007/03/21(水) 00:40:17
http://wiki.mozilla.org/Mozilla_2
Q2-07 * ES4 Spec and Ref Impl Complete
Q3-07 * Begin Tamarin/SM integration
Q4-08 * Moz2/FF4 Ship
来年か…できるかな?
768デフォルトの名無しさん:2007/03/21(水) 02:36:59
ファイナルファンタジーかとオモタ。Fxの事ね。
mozillaがロードマップ通りに進む訳がない。子供が予定日に生まれないのと同じだ。
769デフォルトの名無しさん:2007/03/21(水) 02:38:47
>>760
thanx.
asc_authoring.jar でも遊んでみます。
770デフォルトの名無しさん:2007/03/23(金) 12:30:43
>766
一瞬ポケモンの名前かと思った
771デフォルトの名無しさん:2007/04/01(日) 21:18:18
数字型って、規格上64ビット浮動小数点型のはずなんだが、ie,Firefox,Operaともに
document.write( Math.pow( 2,120 ) );
とかやらせてみるときちんと計算されるんだが、これはどう解釈すればいいのだ?
772デフォルトの名無しさん:2007/04/01(日) 21:28:12
>>771
指数部は10ビットなので Math.pow(2, 1024) でオーバーフロー
773デフォルトの名無しさん:2007/04/01(日) 22:05:53
ありがと、オーバーフローさせたら+Infinityが返ってきた
774デフォルトの名無しさん:2007/04/02(月) 02:06:30
実は実装で拡張されてたりする。
rhinoってnumberの整数表現はjavaのlongまでだった気する。

小数表現もstrictfp使ってるわけじゃないからIEEE-doubleでは無くCPUのFPU依存。
775デフォルトの名無しさん:2007/04/02(月) 11:38:55
自己反映計算なくなったら無名再帰どうやって書けばいいの?
仕様上はもう無いけどさ・・・。

Y-コンビネータとかどうやって書けばいいの?
そんなに暗黒面の力が嫌いか!
776デフォルトの名無しさん:2007/04/10(火) 13:17:21
Brenden Eichってなんて読むの。ファミ名の方がよくわからん。
アイク?それともエイク?独語風にエイヒじゃないよね?
777776:2007/04/10(火) 13:18:39
ごめん。独語風ならアイヒだね。<ツッコミ予防
778デフォルトの名無しさん:2007/04/10(火) 20:21:51
えーいち
779デフォルトの名無しさん:2007/04/10(火) 20:41:17
まさか。日本人だったの、あの人?
780デフォルトの名無しさん:2007/04/22(日) 23:14:05
Javascriptの文字列操作についての質問です。
C言語の場合日本語は2バイトなので、
char型のポインタを使ってリーダーバイト、トレーラーバイト共に操作すればよいのですが
JavaScriptの場合はどうすればよいのでしょうか?
文字列のハッシュ値を求めたいのですが、
var string = 'hogehuga';

function hash(str){
var h = 0;
var weight = 0;
for (var n = 0 ;n < str.length; ++n, ++weight){
if ( weight > 7){
weight = 0;
}
h += str.charAt(n) << (4*weight);
}
return h % 7;
}

alert(hoge);

としても
0が帰ってきてしまいます。
781デフォルトの名無しさん:2007/04/22(日) 23:29:32
・関数hashが一度も呼び出されてない
・ハッシュ値を計算するなら、マルチバイトとか気にせず1バイトずつ処理すりゃいいんじゃないの?
・StringのcharAtは文字列のオブジェクトを返すんだけど
782デフォルトの名無しさん:2007/04/22(日) 23:42:06
・関数hashが一度も呼び出されてない
馬鹿だ、俺。
var string = 'hogehuga';

function hash(str){
var h = 0;
var weight = 0;
for (var n = 0 ;n < str.length; ++n, ++weight){
if ( weight > 7){
weight = 0;
}
h += str.charAt(n) << (4*weight);
}
return h % 7;
}

hoge = hash(string);
alert(hoge);

です。コピペ間違いです。
・ハッシュ値を計算するなら、マルチバイトとか気にせず1バイトずつ処理すりゃいいんじゃないの?
JavaScriptってchar型の変数、定義できるんですか?
・StringのcharAtは文字列のオブジェクトを返すんだけど
帰ってきた文字を数値に変換すると言うことですか?
783デフォルトの名無しさん:2007/04/22(日) 23:46:48
charAtじゃなく、charCodeAt使え。
784デフォルトの名無しさん:2007/04/22(日) 23:52:22
こんな関数があったとは!!!!!!!!
どうも有り難うございます!!!!!!!!
785デフォルトの名無しさん:2007/04/25(水) 22:53:50
どうしてJavaScriptではバイナリデータを扱えないのですか?
786デフォルトの名無しさん:2007/04/25(水) 23:45:48
文字列型を使ってバイナリ列を表現できるよ。
バイナリファイルを扱いたいということなら
そもそもECMAScriptではファイル入出力について規定されてないから。
787デフォルトの名無しさん:2007/04/28(土) 16:02:28
処理系を自分で拡張するとか
788デフォルトの名無しさん:2007/04/29(日) 01:28:21
そこでLiveConnectですよ奥さん。
789デフォルトの名無しさん:2007/04/30(月) 13:49:57
え、俺男なんですけど。
790デフォルトの名無しさん:2007/04/30(月) 14:57:36
>>789
ヒント:性転換
791デフォルトの名無しさん:2007/05/03(木) 12:26:20
いや、むしろ
ヒント:慣用句
792デフォルトの名無しさん:2007/05/05(土) 19:07:09
3人とも帰っていいよ
793デフォルトの名無しさん:2007/05/12(土) 18:41:03
MozillaのCVSリポジトリからタマリンがごっそり消えた

なにがあったんだ……
794デフォルトの名無しさん:2007/05/12(土) 18:46:00
>>793
よく読んだら別管理になったらしいことがわかった

ttp://hg.mozilla.org/tamarin-central/
mercurialリポジトリだ
795デフォルトの名無しさん:2007/05/19(土) 13:10:33
所詮2chのことなのに、ここが糞スレとかいわれるとなんか腹が立つ。

ところで、特定のスコープ内でvar宣言なしに代入した変数が
グローバルオブジェクトのプロパティになるというのは、
ECMA 262-3rdの10.1.4と11.13.1と8.7.2を見れば明らかだよな。
796デフォルトの名無しさん:2007/05/19(土) 14:56:12
トップレベルでのdefineのことかーっ
797デフォルトの名無しさん:2007/06/09(土) 11:45:54
798デフォルトの名無しさん:2007/06/09(土) 13:11:38
799デフォルトの名無しさん:2007/06/13(水) 13:28:59
>>796
rhinoでグローバルオブジェクトをトップレベルでnewするとコンテキストチェーンが・・・
800デフォルトの名無しさん:2007/06/18(月) 19:20:09
>>797
これってまだES4だけでベンダ実装のJS20とかはまだっぽい?
実際に使えるのはまだまだ、先っぽいよね。
ecma-262 ed.3から激変した混乱もあるだろうし。
801デフォルトの名無しさん:2007/06/19(火) 02:39:43
>>800
AS3 はだいぶ近い。クラス関連の激変分はカバーしてると思う。
JS.Net は結構別物。
Web 上でつかえるかってのなら早くて再来年だな。
802デフォルトの名無しさん:2007/06/19(火) 03:05:46
AS3 は近いというより ES4 規格の元になってるというほうがいいかな。
現在の http://developer.mozilla.org/es4/spec/spec.html はほとんど AS3
ES4 規格が出来たら、AS4 として出してくるんだろうけど。

Web 方面もソース見たら Opera な人もだいぶ噛んでるようなので
Fx だけじゃなくいけるかもしれない。
803デフォルトの名無しさん:2007/06/19(火) 15:25:43
どちらかというと、今はadobeとmozillaがタッグ組んでるからMSとoperaが自然と浮いてる感じじゃない?
MSって標準化グループに居たっけ?

あと、個人的な観点だけどJS13以降for-in文のあるecma-262にイテレータの類いらなくない?
どいつもこいつもrubyに触発されすぎだと思うんだけど。
rubyの作法は生産性は高いけど、保守性とリファクタリング耐性が低いと思う。
JavaScriptはモジュール性と後者二つが重要だぞ。
804デフォルトの名無しさん:2007/06/19(火) 17:30:09
アァ?!
ルビキチつれてくるぞ?
805デフォルトの名無しさん:2007/06/19(火) 18:17:13
rubyは全然知らないんだけども、
俺はイタレータは必要だと思う。
コレクションの部分指定に逆方向走査、入出力抽象化などなど、
イタレータパターンはすっかり成熟していると思う。
豊富で洗練されたライブラリを持つには是非とも必要。

そんなでかくする必要ねーよということなら分からないでもないが。
806デフォルトの名無しさん:2007/06/19(火) 18:56:21
>ルビキチつれてくるぞ?
別につれて来て良いと思うけどあっちはサーバー側でしょ。需要が違うと思う。

そもそも、ESとして入出力が必要かね。
ESとしては標準化する必要はないと思うが。
ネット越しが大前提だから勝手に読み書きはまずいし。

>そんなでかくする必要ねーよ
これもブラウザに実装する面を考えれば重要だよ。ランタイム肥大化するし、
ライブラリを大量に標準化してもどうせMSが準拠しないのは目に見えてるし。
非互換なライブラリが増えればまたブラウザ戦争だし。
結局自分でクロスブラウザライブラリ作る羽目になる。
本当に必要最低限だけでいい気がする。
807デフォルトの名無しさん:2007/06/19(火) 21:28:11
イテレータを標準化すべきかって言うと、やはり標準化された方が俺は嬉しい。
ライブラリ間でコンセンサスが取れるのが大きそうだし、
function を引数に取るメソッドが大っぴらにあった方が面白そうだから。

ただ、現実問題として、現行のライブラリでは別の名前になっているのがほとんどだろうから
移行に時間がかかるだろうし、for 文と被るところがあるし(被ろうが構わない、という言語ならともかく)、
IE のことも考えると、標準化されてもあまり意味は無いし、それならいっそされない方が良いとは思う。
現行なら prototype に書き足すだけで、使う分には大した手間にならないし。

って ES4 なら、どうせ混乱するに決まってるんだから全部入れちま(ry
808デフォルトの名無しさん:2007/06/19(火) 22:16:12
>>803
イテレータを入れると保守性とリファクタリング耐性が落ちるってのか?
ナに言ってんだお前。
809デフォルトの名無しさん:2007/06/19(火) 22:34:22
>全部入れちま(ry
それだとリフレクション機能排除した意味なくね?
まあ、あれは最適化を妨げるから云々と結構前から言ってたけど。

>>808
>イテレータを入れると
>rubyの作法は
810デフォルトの名無しさん:2007/06/19(火) 22:39:08
>>809
>>イテレータを入れると
>>rubyの作法は

アホ。別の話ってんなら、イテレータを入れてはダメな根拠0じゃねーか。出直して来い。
811デフォルトの名無しさん:2007/06/19(火) 23:48:51
お前には一つ上の文が読めんのか?

>for-in文のあるecma-262にイテレータの類いらなくない?

ES4が部分的にRubyに影響受けてるのも事実。
もともと、パラダイムが違うのにわざわざ他流を入れすぎればカオスの元。ES4と3の激変をみれば明らか。
812デフォルトの名無しさん:2007/06/20(水) 00:13:42
>>811
はぁ?そんなのがイテレータが要らないって理由だったのか?
あまりにアホな意見なんで確かに見逃した。
もう、forがあればwhileは要らないだろ並にアホだもの。

>ES4が部分的にRubyに影響受けてるのも事実。
これは具体的にどの言語機能が?そんな事実も無いのに言い切るなよ?
813デフォルトの名無しさん:2007/06/20(水) 01:19:05
>これは具体的にどの言語機能が?
javascript1.7がでた時点で散々PythonとRubyの真似と言われてるんだが。
というかもともとコミニュティー側からの声が大きくて実装した。

ttp://www.betanews.com/article/Firefox_20_to_Feature_New_JavaScript_17/1160795703

For that reason, the upgrade of the interpreter to version 1.7 will be of prime importance,
especially as JavaScript begins to take on more of the programming features of newer,
compelling scripting languages such as Python and Ruby. "JavaScript 1.7...implements a whole host of new features that were really inspired by the takeoff of other languages that have become popular, like Python and Ruby,"
stated Schroepfer, "so we take the JavaScript language to that next level."

あたりよく読め。技術責任者自らこう言ってる。
JS17は当時、ES4やJS20へ取り込み予定の機能を試験するための16のアップデートでもある。
for-each-inなどがES4で標準化されてるんだから。
ちゃんと役目果たしてるよな。
814デフォルトの名無しさん:2007/06/20(水) 02:54:03
まねって事でもないと思うよ。
PythonやRubyがこの世になくても、入れて当然の機能が多いから。
むしろ色々な世界を切り開いているのは、
かつてはscheme, ML, Haskellなどの関数型言語系。今はC++だろう。
PythonもRubyもすごく保守的だ。

それから、イタレータの用途は、DOMのイタレータ型のインターフェースとか、
HTTP responseのイタレータとか、chunk型のhttpストリームとか、
いくらでもあるんじゃないの?

イタレータのないプログラミング言語は、
宣言型風にプログラムを書きにくくて、使う気がしない。
815デフォルトの名無しさん:2007/06/20(水) 03:00:25
C++ って何かしてたのけ?
816デフォルトの名無しさん:2007/06/20(水) 03:36:37
つobject oriented + meta programming
817デフォルトの名無しさん:2007/06/20(水) 03:47:28
イテレータの実装法はいくらでもあるけど、そこに重点を見出して言語機能で直感的なわかりやすさ重視でやってやろうってのは、新しいパラダイムだと思うけどなー>RubyやPython
818デフォルトの名無しさん:2007/06/20(水) 03:50:01
関数型の話が出てる時になんだが、現在、一般的にオブジェクト指向と呼ばれてる概念
を広く浸透させた功績があるじゃない。

javascriptは関数型だけどSelfの影響が強いけど。
819デフォルトの名無しさん:2007/06/20(水) 03:56:50
>>816
たまにでいいのでAdaの事も思い出してあげてください。
820デフォルトの名無しさん:2007/06/20(水) 07:51:43
>>813
結局ES4に入ってない機能にいちゃもんつけてたお前はスゲーよ
821デフォルトの名無しさん:2007/06/20(水) 11:47:31
お前はどうあっても叩きたいんだなw
822デフォルトの名無しさん:2007/06/23(土) 18:07:41
ある関数があるとして、それが定義されているファイル名や行番号を知ることはできますか。
また、eval("function f(x) { return x*x; }") を実行するときに、ファイル名や行番号を与えることはできますか。
823デフォルトの名無しさん:2007/06/23(土) 19:02:02
evalをバエルと読んでしまったよ閣下・・・orz

無理
824デフォルトの名無しさん:2007/06/24(日) 19:19:25
doxygenとかjavadocとかドキュメンテーションツールがjavascriptにも
欲しいです。根性ですかソース管理はそうですか? ('A`)
825デフォルトの名無しさん:2007/06/24(日) 21:40:38
使ったことはないが
ttp://code.google.com/p/jsdoc-2/
826デフォルトの名無しさん:2007/06/25(月) 03:35:42
http://jsdoc.sourceforge.net/ じゃなくて?と思ったら 2 ですか。
perl いらずの full JS で ブラウザか Rhino で動く、か。
827デフォルトの名無しさん:2007/06/27(水) 12:27:55
3年目記念カキコ
あと3年は持つな
828デフォルトの名無しさん:2007/06/27(水) 20:35:52
yield をカタカナ表記するために、ヤ行に新しく /ji/ の音を導入する必要があるな
イールドじゃ、納得できない
829デフォルトの名無しさん:2007/06/27(水) 20:46:18
イィール゜ド
830デフォルトの名無しさん:2007/06/27(水) 21:54:37
ヰールドとかヱールドってかんじ?
831デフォルトの名無しさん:2007/06/27(水) 23:28:14
ヰンダーの魔除け
832デフォルトの名無しさん:2007/06/27(水) 23:33:37
>>830
それはウィールドとウェールドだ
833デフォルトの名無しさん:2007/07/10(火) 03:10:38
spidermonkeyでスクリプトを書いてみているのですが、print()を使うと必ず改行も出力されてしまうようです。
改行を含めずにprint()することはできますか。
834デフォルトの名無しさん:2007/07/10(火) 14:33:02
System.print()など
835デフォルトの名無しさん:2007/07/10(火) 15:12:59
>>833
bash$ js
js> System
typein:1: ReferenceError: System is not defined

System というオブジェクトは定義されていないようです。
836デフォルトの名無しさん:2007/07/10(火) 15:36:06
>>833
js.c の Print 関数が本体で、
最後に fputc('\n', gOutFile); してるだけなので、そこだけ削ってリコンパイル。
837デフォルトの名無しさん:2007/07/10(火) 16:04:25
>>835
java.lang.System
838デフォルトの名無しさん:2007/07/10(火) 16:40:00
SpiderMonkey(JS Shell)ってデフォだと liveconnect 組み込んてないだろ
839デフォルトの名無しさん:2007/07/10(火) 16:49:48
JS Shellだけならね。
だからlive connectを取るか(rhino)
最新仕様を取るか(spidermonkey)だよ。

それ以上するならどっちにしろビルドからやった方が良い。
rhinoはjar突っ込むだけで+E4Xだから手軽だよね。
840デフォルトの名無しさん:2007/07/10(火) 17:43:27
>>833 が spidermonkey つってんのに rhino 持ち出すのはどうかいな。
出入力など実用は rhino の方が楽なんで、こだわらんけど。
841デフォルトの名無しさん:2007/07/10(火) 23:18:15
spidermonkeyもliveconnect使えるだろ。
ビルド時の問題ってだけで。
rhinoだと公式ビルドのdistroで初めからオールインワンなんだよ。
842デフォルトの名無しさん:2007/07/11(水) 00:48:04
素のsmjsだと無理だろ。
843デフォルトの名無しさん:2007/07/11(水) 01:22:30
だからspidermonkeyは元が組み込み用だからスタンドアロンな利用は弱いって、
rhinoで良いじゃん。フットプリントでかいから組み込みには向かんがw

spidermonkeyはdefineClass()みたいなのないの?
844デフォルトの名無しさん:2007/07/11(水) 12:02:55
>>843
JSClass 実装して、JS_InitClass だろーな。
http://aoeex.com/personal/2006/12/28/coding_with_spidermonkey_part_iv.php
Java の Class そのまんまな感じの defineClass @ rhino よりも、
C だからメソッド&プロパティの設定とかえらく面倒だけど。
845デフォルトの名無しさん:2007/07/11(水) 13:20:05
spidermonkeyは小さいしごちゃごちゃしてなくて良いなぁ・・・。

じゃあ、自分で必要なもの実装してエンジンに関連付ければ良いんじゃ?
実行時にスクリプトから出来るのかよく分からんが。
846デフォルトの名無しさん:2007/07/11(水) 18:36:23
動的ライブラリの仕組みは SpiderMonkey 自体はもってないので
それも自前で実装しなきゃあかん、そんなに大変じゃないけど。
847デフォルトの名無しさん:2007/07/11(水) 20:17:22
rhinoも持ってないぞ。てかEcma-262 ed.3も標準化してないな。4からか。

Java自体が全部動的リンクなだけだぁーw
848デフォルトの名無しさん:2007/07/11(水) 20:21:22
おっと、一応コンパイル済みJSをロードするフレームワークは持ってるね。オプションだからエンジンとは直接関係ないけど。
849デフォルトの名無しさん:2007/07/19(木) 21:24:15
850デフォルトの名無しさん:2007/07/23(月) 03:52:49
wxJavascript、普通に便利だな。Windows の場合、否が応でもコンソールが開いてしまうみたいなので
GUI アプリを組むにはイマイチだし、一部のサンプルプログラムを終了させるときに後味が悪かったり
wxWidgets の部分は挙動が怪しい部分もあるが、SpiderMonkey のシェルとしては、MySQL も SQLite
Expat もファイル I/O も使えてしまうので、非常にお手軽で優秀。オヌヌメ。
851デフォルトの名無しさん:2007/07/26(木) 01:16:35
見てみた。確かに良いがRhino使いには初めからバックボーンにjavaのライブラリがいるから利点ないな。

Swing+javaアダプタは楽だよ。

>Windows の場合、否が応でもコンソールが開いてしまうみたい
win版wxWidgets側の問題だな。
852デフォルトの名無しさん:2007/07/26(木) 07:11:38
rhinoのJavaAdapterってただのリフレクションかと思ったらもっと高度なことしてるんだね。

アダプトするjavaのスーパークラス(指定されない場合はECMAのObjectオブジェクトが使われる)とインターフェースをjava側で動的ロードして
スーパークラスにインターフェースを実装したjavaクラスのバイトコード吐いて
そのバイトコードをjsオブジェクトとしてrhino側で動的ロードし直したインスタンスを返してる。

jdk6の実装でJavaAdapterが簡略化されたのはこれのせいだろうね。
jdk6の実装だとバイトコード吐く部分が省かれてるから。
serialize()とdeserialize()もなくなってるし。
serialize()とdeserialize()はゲームのセーブデータ読み書きがこれだけで出来る神関数だったんだけど。
853デフォルトの名無しさん:2007/07/26(木) 23:22:46
>>850
ネタ投下してやんよシュ!、シュ!!(AAry

JOGL デモ demos.gears.GearsのRhino移植。

動作確認環境
java se 6
JOGL 1.1.0

多分JOGL1.0以上なら動く。

ttp://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=29591
javaソースのただのベタ移植なんでかなり冗長。
854デフォルトの名無しさん:2007/07/31(火) 06:44:03
Rhino 1.6R6来てるよ。
ソースコードだけ丸ごと無いからcvsから取りに行くようになったのかと思ったらアーカイブ壊れてた。
855デフォルトの名無しさん:2007/07/31(火) 09:59:17
http://developer.mozilla.org/en/docs/New_in_Rhino_1.6R6
なんか結構大きく変わったみたいだね。
XMLBeansなしでもE4Xがサポートされるようになったのかな。
856デフォルトの名無しさん:2007/07/31(火) 19:22:42
実は新機能紹介だけすでに
ttp://developer.mozilla.org/en/docs/New_in_Rhino_1.7R1

いつだったか1.6R6と1.7を今後どうしてくかって話してたっけ。
結局Rhinoではjavascript1.6のサポート欠番になりそうだね。
どうせ1.6の機能が正式採用になったのは1.7からなんだけどさ。
857デフォルトの名無しさん:2007/08/01(水) 17:29:01
あのさ、ecma-262系言語って言ってみれば関数レベルのレキシカルスコープしかないよね。
関数レベルのダイナミックスコープの変数定義するか
親スコープの変数に明示的にアクセスする標準な方法ってある?

function obj{
this.dynamic=100;
this.func1 = function(){

//ここでError
return this.dynamic;
}
}

obj.func1が実行されてるときアクティブな実行コンテキストは
obj.func1の関数コードだからthisはobjないのthis.func1になるから
func1ないからthis値参照してもobjのインスタンス値じゃなくて
objのthis.dynamicは参照できないよね。

これどうやって解決すればいいんだっけ?
858デフォルトの名無しさん:2007/08/01(水) 18:33:38
何がしたいんだかよくわからない…解説頼む.
o = new obj();
var value = o.func1();
とかいう話じゃないんだよねぇ…?
859デフォルトの名無しさん:2007/08/01(水) 18:45:16
クロージャを作りたいって話かしら
860デフォルトの名無しさん:2007/08/01(水) 19:07:30
rhino1.6R6 試してみたんだが… リソースのメッセージカタログ足りなくない?
% java -jar js.jar -hoge
Exception in thread "main" java.lang.RuntimeException: no message resource found for message property msg.shell.invalid
861857:2007/08/01(水) 19:17:58
ごめん。rhinoでHoge.prototypeにJavaAdapter使った場合に関連する謎の挙動だった。
どうも、prototypeにJavaAdapterインスタンス突っ込むとHegeのthisコンテキストすっ飛ばして
JavaAdapter (Hoge.prototypeの方)の方見に行っちゃうみたい。
JavaAdapterのjsObject渡す部分でプロパティ変数定義して
Hoge.prototype.memberで明示的にアクセスするとアクセスできた。
(明示しないと未宣言エラーかundefinedになる)

これLiveConnect側のバグかな?
862デフォルトの名無しさん:2007/08/01(水) 19:31:22
>>860
>msg.shell.invalid は昔からないけど
そのメッセージが表示される事態になったことないから困ったこともないんだが・・・
863デフォルトの名無しさん:2007/08/01(水) 19:42:38
>>862
実用上困らんけど気付いてたらレポートしてやったら?
# 実は仕様なのか?
864デフォルトの名無しさん:2007/08/01(水) 19:52:22
>>860
R6で実装が変わって「コマンドライン引数 -hoge なんて無効だぜ!」っていう
メッセージ「Didn't understand "-hoge"」と以下に続く
Usage文が外部ストリング化されてついでにUsageが詳しくなったんだがプロパティmsg.shell.invalid を忘れたみたいだな。

たぶんMessages.properitesに

msg.shell.invalid = Didn't understand "{0}"

追加だな。



865デフォルトの名無しさん:2007/08/01(水) 21:16:05
>>856
もともとRhino 1.6でE4Xサポートしたのにあやかって
SpiderMonkeyのほうもバージョン1.6に引き上げたのにな。
そういう意味では「Rhino 1.6ではJavaScript 1.6を
部分的にサポート」というのがとおりがいいのかな?
866デフォルトの名無しさん:2007/08/01(水) 22:44:59
いやspidermonkyがE4XのフルサポートでRhinoは部分サポートだろRhinoがフルだっけ?

spidermonkyにE4Xが実装されたときにfor each inがE4X構文拡張からjs1.6独自拡張に格上げされて。
1.7で2.0仕様に採用する予定で実験的にjs仕様に格上げされてes4に正式採用。

それにjs1.6は主にspidermonkyのVMのメモリリークフィックスがメイン。
Arrayに追加されたプロパティとイテレータ・ジェネレータはspidermonkyの独自実装で1.7の余興。
js1.4みたいに世間では事実上の欠番扱いだろ。

1.4もクライアント側の変更はないとマスコミでは言われてるが
実際にはCallやClosure,_proto_,_parent_,argumentsがjs仕様上正式に非推奨になった版で、
かつ、DOMがjs仕様から分離された版でもある。
ecma-262 ed.3あたりで既にリフレクションはecma仕様から外されてたから認識がめちゃくちゃなんだろ。
これは歴史由来。

実際Rhino 1.6系はjs1.5がサポート範囲でマイナーチェンジでE4Xとjs1.6の部分サポートがある程度。
js1.6のVM修正はRhinoには関係ないからだろう。そのVMもいまやry
世間一般のブラウザ実装がmozillaですらデフォでは1.5+独自拡張モードだから問題はないけど。
867デフォルトの名無しさん:2007/08/01(水) 23:27:40
https://bugzilla.mozilla.org/show_bug.cgi?id=306664
これ見る限りは >>865 が正解のようだが。

Array Extra は 1.6、何で入れたのかわからんが(AS3? 1.8 で reduce,reduceRight 追加)
Iterator,Generator は 1.7、多分 ES4 仕様に提案->実験実装なんだろうな。
メモリリークフィックスは、DOM との循環参照関連ならば 1.7。違うなら 1.6 からずっと。

mozilla.dev.tech.js-engine とか見てると、
rhino の側でちょっとの間何が 1.6 で何が 1.7 なのかわかんなくなってたような。
今は MDC のを元にしてるようだけど。
868デフォルトの名無しさん:2007/08/02(木) 00:45:59
>>857
こんなんしかないな

this.dynamic=100;
var self = this;
this.func1 = function(){

//ここでError
return self.dynamic;
869デフォルトの名無しさん:2007/08/02(木) 01:28:25
>>857
呼び出すときにobj.func1()って形で呼び出せば、
func1の定義内に書いた「this」はobjになるわけだけど、
敢えてそういう呼び出しをしたくないという希望なら
>>868のようにクロージャ使うことになるね
>>861は何をしようとして何ができないのかさっぱりわからん
870デフォルトの名無しさん:2007/08/02(木) 08:45:58
SpiderMonkeyのメモリリークの修正って昔からちょこちょこと行われてはいるけど、
それが新バージョンの目玉ですって言うようなでかい変更なんてあったか?
Firefox 2ではDOM循環参照関係のメモリリークが修正されたけど、
それはあくまでもDOM/XPConnect周りの修正であって、
コアのJSエンジンそのものとは関係ないだろ。
ttps://bugzilla.mozilla.org/show_bug.cgi?id=336791
871デフォルトの名無しさん:2007/08/02(木) 11:31:26
それよりR6で末尾呼び出しの最適化が行われるようになったけど
末尾再帰も最適化するんだろうか?
関数型ちっくなコード書きまくる俺にはwktkが止まらないw

けど、最近の流行でC構文しか知らない人間がes系言語使ってるけどりかいできてんだろうか?
classいらないからこっち方面を強化してほしかった。
せっかくSelfをC構文にしたのに Smalltalkに逆戻りってのも。
872デフォルトの名無しさん:2007/08/02(木) 13:30:15
末尾呼び出しの最適化ってRhino 1.6 R1の時点で既に実装されてたんじゃないの。
http://www.mozilla-japan.org/rhino/rhino16R1.html
873デフォルトの名無しさん:2007/08/02(木) 20:54:51
一応
http://developer.mozilla.org/es4/proposals/proper_tail_calls.html

関数型ちっくも OO ちっくもありよってな、ハイブリッドな方向だろ。
http://developer.mozilla.org/presentations/eich-ajax-experience-2007/#slide6
Brendan 本人はあんまり Pure な OO は好きではないようだが。
874デフォルトの名無しさん:2007/08/03(金) 00:00:16
>>871
汎用のtail jumpがあれば、tail recursionは当然含まれる。

Tail recursion最適化は、関数入り口へのjumpと引数の調整で済むので、
関数フレームの書き換えが必要なく、実装が容易。
だからC言語あたりでも結構行われている。
875デフォルトの名無しさん:2007/08/03(金) 01:55:44
pureなOOてSmalltalkのOOの事?
C++のOOは違う気がするんだが。
876868:2007/08/03(金) 03:04:06
>>869
>>868のようにクロージャ使うことになるね

俺はお前が名に言ってるかわからん。

「クロージャ使うことになるね」 は?何が?
877869:2007/08/03(金) 03:26:05
とりあえず>>857のコードが曖昧でよーわからんので、
objというインスタンスにdynamicとfunc1というプロパティが
あるのだと解釈した

で、obj.func1();って形で呼び出せば、>>857
>//ここでError
>return this.dynamic;
という部分のthisは正しくobjになるので、
クロージャにしなくても(selfを用意しなくても)よかろう

という意味
878デフォルトの名無しさん:2007/08/03(金) 16:05:18
>>857 のコードが曖昧なために多少荒れてるな…
ってかそもそもあのコード動かないよな?
みんなエスパーすぎだぜ…
879デフォルトの名無しさん:2007/08/03(金) 16:36:06
>>857
もう少し具体的なコードが欲しいなぁ……。
>>861 を読む限りでは rhino 限定問題らしいが。

ちなみに >>857 のコードをちと書き直した次のコードは
Firefox 2.0.0.6 では動作する。

function test() { this.d = 100; this.ex = function() { return this.d; }; }
var n = new test();
alert(n.ex());
880デフォルトの名無しさん:2007/08/03(金) 22:02:16
>>875
すまん、"pure" と "standard" を間違えてたかも。
https://bugzilla.mozilla.org/show_bug.cgi?id=304828#c3
まぁでも this にメソッド呼び出しする(メッセージ送信)ってのにはこだわらないみたい。

しかし読み直すと
https://bugzilla.mozilla.org/show_bug.cgi?id=304828#c20
> - OOP is not always and everywhere elegant.
と言いつつ
https://bugzilla.mozilla.org/show_bug.cgi?id=355257#c7
> You don't have to sell me on anti-OOP.
パラダイム(OOP とか関数型とか)にこだわりのない人だね。
881デフォルトの名無しさん:2007/08/03(金) 22:27:51
>>875
SmalltalkはpureなOOというより宗教的なOO。
仏教だの道教だのの宗教用語をバズワードのように使う。
882デフォルトの名無しさん:2007/08/03(金) 23:20:00
そこら辺は、見る人間の素質に依るよね。
宗教人は対立宗教に厳しい様だ。
883857:2007/08/04(土) 02:14:06
ごめん、混乱させたね。
ttp://gamdev.org/up/img/9913.zip
↑を作ってるときに発症したんだけど何とか回避したんで元の再現コードはもう無いから状況をうまく説明できない。

Usage:
<rhino_cmd> ControlWindow.js

*<rhino_cmd> は実行可能なRhino Shell
詳細は<rhino_cmd> ControlWindow.js -u で確認。

strictモードでも警告出ないようにするのが苦労した。

#俺はSmalltalkよりSelfやIoの方が好きだな。
884デフォルトの名無しさん:2007/08/05(日) 12:37:47
>>883
> #俺はSmalltalkよりSelfやIoの方が好きだな。

俺も元はバリバリのSmalltalkerだったが、
今ではprototype指向のほうがpure OOだと
思うようになった。
885デフォルトの名無しさん:2007/08/05(日) 13:18:57
javascriptはC構文にしたせいでクラスベースしか理解できない連中に誤解されたというか、
連中がパラダイムについていけてないんだよ。

パラダイムの系譜的にはこうなのに。
Smalltalk─Self─Io
         └LiveScript

最近、再評価されてるがAJAXなんてレガシーなホストオブジェクトだし。
886デフォルトの名無しさん:2007/08/05(日) 13:28:22
JavaScript の至上命題は prototype ベースの OO を普及する事
という訳ではないんだから、言語の許す範囲で好きにしたら良いさ
887デフォルトの名無しさん:2007/08/05(日) 13:37:22
Javascriptが最初からクラスベースだったら、
Python, Ruby, JVM系のGroovyなどが登場する余地は全くなかったと思う。
888デフォルトの名無しさん:2007/08/05(日) 14:15:47
>>884
prototype指向のほうが純粋な理由は?
889デフォルトの名無しさん:2007/08/05(日) 14:20:33
あるオブジェクトがプログラムの中で進化していく感じは生き物っぽいとか?
・・・ごめん、メルヘン入ったw
890デフォルトの名無しさん:2007/08/05(日) 14:55:45
pureは違うと思うが、
なんでもobject傾向が高いよな。prototype系は。
891デフォルトの名無しさん:2007/08/05(日) 15:24:03
その「なんでも」っていうのは、普段プログラム書くときに色々なものをオブジェクトにしやすいってこと?
それともコアな(メタな)レベルでオブジェクトそのものの表現力が高いってこと?
(例えばJavaでいうとClassクラスを定義できるってことが、Javaのクラスの表現力の高さの1つ)
892デフォルトの名無しさん:2007/08/05(日) 15:36:37
「なんでも」は「なんでも」だ。
どちらか一方を選ぶ必然性はない。
893デフォルトの名無しさん:2007/08/05(日) 15:39:58
べつにクラスベースだってなんでもオブジェクトにできるじゃん
894デフォルトの名無しさん:2007/08/05(日) 16:16:00
>>887
javascriptが始めっからクラスベースだったら
関数型+prototypeで動的web pageっていう凶悪な中毒性がないからほかの言語が流行ったと思う。

それを言うならPython, Ruby,GroovyはJVM上で動いてるから
Rhinoの実績がなかったらJVM系スクリプト言語が流行らなかったと思う。

javascriptがうざいエフェクトに使われるはるか以前のMocha/LiveScript時代に
一部の連中があのパラダイムと動的web pageに目を付けて
狂気乱舞してゲーム量産された時期があるんだが
ああいう連中は関数型・prototype・強力なリフレクションに惹かれてたんだよ。
(まあ、すぐにリフレクションは仕様ミスだとnetscapeに訴え続けたが久しく認めてくれなかったね。)

だから、prototypeがないとあまりwktkしない。
あの時代に遅延評価とかY-コンビネータとか
無限リストとか無名再帰とかC構文で見たときwktkしたが
アレにさらにprototypeが足されたら堪らんかったよw
真っ先にSmalltalkとSelf周り連想した。
言語仕様をフルに活用したトリッキーで奇抜なコードを読むのも楽しかったし。
895デフォルトの名無しさん:2007/08/05(日) 16:55:31
>>894
ECMAScriptの策定以前に、そんなに関数型な使い方をガンガンしてるどころか
OOをバリバリ使い倒してるコードが量産された形跡が、今日全くと言っていいほど
見当たらないが、誰がそんなコード書いてたんだ?
896デフォルトの名無しさん:2007/08/05(日) 19:20:29
>>895
まあ、いわゆるギークとかウィザードと呼ばれる学術的・技術的に精通してた連中?
時期はnetscapeにLiveScriptが正式実装される前のβ版からダイナミックHTML初期以前くらい。

ダイナミックHTMLが流行りだした頃にうざい演出として使われるようになってからそういうソースは消えたね。
Mocha〜LiveScript間の時代だから今の連中が知らなかったり痕跡が残ってないのは当然。

遊んでた連中がお偉いさんになって仕様決めてるか、ソースがホストされてた鯖が死んでるから。

それに太古のwwwってpropaganda shit(糞宣伝屋)の(結構長期間の)工作が「西洋の暗黒時代の再現」と
まで言われるほど酷くて一般人の偏見が人権侵害並みに酷くて
ジジイは昔話したがらないから語り継がれることも無いしね。

そのピーク時に起こったのがコランバインの悲劇(コランバイン高校銃乱射事件)だよ。
だから昔話は周辺全部まとめてタブーってのが暗黙の了解。
(ていうよりみんな疲れ果てたんだけど)

そのころ日本の事情しか知らない連中はパソ通マンセーだったから知る由も無いね。
まあ、wwwとコランバイン高校銃乱射事件の関係はGEEKSって本読めば少し分かるよ。

当時、あの本に出てくるサイトに出入りしてたし、著者がwwwに精通した分かってるライタとしてその筋では有名だったし。
フォーラムで意見交換するのが好きな人だったからあの本の登場人物は知らない人間でもないよ。
昔のwwwは何も無かったけど人と有用な話するのは容易だったから
(たとえそれが有名・著名・今でこそお偉いさんであっても)印象に残ってるよ。

だから痕跡なんてないし知る人しか知らない話ってところ?
このまま歴史に消した方が良い事実でもあるけどね。
897デフォルトの名無しさん:2007/08/05(日) 20:10:14
よくもまぁ訊かれて無いことまでベラベラと
898デフォルトの名無しさん:2007/08/05(日) 22:04:24
javascriptでクロージャをバリバリ使うには、循環参照をこなせる
GCが必要なわけだが、そんなGC積んだ処理系が昔どこに
あったんだ?
要するに、オモチャを作って遊んでた奴らがいるだけだろ。
899デフォルトの名無しさん:2007/08/05(日) 23:04:14
そもそもprototypeがついたのがJS1.1(NN3)で
関数のネストができるようになったのはJS1.2(NN4)からじゃないのか。
http://wp.netscape.com/eng/mozilla/3.0/handbook/javascript/ref_m-q.htm#178711
http://web.archive.org/web/20000302114833/devedge.netscape.com/docs/manuals/communicator/jsguide/func.htm#1005546
900デフォルトの名無しさん:2007/08/05(日) 23:13:34
だから循環参照切れなくてバグだとnetscapeに主張してたが当時netscapeはそんなヘビーな使い方は想定してなかったんで相手にされなかったよ。

ていうか一番はじめのGCはスクリプトがロードされればメモリ確保して、
ページがアンロードされるまでメモリ解放されなかったから
実際にそれでゲームやってたらその内メモリ食らい尽くしてたよ。
その次くらいのGCが弱参照カウンタで次がmark&sweepだからnetscapeもどうにかする気になったんだろう。
901デフォルトの名無しさん:2007/08/06(月) 00:01:44
主語が書いてないから、何とも言えんな。
誰が主張して、誰が相手にされなくて、誰がゲームを作ったの?
902デフォルトの名無しさん:2007/08/06(月) 11:47:29
放置しる
903デフォルトの名無しさん:2007/08/06(月) 11:50:24
>>894
> それを言うならPython, Ruby,GroovyはJVM上で動いてるから
> Rhinoの実績がなかったらJVM系スクリプト言語が流行らなかったと思う。

JythonやJRubyは、C/C++で書いた参照実装(本家)じゃなくて、JVM使ったalt.実装だぜ?
904884:2007/08/06(月) 20:42:45
>>888
> prototype指向のほうが純粋な理由は?

class指向では、オブジェクトがオブジェクトであるために
そのオブジェクトのクラスに依存することになる。
つまり、オブジェクトがfirst class objectであるためには、
オブジェクトとそのクラスがペアとして必要ということ。

一方で、prototype指向では、オブジェクトがオブジェクトであるために
オブジェクト自身以外に依って立たずにすむ。ECMAScriptの
オブジェクトリテラルが良い例。
905デフォルトの名無しさん:2007/08/06(月) 20:51:59
クラスも単なるオブジェクトだから、純粋性が損なわれている様な気はしないなあ
プロトタイプベース言語の場合は、クラスという機構を持たない分、ピュアというよりは
シンプルな感じがする。
906デフォルトの名無しさん:2007/08/06(月) 22:10:55
プロトタイプベースだって、
「属性」がファーストクラスオブジェクトじゃない実装あり得るだろ。
動的な言語だときついけれど。
907888:2007/08/07(火) 08:16:03
>>905-906
自分が「pureなOO」と言ったのは、何でもオブジェクトという意味ではなく、
オブジェクトがより純粋な意味でのオブジェクトとして実装されている、
という意味です。

なぜクラスオブジェクトがあるとpureでないかというと、「オブジェクト」という時に、
単一のオブジェクトが存在してそれだけで説明が済むprototype指向に比べ、
class指向の場合、インスタンスオブジェクトの視点から見ると、メタオブジェクトと
ペアになって始めてインスタンスオブジェクトが完結するというのは、
メタオブジェクトというインスタンスオブジェクトにとっては「不純物」なオブジェクト
が入ってきてはじめてfirst class objectになるというのは、pureさを損なっていると
思います。
908デフォルトの名無しさん:2007/08/07(火) 08:22:11
>>907
> class指向の場合、インスタンスオブジェクトの視点から見ると、メタオブジェクトと
> ペアになって始めてインスタンスオブジェクトが完結するというのは、

いや、いったんインスタンスになったら、自立していても構わないぞ。
クラスベースでも、プロトタイプベースでも。
909888:2007/08/07(火) 08:28:35
>>908
> いや、いったんインスタンスになったら、自立していても構わないぞ。
> クラスベースでも、プロトタイプベースでも。

mehtodDictionaryもinstVarNamesも持ってないのに自立していると言える?
prototype指向言語はどっちもインスタンスが持っているが、
Smalltalk等のclass指向言語はメタオブジェクトが持っているよな。
910デフォルトの名無しさん:2007/08/07(火) 08:45:00
それはそういう実装が多いってだけの話でしょ。
911デフォルトの名無しさん:2007/08/07(火) 14:33:18
>>907
クラスベースの言語における クラス−インスタンス 連携というのは、
プロトタイプベースにおいてパターンとして存在するひとつの委譲方式を選んで
言語機能に組み込んだだけ(時系列は前後するけど)と考えることができるので、
プロトタイプベースにおいても当然存在しうる当該パターンが「オブジェクトの
用い方として pure ではない」と感じたとしても、それは 888 の(おそらくは
間違ったメンタルモデルに基づく)主観の問題にすぎなくなくない?
912デフォルトの名無しさん:2007/08/07(火) 19:56:37
>>907 が間違っているとまでは思わないけど、>>911 の論旨の通りだと思う。
クラスベースの言語でも Smalltalk みたいに不純物ゼロの物もあるし。
プロトタイプベースはフラットでプリミティブかもしれないけど、プロトタイプベース
だからピュアというのは無いんじゃないかな。
913888:2007/08/07(火) 22:56:37
>>911
そう。あくまでパターンとして存在するべきものが
言語仕様の中で固定化されてしまっているでしょ?
オブジェクトの存在だけでなく、ペアの存在までアプリオリとしている。
そこがclass指向のpureじゃないところ。
prototypeベースでの委譲は固定化されていない。
prototypeなしでもオブジェクトはオブジェクトとして存在できる。
classベースではクラス無しにオブジェクトは存在できない。
この差は大きいよ。
914デフォルトの名無しさん:2007/08/07(火) 23:30:37
プロトタイプベースのオブジェクトだって結局ヒモはついている(単独では成り立ち得ない)
わけだから、どこまで見えて(知っていて)それが気になるかってだけの話じゃね?
それが pure とかいうと文脈がわからん人は混乱するからイヤ〜ンな感じだけど、
別の表現をしてくれればスルーできるからそうしてくれ。
915デフォルトの名無しさん:2007/08/07(火) 23:41:07
>>913 は多細胞生物より単細胞生物の方が生物として pure だと思うんだろうかね。やっぱ。
916デフォルトの名無しさん:2007/08/08(水) 00:38:15
>>915 は単細胞生物より多細胞生物の方が生物として pure だと思うんだろうかね。よくわからんが。
917デフォルトの名無しさん:2007/08/08(水) 01:02:39
この場合、"pure" という表現が妥当じゃないという事に尽きると思う。
どちらかがより "pure" だという話をするという事は、もう一方が "impure"
または "polluted" だと言っているのと同じだと思うけど、クラス機構を
持つオブジェクト指向言語が "impure" だとは思えない。

別にクラスを持つ言語に不純物が入っているというわけではないからね。
クラス自体はもちろんオブジェクトだし、オブジェクトの生成にクラスを使用
するという機構も、オブジェクトが生きる上での単なるルールであって、
オブジェクトの世界に異物が混入している訳では無いよね。

プロトタイプチェーンの存在は "pure" の内に入るのかな。
918デフォルトの名無しさん:2007/08/08(水) 01:10:02
そういう例えなら、888 は、個体の維持のために(増殖には関係ない)よけいな機構を
いろいろと持っている通常の生物より、自らを記述した遺伝子しか持たないウイルスを、
より純粋な生物だと主張しているように見えるよ。
919デフォルトの名無しさん:2007/08/08(水) 01:14:34
>>916
やっぱり良く分かってもらえなかったか。
多細胞生物も単細胞生物も、組成の複雑さの違いや特殊な機能を司る器官の存在が
有っても、生物としては同じ様に pure だと言いたかったんだが。
920デフォルトの名無しさん:2007/08/08(水) 02:47:27
そもそもプロトタイプベースの言語で書かれたクラスシステムはどうなるんだ?
ありゃ不純なのか。
921888:2007/08/08(水) 07:28:22
>>915
>>913 は多細胞生物より単細胞生物の方が生物として pure だと思うんだろうかね。やっぱ。

変なたとえだね。
「細胞指向の生物として」、単細胞のほうがピュアだとおもうよ。
生物としてなら、別にpureも糞もない。

ちなみに>>916は俺じゃないよ。

俺は別にprototype指向のほうがプログラミング言語としてpureだと言ってるわけじゃない。
オブジェクト指向言語としては、prototype指向のほうがpureだと言ってるだけ。
プログラミング言語としては、別にどっちがpureというわけでもないでしょ。

まあ、この話でグダグダしてても仕方ないから、もうこの辺でいいよ。
922デフォルトの名無しさん:2007/08/08(水) 11:22:38
「プロトタイプベースはピュアなオブジェクト指向言語である」と
「関数型言語には副作用が無い」はこの板で良く聞く間違いの
2大巨頭だな
923デフォルトの名無しさん:2007/08/08(水) 11:25:57
最後のでなんとなく分かったような気がする。
888 は「ピュア」を誤って「プリミティブ」というニュアンスで使っちゃってる
んじゃないかな? 単細胞やプロトタイプベースがプリミティブだって言うのなら、
なんら異論はない。
924デフォルトの名無しさん:2007/08/08(水) 12:01:13
>>921
>「細胞指向の生物として」、単細胞のほうがピュアだとおもうよ。

ここがみんなが理解出来ない点だと思うんだけど、ピュア=「均質で澱みが無い状態」
の様なニュアンスで言ってるのかな? 他の人はピュア=「不純物が含まれていない」
というニュアンスだと思うけど。
925デフォルトの名無しさん:2007/08/08(水) 18:11:21
>>913
クラスベースだと、クラスがなければオブジェクトが存在できない
という見方をするなら
ECMAScriptでも、callable属性を持つコンストラクタが無ければオブジェクトが存在できない
って話になるのではないかと

プロトタイプベースでオブジェクトがアプリオリに存在できる
という見方をするなら
クラスベースでも、オブジェクトはアプリオリに存在できる
と考えて支障はないし

プロトタイプベースのほうがピュアってのは、ただの希望的観測だよね?
926デフォルトの名無しさん:2007/08/08(水) 21:16:49
要は、オブジェクトとメッセージこそがOOの本質であって、
クラスや継承やその他諸々は本質ではない(=必須要素ではない)
ということが言いたいんではないかな?
927デフォルトの名無しさん:2007/08/08(水) 21:56:37
>>926
それはみんな了解していて、それを pure と呼ぶ事にのみ疑問を
抱いていると思うんだけど
928デフォルトの名無しさん:2007/08/08(水) 22:10:40
>オブジェクトとメッセージこそがOOの本質

もう 888 は出てこないだろうからちょっと話題を変えて聞きたいんだけど、
ECMAScript ユーザー的には、この「メッセージ」ってえのはどうなの?
メッセージって言って違和感ないのはプロトタイプベースでは SELF や Io くらいまでだよね。
NewtonScript や JavaScript ではただの(ちょっと変わった)関数呼び出しにしか
見た目的にも意味論的にも見えないわけなんだけど。メッセージって本質として要るもんなの?
929デフォルトの名無しさん:2007/08/08(水) 23:19:50
メッセージ・パッシングが本質的なのはアクター・モデルであって、
OOではない、というのが一般的じゃないですかね。
もちろんOOとアクター・モデルはよく合う。

むしろ継承やプロトタイプって考え方の方が、
混沌としたオブジェクトの海にどうやって秩序をもたらしていくかって事で、
OOの世界に必然的に出てくることだと思います。
930929:2007/08/08(水) 23:20:34
あれ?これってスレ違いだね。ごめんね。
「ECMAScriptでは」って制限つけないといけないよね。
931デフォルトの名無しさん:2007/08/08(水) 23:45:28
モレはインスタンスがクラス(型)になるってのがプロトタイプベースのビックリだった。
あのドロドロした感じが、クラスベースよりLivelyな感じがする。
932デフォルトの名無しさん:2007/08/09(木) 02:05:01
>>928
>>880 にちょっと書いたんだが
https://bugzilla.mozilla.org/show_bug.cgi?id=304828
メッセージングの意味論には固執してない、
むしろクロージャとしての関数の方が重要ってことみたい。
どちらかというと CLOS つか関数型の総称関数の考え方が入ってきている。

それにしてもスレ伸びたな。3年かからんかった。
933デフォルトの名無しさん:2007/08/09(木) 03:20:58
スレを伸ばしたければ宗教論争が一番さ
934デフォルトの名無しさん:2007/08/09(木) 04:43:51
迷惑な奴らだな
935デフォルトの名無しさん:2007/08/09(木) 08:01:16
>>932
Smalltalkのブロックオブジェクトは、
クロージャじゃない実装のほうが多い。
と言って煽ってみるテスト。
936デフォルトの名無しさん:2007/08/09(木) 08:49:40
>>931
クラスが最初に出てきたときは違ったけど、今時は全てのクラスがインスタンス
(「Classクラス」みたいなののインスタンス)だったりするから、もはや本質的な違い
はないんじゃない?
937デフォルトの名無しさん:2007/08/09(木) 11:06:07
この速さの原因には、プロトタイプベースオブジェクト指向スレが落ちてるってのもあるんだろうな。
938デフォルトの名無しさん:2007/08/09(木) 11:26:31
>>928
JavaScript はメッセージというよりは単なるスロットアクセスという感じがするなあ

>>935
クロージャじゃないのは Squeak くらいだと思ってた
ANSI Smalltalk 的にはブロックはクロージャだったよね
939928:2007/08/09(木) 14:30:07
>>938
なるほど。単なる(ちょっと賢い)スロットアクセスってぇあたりでFAかな。
ありがとう。すっきりした。

>>929
スレ違いだけど念のため。

アクター理論はヒューイットがケイのOO…というか「メッセージング」という
アイデアをヒントに発展させたもの。
現在主流のOOであるストラウストラップやメイヤーの「抽象データ型」のOO
と違って、ケイのOOは「メッセージング(による動的性)」が本質だから、
なにが本質か、アクター理論と合うかどうか等々は「OO」が意味しているところ
(前後の文脈)によるよね。
940デフォルトの名無しさん:2007/08/09(木) 14:44:27
文脈ないところでは、オブジェクト中心って事以上の意味はない。
941デフォルトの名無しさん:2007/08/09(木) 20:49:32
でもJavaScriptってケイよりもストラウストラップっぽい匂いがするなあ。
942デフォルトの名無しさん:2007/08/09(木) 20:57:15
でもケイ言うOOは、SmalltalkよりもJavaScriptのほうが近いような気がする。
888じゃないけど、なんとなくそんな気がする。
でもケイはSelfの良さは認めているけど(だからSqueakでMorphicはじめた)
Selfを基盤にすることは拒否しているんだよな。繁雑すぎるという理由だったか?
943デフォルトの名無しさん:2007/08/10(金) 00:30:54
>>941
具体的にはどんなところが?

ストラウストラップやメイヤーの「抽象データ型」のOOのミソは、
クラスを使って「ユーザー定義型」を表現するところにあるわけだけど…。
944デフォルトの名無しさん:2007/08/10(金) 01:10:09
>>943
JavaScriptのオブジェクトって、ぶっちゃけ構造体+コンストラクタだよね。
945デフォルトの名無しさん:2007/08/10(金) 01:20:09
構造体っつーよりハッシュテーブル
構造体にはメンバを動的に追加したり出来んよ
946デフォルトの名無しさん:2007/08/11(土) 12:07:45
http://wiki.ecmascript.org/doku.php
ES4 仕様更新&場所移動
なんか今年中に終わりそうもないかんじ

http://wiki.ecmascript.org/doku.php?id=proposals:remove_the_arguments_object
うーーーーむむむむむむ
947デフォルトの名無しさん:2007/08/13(月) 04:10:49
>>931
>>944
あれは代数的データ型と言ってだなry
ES4の型なんてまさに代数的データ型だろ。
さらにメタプログラミングでカオスってるが。

関数型言語知ってりゃ結構普通の概念なんだが。
948デフォルトの名無しさん:2007/08/13(月) 08:30:05
>>947
ECMAScriptのオブジェクトのどこがAlgebraic Data Typeなんだ?
代数データ型に実行時にコンストラクタを追加したりできんよ?
949デフォルトの名無しさん:2007/08/13(月) 13:07:33
ECMAScriptって実行時にコンストラクタを追加できたっけ?
コンストラクタ関数の参照なら持てるけどReadOnlyじゃなかったか?

コンストラクタとしては定義時に決定してるだろ。
Functionオブジェクトの事?
950デフォルトの名無しさん:2007/08/13(月) 17:22:59
コンストラクタ関数の追加は出来ないけど再定義はできるので
http://getahead.org/blog/joe/2007/03/05/json_is_not_as_safe_as_people_think_it_is.html
こーゆー問題が出てくる。

ES4 の type なら代数的データ型でいいと思うけど、
ES3 の Object だと HashMap だわな。
951デフォルトの名無しさん:2007/08/13(月) 18:41:46
代数データ型のコンストラクタとESのコンストラクタは別物だろ。
むしろファンクタ(ry
952デフォルトの名無しさん:2007/08/13(月) 19:13:08
953デフォルトの名無しさん:2007/08/13(月) 20:41:06
>>952
しかしそれは仕様のバグのような気がする。
たとえば13.2.2のステップ4では"original Object prototype object"とあり、
Objectを書き換えても常に同一のオブジェクトを用いることになっている。
同様に11.1.4および類似の部分でも"original"なコンストラクタを
用いることと明記すべきだったと思う。
954デフォルトの名無しさん:2007/08/13(月) 20:58:55
javascriptで仕様ミスの話といえば、複文(入れ子関数)を使った際のCallオブジェクトの参照問題だろ。

語ろうぜ!
955デフォルトの名無しさん:2007/08/13(月) 21:08:07
そろそろ次スレのことも考えようか
956デフォルトの名無しさん:2007/08/13(月) 21:15:22
>>954
1. 複文といったら普通は(C系の言語なら{}で囲まれた)ブロックをあらわすと思うんだが。
2. もうちょっと具体的に。仕様のどのへんが問題だと思うの?
957デフォルトの名無しさん:2007/08/13(月) 22:19:05
複文ねえ、、、operational semanticsな人達は
「複文と言えば、;で結合された逐次実行文だろ」
と思うだろうな。

まあそんな枝葉末節は置いといて、俺もCallの仕様のどこがおかしいか知りたい。
958デフォルトの名無しさん:2007/08/13(月) 22:22:10
違うかもしれんが、ECMA-262 3rd では関数定義をトップレベルか関数直下にしか
置けない、文の中には置けないって話か?
http://nanto.asablo.jp/blog/2005/12/10/172622

ES4-discuss 見ると、ES4 では IE(JScript) 方式が正しいことになったみたい。
あ、関数式の変数登録は別ね。
959デフォルトの名無しさん:2007/08/14(火) 06:32:41
良い文書を見つけられなかったのでサイ本5版でも読んでくれ。良いタイミングで新版出たから。

Activationオブジェクトとスコープチェーンとコンテキストチェーンの話してるあたりに載ってたはず。

JScriptのホストオブジェクトの循環参照が切れないのとは違う問題だぞ。
960デフォルトの名無しさん:2007/08/14(火) 18:21:23
>>959
だからさ、なんで君がこういう問題だとズバリ解説できないの?
961デフォルトの名無しさん:2007/08/14(火) 18:25:32
そんな突っ込みより情報があるからましじゃまいか
962デフォルトの名無しさん:2007/08/14(火) 19:20:44
俺には同じぐらい無意味なレスにしか読めんが。
963デフォルトの名無しさん:2007/08/14(火) 19:29:03
最近仕様分かってない奴が叩きたがってるだけに見える。
964デフォルトの名無しさん:2007/08/14(火) 19:34:50
よくある「俺仕様と矛盾している」って奴ね。
965デフォルトの名無しさん:2007/08/14(火) 22:14:01
サイ本5版読んだ人、サンプルコードお願い。
966デフォルトの名無しさん:2007/08/16(木) 07:27:52
Callの仕様のミス、まだ〜チンチン
967デフォルトの名無しさん:2007/08/16(木) 21:50:17
5版はまだ読んでないがサイ本3版にこんな例があった。

var x = "global";
function f() {
var x = "local";
function g() { return x; }
}
alert(f.g()); // undefined
f();
alert(f.g()); // local

gのスコープチェーンはgのCallオブジェクト、fのCallオブジェクト、
グローバルオブジェクトとなるため、fが呼び出されていなくても
fのCallオブジェクトが参照されてしまう、とか書いてあった。

ただし、JavaScript 1.5(Firefox 1.0.8で確認)では2度目のf.g()も
undefinedを返したし、ttps://bugzilla.mozilla.org/show_bug.cgi?id=293782
の修正によって、少なくともJavaScript 1.6以降ではf内で定義された
関数をfのプロパティとして参照できなくなった("g" in f == false)から、
そんな古い問題が5版にもなってまだ取り上げられているのかは知らない。

それにこの問題はJavaScript固有の問題であって、ECMAScript 3に
従うなら現在のJavaScriptと同様、f.gがundefinedになるはずだし。
968デフォルトの名無しさん:2007/08/24(金) 05:38:17
あれだけ盛り上がっていたのが突然clearIntervalされたような静けさ・・・
969デフォルトの名無しさん:2007/08/24(金) 07:47:58
var g = (function(){
  for (let i = 1; i < 1001; i++) yield i;
})();
var id = setInterval(function(){
try {
  var i = g.next();
} catch(e) {
  clearInterval(id);
  // <- イマココ, i = 969
}}, 1000);
970デフォルトの名無しさん:2007/09/01(土) 06:31:36
マヤ「スレ、完全に沈黙しました」
リツコ「なかなか伸びないものね・・・」
ミサト「GC班、スレッド回収を急いで、早く!」
971デフォルトの名無しさん:2007/09/01(土) 10:14:02
お前らネタ投下。
Mysaifu JVMでRhino_R6を普通にビルドしたら動いた。LiveConnectも動いてるっぽい。

WM搭載機からスクリプトしまくりだぜw

Mysaifu JVM
ttp://www2s.biglobe.ne.jp/~dat/java/project/jvm/index.html
972デフォルトの名無しさん:2007/09/01(土) 16:15:14
>>971
マジか?
試してみるかな…
973デフォルトの名無しさん:2007/09/01(土) 16:48:15
>>971-972 作者の自演臭い。
でもナイスなプロダクト乙!
974デフォルトの名無しさん:2007/09/02(日) 04:30:35
今でもJavaVMをスクラッチする人がいるという
事実に感動。
975デフォルトの名無しさん:2007/09/02(日) 06:13:55
スクラッチから書ける人間の絶対数は普通に増えている。
スクラッチから書けない、書く気も無い人間との比で減ったように感じるだけだな。
976デフォルトの名無しさん:2007/09/02(日) 17:53:39
書けると書くには天地の開きがある。
最近どんなJavaVMが新登場したよ?
昔(2001年くらいまで)はなんかむやみにたくさんあったぞ。
Wabaみたいなパチモンもあった。
今はJITのハードルが高すぎるとか、サーバサイド一辺倒になったとかで、
誰も書かなくなった。
977デフォルトの名無しさん:2007/09/02(日) 20:57:25
>>976
ちょっと前までは書く能力のある人が必要に応じて書いていたけど、
もう今はそれも一巡しちゃったんじゃないの?
978デフォルトの名無しさん:2007/09/03(月) 23:42:15
いまは公式のOpenJDKもPhoneMEもあるからな。
PhoneME Advanceならプロファイル揃えればHotSpot VMでSE1.4のフルセットが使えるしなぁ。

たぶんRhinoもCDC用のブートストラップクラスと必要なプロファイルをクラスパス通してビルドすればJavaME/CDCで普通に動くと思うよ。
wm版バイナリ出てるがそのままじゃJAMが使えないけど。
979デフォルトの名無しさん:2007/09/17(月) 16:07:54
なんでプログラマって「スクラッチから」とか言うの。
英語のテストなら確実に0点にされるぞ。
980デフォルトの名無しさん:2007/09/17(月) 16:13:00
# from scratch
〔作業{さぎょう}などが〕最初{さいしょ}から、ゼロから、一から
◆【参考】scratch
◆【同】do something from beginning
・Louise made her wedding cake from scratch. : ルイーズはウエディングケーキをすべて自分で作った。
・She made this cake from scratch. : 彼女はこのケーキを一から(ミックスを使わずに)作りました。
981デフォルトの名無しさん:2007/09/17(月) 16:14:15
from scratch をそのまま訳してるだけでしょ。
その英語のテストを採点してる教師は首にした方が良いぞ。

Results 1 - 50 of about 22,900,000 for from-scratch [definition]. (0.17 seconds)
982デフォルトの名無しさん:2007/09/17(月) 17:11:35
多分プラモデルのフルスクラッチから来ている
983デフォルトの名無しさん:2007/09/17(月) 17:44:42
違いますよ
984デフォルトの名無しさん:2007/09/17(月) 19:13:55
モデラー用語のスクラッチがfrom scratchから来てるわけだが・・・
985デフォルトの名無しさん:2007/09/17(月) 20:37:18
>>984
で、scratchは何から?
986デフォルトの名無しさん:2007/09/17(月) 20:58:10
scratch=引っかき傷
土の地面に木の棒で作った引っかき傷(scratch)=スタートライン
987デフォルトの名無しさん:2007/09/17(月) 23:28:42
>>985はscratchの意味すら分からない、と・・・
988デフォルトの名無しさん:2007/09/17(月) 23:32:48
>>39の予言が大当たりし、>>827が外れそうな感じで、
そろそろ次スレを建ててもいい時期だと思うんだが、
テンプレに追加すべきこととかある?

個人的には1に
ttp://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/
を追加してもいいと思うんだけど。
989デフォルトの名無しさん:2007/09/18(火) 01:55:07
>>981
慣用句なんだから、カタカナにしたら訳せませんって言ってるのと同じじゃんよ。
一般人には絶対通じねーし。
990デフォルトの名無しさん:2007/09/18(火) 02:10:54
「スクラッチから」で通じるんだからどうでもいいんちゃうん。俺の場合、
「最初から」や「作り直し」って言うと、
例えば進行中のプロジェクトの最初とかと意味が混同するから
「スクラッチから」って言うのは混乱を避ける意味でも使うのは正しいと思うんだが。
つーかスレ違いだろ。
991デフォルトの名無しさん:2007/09/18(火) 03:12:44
>>989
>一般人には絶対通じねーし。

× 一般人
○ 馬鹿

致し方ない所ではある。
992デフォルトの名無しさん:2007/09/18(火) 03:37:32
>>988
それと "3. - 主な実装 -" に Tamarin も追加して下さい。

Tamarin(Adobe から Mozilla.org に寄贈された JIT 付きの仮想マシン)
http://wiki.mozilla.org/Tamarin
993デフォルトの名無しさん:2007/09/18(火) 16:34:06
>>990
よくわからないな。「ゼロから」とか「一から」とか辞書通りに訳して混乱するケースなんかあるか?
>>991
これだからプログラマという人種は。
「ワーニング」といい、たいした根拠もなくおかしな言葉使ってるほうがバカだろ。常識で考えて・・・
994デフォルトの名無しさん:2007/09/18(火) 17:30:10
ワーニングって何?
995デフォルトの名無しさん:2007/09/18(火) 19:49:21
>>989
> 慣用句なんだから、カタカナにしたら訳せませんって言ってるのと同じじゃんよ。
> 一般人には絶対通じねーし。

応用力0のカスは、バカといわれてもしょうがない。
これではインド英語とか聞かせられないな。
996デフォルトの名無しさん
>>993
>これだからプログラマという人種は。

何かプログラマにコンプレックスでもあるのかな?
君を助けるのは俺らには難しそうだし、専門家に
相談した方が良いんじゃないかな。

類推が利かなくなっているというのは何かの兆候
なのかもしれないよ。"from scratch" 以外にも
同じ様な症状があるかどうか、自己診断してみる
のも良いかもしれないね。