1 名前:デフォルトの名無しさん mailto:sage [2005/05/06(金) 08:28:29 ] プログラミング言語処理系の開発に興味のある人達のスレッドです。 字句解析・構文解析から,データフロー解析,ループ並列化,タスク並列化,SSA変換, CPS変換,レジスタ割付,命令スケジューリング,ソフトウェアパイプライン等各種最適化, それにVM,GC,JIT,リンク時最適化,動的バイナリ変換などなど。 意味論に関する話題も歓迎です。 前スレ 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/ (前スレ) 関連リンクは多分 >>2-10 あたり
267 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 11:51:13 ] >>251 >>263 をR5RS準拠でヨロスク
268 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 14:49:33 ] プログラムが停止するかどうかすら判定できない、じゃなかったかなあ。
269 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 15:08:56 ] >>268 「有限時間内で」が大事。
270 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 15:25:18 ] >>261 は最初から「全自動では無理」と言ってるんだが… 理論上無理とか言ってるやつは proof assistantというものが存在することすら知らんのだろうな。 いずれにせよ>>262 の言うとおりスレ違いだろう。
271 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 16:19:22 ] >>251 氏 後学の為に是非公開してくださいませんか。宜しくお願いします。
272 名前:デフォルトの名無しさん mailto:sage [2005/05/22(日) 00:51:20 ] schemeの処理系なんて、重厚長大で完璧めざしてるR5RS準拠から 読みやすさ重視orお遊びのトイプロジェクトまで、山ほどあるぞ。
273 名前:デフォルトの名無しさん mailto:sage [2005/05/22(日) 07:48:12 ] >>271 R5RS規格書は50ページ程度と言われてるけど内容濃いしね 省かれた暗黙仕様もあるから準拠しようとすればそれなりに工数掛かる >>267 おれが今回作ったのは継続もなくスタックベースでそもそもRxRS前提に書いてない throwみたいに親側へ飛ぶだけだし、スタックオーバーフローもする ちゃんとしたのは別にあるんだけど、デカくなりすぎた そこそこの速度で動く&俺言語やアプリへの組み込みが目的だった 俺言語2k行ぐらいで最低限の最適化だけやったいい加減なやつ 速度はguile1.7.2と同じぐらい。。。guileは速度捨ててるね
274 名前:デフォルトの名無しさん mailto:sage [2005/05/22(日) 08:52:51 ] >>273 おー、俺言語大好き人間って結構いるんだな 俺はSelf系つかprototype系好きなんで何個も作ったけど、Schemeは一度も作ったコトないや
275 名前:デフォルトの名無しさん mailto:sage [2005/05/22(日) 16:33:47 ] 俺言語への組み込みScheme? どんなものか想像できない。
276 名前:デフォルトの名無しさん mailto:sage [2005/05/22(日) 16:49:51 ] よくあるパターンは、scheme式をbuiltin型として使えるというものかな。 prologを組み込むと時々便利。
277 名前:デフォルトの名無しさん mailto:sage [2005/05/23(月) 16:39:26 ] Scheme in javascriptやin rubyを作ってるんだけど、 何かの仕様に準拠しないと達成感がない。 でもRxRSの複素数とかくだらないの実装するのは面倒くさい上に、 母言語(javascriptとか)の数値表現がそのまま使えなくなって 滅多に使わないのに全体的に遅くなりそうなあげく、利便性まで下がる。 同じことで悩んだor悩んでるやついる?
278 名前:デフォルトの名無しさん mailto:sage [2005/05/23(月) 18:49:26 ] >>277 つcoercion semantics
279 名前:デフォルトの名無しさん mailto:sage [2005/05/23(月) 19:22:56 ] Coercin semantics?ってsubtypeに基づく変換とかのアレですよね。 Schemeに型はないんですが、soft-typingしろってことでしょうか。 誤解があったかもしれないので捕捉。 Scheme in javascriptってjavascriptで書かれたScheme実行エンジンを意図してました。 i = scheme_eval("(+ 1 2)"); みたいに実行できるようなの。これでiには普通の3が代入されるか、 自分で定義したclass SchemeNumberのインスタンスが入るか、が問題です。 前者が嬉しいけど、複素数とかの対応はどうするべきかな、と。
280 名前:デフォルトの名無しさん mailto:sage [2005/05/23(月) 22:06:51 ] >>275 俺言語との通信やプリプロセッサの拡張とか funclist.scm:((f 1) (g 2) (h 3)) 俺言語: #s (define func-list (with-input-from-file "funclist.scm" read)) #s(for-each (lambda(x) (puts x "() { printf(\"myname:" (car x) "\\n\"); return " (cadr x) "; }")) func-list) register_func() { #s(for-each (lambda(x) (puts "scm_add_proc(\""(car x)"\", (scm_proc_t)"(car x)", 0);" " printf(\"defined:"(car x)"\\n\");")) func-list)} main() { register_func();scm_write(scm_eval_string(#ss`(+ ,@(map(lambda(x)(list(car x))) func-list))));;scm_newline();} ↓ f() { printf("myname: f \n"); return 1; } g() { printf("myname: g \n"); return 2; } h() { printf("myname: h \n"); return 3; } register_func() { scm_add_proc("f", (scm_proc_t)f, 0); printf("function defined:f\n"); scm_add_proc("g", (scm_proc_t)g, 0); printf("function defined:g\n"); scm_add_proc("h", (scm_proc_t)h, 0); printf("function defined:h\n"); } main() { register_func();scm_write(scm_eval_string("(+ (f) (g) (h))"));scm_newline();} ↓ function defined:f function defined:g function defined:h myname: h myname: g myname: f 6
281 名前:デフォルトの名無しさん mailto:sage [2005/05/23(月) 22:09:36 ] >>279 おれだったらevalの結果をそのままwriteできるようにする。 結果が数値だけとは限らないので。 scheme_write(scheme_eval(scheme_read())); もしくは scheme_write(scheme_eval_string("(+ 1 2)")); 経験的に特に明示しない限りschemeならschemeの型で持ちまわる方が都合良い。
282 名前:デフォルトの名無しさん [2005/05/23(月) 23:45:06 ] >>280 イラネw
283 名前:デフォルトの名無しさん mailto:sage [2005/05/23(月) 23:50:14 ] 綾本って思いっきり中田さんの授業配布プリントに 説明を加えただけにしか見えないのだが。
284 名前:デフォルトの名無しさん mailto:sage [2005/05/23(月) 23:55:31 ] そう言われても俺には確かめようが無い でも中田先生の教科書は(・∀・)イイ!!
285 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 00:41:48 ] >>281 >schemeならschemeの型で持ちまわる方が都合良い。 処理系の作成者としては当然その通りで、気持ちもわかるんだけど、 処理系のユーザとしては不便だと思うんだよね。 いちいちscheme_number_from_javascript_number(1)とかしなきゃならんのは。 どうにかならんかな、みんなどうしてるかな、って疑問でした。
286 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 02:28:26 ] 三日ほどかけて、生まれてはじめてコンパイラを作った 900行ほどのTinyBASIC以下のダメ言語だけど とりあえず、エラトステネスの篩が動いてる しかし、明らかにヘボい機械語を吐いているのに エラトステネスでVC++とほとんど実行速度に差が無い うちのマシンがefficeonだからかなあ? やっぱコンパイラは速いね
287 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 02:36:05 ] 私も、インタプリタをつくり、コンパイラに拡張したことがあります。 言語つくりを学ぶとかなりプログラミングの理解度が高まることが実感できました。 少し高度だけど、プログラミングを生業にするなら、1度はチャレンジすることをお勧めします。 決して損とは思いません。
288 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 02:49:35 ] 勉強といっても三日だし しかも半分は、STLとVC++の使い方の勉強だった気がするw 残りはVC++のデバッガーに機械語を教えてもらってたかんじ しかし、カウンタのインクリメントでさえpushとpopを二回ずつりながら へぼへぼと計算するうちのヘボコンパイラと inc eacだけで済ませそうなVC++が ほとんど実行速度に差が無いのは解せないなあ
289 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 07:35:11 ] 測定の仕方が悪いか、コンパイラにバグがあるか。
290 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 17:27:21 ] 計測は、無負荷状態で、 clock_t c = clock(); Sieve(); cout << double( clock() - c ) / CLK_TCK << end; こんなかんじ 一億までの素数を全部求めた場合の所要時間は、 efficeon 1.6GHzで、VC++が30.5秒程、へぼ言語が31.5秒程 計算結果は、VC++とへぼ言語で一緒にしかならないから コンパイラのバグで不当に速い可能性はうすい ちなみにへぼのカウンタ変数のインクリメントのコードは↓、我ながらひどいもんだw mov eax, i push eax mov eax, i mov eax, [eax] push eax mov eax,1 pop ebx add eax,ebx pop ebx mov [ebx],eax VC++は↓、まとも mov edx, [i] add edx, 1 mov [i], edx
291 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 19:23:34 ] エラトステネスのふるいだと メモリアクセスがネックになるんじゃないかな。 伝統にのっとってfactやfibで。
292 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 19:35:32 ] 同感.後taraiを回すとか. どうでもいいが,>290のVCのコードでループカウンタにレジスタが割りついてないのが気になる.
293 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 19:42:20 ] スタックマシン向けのコード生成法っぽいな?
294 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 20:43:05 ] >>293 つかスタックマシンのコードをx86へ分解してるだけだと思うよ。 コードジェネレータで頭ひねらずに済むから処理系を作ってる途中では有用だろうし。
295 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 21:49:05 ] >>290 とりあえず mov eax, i は lea eax, i だとして、 それぞれのコードを1億回ループするのを適当に計ると へぼ: 1613771636 VC++: 1119915436 クロック掛かる。1.6GHz に換算すると へぼ: 1.0秒 VC++: 0.7秒 程度の違いだな。
296 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 21:50:51 ] >>295 失礼。 mov eax, i でよかった。
297 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 22:08:35 ] >>295 クロック数って そんなに正確に測れるんですか? シミュレーション? CPU のマニュアルから計算したやつ?
298 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 22:17:21 ] sieveではスカラ最適化はほとんど利かないと思う。 しかし1億で30秒は遅い気もするが…>290でループ変数が レジスタに載ってないあたりを見ると、元ソースの問題かな。
299 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 22:29:07 ] >>297 発想が逆だ
300 名前:デフォルトの名無しさん [2005/05/24(火) 22:29:21 ] ヘボ言語のソースがみたい。 (ふるいのソース、処理系そのもののソースじゃなくて)
301 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 22:48:54 ] >>300 array sieve[1000000] i = 0 init: sieve[i] = 1 i = i + 1 if i <= 1000000 then jump init i = 2 loop1: if sieve[i] = 0 then jump skip j = i + i loop2: sieve[j] = 0 j = j + i if j <= 1000000 then jump loop2 skip: i = i + 1 if i <= 1000 then jump loop1 i = 2 fin: primes = primes + sieve[i] i = i + 1 if i <= 1000000 then jump fin 1000*1000; "未満の素数が"; primes; "個あります\n"
302 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 22:50:36 ] うわインデントが array sieve[1000000] i = 0 init: sieve[i] = 1 i = i + 1 if i <= 1000000 then jump init i = 2 loop1: if sieve[i] = 0 then jump skip j = i + i loop2: sieve[j] = 0 j = j + i if j <= 1000000 then jump loop2 skip: i = i + 1 if i <= 1000 then jump loop1 i = 2 fin: primes = primes + sieve[i] i = i + 1 if i <= 1000000 then jump fin 1000*1000; "未満の素数が"; primes; "個あります\n"
303 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 22:58:42 ] どうでもいいが、primesが初期化されてないような希ガス。 初出の変数は0?
304 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 23:01:49 ] うす labelに使われてない変数は初出時に0
305 名前:デフォルトの名無しさん mailto:sage [2005/05/25(水) 01:00:41 ] あれかね、今時のCPUはx86のコードを内部的にRISCな命令に変換したりするから (efficeonならなおさらだ)、その段階でスタック操作がレジスタに割り当てられて、 内部的には似たようなコードで実行されてたりするのかね。 だとしたらすげー。
306 名前:デフォルトの名無しさん mailto:sage [2005/05/25(水) 01:39:20 ] いま、Athlon XPで試したら 速度全くといっていいほど変わらない 信じられない Pen4ではどうなるのか知りたいなあ
307 名前:デフォルトの名無しさん mailto:sage [2005/05/25(水) 12:07:51 ] factやfibでも同じような速度なの? だとしたらマイクロオペコードすげー。
308 名前:デフォルトの名無しさん mailto:sage [2005/05/25(水) 15:48:09 ] いや、関数呼び出しは実装してないんで ローカル変数実装するのが、(ちょっとだけ)面倒だから まじめに比較したい人がいるなら、ソース出すけど
309 名前:デフォルトの名無しさん mailto:sage [2005/05/25(水) 18:38:40 ] 普通に1から1億までを足すプログラムとかで十分差がでると思うが。
310 名前:デフォルトの名無しさん mailto:sage [2005/05/25(水) 18:40:29 ] 最適化しないと変わらないんじゃない?
311 名前:300 [2005/05/26(木) 00:06:05 ] >>302 ソースTNX! へぼ言語どころか、めっちゃ気に入りそう(ハート) あんた、センスあるねぇ。。。
312 名前:デフォルトの名無しさん mailto:sage [2005/05/26(木) 02:47:24 ] i = 1 r = 1 fact: r = r * i i = i + 1 if i <= 1000000 then jump fact "1000000! = "; r; "\n" 多倍長じゃないとか気にするな。 ただのベンチマークだから。
313 名前:デフォルトの名無しさん mailto:sage [2005/05/26(木) 03:31:29 ] めんどくさいから、誰かやって もう飽きたし・・・ ttp://rerere.sytes.net/up/source/up6309.zip
314 名前:デフォルトの名無しさん mailto:sage [2005/05/26(木) 19:17:26 ] >>305 んなわけない sieveみたいな2重ループ程度じゃ適当に作っても差はあんま出ない >>313 見た限りでは関数作れないっぽいけど 同じやり方でループのネスト深くしたり、fiboとかアッカーマン関数で 比較したりすると倍以上差が出てくるよ VMとかインタプリタに比べれば問題ない差だろうけどね
315 名前:デフォルトの名無しさん [2005/05/26(木) 22:17:47 ] >>314 ヤッターマン関数って何? ぐぐっても出てこんかったorz
316 名前:デフォルトの名無しさん mailto:sage [2005/05/26(木) 22:32:08 ] >>315 アッカーマン関数でもヤッターマン関数でも出てくるけど?
317 名前:デフォルトの名無しさん mailto:sage [2005/05/26(木) 22:54:33 ] ポチっとな
318 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 00:20:48 ] Fibonacciの関数呼び出し程度では大した差はでない Ackermannはコンパイラが末尾再帰を認識するかどうかでかなり差が出るはず 普通の処理でも変数の数や間接参照とかが増えてくれば違ってくる
319 名前:デフォルトの名無しさん [2005/05/27(金) 01:08:54 ] Borland C++ Conpilerについての質問です c:\bcc32\Bin の中に bcc32.cfgを作って -I"c:\Bcc32\include" -L"c:\Bcc32\lib" と書きます ILINK32.cfgを作って -I"c:\Bcc32\include" -L"c:\bcc32\lib" と書きます www.kumei.ne.jp/c_lang/bcc/bcc_05.htm ここのソースをコピペしてコンパイルします bcc32 -W menu01.cpp のほうはうまく行きました brc32 menu01.rc menu01.exe って入力しても、windous.hが見つからないとエラーでます brc32 -i c:\bcc32\include menu01.rc menu01.exe とディレクトリを指定してやったらコンパイルできました このようにディレクトリを指定せずにコンパイルさせる設定ってどこでするのでしょうか?
320 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 02:13:26 ] 【初心者歓迎】C/C++室 Ver.17【環境依存OK】 pc8.2ch.net/test/read.cgi/tech/1115958601/
321 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 02:39:07 ] >Fibonacciの関数呼び出し程度では大した差はでない これどういう意味?
322 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 05:46:16 ] fibでも関数値のメモ化のあるなしで大きく違ってきそうだが。
323 名前:remi@id5214.bbs.盗撮倶楽部 mailto:sage [2005/05/27(金) 14:32:00 ] はじめまして れみです。 向こうのbbsで質問したところ、こちらで聞いたほうがより高度な技法を 教えていただけると紹介いただき、まかりこしました。 のぞき穴最適化技法についてお知恵をお借りできませんか。 尚、使用レンズ口径は3.00mmです よろしくお願いします
324 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 15:09:36 ] そのレンズを通して見える範囲でソースコードを手でチューニングすればいいです。 見える範囲が終わったら視野を移動するかスクロールします。 ファイルの最後までいったらおしまいです。お疲れ様でした。
325 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 18:52:21 ] どういう誤爆だ? 業者にしてはまったく意味が無い。 誰かAIのテストでもしてるのか?
326 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 18:54:35 ] スコープについて聞いてるんじゃないか?
327 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 18:57:13 ] うまい
328 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 19:04:44 ] >>322 すまんが、そういう話じゃない 関数呼び出しのテストにしても変数が1個や2個の値参照程度では 違いは出にくいということ メモ化すれば当然速くなる
329 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 20:24:00 ] ackermann関数は変数が何個の値参照なん?
330 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 20:50:02 ] mann個
331 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 20:52:11 ] >>329 lispの例題とかで見たこと無い? ものすげーえげつない再帰呼び出しのテストだと思ってくれ。
332 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 21:35:57 ] >>331 すまんが、そういう話じゃない 関数呼び出しのテストにしても変数が1個や2個の値参照程度では 違いは出にくいということ
333 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 21:41:48 ] こんな感じ? extern yattarman(){ printf("アフォ\n"); }
334 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 21:50:56 ] ack(m,n) = n+1 if m = 0 ack(m-1, 1) if n = 0 ack(m-1, ack(m,n-1)) otherwise
335 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 21:53:10 ] >>334 すまんが、そういう話じゃない 関数呼び出しのテストにしても変数が1個や2個の値参照程度では 違いは出にくいということ
336 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 22:06:19 ] ここはお前の話をみんなで静聴するスレじゃないぞ。 各人がしたいように話を転がしていくだけだ。
337 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 22:08:15 ] 仕切り厨の自己否定乙ww
338 名前:デフォルトの名無しさん mailto:sage [2005/05/28(土) 00:28:16 ] >>337 すまんが、そういう話じゃない 関数呼び出しのテストにしても変数が1個や2個の値参照程度では 違いは出にくいということ
339 名前:デフォルトの名無しさん [2005/05/28(土) 03:12:13 ] >>333 そう、それだ!
340 名前:デフォルトの名無しさん mailto:sage [2005/05/28(土) 04:15:37 ] >>333 extern coffee(){ printf("ボケ\n"); } extern lighter(){ printf("ゴルァ\n"); }
341 名前:デフォルトの名無しさん [2005/05/28(土) 23:34:48 ] アメ、コーヒー、ライター?
342 名前:デフォルトの名無しさん mailto:sage [2005/05/29(日) 01:10:17 ] ヤッターマン
343 名前:デフォルトの名無しさん mailto:sage [2005/06/04(土) 04:52:17 ] そろそろN88BASIC作ろうと思うんだけど、どう?
344 名前:デフォルトの名無しさん [2005/06/04(土) 12:18:56 ] N05BASICの誤りでは? どんな畑になることやらw
345 名前:デフォルトの名無しさん mailto:sage [2005/06/04(土) 21:04:29 ] >>344 ???
346 名前:デフォルトの名無しさん mailto:sage [2005/06/04(土) 21:16:13 ] >>345 しぃーっ!見ちゃだめ!
347 名前:デフォルトの名無しさん mailto:sage [2005/06/04(土) 22:01:33 ] bison -v で出力される *.output と言うファイルの書式の解説って マニュアルには含まれてないと思うのですが、ありますか?
348 名前:デフォルトの名無しさん mailto:sage [2005/06/04(土) 22:05:10 ] >>347 人が見て理解できれば十分だと思うけど…… *.output ファイル自体をいじるとか、そういうことを考えているの?
349 名前:デフォルトの名無しさん [2005/06/04(土) 22:34:23 ] >>348 state 100 nls -> '\n' . (rule 200) とかあった場合、この点(.)は何を意味するものなの?
350 名前:デフォルトの名無しさん mailto:sage [2005/06/05(日) 00:02:52 ] オライリーの本読め。解説してあったと思うが。 なくてもそれくらい見当つかないんじゃ困るとは思う。
351 名前:デフォルトの名無しさん mailto:sage [2005/06/05(日) 00:12:32 ] lex&yacc でイイデツカ?
352 名前:デフォルトの名無しさん mailto:sage [2005/06/05(日) 00:22:29 ] うん。
353 名前:デフォルトの名無しさん mailto:sage [2005/06/05(日) 03:26:05 ] >>344 それ以前に2000年問題に対応してください
354 名前:デフォルトの名無しさん mailto:sage [2005/06/05(日) 03:35:03 ] >>344 ==353
355 名前:デフォルトの名無しさん mailto:sage [2005/06/05(日) 11:17:47 ] >>349 LALR(1)
356 名前:351 mailto:sage [2005/06/05(日) 18:39:22 ] >>352 ありがとう。 >>355 LALR(1) の標準記法とかあるのですか?
357 名前:デフォルトの名無しさん mailto:sage [2005/06/05(日) 18:47:49 ] >>356 標準かどうかしらんが LALR(1)を勉強した人なら一瞬で分かる。
358 名前:デフォルトの名無しさん [2005/06/05(日) 19:46:23 ] >>353 畑は1年単位のサイクルの筈。
359 名前:デフォルトの名無しさん mailto:sage [2005/06/05(日) 23:06:16 ] >>344 ==353==358
360 名前:デフォルトの名無しさん [2005/06/06(月) 08:56:20 ] 並列化コンパイラを作ることになったんですが、 なにをどうすればいいかわかりません 良い本、サイトなどあれば教えてください
361 名前:デフォルトの名無しさん mailto:sage [2005/06/06(月) 09:14:01 ] TAに泣きつけ。
362 名前:デフォルトの名無しさん mailto:sage [2005/06/06(月) 10:51:43 ] 並列化のための補助文法を言語的に持っているという意味? それとも複数の演算素子にコードを割り振る方?
363 名前:360 [2005/06/06(月) 17:05:12 ] そもそもコンパイラそのものがわかっていないので 1から勉強できるようなものがあると助かるとです
364 名前:デフォルトの名無しさん mailto:sage [2005/06/06(月) 18:37:44 ] 360は早稲田の学生
365 名前:デフォルトの名無しさん [2005/06/06(月) 19:54:03 ] >>363 まずは、りんご畑系の本を勧める。
366 名前:360 [2005/06/07(火) 02:28:10 ] >>364 駅弁です >>365 リンゴ畑とは?
367 名前:デフォルトの名無しさん mailto:sage [2005/06/07(火) 23:42:17 ] 予約語と識別子との区別を、字句解析時に行ってしまうのがいいのか、構文解析時になってから行うのがいいのか悩んでいます。 字句解析時に行ったほうがわかりやすいような気もするけど、構文解析時に行ったほうが柔軟になるし(予約語と同じ名前のメソッド名を定義できるとか)。 みなさんはどうしてますか。