- 1 名前:デフォルトの名無しさん [2005/12/20(火) 21:43:02 ]
- プログラミング言語処理系の開発に興味のある人達のスレッドです。
字句解析・構文解析から,データフロー解析,ループ並列化,データ分散,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/ 関連リンクは多分 >>2-10 あたり
- 320 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 20:43:14 ]
- >>316
正確には「もしここに来たら(a == b)がtrueであると断言する」と思えばいい。 assert falseは「もしここに来たらfalseがtrueであると断言する」、 つまり「ここには来ることはありえないと断言する」。
- 321 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 20:59:13 ]
- #define assert 断言する
断言する(a == b)
- 322 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 21:02:32 ]
- スキャナとパーザって、マルチバイト文字を通せるのですか?
- 323 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 21:12:13 ]
- 通すように作れば通る。
- 324 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 21:56:47 ]
- シングルバイト文字の8バイトの連続だよ?
たまたま 0x80 より大きいだけ
- 325 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 22:15:08 ]
- >>324
アフォ来た〜〜〜!!
- 326 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 01:00:21 ]
- >>324
8バイトって何だ8バイトって。 実際には322の言うように、通るように作れば通るし、今時flexもbisonも 8bitは通す。マルチバイト文字というと、SJISだと0x5c問題が出てくる 可能性は歩けど、それはlexerのつくりの問題だよな。
- 327 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 23:35:26 ]
- 変な用語その3
マトン
- 328 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 23:41:00 ]
- 羊肉?
- 329 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 23:41:51 ]
- 自動羊肉
- 330 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 23:57:17 ]
- オートマタ。
- 331 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 00:59:16 ]
- オート マトン
というよりは オー トマトン 何だが。
- 332 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 04:17:47 ]
- Oh! Tomato! n?
- 333 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 05:17:47 ]
- コンピュータ関係の変な用語ってのはKILLとかZOMBIEとかENTITYとかじゃねぇのか?
- 334 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 07:13:02 ]
- デムパな単語が、そんなに嫌か?
- 335 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 22:02:30 ]
- >>327
automate(自動)+ton(〜風)、「自動っぽいもの」くらいの意味。
- 336 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 23:15:29 ]
- >>335
こらこら。だますんじゃない。
- 337 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 23:29:55 ]
- 自動人形
- 338 名前:デフォルトの名無しさん mailto:sage [2006/01/17(火) 01:33:13 ]
- ギリシャ語のautomatos(自立して動くもの)が語源だっけか。
別にどうでもいいけど。
- 339 名前:デフォルトの名無しさん mailto:sage [2006/01/17(火) 23:22:03 ]
- >>329
昔食肉工場の機械が、簡易プログラムのような物で動いていて たまたま羊毛の盛んな時期と重なった
- 340 名前:デフォルトの名無しさん mailto:sage [2006/01/18(水) 00:58:17 ]
- >>339
ツマンネ しかしあれだな、Lisp叩きやRuby叩きの話が出て来ると、すぐ「実装の話をしろよ!」という 主張が出て来るが、実装の話が好きな人達は、スレが閑散としてても実装の話はしないんだよな。
- 341 名前:デフォルトの名無しさん mailto:sage [2006/01/18(水) 01:14:52 ]
- assertやらオートマータやらの話をしている輩が何を偉そうに
- 342 名前:デフォルトの名無しさん mailto:sage [2006/01/18(水) 01:26:06 ]
- >>341
何一つ自分からネタ振れない輩が何を偉そうに。 つか、俺はassertやオートマータの話なんかしてないし。 だいたい、ここじゃちょくちょく構文解析+αのレベルで「間違い」が書き込まれる ことがあるんだが、自称凄い人達はその訂正もしてくれないのな。
- 343 名前:デフォルトの名無しさん mailto:sage [2006/01/18(水) 08:54:41 ]
- まず、自称このスレの間違いをわかってる君が、具体的に間違いを指摘してみては?
- 344 名前:260 mailto:sage [2006/01/18(水) 23:33:35 ]
- >>342
詳しい人らしいんで返答を乞うてみます。
- 345 名前:デフォルトの名無しさん mailto:sage [2006/01/19(木) 06:52:05 ]
- 342が「自分に何がわかっているのかを書かなくていい理由」を考えつくまで
もう少しお待ち下さい。
- 346 名前:342ではないけれど mailto:sage [2006/01/19(木) 21:35:50 ]
- なぜこんな流れに。。。
俺はレベルの低い実装の質問を書き込んでいたものですが 342の人は多分質問に答えてくれた人なんじゃないかという 気がしています。 逆に意地悪な感じで初心者を馬鹿にしている人達は 初心者の質問が書かれるたびに 「このスレ〜以外は意味ない」とかそんなんばかりでしょう。 そういうのはレベルが低くはないんですか?
- 347 名前:デフォルトの名無しさん mailto:sage [2006/01/19(木) 22:39:30 ]
- エスパー光臨
- 348 名前:デフォルトの名無しさん [2006/01/19(木) 22:59:51 ]
- マシンのネイティブコードを吐き出すための情報(命令セットってやつ?)はどこから入手したらいいのですか?
VMや構文木直辿りのインタプリタしかやったことないのでそろそろコンパイラにチャレンジです。
- 349 名前:デフォルトの名無しさん mailto:sage [2006/01/19(木) 23:16:32 ]
- >>348
えーと、ギャグで言ってるんだよね?
- 350 名前:デフォルトの名無しさん mailto:sage [2006/01/19(木) 23:23:56 ]
- 前からテンプラにその情報源がないのは、
ひどく片手落ちな気がしてたよ
- 351 名前:デフォルトの名無しさん mailto:sage [2006/01/19(木) 23:35:30 ]
- >>350
どのマシンがターゲットなんだかワカランのじゃ話にもならないし、少しだけ乗せるとアンチとか出てきて喧嘩になるし ろくな事ないからじゃないの?
- 352 名前:デフォルトの名無しさん mailto:sage [2006/01/19(木) 23:42:03 ]
- IA32だけならば、誰も文句いわねえと思うが・・・
マカーでさえもう文句いわねえ とおもったが、このスレの二大言語(笑)の信者は 蚊帳の外に置かれてしまうかw
- 353 名前:デフォルトの名無しさん mailto:sage [2006/01/19(木) 23:47:30 ]
- >>352
でIA32の場合インテルに資料請求するか秋葉あたりでデータシート買うって言う選択肢な訳だけど。
- 354 名前:デフォルトの名無しさん mailto:sage [2006/01/19(木) 23:51:23 ]
- >>352 の意味が分からん。
- 355 名前:デフォルトの名無しさん mailto:sage [2006/01/19(木) 23:52:08 ]
- lisp原理主義者はcarをeaxに、cdrをedxに。
>>353 例のpdfじゃ不足?
- 356 名前:デフォルトの名無しさん mailto:sage [2006/01/20(金) 02:46:07 ]
- ttp://wiki.osdev.info/index.php?Pentium
でどうでしょう
- 357 名前:デフォルトの名無しさん mailto:sage [2006/01/20(金) 02:53:46 ]
- PowerPC
opensolaris.org/os/community/power_pc/powerpc_doc_library/
- 358 名前:デフォルトの名無しさん mailto:sage [2006/01/20(金) 05:00:59 ]
- > でIA32の場合インテルに資料請求するか秋葉あたりでデータシート買うって言う選
> 択肢な訳だけど。 それ、いつの時代の話? ほとんどのCPUの命令セットはWebから落せる。 しかも IA32 の場合、日本語に訳されてる。 www.intel.com/jp/developer/download/ にある IA-32 インテル アーキテクチャ・ソフトウェア・デベロッパーズ・マニュアル からどうぞ。
- 359 名前:デフォルトの名無しさん mailto:sage [2006/01/20(金) 05:29:13 ]
- >>358
紙のマニュアルの方が扱いが楽だからなぁ。 プリントすると紙質の関係でつらいからね。
- 360 名前:デフォルトの名無しさん mailto:sage [2006/01/20(金) 07:49:40 ]
- そんなの選択肢からはずす理由にはならんだろ。
知らなかっただけなのに、言い訳苦しすぎですよ先輩。
- 361 名前:デフォルトの名無しさん [2006/01/22(日) 12:39:02 ]
- 新しい言語本がでてるな。
リンゴに続けるか?
- 362 名前:デフォルトの名無しさん mailto:sage [2006/01/22(日) 13:30:05 ]
- >>361
どれ?
- 363 名前:デフォルトの名無しさん mailto:sage [2006/01/22(日) 14:24:41 ]
- >>361
KWSK
- 364 名前:デフォルトの名無しさん mailto:sage [2006/01/22(日) 14:25:30 ]
- っていうかリンゴってどれだw
スモールコンパイラの制作で学ぶプログラムのしくみ?
- 365 名前:デフォルトの名無しさん mailto:sage [2006/01/22(日) 19:48:58 ]
- >>364
リンゴ本はその通り。 別名綾タソ本
- 366 名前:デフォルトの名無しさん mailto:sage [2006/01/22(日) 23:16:51 ]
- 手続き呼び出し/呼び出されの制御はどうするのが一番簡単だと思います?
一時変数・局所データとか考えると色々と面倒…… 一時変数については呼び出し側にスタック作っといて、呼び出され側が 勝手に取り出すようにするのが簡単かな?スタックマシンにすると構文木 を解釈するのが面倒臭そうだし……
- 367 名前:デフォルトの名無しさん mailto:sage [2006/01/24(火) 00:04:05 ]
- >>366
作ろうとしているのが機械語吐くコンパイラなのか、バイトコード吐くのか、 Rubyみたいに解析木を実行するタイプなのかもわからんでは何も言えんわな。 >一時変数については呼び出し側にスタック作っといて、呼び出され側が >勝手に取り出すようにするのが簡単かな? 呼び出し側と呼び出され側でスタックが違うの? >スタックマシンにすると構文木を解釈するのが面倒臭そうだし…… 意味わかんねえっす。どっちみち構文木は解釈しなきゃいけないのでは。
- 368 名前:366 mailto:sage [2006/01/24(火) 00:46:10 ]
- >367
おお、すみませぬ。インタープリタ作ろうとしています。 まずの目標はRubyみたいな解析木を実行するタイプですね。 >呼び出し側と呼び出され側でスタックが違うの? 一時変数の管理責任と、手続呼び出しの動作主体をどのように割り振ろうかな…… と思いまして。前述の例だと 一時変数の管理責任:呼出側 -> スタック作って管理 動作主体:呼び出され側 -> 駆動はこちら とかを考えています。 >意味わかんねえっす。どっちみち構文木は解釈しなきゃいけないのでは。 確かにそうですな……知恵が回らなかった…… 結局、 今日一日考えた結果、スタックマシンの連鎖みたいなのを作ってみることにしました。
- 369 名前:デフォルトの名無しさん mailto:sage [2006/01/24(火) 01:29:56 ]
- >>368
実行環境フレームとか言う奴の事さしてんの?>>スタックマシンの連鎖
- 370 名前:366 mailto:sage [2006/01/24(火) 02:47:12 ]
- どっちかっていうと、駆動レコード+スタックマシンといった感じですかね。
(実装の手を抜くために)駆動ごとにスタックマシンを付けた感じ。
- 371 名前:デフォルトの名無しさん mailto:sage [2006/01/24(火) 20:35:38 ]
- お手本がRubyだと、この擦れ的には受けが悪いかもw
おれは第三世
- 372 名前:デフォルトの名無しさん [2006/01/25(水) 01:20:34 ]
- LISP最高!
- 373 名前:デフォルトの名無しさん mailto:sage [2006/01/25(水) 01:42:38 ]
- >>372
なんでそこでLupinと言ってぼけないだよ
- 374 名前:366 mailto:sage [2006/01/25(水) 22:18:52 ]
- そういや、単純なスタックマシンだと(いくつ実引数を渡すかは関数側で決まるから)
オーバーロードでひどい目に会いそうですな…… 取りあえずはスタックのリストを作って回避しようかと考えていますが、他にどんな アイディアがあります?
- 375 名前:デフォルトの名無しさん mailto:sage [2006/01/25(水) 22:24:52 ]
- オーバーロードを何時解決するかによる。コンパイル時に全部解決するなら問題あるまい。
- 376 名前:デフォルトの名無しさん mailto:sage [2006/01/25(水) 23:18:18 ]
- >>375
メソッド名とシグニチャが結びついてれば実行時解釈でも問題ないしね。
- 377 名前:366 mailto:sage [2006/01/25(水) 23:20:36 ]
- そういやそうですな。
でも、折角だから多値戻しを実装してみたい気もするんですよね…… Rubyみたいに配列を戻す手もありますが。
- 378 名前:デフォルトの名無しさん mailto:sage [2006/01/25(水) 23:37:20 ]
- あまり欲張らない方がいいよ。複雑にしすぎると作ってて嫌になる。
- 379 名前:366 mailto:sage [2006/01/26(木) 00:06:21 ]
- ははは、ご心配なく。かれこれ1年以上弄んでいますので、嫌んなるのは慣れっこです。
仕事だったら素直にC++使いますし。 まあ、未だに駆動が回んなくて鬱ですが…… “1+1”ができるのはいつになることやら……
- 380 名前:デフォルトの名無しさん mailto:sage [2006/01/26(木) 18:25:17 ]
- ルビーに学べ
- 381 名前:(ぱ) mailto:sage [2006/01/26(木) 21:14:22 ]
- どうもです。上のほうで出ていた「ライターのM」です(たぶん)。
Rubyのような解析木実行タイプの言語を作ろうとしていて、かつ、独自スタックも 使うつもりなら、うちのcrowbarなんかは参考になりませんか? kmaebashi.com/programmer/devlang/ >>368 >一時変数の管理責任:呼出側 -> スタック作って管理 >動作主体:呼び出され側 -> 駆動はこちら ここで言っている「一時変数」がローカル変数のことであれば、管理責任は 呼び出され側にあるのでは。呼び出し側は呼び出され側のローカル変数を 知らないからです。 引数についてであれば、呼び出し側で領域を確保するにしても、別段それを スタックに積む必要はないように思います。 crowbarの場合、駆動レコードごとに、変数名と値の対応表を持っています (ver.0.3以降は、クロージャの実現のためにスコープチェーンを持っているので ちょっとややこしいですが)。関数呼び出しでは、呼び出し時に、呼び出され側の 駆動レコード(CRB_LocalEnvironment)を作成し、その中に、ローカル変数として、 実引数の値を突っ込んでいるだけです。 引数やローカル変数の領域をスタックに確保するという実装ももちろん考えられますが (crowbarでは代入により実行時にローカル変数が作られるのでそれはできなかった)、 その場合、引数は呼び出し側で積むことになるのでは。 いずれにしても、関数呼出しごとにスタックを持つ必要なないと思うのですが、 どうでしょうか。crowbarは演算用の独自スタックを持っていますが、スタックは1本です。 まあ、crowbarのスタックは足りなくなるとrealloc()するので、そのへんの効率低下を 嫌って関数呼び出しごとに持つ、というのならわかりますけど。
- 382 名前:(ぱ) mailto:sage [2006/01/26(木) 21:22:58 ]
- ついでに上の方の質問に。
>>91 >ライターのM氏のページで、Cでの実装だと型そのものはUNIONにまとめてる感じでした。 >やっぱり処理系が扱う変数型をまとめてUNIONにしてしまってフラグ変数で型を見分けて扱うというのが一般的なんでしょうか? 一般的かどうかは知りませんが、crowbarでは値を保持するために2箇所で共用体を使っています。 変数の値を直接保持するCRB_Valueと、変数から指された先のヒープ中にある、 CRB_Objectです。 >そのときに、たとえばWinapiに対する拡張とか、製作時点で未知のオブジェクトに対応する場合はどういう方向になるんでしょうか? Winapiに対する拡張とかを狙って、ネイティブポインタ型というのを導入しています。 luaのユーザデータ型も同じようなもののように見えます。 >>96 >C言語的構造体指向OO風味だと、メモリの配置さえあってれば問題なく下位の構造体にアクセスできるから、 >なんとか構造体EXとかは可能だと思う。関数ポインタつければ仮想関数もどきとかもできますぜ。 これは、crowbarで言うところのCRB_Objectについては可能でも、CRB_Valueについては 不可能ですよね。
- 383 名前:366 mailto:sage [2006/01/27(金) 00:10:43 ]
- >381
情報サンクスです。考え方のところとか色々と参考になります。 ただ、自分の目指しているのは型なし&プロトタイプ指向ですので、やっぱりちょっと ポイントが違うようですね。まあ、その違いを見るのも楽しいですが。 >ここで言っている「一時変数」がローカル変数のことであれば、 いえ、関数の戻り値ですね。最初は関数の戻り値を次の継続に直接渡そうかと 考えていたのですが、そうすると今の自分のアイディアだと(継続のずっと先にある) ブロックのローカル変数から実引数を取ってくるのが面倒にだったので、少し悩んでました。 スコープチェーン作って管理するのもいいのですが、もっと簡単な方法が無いかな……と いうことで、取りあえずはスタックマシンを利用する方法でトライすることにします。 >いずれにしても、関数呼出しごとにスタックを持つ必要なないと思うのですが、 call/ccを実装したいと思っているのですが、その都度スタックを保存するのも面倒だし いっそのこと全部の継続にスタック持たせちまえ、という乱暴なアイディアから来ています。 ……まだ実装できていないので、本当にうまくいくのか不明ですが……
- 384 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 00:27:50 ]
- アイデアだけではなぁ、
なぜ既にあるものを使わん? アフォ?
- 385 名前:366 mailto:sage [2006/01/27(金) 00:37:09 ]
- >384
既にある言語では無いから作っているんだけど……Schemeは近いものを感じるけどね。 あと、勉強という意味では車輪の再発明も重要だよ。
- 386 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 02:00:33 ]
- 一年以上やって1+1も出来ないんだろ?
勉強になってるか疑問だな。 >ただ、自分の目指しているのは型なし&プロトタイプ指向ですので、やっぱりちょっと >ポイントが違うようですね。まあ、その違いを見るのも楽しいですが。 形無し&プロトタイプ指向だからポイント違う? 何言ってんだお前。
- 387 名前:366 mailto:sage [2006/01/27(金) 02:45:51 ]
- > 一年以上やって1+1も出来ないんだろ?
> 勉強になってるか疑問だな。 あら、そう? 1+1てけっこう大変だよ? まあ、継続とか移譲とかグラフとかオートマトンとか、回り道が多いちゃ多いがね。 それもまた勉強。 >形無し&プロトタイプ指向だからポイント違う? >何言ってんだお前。 どういう意味?
- 388 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 09:10:54 ]
- もういいから来るな。
一年以上で未だ1+1もできないほど頭悪いんだろ? これから先何年もアホ質問書き込まれるかと思ったらゾッとする。
- 389 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 12:24:31 ]
- 継続でスタック保存するのが面倒ってんなら、駆動レコードを全部
ヒープに置くって手もあるが。それだとcall/ccは駆動レコード チェインの頭の掴んでおくだけだよ。 性能を気にしてるわけでもなさそうだし、駆動レコードごとに スタックなんて面倒なことをなぜするのかよくわからない。
- 390 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 13:54:36 ]
- Lisp使いはリストを見ると車とかCD-Rとかを使い出す
- 391 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 13:58:48 ]
- >>390
どうして車とCDRに発想が結びつくの?
- 392 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 14:28:07 ]
- なにこの変なマジレス
- 393 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 14:39:34 ]
- Lisp使いはCD-Rのことを「クダー」と読むんだな
- 394 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 17:54:48 ]
- 久多良木信者はLisp使いか否か?
- 395 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 18:21:20 ]
- >>391
しらないけどcarとcdrだからじゃない?
- 396 名前:(ぱ) mailto:sage [2006/01/27(金) 20:21:31 ]
- >>383
>ただ、自分の目指しているのは型なし&プロトタイプ指向ですので、やっぱりちょっと >ポイントが違うようですね。まあ、その違いを見るのも楽しいですが。 crowbarは思いっきり型なし&プロトタイプベースのつもりですが。 >いえ、関数の戻り値ですね。最初は関数の戻り値を次の継続に直接渡そうかと >考えていたのですが、そうすると今の自分のアイディアだと(継続のずっと先にある) >ブロックのローカル変数から実引数を取ってくるのが面倒にだったので、少し悩んでました。 継続をやりたいということ自体初耳なわけですが。 継続は詳しくないので以下見当外れならすみませんですが、 「Rubyみたいな解析木を実行するタイプ」で、解析木を再帰で辿っているとすれば、 「Cのスタックどうするの?」という疑問が出てきます。 「関数の戻り値を次の継続に直接渡そう」ということだから、CPS変換を前提にしている? だとすればそれはもう「Rubyみたいな解析木を実行するタイプ」とは言えないのでは。 >>389 関数内での、計算途中の値を積んでおくスタックのことなんじゃないでしょうか。
- 397 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 22:07:07 ]
- 1+1ねぇ、マジレスするけど、
yacc触りはじめてその日でできたよw
- 398 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 22:27:40 ]
- コンパイラ構成法の一番最初の項目が電卓だからな。
- 399 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 22:43:00 ]
- 1+1が一年以上できないとか言ってるなら、いったんScheme作ればいいのに。
コアな部分に限れば仮想マシンとコンパイラそれぞれ一日で書けるよ。 そしたら作りたい俺様言語で何をどうするかも少しは見えてくるんじゃね?
- 400 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 22:45:01 ]
- >>398
うちの大学は字句解析だったよ…。
- 401 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 23:53:04 ]
- >>398
漏れが最初にやったのは逆ポーランド式の理解だった・・・懐かしいな
- 402 名前:デフォルトの名無しさん mailto:sage [2006/01/28(土) 00:42:37 ]
- きっかけを大別すると、
・yacc/lexまたはbison/flexで独学 ・大学や専学でコンパイラ/インタプリタの講義 って感じなのかな?
- 403 名前:デフォルトの名無しさん mailto:sage [2006/01/28(土) 00:43:46 ]
- 授業でちょっとやったけど、あまりに講義資料・内容がヘボかったから独学に切り替えたなぁ。
- 404 名前:デフォルトの名無しさん mailto:sage [2006/01/28(土) 00:58:28 ]
- 情報処理の講師の説明よりも、数学の講師の説明の方が、実は分かりやすかったりするんだよな。w
- 405 名前:デフォルトの名無しさん mailto:sage [2006/01/28(土) 01:02:41 ]
- アルゴリズムの大半は、数学の勉強だからな
- 406 名前:366 mailto:sage [2006/01/28(土) 04:22:49 ]
- しまった……中途半端な情報で混乱させていますね。すみません
>389 今作っている実装だと、駆動レコードチェイン+駆動レコード内のスタックといった 感じにしています。>396の指摘通りですね……と言っても詳しく説明していないから わかんないよね。ごめん >396 >crowbarは思いっきり型なし&プロトタイプベースのつもりですが。 失礼しました。まだ読み込んでいないので…… >「Rubyみたいな解析木を実行するタイプ」で、解析木を再帰で辿っているとすれば、 >「Cのスタックどうするの?」という疑問が出てきます。 今のところ、Cの関数処理プロセスに頼らない(再帰を使わない)で、 ・解析木から継続の連鎖を作る ・継続を駆動する という駆動を外部からループで回そうとしています。 >399 そうなんだけど、作りたいのはSchemeじゃないし、Schemeからちょっと離れているし。 ……とはいっても、練習に作ってみるのもいい勉強かな…… >388 はあ。
- 407 名前:デフォルトの名無しさん mailto:sage [2006/01/28(土) 04:27:43 ]
- 1年で1+1が作れない、最低限の理解力すら無い人間が406を書いたと思うと
その恐ろしい知ったかぶりに愕然とする
- 408 名前:デフォルトの名無しさん mailto:sage [2006/01/28(土) 04:45:28 ]
- しばらく放っとけないのか?
- 409 名前:デフォルトの名無しさん mailto:sage [2006/01/28(土) 06:12:16 ]
- 俺は407の方の噛みつき具合いの方が愕然とする。
- 410 名前:デフォルトの名無しさん mailto:sage [2006/01/28(土) 08:15:29 ]
- >>409
そう? このスレの伝統だと思ってた。
- 411 名前:デフォルトの名無しさん mailto:sage [2006/01/28(土) 10:56:44 ]
- 1+1 って、意外と難しいよ。特に数値オブジェクトを + メソッドで加算する場合……とか。
経験ない人が独学でやるには、1年はちょっとキツ過ぎじゃないか? とか擁護してみる。
- 412 名前:デフォルトの名無しさん mailto:sage [2006/01/28(土) 11:08:31 ]
- まあそういうのは人による部分が大きいよ。
CSのバックグラウンドあってOOにドップリつかった人がやり始めれば理解するのに1日かからないだろうし、逆にこれからプログラミングを始めますって人には1年じゃ無理だろうし。 極端に言えばね。 一口に何日で理解したとか何年かかっても理解できないとかから能力を量ってしまうのはナンセンスだとは思う。
- 413 名前:デフォルトの名無しさん [2006/01/28(土) 11:18:12 ]
- 10秒デデキマツタ!
if(strcmp(str,"1+1")) printf("2\n");
- 414 名前:デフォルトの名無しさん mailto:sage [2006/01/28(土) 11:38:52 ]
- >>413
情報サンクスです。考え方のところとか色々と参考になります。 ただ、自分の目指しているのは型なし&プロトタイプ指向ですので、やっぱりちょっと ポイントが違うようですね。まあ、その違いを見るのも楽しいですが。
- 415 名前:デフォルトの名無しさん mailto:389 [2006/01/28(土) 12:32:42 ]
- >>406
> 今のところ、Cの関数処理プロセスに頼らない(再帰を使わない)で、 > ・解析木から継続の連鎖を作る それをCPS変換というんじゃ… でも素直にCPS変換したらスタックなんて出てこないと思うんだけど (「計算途中の値」も全て継続への引数になる)。 それとも複数の引数を渡す際に、既に計算した引数の値を一時保存 しておくエリアってことかな。それを「スタック」と呼ぶのはどうかと 思うが (FILOである必要がないから)。 スタックは、普通の関数呼び出し→リターンに特化した一種の最適化 なんだよ。>>406 が何か特別な最適化のアイディアを試したいなら 別だが、原理を理解するために書いているなら、まず基本的な CPS変換→実行系を動かしてみることをお薦めする。判断に迷うところは とりあえず簡単に実装できるほうで書いてみる。書いてみないとわからない ことってたくさんあるからね。とにかく動かしてから、別のアイディアを 試してみればいい。
- 416 名前:デフォルトの名無しさん mailto:sage [2006/01/28(土) 12:58:32 ]
- >411
そうだよね……自分の場合は駆動に引っ掛かっています。オブジェクトとメソッドを 等価に扱おうとして、『どうやって駆動すりゃいいの?』というところで散々悩んでいます。 あとは名前解決とか変数呼び出しとか…… >412 OOにはけっこうドップリ漬かっているんですけどね。 ここまで彷っているのは『当たり前と思っていた駆動とか関数呼び出しが、いざ やってみると全然当たり前じゃなかった』というのが大きいですかね。 >407, 413, 414 へえ?
- 417 名前:デフォルトの名無しさん mailto:sage 366 [2006/01/28(土) 13:16:19 ]
- >415
>それをCPS変換というんじゃ… ……そうだった。 > でも素直にCPS変換したらスタックなんて出てこないと思うんだけど 最初は素直にCPS変換していたんですけど、レキシカルスコープやろうとしたときに (オレ言語のアイディアが邪魔して)うまくアクセスリンクが処理できなかったので、 スタック……というか単なるリストも併用する形を検討しています。 > まず基本的なCPS変換→実行系を動かしてみることをお薦めする やっぱりそっちの方が近道かな……もうちょっと悩んでみます。
- 418 名前:366 mailto:sage [2006/01/28(土) 13:38:37 ]
- >>415
情報サンクスです。CPS変換のところとか色々と参考になります。 ただ、自分の目指しているのはCの関数処理プロセスに頼らない(再帰を使わない)ですので、やっぱりちょっと ポイントが違うようですね。まあ、その違いを見るのも楽しいですが。
- 419 名前:デフォルトの名無しさん mailto:sage 366 [2006/01/28(土) 13:41:57 ]
- ありゃ、騙りも出て来たか……これだからIDの無い板は駄目だよな。
そろそろ名無しに戻るか。 >418 ふうん?
- 420 名前:デフォルトの名無しさん mailto:sage [2006/01/28(土) 13:42:19 ]
- >>419
ふうん?
|

|