1 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 13:12:25 ] 禁止事項【臨時】 ・前スレの911自身の書き込み、またそれに関連した書き込みを禁止致します。 (スレが荒れる原因となります) プログラミング言語処理系の開発に興味のある人達のスレッドです。 字句解析・構文解析から,データフロー解析,ループ並列化,データ分散,SSA変換, CPS変換,レジスタ割付,命令スケジューリング,ソフトウェアパイプライン, SIMD命令生成,VLIW向けクラスタリング,スクラッチメモリ向け最適化,リンク時最適化, JIT,動的バイナリ変換等の各種最適化,それにVM,GC,低消費電力化などなど。 意味論に関する話題も歓迎です。 過去スレ 1 pc.2ch.net/tech/kako/981/981672957.html 2 pc2.2ch.net/test/read.cgi/tech/1021136715/ 3 pc5.2ch.net/test/read.cgi/tech/1070089173/ 4 pc5.2ch.net/test/read.cgi/tech/1100097050/ 5 pc8.2ch.net/test/read.cgi/tech/1106129164/ 6 pc8.2ch.net/test/read.cgi/tech/1115335709/ 7 pc8.2ch.net/test/read.cgi/tech/1129287390/ 8 pc8.2ch.net/test/read.cgi/tech/1131273918/ 9 pc8.2ch.net/test/read.cgi/tech/1135082582/ 10 pc8.2ch.net/test/read.cgi/tech/1146844753/ 11 pc11.2ch.net/test/read.cgi/tech/1160879890/ 12 pc11.2ch.net/test/read.cgi/tech/1188688416/ 前スレ 13 pc12.2ch.net/test/read.cgi/tech/1233143342/ 関連リンクは多分 >>2-10 あたり
261 名前:デフォルトの名無しさん [2010/01/22(金) 05:11:45 ] >Rubyでは、"p (1) - 2"というコードで 1.6 と 1.8 で結果が違います。 >また、Ruby 1.8 では、引数の数でも変わります。 Ruby作ってる奴ってアホだろ
262 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 07:37:29 ] > while, for 等の構文と関数呼び出しを > スペースの有無で見わけるという、コーディング規約も一般的だと思います。 ナンセンス。 エディタと文法と実行モデルを区別しようぜ。
263 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 08:52:13 ] >>261 a +b と a + b で意味が違うとかな。 アホ扱いされる一面ではある。 >>260 そういう、レキシカルアナライザの挙動が、パーサに左右される状態に依って変わる、 なんていう言語はパーサとレキシカルアナライザを作るのが大仕事になる。 なに考えてるのかわからんが素直に正規表現でトークンを切り出して、LL(1)かLALR(1)で 処理できる文法にしたほうがよい。まずは。
264 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 10:13:13 ] >>260 > Cのような低いレイヤの処理系を実装するとなるとinline化の判断や > 可変長配列サポートの仕方とかが気になりますが、 > その辺はまっとうな方法を紹介してますか? お前、自分のレベルにあった本をまず読めよ。 なんで上から目線なんだw
265 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 11:26:13 ] ワロヒコの本を紹介するような椰子には、上から目線で当然だろwwwww
266 名前:227 mailto:sage [2010/01/23(土) 00:12:26 ] >>261 , >>263 知らなかった。確かに違う。> a +b と a + b で意味が違う この辺、複雑なルールなのに穴に落ちる事が少なく 普通の使用者は気がつかないようになってるのが、凄いですね。 本当にRubyの作者はアホですね。 このRubyのやつとか、Perlの関数名によってパース結果が変わるのとか、 真似するのはやめるべきですね。シンプルよりも使いやすさを求めるのではなく、 許容できない使いにくさが無い範囲でシンプルな文法を目指したいですね。 >>246 で書いた文法の場合、正確に文法を書くとすると、 関数呼び出し ← id ( '('? (式 ',')+ ')'? / '()' ) 参照 ← id にしようと考えています。( ?は省略可能, /はor, +は一回以上の繰り返し) 要は、idの後ろからその式の終端までに他の式があれば 関数呼び出しとして扱うつもりです。 LL(1)だと、 a(1) と a = 1 が両方パースできません。 PEG文法の範囲の文法が使いやすくて良いと思います。パーサの実装も楽です。 LLだと無限大相当ですが。
267 名前:227 mailto:sage [2010/01/23(土) 00:13:47 ] >>262 区別できてる気はしませんが、話したいのは文法についてです。 while (true); myfunc(true); のように書き分けるコーディング規約は一般的だと思いますが、違いますか? 検索して3番目に出てきたPearライブラリの規約では、 pear.php.net/manual/ja/standards.control.php > 制御構造では、関数コールと区別するために、 制御キーワードと開きカッコの間に空白を 1 つ置きます。 と書かれていました。皆これを当然と思っているのなら、 関数名の後ろにスペースを入れた場合、エラーになるまたは違う解釈をする、 というのは落とし穴にならないのではないでしょうか? >>264 設計、実装にあたり参考になる本を紹介してもらう事もあるかもしれませんが、 それは、それでよろしくおねがいします。 ちなみにどんなレベルが私に合ってると思いますか? >>265 私が言うのも何ですが、何でこのスレではそこまで煽られてるんですか?
268 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 01:51:17 ] >>266 の文法はPEGとしても>>246 の例と一致していないよ。たとえば 「func a, b,」や「func (a,」が関数呼び出しにマッチしている。 書きたかったのは下のような奴じゃないかと思うんだけど。 関数呼び出し := id ( '()' / 式 ( ',' 式 )* / '(' 式 ( ',' 式 )* ')' ) で、この文法ってRubyと大差ない複雑さだよ。 「f f, f a, b, c」とか、式の中に裸の「,」が出てきたら困るよね。
269 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 02:34:05 ] 横レス失礼 >>266 ,267 言っている事が矛盾している気がするヨ。 >>266 では、a +b と a + b で意味が違う事を問題としているが、 これはRubyが構文によってセパレータ(字句区切り子)の解釈が異なる事に起因する。 しかし「二項演算子の前後には空白を入れる」という一般的なコーディング規則に 従っていれば実用上の問題は生じない。 対して、>>267 ではwhile文と関数呼び出しという二つの構文で、セパレータの 解釈が異なることを問題としていない。それを一般的なコーディング規則であるから、 問題は生じない(落とし穴にならない)と主張している。 Rubyの構文が汚いのは分かるから、>>263 が助言しているように、 まずはセパレータでトークンを区切って素直にパーズできる文法で設計することを勧める。
270 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 02:48:19 ] >>268 ここはこれでも全然煽られてないんだよ。 能力を持った人しか来れないし。 逆にエロゲの人でも能力を持っていればそれほど煽られない(煽られないことはないが)。 君みたいにダメプログラマで上から目線なら、今までだったらもっと煽られて相手にされてないよ。 トークンの切り出し程度で悩んでるなんて、ここに来る資格はない(断言
271 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 03:16:08 ] 偉そうなこと言っといて安価ミスってると恥ずかしいよね
272 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 03:47:25 ] ああ(笑
273 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 09:48:12 ] >>267 >while (true); >myfunc(true); >のように書き分けるコーディング規約は一般的だと思いますが、違いますか? 少なくとも、コーディング規約としては一般的ではない。
274 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 10:15:29 ] ワロヒコって言った奴ちょっと出てこい
275 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 10:33:34 ] >>273 CのK&RやJavaは、そうやって書き分けるだろ。それが一般的。 GNUが特殊だと思う。
276 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 10:34:47 ] >>273 そうか?いたって一般的だと思うが 少なくともここにある規約は全部そうなってる ttp://www.objectclub.jp/community/codingstandard/
277 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 12:07:05 ] >>246 俺はそれでいいと思う。PythonとRubyの折衷案みたいだね。 r = obj.method1 s = r a, b obj.method2 c, s, d こんな3行があったとき、sを使わずにrの結果を直接method2に渡すと r = obj.method1 obj.method2 c, r a, b, d となる。 これをパースするのが難しそうな気がする。
278 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 13:44:15 ] >>275 気にしてなかったけど、意外と多いね。 www.google.com/codesearch?q=while++lang:c 空白の有無で意味が変わるのは個人的には気持ち悪いけど、 俺が使う訳じゃないしな。
279 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 14:13:45 ] https://developer.mozilla.org/en/Mozilla_Coding_Style_Guide#Control_Structures google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Conditionals lxr.linux.no/linux+v2.6.32/Documentation/CodingStyle#L181 cvsweb.netbsd.org/bsdweb.cgi/src/share/misc/style?rev=HEAD > Space after keywords (while, for, return, switch). httpd.apache.org/dev/styleguide.html > There is a space between the keyword and the opening bracket. Mozilla, Google, Linux, NetBSD, Apache はキーワードの後ろは 空白を空けるスタイルだった。コーディングスタイルと構文規則 では要求される厳密性が違うけどね。インデントの強制くらいなら 受け入れられ易いとは思うけど。
280 名前:227 mailto:sage [2010/01/23(土) 15:47:09 ] >>268 , >>277 その点は見逃していました。 たしかに(人間にとって)パースするのが難しいですね。 試しにRubyで試してみた所、 def a(*x)print"a";p x end;def b(*x)print "b";p x end;a 1,b 2,3 syntax error, unexpected tINTEGER, expecting kDO or '{' or '(' との事です。引数列の中では、関数呼出の括弧は省略不可なのでしょうか? PEG文法は貪欲なアルゴリズムなので a 1,b 2,3 は a(1,b(2,3)) になります。 これは罠になる事が多いでしょうか? このようなコードはとても読みにくいとは思いますが、 そもそも書く方も混乱するので書かれにくく、 プログラムを書く時の罠にはならないかと思います。 >>273 , >>275 , >>276 GNUのコーディング規約はスペース開けるんですね。知りませんでした。 論点としては、 while の後ろにスペースを開けるのが一般的かどうかではなく、 関数名の後ろにスペースを開けない事が一般的かどうかですね。 これも、func (1)+2 という罠コードを書かないという風にすればいいんですが。 どちらも、RubyのようにWarningを出す等の処理をすれば良いですかね?
281 名前:227 mailto:sage [2010/01/23(土) 15:48:12 ] 脇道 >>268 すみません、適当を書きました。 手元のでは a(0)[1](2) みたいなののサポートも入ってたのですが、 今回は省略です。 >>269 矛盾というか、同じ論法で正反対の結論になってると言いたいわけですね。 それは前提となるコーディング規約が重要なのではないでしょうか? 私は二項演算子の前後に空白を入れるのはそんなに一般的でないと思っています。 皆さんはどうですか? >>269 ,>>270 今論じてる、fun(foo,bar)とfun foo,bar の間の話に、 トークナイズ(字句解析)は関係ないと思ってるんですが、私の言葉の使い方は間違ってますか? "fun(foo,bar);" => ['fun','(','foo',',','bar',')',';'] という処理の事を字句解析と言うと認識してるんですが。
282 名前:デフォルトの名無しさん [2010/01/23(土) 19:05:04 ] 二項演算子の間に空白を入れる人は多いよ。 fun(foo,bar)とfun foo,barを同居させた奴が前スレにいたよ。 エロゲプログラマだったけど。
283 名前:デフォルトの名無しさん [2010/01/23(土) 19:06:39 ] 関数宣言の時にカッコの後ろに空白をいれるのは検索性を良くするためで、 来れも結構いるよ。
284 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 19:14:54 ] そもそも>>246 の >引数があれば関数呼び出しで、引数が無い場合は >括弧の省略は不可という仕様です これがおかしい そんな半端に括弧を省略して何になる a = call object.method だろ 文法より意味論をまず確定しろ
285 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 19:15:22 ] >>276 >少なくともここにある規約は全部そうなってる >ttp://www.objectclub.jp/community/codingstandard/ それ、みんな 「Java コーディング標準(オブジェクト倶楽部バージョンを〜用に変換したもの・・・」 だから、全部同じスタイルになっててあたりまえだろw >>279 Open source系は、キーワードの後ろにスペース入れる事が明記されてるのが多いね。 pearもそうだ。
286 名前:デフォルトの名無しさん [2010/01/23(土) 19:36:35 ] もうちょっと勉強してから質問しないと、低レベルすぎて話にならないよ。 9??の馬鹿の方がまだ良かったかな。 しかし、こんな素人にみんないつのまに優しくなったんだ?
287 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 19:40:29 ] レベルより態度。
288 名前:デフォルトの名無しさん [2010/01/23(土) 19:40:31 ] 高卒でも kenjikakera.asablo.jp/blog/2009/11/04/4676336#c の様に構文を自由に変えられるコンパイラを作ってるんだから、 麻布と京大の名が泣くぞ。ちんこ。
289 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 19:47:40 ] 9??の態度は最悪だったなw その後にマルチスレッドのコンパイラが出たのは、人格と能力はべつもんと知ったな。
290 名前:デフォルトの名無しさん [2010/01/23(土) 19:50:17 ] >>283 自己レス カッコの後ろ->カッコの前。恥ずかしい…orz
291 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 19:57:45 ] >>288 これが18年前に作られたそうだ。OO的にはダメダメだけどエロゲ程度で作るのなら関数型が分かり易くて良いだろう。
292 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 20:00:47 ] しかもコンパイルスピードは高速らしい。 makeを内蔵してマスター時のスピードを少しでも上げるんだとさ
293 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 20:03:16 ] まあ、物を見てないんでホントかどうかは怪しいが。
294 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 20:03:45 ] 計算機はプログラマの人格には無頓着だからな。 ネットでは人格が変わる人もいるから、そっちかもしれんが。
295 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 20:06:09 ] Horizontal Layoutってどう思う? 1 + 2*3 と書くと2*3を先に計算して 1+2 * 3 と書くと1+2を先に計算するって奴。
296 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 20:08:31 ] きもい。Cの優先順位が身に染みてるけど、メンテのためにカッコをいれる。 それに比べて>>295 は俺にはなじまん。
297 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 20:08:45 ] 1 + 2 * 3 は?
298 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 20:13:51 ] スペース同じなら * 優先
299 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 20:14:39 ] 同じなら左優先
300 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 20:20:31 ] GAME言語は左優先だったな APLもだっけ? 1 2 3 ADD MULがいいか MUL(1, ADD(2, 3))がいいか (MUL 1 (ADD 2 3))がいいか ((1 2 ADD) 3 MUL) Lisp+Forthも面白いか。 でも世の中にはカンマと小数点が逆の国があるらしくて そういう国の人はどう思うのだろうというのも時々
301 名前:295 mailto:sage [2010/01/23(土) 20:20:33 ] 聞いておいてなんだけど自分もキモいと思う。 採用している言語もほとんどないしね。 >>297 1+2*3 1 + 2 * 3 のように均等に分けた場合は演算子の優先順位で決まるらしい。
302 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 20:25:06 ] 1/((2+3)*4) とかどうするの? 1 / 2+3 * 4 とか書くの? 空白多すぎて読み辛いよ・・
303 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 20:28:39 ] Smalltalkも左優先。 >>302 空白の数で優先度が決まるのかw。 いっそ、空白やTABの数で演算子の種類が略
304 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 20:31:14 ] Smalltalk はメッセージ式のルールが上位にあるからシンプルで分かり易い。
305 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 20:32:34 ] >>300 >にはカンマと小数点が逆の国 フランス、スペイン、イタリア、ドイツあたりがそうらしい。 '.'の代わりにスペースを使う場合もあるとか。
306 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 21:01:14 ] >Smalltalk はメッセージ式のルールが上位にあるからシンプルで分かり易い。 今でも慣れない、四則演算は小学校で習うから体に染みついてる 数値演算でバグだすとマジ悩む>>Smalltalk
307 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 21:13:02 ] Scalaの、通常の四則演算を多記号に拡張したような規則は 面白いなあと思ってたんだが、アレは元ネタがあるんだろうか
308 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 22:10:18 ] だいたい、文字列みたいな一次元で表現しようとするから困るんだよ。 二次元に数式置いて、近い順に演算するってのはどう? 三次元に拡張して、上の段が掛け算、下の段が割り算でもいいよ。 この球の中の総和、みたいな。
309 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 00:07:00 ] 「左結合」「右結合」という術語があるんだから使いましょうや。
310 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 02:47:29 ] >>303 whitespace
311 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 23:43:34 ] >>307 www.scala-lang.org/node/118 これのこと?
312 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 08:32:47 ] >>308 trifungeやると
313 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 13:54:25 ] >>291 おまいは関数型言語をわかっていてそれを関数型と言ってるのか? どっかのおかしな事典の「C言語は関数型言語」というトンデモを信じてないか?
314 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 14:03:04 ] 手続き型と勘違いしてるのでは
315 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 07:37:00 ] 291の発言は?だが、「関数型言語」の定義を聞かれると 答えるのは難しい。
316 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 07:47:49 ] 実は「関数型言語」という語の意味が二種類あるという落ちか。 古い定義だと「subroutine以外にfunctionを使える言語」なんでCを含むんだよね。
317 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 09:05:34 ] 細かい違いな気がするけど 何かを返す返さないで記述が違うのは 便利な気がする・・・basic void 使え・・・c ソース嫁・・・動的型付
318 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 09:09:08 ] > 古い定義だと「subroutine以外にfunctionを使える言語」なんでCを含むんだよね。 [要出典] Cはsubroutineをfunctionと「呼んでいる」言語であって。
319 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 09:53:07 ] 値を返すサブルーチンを関数と呼ぶのはCに限らずFortranとかPascalとかあるが、 それらが「関数型言語」と呼ばれていたのは聞いたことがない
320 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 10:11:12 ] LISPも正格評価で逐次処理、関数は置き換えではなく呼び出しだから、 関数型ではなく実質的に手続き型言語と言えなくもない
321 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 10:22:57 ] 古い論文だとFortranをfunctional languageと呼ぶことがあるんだけど懼ヲ まあ、聞いたことないのが当たり前だと思う。 自分も最初に聞いたとき訳が分からなかったし。 あと、その訳語として「関数型言語」が主流だったどうかは知らない。 ごめん。
322 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 10:32:12 ] >>321 具体的にその論文名を。
323 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 10:52:26 ] threaded interpretive language とか書名聞いて 何ぞと思って調べてみたら forth と z80 の解説書だった 俺もどこで見たか忘れたけど、Cを関数言語と呼んでた 記憶が・・・まぁ文脈というか時代背景によるよね > 用語の定義
324 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 10:58:59 ] 技評の「新ANSI C言語辞典」を持ってる人がいたら、それの 「関数型言語」の項を見てもらいたいのだが...
325 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 11:08:31 ] >>322 論文は手元にないんで無理。 Webならwww.liv.ac.uk/HPC/HTMLF90Course/HTMLF90CourseNotesnode52.html が近いかな。 むしろちょっと疑問なんだけど、 "functional language"に同綴り異義語があった というのってそんなに興味深いのか。
326 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 11:19:10 ] >>324 通りすがりの漏れが引用しますよ p.294 関数型言語 の項より 「関数型言語(functional language) 関数型のプログラミング言語。 LISP、LOGO、APL、BCPL、B、Cなどがある」
327 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 11:22:51 ] そのころの基準で関数型じゃない言語って何だ? FORTRAN、COBOLは違うのか? BASIC? 関数を言語仕様に入れただけで、分類が型が変わるのか? アセンブラ?
328 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 11:58:43 ] どうでもいいからブログでやってろ
329 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 12:27:44 ] >>326 たぶんそれが日本でデマが流行ってる元凶。 時代によって変わったりなどしない。B も C も関数型じゃない。 >>325 も HPC の専門家らしいので、言語屋じゃない。 言語屋が C を functional などと言った例はないはず。
330 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 12:52:56 ] 素直にこの辺りを参照した方が良いと思う。 ttp://ja.wikipedia.org/wiki/%E9%96%A2%E6%95%B0_%28%E6%95%B0%E5%AD%A6%29 俺解釈だと「処理が関数の変数と値に依存する言語」「独立して書かれている処理は独立している」だな。
331 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 13:02:29 ] 「Cを関数型と呼ぶ人が一部にいたのかどうか」 「その事実は万人が知っていてしかるべきか」という話になってしまっているが なんにせよCもFortranも関数型言語ではないし LISPにしても、延々とこんな話を続ける理由になるほど手続き型言語っぽくはない
332 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 13:03:14 ] >>330 バカ
333 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 15:53:39 ] LISPとCに根本的な違いが無いのに 「LISPは関数言語」というデマがいつからか 流行ったのが酷いと思うけど。
334 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 16:11:15 ] > 根本的な違い 根本的というのが曖昧すぎて、何とも言えないな。つまりどういう要素が根本的なのか。
335 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 16:24:30 ] LISPとCでどこが違うのか言ってみてよ。
336 名前:227 mailto:sage [2010/01/30(土) 17:59:10 ] Haskellも副作用(モナド)あるから関数型じゃないよね、とか燃料投下してみる。
337 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 18:22:26 ] OCamlはもっと微妙。
338 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 08:20:21 ] 関数型言語と呼べるための必要条件は何だろう? 素朴には、すべてのプログラムが数学的な関数だけで構成されていること、だが、 これだとほとんどの言語が失格だな。
339 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 08:29:30 ] >>338 それは十分条件じゃないか? 下手するとHaskellぐらいしか満たせないw
340 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 10:14:20 ] トランスレータって何時頃からあるんだろう A言語をC言語に変換する コンパイラ・スクリプトエンジンというよりは テキスト処理の範疇なような気がするけれども でも欠点があるから、技法として主流足りえない あれか出力先の言語・ビルド環境による影響大 適用できる範囲が、自然と絞られざるを得ないとか toy program というような捕らえ方が一般に正しい 反応なような気もする…
341 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 10:19:47 ] toy rograam じゃなくて toy language だった なれない言葉使おうとするじぶんかっこ悪いorz
342 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 10:27:21 ] 有名なものでは "Software Tools" (「ソフトウェア作法」) の Ratfor が 1974 年。 初期の C++ は、C 言語へのトランスレータだった。テキスト処理で済むような 内容ではなかったけどね。
343 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 11:39:44 ] Cにうまく変換すれば、可搬性でも速度でも申し分ないはず でもCの再解釈分だけオーバーヘッドがある D&Eを読むと、初期のC++処理系(Cfront)がトランスレータだったいせいで 生成コードの品質が悪いとか、本格的な言語ではないとか誤解されたと書いてあるが >toy language というような捕らえ方が一般に正しい 真実どうなのかはともかく、多数の認識は今でもそうなのかも?
344 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 11:45:36 ] OOSC初版の頃のEiffelもCへのトランスレータだったはず 今でもそうなのかは知らないが
345 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 11:48:35 ] コンパイラ入門―構文解析の原理とlex/yacc、C言語による実装 糞本だった。お前ら責任取れよ
346 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 11:55:57 ] >>345 どの辺が糞なのか書いてないから責任とってあげない
347 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 13:25:00 ] 馬鹿には有効活用できない本を馬鹿に薦めた責任とかそういうこと?
348 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 13:41:31 ] 良書だった記憶があるけどなあ 薄い割に説明はかなり噛み砕いてあるし、 かといって理論的な部分を無視してるわけでもない もっとも、内容としては構文解析・yacc/lexの最低限の使い方で終わってるから 詳細は別途ドラゴンブックとかを頼らないといけない その辺も含めて、巻末に関連書籍の紹介が載ってたはず
349 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 17:47:18 ] でもこの本高校生か大学1年程度の レベルの本だから意味なくね?
350 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 18:42:04 ] >>349 この本はそのレベルの人には非常に良い本だし、その良き本を糞本扱いできる程高度な知識を持つものなら手にとって数ページ眺めるだけで自分に必要ないことを理解するハズだよね? それがわからないという事、つまり>>345 の中の人は……(以下自粛
351 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 19:00:19 ] よっぽどデカい本屋じゃないと、置いてなくない?
352 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 22:09:25 ] 関数型言語をラムダ算法を元に解説するのはもう古いの? 真っ先に出てくると思ったのに。
353 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 03:45:35 ] 理論背景って研究者にしか意味無いからな…
354 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 13:01:04 ] でもそういう基礎理論があれば関数型は動作を類推できるじゃないか コンパイラの設計法にも関わる事だと思うけどな そういうのを知らないとRubyみたいに仕様が破綻することになる
355 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 13:06:45 ] >>352 破壊的リスト操作をラムダ算法で解説できるんですかあなたは?
356 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 11:59:29 ] >>352 C#はラムダ式があるから関数型言語だ、ということにしたくないんだろうな。 無名関数はPerlにもある。 もう「値を返すサブルーチン」と同じくらい当たり前になってしまった。
357 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 12:17:13 ] ラムダがありゃ関数型言語、という新説が登場しますた
358 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 13:26:55 ] 文法のlambdaとラムダ計算は別物だよね
359 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 13:42:28 ] >>358 それはlambdaのない言語が言い訳するときのセリフ
360 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 17:10:19 ] 大事なのはクロージャ
361 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 22:19:21 ] Objective-Cの勝利。
362 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 23:29:26 ] >>352 ほとんどの言語はチューリング完全 チューリング完全ということはチューリングマシンと同じ計算能力を持つ チューリングマシンとラムダ計算は等価 よってほとんどの言語は関数型である なんてことになって不都合とか
363 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 23:31:47 ] SQLいいよSQL
364 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 00:14:36 ] 上向き構文解析って遅いし 意味の無い概念じゃないですか 還元とか意味が全くないし
365 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 08:34:34 ] オマエが意味を理解できなくても、LALR(1) パーサは現実に働いているわけだが
366 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 17:06:29 ] >>364 上向き構文解析って下向きより遅いの?
367 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 06:44:51 ] 俺のは左向き
368 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 06:56:20 ] 誰もお前のつむじの向きなんか聞いてない
369 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 22:54:42 ] つむじの向きとか何馬鹿言ってんの?ちんこの向きだろ。
370 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 15:21:49 ] 野暮がすべてを台無しにする
371 名前:デフォルトの名無しさん [2010/02/09(火) 00:39:14 ] 遅い
372 名前:デフォルトの名無しさん [2010/02/10(水) 16:53:19 ] ゴスロリ言語
373 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 19:45:00 ] おい、Language Implementation Patterns: Create Your Own Domain-Specific and General Programming Languages (Pragmatic Programmers) これ良書かおしえろ
374 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 20:43:05 ] やだ
375 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 09:02:14 ] >>373 良書です
376 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 09:24:04 ] >>375 嘘つくんじゃねーよ ANTLR使い方書いてあるだけの 糞本じゃねーかよ
377 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 09:29:24 ] 上付きとか下付きとか、マンコの形なんかどうだっていい
378 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 09:36:02 ] リンクの冒険の話はスレ違いだ
379 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 18:41:31 ] >>343 > でもCの再解釈分だけオーバーヘッドがある そんな一般論は言えない。
380 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 13:36:59 ] >>376 たまたまCanalが悪かっただけさ。 つかANTLRで生成されたコード読めばいいだけじゃないか。 それにコードはdmozなりsf.netなり探せばあるだろ。まったく。 Nils M Holm氏による著書 ttp://www.bcl.hamilton.ie/~nmh/t3x.org/zzz/ Parsing Techniquesで知られるDick Grune氏のサイト ttp://www.cs.vu.nl/~dick/ ダウンロード先 : ftp://ftp.cs.vu.nl/pub/dick/ これでもbomb!と抜かすなら自分の力量が足りないか考えることだな。
381 名前:デフォルトの名無しさん [2010/02/22(月) 17:10:32 ] Aanal ねぇ
382 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 15:25:43 ] しつもん Pythonみたいなインデント指向の言語を字句解析・構文解析するアプローチを教えてください
383 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 15:36:09 ] >>382 lexierでインデントを見て、begin、end的なダミーのスコープ限定子を出力すればいいんじゃね
384 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 15:52:22 ] >>382 どの言語だか忘れたが、 一旦、インデント数をひとつのパラメータ付き構文要素として、構文木に埋め込み、 これをもう一度構文解析して、構文木を再構成する実装を見たことがある。 実際はステートとして、現在のインデント数を持っておき、 >>383 のように、ソースには現れない隠れ構文要素を構文木に構成しながら、 解析するのが簡単だと思う。
385 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 21:41:22 ] CPythonの実装は>>383 みたいな感じのようだね。INDENT, DEDENTっていうトークンが用意されてる。
386 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 23:34:26 ] indentの逆はででーんとdedentなのか 明日会社で自慢しよう
387 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 00:08:22 ] インデントでブロック構造なんて信じられない。バグは大丈夫なのか?
388 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 00:11:28 ] あと、いくらCPUパワーが上がっても、コンパイルスピードと実行スピードが言語仕様のせいで全く上がらない。 Cにキャリー機能を追加してライブラリと最適化を強化する方が良いのでは?
389 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 02:00:25 ] >>387 だれでも最初はそう思うんだよね でも実際やってみるとほとんど問題ないってわかる
390 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 02:05:56 ] >>387 ちょっと長めのコードをコピペすると…
391 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 02:07:51 ] コピペ防止効果もあるのか、いいじゃないか
392 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 02:16:34 ] コードの移動に支障が出るんだから良い訳無いだろw
393 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 02:28:29 ] インデントブロック構造はネストしたブロックから抜ける構造の表現に難があるよな。 ネストが深くなるだけの構造だとキレイだけど。
394 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 04:21:33 ] 例外処理を作るときに、いちいちインデントを気にし、 少しでも気楽にコピペで作るときにインデントを気にし、 良いこと少ないね
395 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 04:53:40 ] >>389 pretty printできないから嫌い
396 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 05:25:30 ] >>390-392 pythonはモジュール化が簡単だからそこは問題にならない >>393 try: except: else: finaly: で問題なし >>394 お前の能力が低いことはわかった
397 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 07:09:58 ] 人間の目には錯覚がある。例外処理もいっぱいある。 さあ、何から議論しようか。坊や。 人間工学か? それとも実行スピードを無視した方法か?
398 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 07:16:58 ] おれは388だ。Cにキャリーをいれるのが最適のアセンブラに成ると思っている。
399 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 07:18:06 ] インデントでブロック構造なんて、tab2かw
400 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 07:22:30 ] 時々このスレがわからなくなる
401 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 07:27:11 ] 言語を作ることがスレの本分だったな。 ちんこの前のエロゲの言語が本分だったな。
402 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 07:28:56 ] しかし、9??の言うとおりのコンパイラが発売されたときは、 このスレ、もしかして馬鹿の集まりじゃないかっておもったよw
403 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 08:46:14 ] しかしコンパイラスレのエロゲコンパイラが発想も実装も凄いよな。本当なら。
404 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 08:57:06 ] >>398 アーキテクチャによっては無いんじゃなかったっけ? 移植性を落とさないのだろうか
405 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 13:02:17 ] >>396 コードの字面上の話だから、モジュールは関係無いよ。 コードを書いていて、一つのブロックの行数が多く、ネストも深くなってしまった時に、 処理を別の関数に外出ししようとすれば必ずコピペは発生する物だし、そういう時に インデントの修正は避けられない。 技術の良い面だけじゃなく、悪い面も認められないとね。
406 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 13:41:54 ] >396 try: except: else: finaly: で回避できるの? ネストしたブロックから抜けるときは依然としてインデントを合わせなきゃいけない気がするけど?
407 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 16:04:33 ] プログラミング言語の文法には認知科学的な視点も必要さ。 そういう意味ではHaskellとかPerlは基地外。
408 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 16:06:31 ] PerlはまだかしくもHaskellは問題ない
409 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 16:08:30 ] まあ何でGoogleがPythonマンセーなのか考えればいい
410 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 16:11:15 ] pythonはもうちょっとライブラリを整理して欲しい。 せめてリスト操作に副作用ありとなしの関数を両方用意して欲しいな。
411 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 16:17:14 ] 副作用あり:list.sort 副作用なし: sorted 副作用あり:list.reverse 副作用なし: reversed これでは駄目なのか?
412 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 16:17:44 ] >>409 全然マンセーじゃないみたいだが… groups.google.com/group/unladen-swallow/browse_thread/thread/4edbc406f544643e
413 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 16:26:38 ] simple common sense is going to limit Python's applicability when operating at Google's scale
414 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 16:44:34 ] >>412 読んだけど、元々速度が要求される場面ではPythonは用いてないと思うし、そもそもそれは憶測の域を出ないよね。
415 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 16:51:12 ] つ コリンは中の人
416 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 16:54:05 ] その Google Groups も Python でなかったか?
417 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 22:20:22 ] >>398 >Cにキャリーをいれるのが最適のアセンブラに成ると思っている。 64bit版TL/1まだ〜?
418 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 00:29:23 ] > Cにキャリーをいれるのが最適のアセンブラに成る Cには関数GOTOがないんでいまいち
419 名前:デフォルトの名無しさん [2010/02/28(日) 09:00:27 ] Multi-entry も無いな
420 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 09:05:50 ] >>418 関数GOTOってなんだ? setjump, longjump?
421 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 09:08:03 ] ああ、CALLとかBSRとかGOSUBのことか。いらんな。
422 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 09:18:13 ] 関数GOTOってtail callのこと言ってると違う? BASICでいうと GOSUB GOSUB RETURN RETURN こういう入れ子になるのを GOSUB GOTO RETURN ← この RETURN でいっぺんに戻る みたいな
423 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 09:20:44 ] 関数と関数の間のgotoのことだろ。たぶん。 call a call b ret を call a jmp b ではなくて。これはコンパイラレベルで最適化してくれるよ。
424 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 10:02:37 ] > ではなくて。これはコンパイラレベルで最適化してくれるよ。 C言語の場合、普通、関数の入り口でフレームを伸ばすので、ごく特殊な場合しか 最適化できないのが普通かと。 関数をまたいだGOTOはGCCなら独自拡張のLabels as Valuesを使ってポインタに してやればできるね。できるってだけで何が起こるかはわからないけど。
425 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 10:12:14 ] >>424 末尾再帰だけやってくれれば十分。ま、それなら自分でgoto文入れればいいんだけど。
426 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 10:35:24 ] >>424 え、goto、gosubってbasicじゃなかったの?
427 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 11:11:30 ] なぁ、C言語の関数をgotoに変換できないかな
428 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 11:16:50 ] >>427 コンパイラはそうしてるだろ
429 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 11:18:55 ] え?コンパイラはcallに変換してるんじゃないの?
430 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 11:22:56 ] >>429 CALLは、PUSHとJUMPの短縮表現 8086に至っては、FAR CALLよりもPUSH JUMPの方が速かった
431 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 11:38:27 ] enter/leave涙目
432 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 11:39:57 ] CPS変換すれば全部単にGOTOでOK
433 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 14:18:22 ] ええっと。 いろんなスクリプト言語に変換できるという機能に特化した スクリプト言語を以前見かけたような気がするんだけど、失念してしまった。 誰か知らない?
434 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 14:24:12 ] インテルアーキテクチャで語られると悲しくなる
435 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 19:39:59 ] >>433 この前のエロゲの奴?
436 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 19:47:20 ] >>435 別人
437 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 21:21:13 ] >>433 haXe?
438 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 21:23:56 ] マルチプラットフォーム プログラミング言語 haXe pc12.2ch.net/test/read.cgi/tech/1238847817/ すごいな、まだ落ちてないでやんの。
439 名前:デフォルトの名無しさん mailto:sage [2010/03/02(火) 21:03:49 ] ブラウザが調子悪くて返事遅れた。スマン。 >>438 おー、これこれ! サンクス。 .NETにはまだ対応しないんかのう。 ゲームの演出スクリプトをコンバートして.NET FrameworkのDLLにコンパイルするシステムを作ったはいいが、 自動生成して巨大化したクラスの読み込みに秒単位で時間かかって意味ない罠。 まさかJITコンパイラがパフォーマンスの足をひっぱるとは思わんかった。 インタプリタ実装に逆コースだな……とほほ。
440 名前:デフォルトの名無しさん mailto:sage [2010/03/02(火) 21:12:55 ] ブラウザの長子とかじゃなくて、2chが攻撃喰らってたせいだな。
441 名前:デフォルトの名無しさん mailto:sage [2010/03/02(火) 22:05:32 ] >>439 つ ngen
442 名前:デフォルトの名無しさん mailto:sage [2010/03/03(水) 04:26:47 ] >>439 その用途だと中間言語コンパイラが一番だと思うが。 前スレのエロゲプログラマみたいに一瞬でコンパイル出来るのならインタプリタでも良いが、 前方参照とか、テキストでやってるとホットスポットになるぞ。
443 名前:デフォルトの名無しさん mailto:sage [2010/03/03(水) 20:43:52 ] >>439 LCG使えば速いよ 直接IL吐かなくてもDLRのExpression Tree使えば超簡単に使える
444 名前:デフォルトの名無しさん mailto:sage [2010/03/03(水) 21:09:52 ] >>442 >>443 ううーん。C#+DLR単体で開発してるならともかく、IronPython込みで使ってるので IL吐かせたってほとんど意味が無いんだ。 どうせならPythonスクリプトを吐かせて直接実行させた方が早い、ということになる。 いずれにせよクラスの実体の読み込み時にJITコンパイルが実行されて、 しかもコード自体はガベージコレクションされないと来た。 大元のスクリプトから比べたら、JIT化されたコードって5〜6倍のサイズになってるんだぜ。
445 名前:デフォルトの名無しさん mailto:sage [2010/03/03(水) 21:24:38 ] じゃあ普通に実行時に必要な分だけ直接スクリプトからコンパイルしたら? IronPythonだったらプリコンパイルしたってどうせランタイム同梱しないと動かないでしょ それならコードはちゃんとGCされるし
446 名前:デフォルトの名無しさん mailto:sage [2010/03/03(水) 22:06:30 ] >>445 それはインタプリタと一体どう違うのよ。
447 名前:デフォルトの名無しさん mailto:sage [2010/03/03(水) 22:32:09 ] >>446 ILにコンパイルされたあとJITで実行されるから実行速度はDLLにプリコンパイルしておくのと変わらない 動的にコンパイルするなら一度に全部読みこむ必要はないからILへのコンパイルのコストも そんなに問題にはならないんじゃないかな
448 名前:444 mailto:sage [2010/03/03(水) 22:37:04 ] 議論どうもありがと。 今のところ、構造化したデータをシリアライズしてDBに入れておき、 読み込み時にデシリアイズしながら固定的なコードで動けるようにしようと思ってる。 元々自動生成してたコードは非常に定型的なものだったからね。
449 名前:デフォルトの名無しさん mailto:sage [2010/03/03(水) 23:49:08 ] >ゲームの演出スクリプト ずいぶん前にコンシューマ用で同じような事をした そのときはメモリのフットプリントを最小にするのが目的だったのでスクリプト->バイトコードコンパイラでバイトコードインタプリタを実装って方式だった バイトコードの環境をPC上でエミュっておくとスクリプターのコンソールでテストやデバッグができるので開発時間の短縮もできた 今時のマシンだったらその場でコンパイルしても良いのじゃないかとおもったりするんだけどどうなんだろう?
450 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 00:00:29 ] >>449 用途に応じてコンパイラを作り直せば、 1つのゲームスクリプトでマルチプラットフォームに対応できる。 今回はPC向けだからRDB化するけど、DS向けとかだったら バイトコードっぽくコンパクトなバイナリ構造にするのがいいと思う。 もちろんコンパイラもコンパイルされたスクリプトの実行環境も 全部自分で用意するんですがねorz
451 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 00:25:58 ] クラウドコンパイラがあれば 全て解決するらしいし 難しいことを考えるのはバカが 頭のいいところを見せようとしているだけだな
452 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 01:51:15 ] ブラウザの皮をかぶってシンクライアントの復活か。
453 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 02:13:34 ] ゲームなんぞ、適当なバイトコードインタプリタを作れば十分そうだが
454 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 02:24:32 ] そそ、if elseif else endを実装して、 表記式も簡略化して、r20>=10とかr5==r10だけにして、 式もLET、or、not、sub、add、sto、lodの命令にしちゃえば楽。 評価式と式は逆ポーランドで書けるようにしても、そんなに大変じゃない。
455 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 03:26:06 ] >>454 それじゃBASE-x86や。
456 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 05:25:11 ] うちのプロデューサーが簡単にコンパイラの拡張を要求してきたよ。 マクロを実装して欲しいとのことだが、MASM並の者を要求してきてる。 プログラマ上がりのプロデューサーだから仕方ないが、 MASM並のマクロがどれだけ大変か分かっていない。 文字セットの問題もあるし。ヘタに知識があると手に負えない。 しょうがないのでダメ元でこの前のエロゲプログッラマにプリプロセッサのソースを 売って貰えないか聞いてる最中。
457 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 06:41:25 ] macroもmasm以上の仕様で、こんなの作れるかって言ってやった。 コンパイルスピードは5万行を1秒だってさ。
458 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 19:29:52 ] ソースを貰えたのだけど、アセンブラ部分が多くて読めない。 マクロも先読みして展開を繰り返している。 凄く速い。50万行1秒くらいのコンパイルスピードだった。 とにかく凄い。このまま自社用に改造していただけるか交渉中。
459 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 19:37:00 ] YOUはどうして交渉中なのにそんなことをペラペラしゃべってるんですかと小一時間
460 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 21:29:06 ] あなたの会社は先方と守秘義務契約を結んでいないのですかと小一時間
461 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 21:33:55 ] エロゲ会社のPGにそんなモラル期待するなよ
462 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 22:31:37 ] 過剰な性能だ。 C#のように機械的に処理できる定型的な構文を用意して 分割コンパイルできるように考えるのが本道なんじゃないか。
463 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 22:35:36 ] 何で C Sharp?
464 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 22:39:54 ] >>462 > C#のように機械的に処理できる定型的な構文を用意して 意味分からん
465 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 22:53:31 ] 特にC#って相当複雑な部類じゃないか
466 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 22:58:51 ] んん、C#のコンパイルは相当高速だぞ。 アセンブラなんかでカリカリにチューンするのが大事なのではなく、 コンパイルしやすい構文を用意することが大事だ、ということ。
467 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 23:08:06 ] 類似のほかの言語に比べてC#がコンパイルしやすいってことはないでしょ コンテキストキーワードだらけだし
468 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 23:28:53 ] パーサを書いたことのない人の発言。
469 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 00:12:08 ] ヒント:C#はTurboPascal出身
470 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 00:16:48 ] Mono のC#コンパイラのコードを見ればわかるが、レキサー、パーサーだけでも大そうなことになってる。 パースが簡単なのは、PASCALやBASIC、LISP。
471 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 00:28:39 ] varという名前の型が存在したらvarがキーワードじゃなくなったりするんでしょ
472 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 01:04:27 ] 演算子の優先順位を変えられるのって、haskellだっけ? 普通じゃないっぽいけど、実装は簡単なの?難しいの?
473 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 01:12:09 ] 優先順位毎に演算子のリストを持って、ソースコード中に演算子を見つけたら その都度マッチングすれば良いだけじゃないの。
474 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 01:42:10 ] パーサーはともかく、レキサー(っていうの?)が複雑なのはいやだなぁ。 あー、あれか?途中でSQLやXMLなどが書けるからとか?
475 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 02:12:19 ] スマン、興奮しすぎて秘酒義務を守らなかった。 あと、俺はエロゲじゃない。 macroは#define程度にして自分で作ることにした。
476 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 02:14:31 ] 秘酒義務->守秘義務 ゴメン間違えた。
477 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 02:17:41 ] 会社の人間がこいつを特定したらクビかな?やっぱり
478 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 02:19:25 ] 先方の情報も流したから多分……orz
479 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 02:31:37 ] 正直何一つ有用な情報は含まれてない
480 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 07:11:19 ] 真偽はどうであれ宣伝乙でいいよもうめんどくさい
481 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 11:06:14 ] 向こうは別に良いですとといってくれたが言及になりそう。 やはり簡易式で作ろうと思う。マクロも完全置換の#defineで。 みなさん、#defineを実装するときには文脈を見てますか?
482 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 11:07:16 ] 言及->減給 すまん。
483 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 22:19:57 ] C#のspaced keywordは正気の沙汰とは思えない。 >>481 m4マクロを先に勉強しといたら?
484 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 23:50:14 ] C#は 後方互換>>>バージョン管理>>>>>(越えられない壁)>>>>>>>>言語仕様の簡潔さ だから仕方ない
485 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 23:55:06 ] >>483 m4マクロのソースならどうにかなりそうです。ありがとう御座いました。
486 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 00:17:37 ] >>484 大規模開発に耐えるよう厳格な規格で作られたC#やJavaのような言語の仕様が簡潔なものに収まるはずがない。 でもC#の開発効率の良さやコンパイラの鬼速さは本物。 あれはいいものだ。
487 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 00:28:19 ] Javaなんかそんなに複雑じゃないだろ C#の文法が複雑なのは既存のコードの互換性を維持しながら無理矢理拡張しまくってるから
488 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 00:32:33 ] >>487 > C#の文法が複雑なのは既存のコードの互換性を維持しながら無理矢理拡張しまくってるから C#のどこらへんが複雑? パースが難しいところもあるが、文法自体は単純だと思うが。
489 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 00:41:03 ] Ironyのサンプルにパース用のC#構文定義クラスがあるけど、RubyやPython向けより簡単なくらいだよ。
490 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 00:41:24 ] 結局C#のコンパイルが激速な理由については語られないのか
491 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 00:47:44 ] >>490 IDEでの話か?
492 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 00:55:21 ] cs.exe
493 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 01:03:18 ] ILへのコンパイルの段階ではほとんど最適化やらないし
494 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 01:03:36 ] どの言語と比べて?
495 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 01:33:59 ] >>483 >C#のspaced keywordは正気の沙汰とは思えない。 spaced keywordってなんじゃらほい 名前空間周りの実装のことかな… ufcpp.net/study/csharp/sp_namespace.html
496 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 07:16:59 ] >>495 理解できるかどうかわからんがこことか。 blogs.msdn.com/slippman/archive/2003/12/03/58443.aspx
497 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 07:32:01 ] >>496 C#で具体的にどこ?
498 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 08:53:35 ] >>496 dくす。元々はmixinみたいなことをやりたかった >At the same time, it allows users of the new functionality to have a >first-class experience of the additional language feature something >we felt was missing from the original language design. #define value class class けど副産物として >It literally pairs an existing keyword with a contextual modifier separated >by a space. The pair is treated as a single unit, such as value class, rather >than as two separate keywords. spaced keyword も考案されたと、ふむ
499 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 09:02:57 ] >>497 msdn.microsoft.com/ja-jp/library/88c54tsw (VS.80).aspx >シール メソッドは基本クラスのメソッドをオーバーライドしますが、それ自体は >どの派生クラスでもオーバーライドされません 多重継承周りの話だろうおそらく...
500 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 11:57:45 ] C#で2語以上まとめて一つのキーワードになるのはextern aliasとyield returnとyield breakだけじゃね
501 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 00:09:34 ] >>500 そういった意味では構文の拡張そのものは大したこと無さそうだね>spaced keyword むしろ拡張されるまで従来aliasやyieldが変数名として認められてたので そういったレガシーなコードとの共存が大変そうだ。
502 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 00:33:02 ] 文脈依存のキーワードは他にも沢山あるよ 予約語を増やすことがあるJavaとは違ってC#の言語使用を拡張する際は 過去のコードがそのままコンパイルできることが最優先されるので 予約語を増やさずにキーワードを増やすという無茶な事をしている結果
503 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 00:37:31 ] 旧バージョンでコンパイルするモードとか搭載すればいい気がする
504 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 00:41:22 ] >>503 馬鹿相手の商売はそれでは済まない。
505 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 12:02:03 ] var var = from from in in select (global::Hoge)from.where.global; foreach (var var in in) { yield return in.yield; } 試してないけど多分通る
506 名前:505 mailto:sage [2010/03/08(月) 12:04:53 ] すまんいろいろ間違えてる
507 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 12:05:03 ] 頭の中でロンドン橋落ちるが流れた
508 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 18:38:11 ] 漏れの頭では「インッ!インッ!」と再生された
509 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 20:34:53 ] re2c でUTF32対応すべく頑張ってるが、charだと動くのにUTF32だと 挙動が変。cursorが進まず無限ループになったりする。もう限界。 どこかサンプルあったら教えてください。
510 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 20:54:01 ] ひげぽん氏のschemeがre2cでUTF32やってるはずだが
511 名前:509 mailto:sage [2010/03/13(土) 09:03:33 ] UTF32のBOMでしたorz。 BOMなしだと動いた。3日悩んだ。
512 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 17:58:08 ] 迷惑な香具師だな
513 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 00:22:42 ] ADVのシナリオ記述にXML使ってる例って結構たくさんある
514 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 07:06:31 ] パーサ作るの楽だからな。
515 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 08:33:34 ] しかしスクリプタの能力はXMLの方が大変。
516 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 08:39:03 ] スクリプトをXMLで記述してそのまま実行って……ないよな? 元ソースや中間データとしてならともかく、 プレーンテキストでもメガ単位になるんだぞ、あれ。
517 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 08:43:11 ] そこはエロゲの程度の低さ。自分で規格を作れないなんてな。
518 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 08:46:31 ] いまどき数メガなんて誤差にすぎん
519 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 08:49:32 ] 少なくともここにいる奴らからは支持を得ないだろうね。
520 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 10:10:52 ] エロゲごときに、自分でPG言語作るなんてアホくさ
521 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 10:16:18 ] このスレには、よほどエロゲにコンプレックスを持ってるやつが居るようだなw
522 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 10:32:38 ] 上に乗っかるコンテンツを、俺らの作業領域にあんま関係づけて語ってもな。 なんかド素人のゲーヲタ視点っぽい。
523 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 20:39:54 ] >514 XMLのパーザ簡単じゃないと思うけどなぁ。 セパレーターを調整したS式が一番良いと思う。
524 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 22:03:16 ] 最近はJSONやYAMLのパーザも増えてる。
525 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 22:15:40 ] 書く側に複雑な知識は期待できないとなれば、 wikiやTeXぐらいの記法が限界なんだろうか?
526 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 22:36:02 ] >>523 汎用のパーサを使わなくても(デ)シリアライザに直接食わせられるのが魅力かも。 オレはスクリプト記述の用途としては使わないが、 スクリプトの文法定義にXMLをコンパイラの設定ファイルとして使ってるよ。 S式はどーだろ?
527 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 23:46:36 ] >526 ライブラリが充実していればそうだけど、パーザを自分で組むとしたらXMLは無駄に複雑過ぎるよ。 要素と属性値みたいに無駄に種類が多かったり、終了タグに名前を書かなきゃいけないとか…… S式が嫌われているのは ・グループ化で使っている()が字面として強い ・セパレータとしてスペースが使われているから、普通の英文と相性が悪い 辺りだと思うんだけど、これを改善すればずいぶんと受けが良くなるんじゃないのかな? 昔こんなの作ったけど、なかなか悪くなかったと思う。XMLと相性も良かったし。 |要素名;要素の中身|: (|を表現するときは||を使う)
528 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 00:23:25 ] >>527 そもそもXMLはシリアライザやテンプレートエンジンに 吐かせるかしかせず、手では触らないことにしている。 XMLは静的型付き言語、JSONやYAMLは動的型付言語と相性がいいという印象。 >|要素名;要素の中身|: 悪くないんじゃないかな。縦棒は比較的使用頻度が少ない記号だし。 オレは [コマンド名 param1=arg1 param2=arg2] の形式にしてる。計算式は原則としてスクリプト中では使用させない。 これでも案外実用になる。
529 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 01:10:13 ] >>527 > 要素と属性値みたいに無駄に種類が多かったり 冗談だろ?
530 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 01:35:13 ] >529 マジ、マジ。属性値は本質的に制限付き要素なんだけど、わざわざ構文分けて別物にするほどのものじゃ無いよ。 『<element>属性値</element>なんて書きたくないよ』なんて思うかもしれないけど、それは要素の表記が 重すぎるのが問題なわけで。
531 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 01:42:37 ] それはあなたのDTD定義が適切でないだけ。 plistみたいにやりたければ、どんどんやればいい。 XMLの問題は「構文が単純すぎて」冗長になること。 組み込みタイプとリテラル表現がないのも一因。
532 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 02:10:00 ] え?DTD解析までやれと?どんだけ難易度高いんだよ。 やっぱりXML使うんだったらライブラリ必須じゃない?
533 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 07:21:11 ] >>528 「=」を「:」にすればObj-Cだな。
534 名前:509 mailto:sage [2010/03/20(土) 08:24:31 ] 質問です。 re2c+bisonでAST作成までだいたい出来たところまで来ました。 この先の最適化ってところが、まだ良くわかりません。 解説しているサイトとか、参考になりそうな所を教えてください。 (constant同士の演算くらいしか思いつきません)
535 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 09:13:01 ] コンパイラ作ってるの? とりあえず中田先生の「コンパイラの構成と最適化」は見た?
536 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 09:18:48 ] 最適かなんか後回しでいいのに
537 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 09:55:28 ] >>534 最適化は後回しにした方がいいと思うけど、いずれにせよASTから中間言語に直す方がいいな。 命令型言語なら3番地コード 大体どの教科書にも最適化は三番地コードに対するアルゴリズムとして書いてある
538 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 11:23:49 ] 先にある程度知っておいてからでも遅くは無いよね どうせ最初から作り直しになるんだけど
539 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 11:35:21 ] 最終的にどんなコードになるのかどうやって実行されるのかとかわかってないと 最適化なんかやりようがない
540 名前:509 mailto:sage [2010/03/20(土) 12:04:43 ] コメントありがとうございます。 >535 >コンパイラ作ってるの? いえ、今考えているのは仮想マシン書いてバイトコード実行、って 感じのスクリプトエンジンです。スタックマシンていうのが小さく 書けるみたいくらいの知識しかなくて・・・ なるほど・・・。とりあえず本買ってみます。
541 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 12:11:59 ] まずASTを直接評価するインタプリタを書いてみれば?
542 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 02:03:33 ] >>540 中間言語のニーモニックを多少最適化することより、 仮想マシン自体の性能アップの方が遥かに大事だよ。 ニーモニックの最適化が重要になるのは、吐き出すのがネイティブコードの場合だね。
543 名前:513 mailto:sage [2010/03/21(日) 22:55:18 ] >>513 でまさかこんなにレスが付くとは XMLでスクリプト書く場合の負荷については 能力の低いマシンならともかく、PC上でのプログラムだからそんなに性能を気にすることはなかった。 パーサーは自作なんて無理なので既成のを使用。 XML全体と同じ内容の木構造データにして実行する方式 (バイトコードとか仮想マシンを作るような知識はないので) なので、実行はそれなりに速いと思うけど ファイルサイズが大きくなると、最初の読み込みに時間がかかってしまいそう。 メリットは妥当性検証のあるエディタが使える事。実行する前にエラーが分かるのって大きい。
544 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 23:14:43 ] >>543 >ファイルサイズが大きくなると、最初の読み込みに時間がかかってしまいそう。 試してないのかね。 5MBぐらいのスクリプト作って読ませてみれ。
545 名前:513 mailto:sage [2010/03/21(日) 23:58:08 ] >>544 そんな大きいのは試した事ない・・これから作って試すわ。 150KBぐらいのがあるけど、それだとCeleron 1.4Ghzで40msぐらい。 150KBで単純に40msずつ増えていくとして、5MBだと1350msぐらいかな。 こんな感じの構造にしているんだけど、block直下にある要素をコマンドとして実行させたり、 クリック待ちなどで中断するのは簡単なんだけど(要素のインデックスを保存して行ってる)、 ifの中でクリック待ちで中断するような時はどうすりゃいいんだろう・・ if文の中まで実行しなくちゃいけないし、セーブで途中の要素から実行しなくちゃいけないときはどうするんだろう。 中断すること考えなければ簡単なのに。 読み込み時に、XMLの要素全部にIDを割り当てて、ロード時はそれをもとに再開するとかだろうか。 <function name="main"> <element param="1"/> 表示するテキスト <if expr="a=6"> 変数aが6のときの処理 <else>そうでないとき</else> </if> </function>
546 名前:デフォルトの名無しさん [2010/03/22(月) 06:17:07 ] 先日のエロゲプログラマの方が全然凄いな。 今のプログラマはアリモノを使いすぎるんじゃない?
547 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 07:59:27 ] 今時のプログラマは有りモノを活用するのが基本だろ。
548 名前:デフォルトの名無しさん [2010/03/22(月) 08:08:42 ] それって、基礎が出来てないけどブラックボックスを触るようなもんだね。 はまったときや改編時は、自己コードじゃないと大変そうだね。 あと、実行スピードはスクラッチに負けるよね。 JAVAとか使ってると遅くて敵わないね。
549 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 08:20:35 ] 他人のコードだからといってブラックボックスな訳じゃないし、 多数の人間が使っているコードなら実行スピードもむしろ最適化 されてると思うけど。実装スピードは格段に速くなる訳だし、 自前主義に拘る理由は無いでしょ。
550 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 08:30:06 ] > それって、基礎が出来てないけどブラックボックスを触るようなもんだね。 基礎ができている/できてないことと、有りモノを使うかどうかの判断は 関係ありませんね。 材木を山で切ってくることから始める大工しか、基礎ができてない、 なんて考える人のことを「バカ」と言います。 > JAVAとか使ってると遅くて敵わないね。 使ってない奴の妄想だから相手にしないほうがいいよ。
551 名前:デフォルトの名無しさん [2010/03/22(月) 08:35:48 ] はあ? ブラックボックスで困るのは事実だろ。 あとJAVAがいくら頑張っても前のエロゲプログラマのスピード(50000行を1秒でコンパイル)には敵わないだろ。 エロゲプログラマにコンプレックスでも持ってるのか? 今は遅いネットブックが2割をしめるんだぞ。
552 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 08:37:40 ] 単純な言語仕様ならそりゃコンパイルも速いさ
553 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 08:40:20 ] >>551 >ブラックボックスで困るのは事実だろ。 オープンソースの物を使うという発想は無いのかな ちゃんとドキュメントも整備されている物もあるよ
554 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 08:44:53 ] おかしな人は放置で。
555 名前:デフォルトの名無しさん [2010/03/22(月) 08:47:19 ] >>552 あれが単純な言語仕様に見えたのなら、お前の目は節穴だよ。 >>553 そろってるものもある、だろ? 無い物はソースから読み直しだ。それでも効率はブラックボックスの方が上だと思うが、 至高のコンパイラスレで技術力を言及しないのはどうしてだ? 前のエロゲ屋は音声も画像もシナリオも独自圧縮と書いてたぞ。 それでも既存の物を使う方が優秀というのか?
556 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 08:49:56 ] 有り物だけを使うのは技術向上の否定になるわけで、このスレでもスクラッチから作る方が高度だと認められてるだろ?
557 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 08:53:56 ] 速いバージョンのmp3の展開ルーチンでももたつくな。
558 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 09:06:47 ] JAVA厨ちんこだから、相手にしない方が。 それと、エロゲの人は低スペックでも動くようにチューンしてるだけだと思う。 様は適材適所で、スピードを求められないのならYACCとLEXを使えば良いだけだと思う。 たしかに技術力の向上のためにスクラッチから作るのも趣味としてはありだとは思うけど、 開発効率と実行スピードのどちらが求められるかは現場次第。
559 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 09:11:19 ] JAVAが早いって言うのは嘘だな。
560 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 09:13:27 ] >>555 コンパイラにとっての言語の単純さってのは 人間の感じるものとは異なるということさ
561 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 09:15:48 ] >>555 >至高のコンパイラスレで技術力を言及しないのはどうしてだ? 技術は『使いどころ』が重要だから。 何にでも技術力を投入すれば良いという物でもない。
562 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 09:37:45 ] まあ、前のエロゲ屋は長い間の蓄積があって、ああなったんだから、今と時代は違うよ。 でも、圧縮関連の技術を自社開発にしているところは純粋に凄いな。認めるべきだと思う。 >>561 この人はそこが技術の使い所と思ったんだろう。 >>560 前のエロゲ屋のコンパイラは十分複雑だと思うが。
563 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 09:40:26 ] 圧縮なんかは確立してる理論をベースに特許関係を避けて使うのがセオリー。 自前でやる意味があるのは枝葉末節の細かい部分だけ。
564 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 09:41:55 ] どちらにしろ、エロゲの人の技術は凄いかも知れないけど、今は時代が違うではないし終わりにしないか? スレの内容を逸脱してる。
565 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 09:43:18 ] 実装が手元にないのにそれをぐだぐだ論じても仕方ない
566 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 09:44:06 ] >>563 ロースペックなマシンに合わせて展開スピードをあげ、マスターに向けて圧縮スピードを上げている。 このエロゲ会社独自だろ?
567 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 09:47:12 ] >>566 どうしてそれだけで独自だと分かるの? 既存の技術を組み合わせることで圧縮効率を上げるってのはよくあることだけど
568 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 09:49:05 ] >>565 その通り。 >>566 長いエロゲ屋歴でそういう風にしたんだろ。 去年は新作6本、DL12本(?)作ってる会社だから、他の会社に当てはめられない。
569 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 09:50:57 ] >>567 本人かブログかで独自圧縮といってただろ。 信じるか信じないかは自由だが。
570 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 09:52:10 ] >>568 そんなに作ってるのか?
571 名前:568 mailto:sage [2010/03/22(月) 09:55:19 ] >>570 ああ、OHPとDLSITE.COMで確かめた。すさまじい数だ。
572 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 09:59:21 ] >>566 たとえば gzip の -1, -2, ..., -9 オプションですな。 圧縮処理の対象とするブロックの大きさを加減することにより、必要とするメモリ量+計算量と、 圧縮性能のトレードオフを加減する。 情報理論的にごくあたりまえの話ですが何か?
573 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 10:00:00 ] wikiで見ると社長兼メインプログラマみたいだな。 そりゃ本数出すためならプログラむくむわな。
574 名前:エロゲ屋 mailto:sage [2010/03/22(月) 10:02:40 ] >>572 この会社は圧縮率も高い。 良く社長と兼任してそんな本数出せたか不思議。 普通のエロゲはもっと時間を掛けて作られる。
575 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 10:04:18 ] その痛々しい名前欄はなんなんだw
576 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 10:06:00 ] >>574 単純にもっと昔に理論は確立してたからじゃないか? 実装もASMとC++だったよな。古い言語だ。
577 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 10:07:15 ] 予告通り出ないというのが常態化しているエロゲ業界で、そんだけリリース し続けてるのはすごいな。 OpenBSD が「半年ごとにリリース版を出す」を10年続けているのを知った時も すごいと思ったが。
578 名前:エロゲ屋 mailto:sage [2010/03/22(月) 10:08:48 ] >>575 うるさいw でも、この会社の評判は流通が必ず言ってくるくらい良いんだよな。 マスターが確実でバグはないって。延期とバグがつきものの俺らはいつも言われるw
579 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 10:11:38 ] >>578 やっぱり流通って口出してくるんですね。 エロゲ界の摩訶不思議です。 どういう仕組みなんですか?
580 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 10:11:48 ] 久方北エロゲ産業
581 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 10:13:57 ] もうそろそろ止めようぜ。
582 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 10:15:02 ] >>581 すまん。 昔提案のあった、TinyCの定義でもしないか?
583 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 10:23:24 ] 大学の学生実験でTinyCなる言語のコンパイラ作らされたなあ - 型はintだけ。void型やポインタ・配列はなし - 演算子は論理和積、加減乗除、比較だけ - 制御文はif, while, returnだけ 手習いにはちょうどいいサイズだったと思う
584 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 10:23:47 ] TinyCは目新しさがないんだよな。みんな最初に通る道だし。
585 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 10:25:24 ] 逆にHugeCを作れば
586 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 10:26:58 ] D言語w
587 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 10:31:09 ] C言語にクラスって必用かな。ネットのコピペで良いから、クラスのありがたみがいまいち理解できない。 スコープの厳密さは良いと思うけど。
588 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 10:32:29 ] RAIIが使えるだけで随分差が出てくると思う
589 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 10:35:40 ] コンストラクタとデストラクタってRAIIって言われるんだ。 たしかにエラー処理が楽ですね。
590 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 10:35:52 ] >>587 最初は C with Classes という名前だった処理系を作った人の 「C++の設計と進化」の最初のあたりだけとか読んでみたら?
591 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 10:36:37 ] RAIIは、コンストラクタとデストラクタを使ったリソース管理、だな
592 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 10:39:13 ] >>589 コンストラクタとデストラクタのことではない。 ウィキペディアからの引用になるが、 (引用者注: C++では)自動変数がスコープを離れるときデストラクタが呼ばれるため、 変数の寿命が終わるとすぐに資源が返却されることが保障できるようになった。これは 例外が起こったときでも同様であるため、RAIIは例外安全なコードを書くための鍵となる 概念となった (Sutter 1999)。
593 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 10:43:44 ] C#でもusing構文を使えばRAIIできるね Javaはこれができないから困る
594 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 10:50:18 ] Javaでもtry/finallyを抽象化したシンタックスシュガーないし何かを作れば いいんだろうけど、そういうものは提供しないポリシなんじゃないかな? メソッドの設計で抽象化するか。
595 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 10:51:19 ] >>587 ポリモーフィズムが使えるだけで随分差が出てくると思う
596 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 11:14:52 ] RAIIが重要なのはリソース解放を言語側に保証させることができるから。 名前に反して初期化時のリソース確保は重要じゃないよね。
597 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 11:17:18 ] >>594 言語仕様を単純化したいんじゃないかね せっかくGCがあるんだから、 全てのオブジェクトの寿命は無限ということにすれば話が単純になる
598 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 11:19:22 ] 元々は初期化側がRAIIの主眼だったんだろうけど、 正直そこはどうでもいいよね
599 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 11:22:56 ] >>597 RAIIに必要なのはオブジェクトの寿命管理じゃなくて あくまでオブジェクトの持ってるリソースの寿命管理だから オブジェクトは死ぬ必要ないのよ。 C#だってそう
600 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 13:01:04 ] どんだけ時代遅れ。 ガベコレを搭載してる実装系ではガベコレがアプリ本体と別スレッドで動いていることすらある。 すると削除するタイミングなんかは全く保証されないから、 デストラクタ自体を書かないのが推奨される作法になる。
601 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 13:08:20 ] は? RAIIはガベコレを通さないんだが
602 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 13:11:25 ] いや通してもいいだろ 終了処理をメモリ破棄のタイミングより早く行えばいいだけ
603 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 13:14:05 ] C#で実現できてるんだから 全く問題ないわな
604 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 13:41:31 ] オブジェクトが不要になったときにユーザが任意で呼ぶのがデストラクタ、GCが呼ぶのはファイナライザ(ときにデストラクタ) >>600 が言ってるのは後者で、RAIIで使うのは前者
605 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 21:52:52 ] RAIIで管理するのはメモリだけじゃない。 典型的なのがファイルのclose。 GCとRAIIは共存できる。 >>600 は無知。
606 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 22:09:22 ] まあファイルのcloseは失敗する事もあるので なるべく自前でcloseした方がいいんだけどね ネットワークドライブ上のファイルとか
607 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 00:36:37 ] デストラクタの中で自前でcloseしてるだろ・・・
608 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 07:58:24 ] ファイルのクローズって失敗してもほとんど対処のしようがないよね? 以後の動作を保証できないとしてアプリを異常終了させるぐらい?
609 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 08:27:12 ] で?
610 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 16:32:20 ] 自前でクローズしてもいいことないって話だろ?
611 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 16:40:07 ] 自前でクローズしないで誰がクローズするの
612 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 17:58:41 ] ファイナライザ
613 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 18:02:55 ] ガベージコレクションはいつ起こるかわからないから、 気がついたらファイルハンドルが足りないかもしれない。
614 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 19:13:12 ] >>613 明示的に呼び出せばいいじゃないか System::gc(System::GC_FULL); とか
615 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 19:30:22 ] ユーザが把握してる変数から参照がにたたれたとしても内部的には参照が残ってる可能性ってあるし 実装によってはFalse Pointerの影響で回収しきれない可能性とかもあるしなー GCに完全に任せきってしまうってのはこわいよ
616 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 23:53:03 ] ドラゴンブックの第二版が去年の6月に出たらしいけど評判はどうなの? (>>6 の本の一番上の奴の改訂版) www.saiensu.co.jp/?page=book_details&ISBN=ISBN978-4-7819-1229-5&YEAR=2009
617 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 00:20:19 ] >>616 表紙が派手になった 最新のコンパイラ技術に基づいて若干修正されている 初版を読了後に論文誌を漁っている人は買わなくてもOK 言語処理系に興味があって初版知らない人は読むべき
618 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 01:02:55 ] 組版がきれいになった 訳語も現代語により近く、読みやすくなった気がする 本質的な部分ではないかもしれんが、こういう改良は大切だと思う
619 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 04:40:37 ] このスレは居心地良いな。スレの内容も面白いし話題の切換も引きずらない。
620 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 04:47:56 ] しかし目新しい話題は少ない
621 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 04:59:00 ] でも、意見が違うからと言って、アスペルガーと言って意見を封鎖するのは止めないか? 医療関係のプログラムを組んでるけど、複数のドクターが言うには簡単にそんな診療、簡単にできないし、 相手が傷ついて、まともな論争に出来ないという。 相手の反論を封じるために、言っている、自己中心者が多くて困ってると複数のドクターが言っている。
622 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 05:05:09 ] デザインかっこいいのもいいな 英語のソフトカバー版買ったら表紙がちっともドラゴンじゃなくて後悔してるw
623 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 05:07:06 ] 逆に、そう言う方がアスペルガーに近いと言われた。 >>620 まあ、枯れた技術だけど、実装には興味がある。 OSとコンパイラはプログラミングの中でも特別視されるしね。 少ししか進まなくとも議論の余地がある。 次はmanycoreの時代だし、議論の余地はいっぱいあるよ。 しかし、ネットッブックのおかげで、ボトムが4-5年前に戻ってしまったのが不幸。 ネットブックだとJAVAは凄く重い。 こんなのが2-3割の市場だとすれば、進化は遠のく。
624 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 05:37:20 ] Javaなんてネットブックが出る前から企業向けでしか使われてないじゃん
625 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 05:49:41 ] >>623 ネットブックで使いたくなるようなJavaアプリケーションなんてあるの?
626 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 05:56:30 ] Javaはただの喩えでしょ メニーコア前提の言語や処理系が出てきてもそれが生かせない貧弱な プラットフォーム(ネットブック)が一定のパイを持ってるのは足かせになって 不幸って話だと思うぞ
627 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 06:00:29 ] そもそもネットブックをPCと考えるからいけないのであって、 図体のでかいスマートフォン程度とおもっとればいいんだけど、 問題はPCと思って買っちゃう残念な消費者が殆どなこと
628 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 06:45:42 ] やはり最適化は今も必用か。
629 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 06:46:24 ] アセンブラもねw
630 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 07:40:59 ] > 逆に、そう言う方がアスペルガーに近いと言われた。 ↑典型的な議論封鎖ではある。
631 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 09:47:15 ] バッテリーとかなくても機器が動けば もっと無茶できる t-01a, nexus one 眺めながら
632 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 14:32:47 ] アスペルガーだと指摘される方も指摘する方もアスペルガー。
633 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 18:20:42 ] >>632 じゃあ、あなたもそうなるよw
634 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 19:39:21 ] 自己言及的
635 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 00:05:00 ] べつにガオガイガーでもハンバーガーでもいいよ 良い処理系作れれば
636 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 00:10:16 ] オパオパ
637 名前:616 mailto:sage [2010/03/25(木) 00:41:36 ] >>617-618 ありがと、実は大学時代にお世話になった先生が訳した本なんで気になってたんだ。 昨日、図書館でドラゴンブックの第二版を借りてきたんで 初めの方をじっくり読んで、買おうかどうか決めたいと思います。
638 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 00:44:49 ] こんなところで言及されたら先生は迷惑だろw
639 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 01:35:57 ] 天才は何かに固執する人が多いから、アスペと勘違いされている人が多いね。
640 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 01:44:59 ] まだそのネタ引っ張るんだキミ。
641 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 01:59:30 ] すまん。今は翻訳者の先生の話だよなw
642 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 15:41:11 ] >>633 たぶんアスペルガーだから問題無し。
643 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 08:43:19 ] いい加減うぜえな エロゲばっかやってるとこうなるのか?
644 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 09:30:22 ] 何故エロゲに結びつける。コンプレックスかw
645 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 09:31:56 ] エロゲ用エンジンぐらいしか、言語設計をする機会がない現実。
646 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 09:37:50 ] ま、わざわざDSLを自前で定義するより、 こなれた汎用スクリプト言語を埋込みで使った方が楽だからな。
647 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 09:39:24 ] それにしても前のエロゲ屋の技術は中々良かったな。 他の会社はXMLか。それも凄いな。 エロゲ、侮れない。
648 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 09:42:27 ] ネットブックという足かせがエロゲにある限り最適化は進むんだろうな。
649 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 10:17:34 ] その昔パソコンゲームがApple][にとりつかれてたようなものか?
650 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 12:50:13 ] 6502か。ゼロページは便利だった。FCでも使われたな。
651 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 12:59:40 ] エロが世界最先端な国は日本ぐらいのもの
652 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 13:17:25 ] FPSがPCの性能を先導してる国もどうかとw
653 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 15:35:04 ] エロゲも侮れないんだな。
654 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 15:36:47 ] >6502か。ゼロページは便利だった。FCでも使われたな。 65C02拡張のPC-Engineは作ってて楽しかった 65816のスーファミはVDPが楽しいけどCPUはいまいちだった 今だとARMプロセッサ向けのコンパイラ作るのが割と楽しい 86系だと自力でコード出さないでCとかを中間言語にしてintelCにコンパイルさせるような形の方がいいコードできるから
655 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 15:44:47 ] 今ARM勢いあるよな。
656 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 15:50:14 ] >>655 勢いがあるのもあるが ARMのアーキテクチャがstackマシンの素性からそんなに離れていないのでJITのコード変換がすごくやりやすい マルチスレッドでGC付きの言語をJITで落とし込む際にクリティカルセクションなしでもコンパクションGC作ったりできるような事とかができておもしろすぎる X86みたいに命令が複雑多岐じゃないせいでもあるけど、実装自体が楽しいのは本当に久方ぶりだよ
657 名前:デフォルトの名無しさん [2010/03/26(金) 20:35:57 ] なるほど、エロゲ向けだな。
658 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 02:38:47 ] 特にインタプリタの話なんだけど、ベースライブラリは何を使ってる? 日付/時間とか、スレッドとか、ネットワークとか、いろいろ 自前でマルチプラットフォームにする気は起きないし、 ライセンスの問題もあるから難しいよな。 wxはいいけどC++になっちゃうし、glibだとGPL食らうし
659 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 02:43:32 ] boost
660 名前:デフォルトの名無しさん [2010/03/28(日) 03:50:47 ] 自前。
661 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 04:11:06 ] 俺も自前だな。
662 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 04:57:28 ] Cで自前。会社じゃ当たり前。
663 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 05:45:31 ] 会社じゃ安全なライブラリを買うか自前だよな。
664 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 06:46:51 ] >GLibを動的リンクにて使用する場合に限り、ソフトウェアを >製造、販売が可能になります。 DLLに固めて使うなら大丈夫でなかたっけか…lgpl ver2.1+だっけ… まるまるスタティックとかOSごと積むとかは また違うとは思う。でもできれば自前が一番いい
665 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 07:04:30 ] LGPLで外部DLLはよく使われる手だよね。 何かあっても外部DLLのソースの公開だけで済む。
666 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 07:06:57 ] ていうか、コンパイラスレでこんな論議必用か? コンパイラ組めるなら自前で全部出来るだろう。
667 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 08:27:32 ] ライブラリは外部のものを流用できるように作るものだ
668 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 16:31:01 ] 投入できるリソースは限られているのだから、 一番注力したいところに集中的に投入するのが良い。
669 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 16:34:01 ] >>666 そりゃ何だって自分でできるさ。 自分の家だって時間さえあれば自分で作ってみせる。
670 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 16:43:35 ] そんなにたいした共有ライブラリじゃないだろ? せいぜい2週間しかかからないよ。
671 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 17:00:02 ] 「共有」ってわざわざ付ける意味は?
672 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 17:40:57 ] 頭痛が痛いと同じ表現だったな。すまそ。
673 名前:デフォルトの名無しさん [2010/03/28(日) 18:51:26 ] つか、そのままGPLじゃまずいのか?
674 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 19:15:56 ] >>673 「秘すれば花なり、秘せずば花なるべからず」
675 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 19:55:54 ] >>673 そりゃフリーな実装ならいいけどさ バイナリ納品でメンテ契約あり、ようするにソースコードでの自社のノウハウは出したくないとかあるときはGPLは使えないだろ
676 名前:デフォルトの名無しさん mailto:さげ [2010/03/28(日) 21:46:21 ] いや、それはわかるんだけど いままで請求されたことないし ぶっちゃけ、ソース出てもノウハウは出ないってw
677 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 00:12:46 ] 最低だなお前 すべてにおいて
678 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 03:27:14 ] >>656 armはcpuは普通につかえるが ペリフェラルが使いにくいのが多いんよね
679 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 09:36:51 ] >>678 組み込みのCPUはDMA,IRQ以外って高機能なデバイスを無理矢理つっこんでるのでレジスタの設定がメチャクチャめんどくさかったりするけど そういう意味の使いにくいってことかな?
680 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 11:54:11 ] PICは使いづらいね。そー言えばエロゲ屋の人もPICは無理でAVRは作ったって行ってたね。 PICのレジスタは地獄。PIC16でようやくまともになった。
681 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 11:55:02 ] picはウンコ ARM使えよ
682 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 17:13:01 ] どっかのarmでdmaが一転送あたり32回しか回らないのあったな 毎回チェーン使うのは無駄くさい
683 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 17:46:12 ] 組み込みCPUはたいてい 外部ピンがMuxされてるから 余計にめんどいんだよな
684 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 18:13:37 ] >>682 ポーリングするのかw PIOで素直に転送した方がましだねw
685 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 20:53:56 ] >>684 よせよ、CPUもったいねぇじゃねぇか
686 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 20:58:30 ] 基本はHLTだよな
687 名前:デフォルトの名無しさん [2010/03/30(火) 02:26:12 ] だよなampmだよな。
688 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 08:56:33 ] >>684 最大32回をチェーンでつないだら たくさん送ってくれるから PIOよりゃましだがチェーン必須はめんどいw
689 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 12:56:22 ] 中田育夫氏の最適化の本ってどうなんでしょうか? 基本的な機能を備えた言語で論理的な部分からどの様な最適化が一般に可能か、について調べています。 定価が10000円だったみたいですが、そんなに特別な本なのでしょうか?
690 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 13:59:17 ] 日本語しか読めなければ、他に選択肢はない。 ドラゴンブックくらいしか。
691 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 14:21:23 ] 中田さん懐かしいな
692 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 14:24:26 ] どのような方法があるかを調べるだけならググるで十分な気もするが。
693 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 18:17:37 ] 美しい日本のMLコンパイラとかね。
694 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 22:13:42 ] ドラゴンブックにのってて中田本にないものってある?
695 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 03:55:47 ] 逆はあるな りんご園とか
696 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 19:50:02 ] りんご園てなに?
697 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 20:11:27 ] >>696 スモールコンパイラの制作で学ぶプログラムのしくみ
698 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 21:05:42 ] りんご園とコンパイラでぐぐってみたら変わった本が出てきたけど、そういうことか。thx
699 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 23:10:25 ] >>695 あれは監修だけだから中田本とは違うんじゃ?
700 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 03:12:48 ] 「これは文系のセンスで書かれたコンパイラの本です。」 --中田氏推薦の言葉はこの一文から始まる。 この言葉に魅力を感じつつ、実際に購入して読んでみたが、 読み進むにつれ、この言葉の皮相さがだんだんと理解されてる ことになる。 どうやら、ここで言う「文系のセンス」とは、 1.「ストーリー仕立て」でとっつきやす「そうな」文章、 2.全編を通して出てくるリンゴの比喩 主としてこのことを指しているようだ。 しかし、まったくもって残念ながら、 1.は決して名文とはいえない拙い言い回しが散見されるところどころ設定に無理がある稚拙な「ストーリー」であり、 2.はかならずしも的を得た比喩とはいいがたい代物で読み進めるにあたってかえって理解の邪魔になるといったものだ。 とりわけ2.を称揚しているかにも見える「推薦の言葉」は少なからぬ問題を孕んでさえいると思う。 比喩において、喩えられる対象と喩えそのものにおいては、 互いの概念の抽象度合い(というか抽象化のレベル)がきちんと符合しているべきである。しかしながら本書においては、そのレベルがまちまち、バラバラであり、必ずしも適切な比喩でないものが実に多い。 読み進むにつれ、拙い比喩表現を「文系のセンス」などと言ってしまう無神経な理系の教授と、「文系の持ち味を生かした」と悦に入っている無神経な文型の学生。どうしてもそういう印象がもたれてならないのだ。 本来よい比喩のための「センス」に文系も理系もないのであり、あるのは明晰な概念把握、適切な抽象化、適切な想像力これらに関する「センス」があいまってはじめてよい比喩表現が可能になるのだと思う。 そしてよい比喩表現だけが、複雑な物事を理解する助けとなるのである。 「ただ単にたとえればいいってもんじゃないんだ!」と声を大にして言いたい。
701 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 03:46:26 ] >>700 どの本の推薦文?
702 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 03:57:55 ] りんご園
703 名前:デフォルトの名無しさん mailto:sage [2010/04/08(木) 18:48:14 ] りんご園は読まない方が良いよ 教科書の丸写しに訳の分からない説明を加え JAVAで書き直した。そんな本
704 名前:デフォルトの名無しさん mailto:sage [2010/04/08(木) 19:50:32 ] というか比喩なんてどうでもいい。 比喩を排除するために数学的記述があるのだから。
705 名前:デフォルトの名無しさん mailto:sage [2010/04/08(木) 20:28:39 ] >>699 監修しちゃった以上責任はあるだろw 推薦の言葉なんて書いてる場合じゃなくて出版止めるべきだったとしか思えないレベル
706 名前:デフォルトの名無しさん mailto:sage [2010/04/08(木) 20:47:32 ] >>705 学術書じゃなくて一般人向けの本に何を期待したんだ?
707 名前:デフォルトの名無しさん mailto:sage [2010/04/09(金) 09:27:52 ] 関数型言語のコンパイラを解説した本てある?
708 名前:デフォルトの名無しさん mailto:sage [2010/04/09(金) 09:40:14 ] Modern Compiler Design in ML 分量はたいしたことないけど後ろの方にあった 最近和訳出てたよね?
709 名前:デフォルトの名無しさん mailto:sage [2010/04/09(金) 21:15:14 ] >>707 MSRのサイモン・ペイトン・ジョーンズのページも見て。 research.microsoft.com/en-us/um/people/simonpj/papers/papers.html
710 名前:デフォルトの名無しさん mailto:sage [2010/04/09(金) 22:37:20 ] >>708 少し違ってModern Compiler Implementation in MLのことだろうか。 その翻訳本の「最新コンパイラ構成技法」を見てきたけど1章が関数型に費やされてたわ。 まあでも頁数のためか、思いつくような事が難しく高級に書いてある感じで終わってたが
711 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 22:10:11 ] >>710 俺も立ち読みしたけど、訳が悪いと思うなぁ。 いや、悪くはないんだけど、堅い。 原文はそんなに難しい英語ではないし、学部生向けの教科書 だと思った
712 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 20:23:06 ] GPPGでBisonのYYDEBUGでのデバッグ機能を使用したいのですが、同様の機能がありますでしょうか? どんな解析がされたのかがわからなくて辛いです(。>д<。) 今はConsole.Writeを実行して、どのような解析がされたかを確認してます。 お忙しいところ申し訳ありませんが、どなたかよろしくお願いいたします。
713 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 20:24:02 ] >>712 俺の研究室の学生っぽいからダメ
714 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 21:13:00 ] 身内ならなおさら、こんぐらい教えたれやw
715 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 21:56:39 ] ドキュメント読めば書いてあるよ HTML吐かせたりできたはず
716 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 22:16:06 ] ( 。>д<。) (。>д<。 ) ( ゚д゚ )
717 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 00:45:08 ] 英語の勉強もかねてるんでしょうね。 でも、大変そう(w plas.fit.qut.edu.au/gppg/files/gppg.pdf ドキュメントってこれっすよね。きっと 上から眺めたらそれっぽいのを見つけられたよ。 一字一句を訳してると死ぬほど時間掛かるから、ざっくり眺めてみるといいのでは? htmlとかなんとかって書いてあったのでたぶんこれだろう。 34ページしかないので、10分くらい眺めてみては?
718 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 03:26:08 ] 最初はちゃんと読んでいんじゃない そのうち斜め読み出来るようになるし
719 名前:712 mailto:sage [2010/04/29(木) 12:47:45 ] 皆様返信ありがとうございます。 GW中に調べてみますv(^ ^ ちなみに、私はサラリーマンなので713さんの後輩ではないと思いますよ。 私の場合は自力で調べてみますが、後輩には優しく教えてあげてくださいね。
720 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 14:13:39 ] やさしく教えるのって結局質問者のためになってるのかな 突き放した方が良い場合もある(そっちの方が多い)んじゃないか
721 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 14:16:04 ] >>720 要は主体的に動かすための動機づけが重要なんだよ。 手取り足取り何もかも用意してやるのも害になるし、 突き放して何も与えないのも害になる。 さじ加減が重要だよ。
722 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 14:18:28 ] 教育には、○○をすれば必ずうまくいく、なんていう銀の弾丸はなくて、 人それぞれさじ加減を変えないとうまくいかないんだよ。
723 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 00:57:30 ] 組み込み系言語総合スレは何処に
724 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 01:09:32 ] 立てたよ。 【Lua】組み込み系言語総合 その3【Squirrel】 pc12.2ch.net/test/read.cgi/tech/1272643397/
725 名前:デフォルトの名無しさん [2010/05/08(土) 02:33:42 ] ANTLRの質問です。 JAVAも初心者なんですが、日本語(UTF-8)のコメントが入った*.gを ANTLRにかけるとエラーが出るんですが、何とかならないでしょうか?
726 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 07:05:26 ] >>725 options 節でcharVocabularyの範囲を指定すると通るよ charVocabulary = '\u0000' .. '\uFFFE';
727 名前:725 mailto:sage [2010/05/09(日) 21:54:07 ] >>726 charVocabularyの指定ではダメでした。 後出しですいませんが、使っているのはANTLR3で、 何となく、ANTLR3から使えないような気もします。
728 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 20:08:20 ] FORTH系でスタックの深さをインデントの深さで表現するって言うのはどうだろう 1 + 2 * 3 + 4 / 5 1 2 3 * + 4 5 / + を 1 2 3 あれ?
729 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 20:24:18 ] あんまり見栄え良くないよ。 1 2 3 * + 4 5 / +
730 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 00:25:27 ] >>728 積んでから帰ってくるとか消費して帰ってくるのとかがキモく見えるだけじゃないか? 今まで通りスタックの伸縮についてコメントで記す方式で十分な気がする だいたいわかんなくなる位巨大なワード組まないようにすべきだと思うし
731 名前:728 mailto:sage [2010/05/22(土) 17:56:42 ] いや、 1 2 3 4 5 + で、(1+2+3+4+5)が計算できると、いいかと思ったんだ。 このスタック位置まで繰り返しみたいな。
732 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 18:02:26 ] 本格的にparserを実装したいならIronyを使う。 ただ計算だけできればいいならなにかインタプリタを使えばいい。 個人的にBooをおすすめしておく。 コンパイラにインタプリタに標準ライブラリまでついて1.45MBと軽くていい。
733 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 18:54:05 ] >731 検討したことあるけど、後置のメリットをダメにするから止めたほうが良い。結局カッコ付けるのと変わらなくなるし。
734 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 18:57:09 ] ++ とやったらスタック内が1つになるまで加算する、 とかしたらいいんじゃない
735 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 21:02:29 ] >>731 それ括弧でくくってから呼び出し関数の名前を最初に書いたら単なるLISPじゃないのかな?
736 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 16:18:33 ] >>735 >それ括弧でくくってから呼び出し関数の名前を最初に書いたら単なるLISPじゃないのかな? しー!、黙っていればわからないって! 見た目がPython風にならないかと思っただけ。 >>730 >今まで通りスタックの伸縮についてコメントで記す方式で十分な気がする これで、IDEでワードを打ち込むと、前のキーワードの色が変わったりすると便利だな でも、深さが任意のキーワードとかがあったらだめだろうけどな。
737 名前:デフォルトの名無しさん mailto:sage [2010/05/25(火) 23:57:02 ] lemonとかcaperとかのプッシュ型パーサージェネレーター使ってる人いる?
738 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 01:40:55 ] caperは使ってる、でかいの書いたらコンパイル時間がたまらん事になった
739 名前:737 mailto:sage [2010/05/26(水) 12:48:47 ] プッシュ型パーサーって入力の終わりを示すトークンを自分で入れるでしょ。 あれがどうもやりにくいというかピンとこないというか。 対話型でスクリプトを入力するようなやつ(ぶっちゃけるとlisp)で 単純に改行を入力の終わりと出来ないやつは一体いつ終了トークンをプッシュするんだと。 「全ての左括弧と右括弧が対応したかを自分で検査してtoken_eofをプッシュ」ってやんのかな?あれ?
740 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 21:47:01 ] それでいいんじゃね、字句解析機でネストレベルを覚えとくのは普通にやる。 あと、プッシュ型パーサは字句解析と構文解析の間で小細工できるのが便利だと思う
741 名前:jonigata mailto:sage [2010/05/26(水) 21:56:43 ] なるほど…… スペース的なトークンを用意したら なんとかなったりしないかな? それはそれで文法作るの面倒かしら あるいは、改行のところでパーサのインスタンスを保存して、 改行にあわせて無理やりeof打ち込んで、 エラーになったら保存したインスタンスを復帰してどうにかするってのは どうでしょう
742 名前:737 mailto:sage [2010/05/26(水) 23:46:56 ] >>740 > それでいいんじゃね、字句解析機でネストレベルを覚えとくのは普通にやる。 即効性で言っても多分それが一番かなぁ。 >>741 > スペース的なトークンを用意したら > なんとかなったりしないかな? 外側の都合が文法に影響するのはなんとなく気持ち悪い気が…。 > あるいは、改行のところでパーサのインスタンスを保存して、 > 改行にあわせて無理やりeof打ち込んで、 > エラーになったら保存したインスタンスを復帰してどうにかするってのは 概念的には一番わかりやすいと思うけど、 括弧が閉じられた後、改行が来るまでに別のトークンが来ないとも限らないのが…。 (defun foo () 5) (foo) とかだったら ==> foo ==> 5 みたいにfooの定義とfoo呼び出しの戻り値5が返って欲しいし。
743 名前:jonigata mailto:sage [2010/05/27(木) 00:15:48 ] それはトップレベルがS式のリストじゃだめ? それも気持ち悪いor実はそんなことじゃ解決しない ということであれば、何をどうできればいいかなあ eofを仮にpostしてacceptするかどうかだけ判定する メソッドとか? 一切コーディングせずに妄想だけで言ってるけど!
744 名前:737 mailto:sage [2010/05/27(木) 08:56:44 ] > それはトップレベルがS式のリストじゃだめ? あ、なるほど。そう考えたら「パーサのインスタンスを保存して〜」で問題ないのかな…。 まだやってないけどメソッドの追加はいらなさそうな気がします。 実際試すまでちょっと間が空くかも知れないけどまた報告に来ます。
745 名前:737 mailto:sage [2010/05/30(日) 14:46:41 ] とりあえずやったこと書いてみます。 まず、字句解析器から受け取ったトークンをcaperにプッシュするループのところに以下の部分を挟みました。 if( token == token_LINE_FEED ){ Parser< Value, SemanticAction > backup = parser; if( parser.post( token_eof, 0 ) ){ break; } parser = backup; } と、backupを書き戻そうとしたところでoperator=使えないというエラーが。 で、Parserクラスに代入演算子を入れました。 public: self_type& operator!=(const self_type& other) { if (this != &other) { accepted_ = this->accepted_; error_ = this->error_; accepted_value_ = this->accepted_value_; stack_ = this->stack_; } return *this; } }; これでエラーは無くなりました。 (つづく)
746 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 14:46:58 ] じゃあさ、SQLでViewが画面とかどうだろう。 入力困るけど。
747 名前:737 mailto:sage [2010/06/01(火) 10:44:02 ] 次に今までS式が最上位だった所へ更に上を追加しました。 Top<int> : [] | [] Top Datum(0) ; とここでふと疑問が。 ・全体をS式の列として受理するとして、スタックに積む値の型はどうなるの? typedef boost::variant<std::string, int, bool, Sexp *> Value; となっていたのが typedef boost::variant< std::string, int, bool, Sexp *, std::list< boost::variant< std::string, int, bool, Sexp * > > > Value; とでもなるのかな?えー。 …SemanticAction内でYYACCEPTに相当する何かを行った時にも postでtrueを返せばbisonの置き換えが楽そうな気がするんだけど。
748 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 17:43:52 ] 中田の新しい本は何が変わりましたか?
749 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 18:54:51 ] >748 ちょっと自分で調べといて おれ忙しいから
750 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 22:12:22 ] >>748 新刊でたの?、それとも改訂版?
751 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 22:21:56 ] >750 ちょっと自分で調べといて おれも忙しいから
752 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 22:24:16 ] >>751 そんなこと書き込んでる間に調べられるだろう
753 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 13:31:54 ] >>750 2版が出た
754 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 17:06:45 ] >>745 >>747 型に関しては、単にリストをオブジェクトを用意すればよいのではないかな? 代入演算子とかはこれから実装しますです YYACCEPT云々についてはちと考えます。
755 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 19:48:52 ] 良く見たらoperator!=になってるw