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 あたり
630 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 19:42:43 ] C/C++ 用の GC があるの知らんの? 現状だってプロセスのメモリ空間の中はスタックとか読み込んだライブラリを置く所とか 色々細分化されている訳で、そういう所は好き勝手弄っちゃダメでしょ。同じように GC ヒープ領域を用意してあげれば良いんじゃないの。
631 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 19:49:14 ] >C/C++ 用の GC があるの知らんの? 通常のmallocやnewに対応した完全に汎用的なGCがあるの? 原理的に絶対無理だと思うんだが。 やっぱGC専用のポインタが必要ってことだよね。
632 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 20:01:52 ] >>628 >>630 ポインタのアライメントを利用して下位1ビットに情報を… とか、その手の事をやられるとお手上げ。
633 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 20:03:38 ] はいはい、C++/CLIでもやってなさいボウヤ
634 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 20:05:07 ] >>632 >ポインタのアライメントを利用して下位1ビットに情報を… もともとこういうことをするのは、C言語でも未定義なのでする奴が悪い、でオワリ
635 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 20:31:54 ] JavaでできていることがCで出来ないはずはないだろ。 アセンブラに落とす時にJavaのVMみたいに複雑なメモリ管理を織り込めばいいんだから。 お前ら、言語仕様とABIを混同してないか?
636 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 20:34:41 ] この話は仕舞いだな。
637 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 20:45:38 ] >>635 >JavaでできていることがCで出来ないはずはない JavaがGCできるのはCよりも操作の制約が強いからだ char *a = malloc(100); int b = (int)a; // これの善悪は別問題として a = 0; ってやってaからの参照がなくなった時点でGCが掃除しちゃったら まずいだろ。プログラムとしてはbから復元して利用することもあり えるから。 よってこういうことが出来る素のCには、「触らないでねポインタ」を 新たに導入しないとGCは装備できないんじゃねーか?
638 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 20:53:07 ] だからコンサバ。
639 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 20:57:37 ] わかんないおれのためにもっとくわしく。コンサ何とか型のGCって名前は 聞いたことあるけど、そんなにすごいもんなのか?
640 名前:632 mailto:sage [2006/03/05(日) 21:00:00 ] >>634 その突っ込みは>>627 に対して? 何で俺?
641 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 21:03:26 ] >>639 homepage2.nifty.com/aito/gc/gc.html www.donguri.sakura.ne.jp/~shock8/wisper/gc1.html
642 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 21:18:35 ] >>641 リンク先見たけど(情報どうも)結局>>637 をやられると吹き飛ぶじゃん。 回収し損ねは許容するとして、ポインタを隠蔽して分解して 持っておくようなことはやったら駄目ってことだね。 よって「触らないでねポインタ」を導入しないことには回収しそこねや ハングアップを防止することは出来ないというのがオレの結論。
643 名前:デフォルトの名無しさん [2006/03/05(日) 21:18:53 ] まぁ、ばかはどの刷れにもいるけどなw
644 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 21:21:01 ] >>637 でGCがおかしくなるって言ってる奴は機械語レベルの表現を 全然理解できないんだろうなあ。
645 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 21:22:43 ] うむ。
646 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 21:26:39 ] まあ、マジックリストに対応できるようなGCは それなりに大変だろうね
647 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 21:29:25 ] たしかCからJavaを呼べるはずだから JavaはCのManagedコードライブラリと見ることも出来る
648 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 21:29:34 ] >>644-646 というかGC使いたかったら泥臭いことはあきらめろってしかいえない。
649 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 21:30:56 ] はあ?
650 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 21:30:59 ] >>642 スマソ。>>641 の下のリンク先は読まない方が良いや。 適当にググって貼っつけただけだから。何じゃこりゃ。
651 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 21:41:52 ] >>644 もうちょっと詳しく。当方アセンブラプログラマだ。 int b = (int)a; a = 0; とやったあとでb をビットレベルで分解したらどうにもならんと思うが、 コンサバ型だとそうならない魔法があるのか? bを再構成してポインタに戻してアクセスしたら開放されてるって いう状況は起こりうると思うが。
652 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 21:44:21 ] だんだん条件が増えていく件。
653 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 21:52:27 ] そりゃさすがにどうにもならない。 とはいえ、ビットレベルで分解→後で計算によって得た値が セマンティクスの面で有効なポインタかどうかは疑問ではある。 >>652 つか、「原理的に無理」で思考停止してるから。
654 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 21:59:47 ] >>652 議論に勝つために、徐々に条件を変えていくんだよなー。 2chはこういう奴ばかり。
655 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:09:08 ] 議論に勝った所で何があるわけじゃないんだけどね 俺の知らないところで何かあるのかな?w
656 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:13:50 ] >>654 議論に勝つためというより、物知らずというか ものの評価基準が幼稚なだけだと思われる。
657 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:21:31 ] えーと、どこで笑えばいいのかな?
658 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:24:05 ] >>657 の頭の弱さ。
659 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:25:21 ] ふーん。
660 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:25:56 ] >>656 コンサバティブ GC を初めて知ったレベルなら仕方が無いんじゃないの。 まだ当たりが付けられないだけだと思う。
661 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:26:56 ] あのー >>642 の時点で分解って書いてるんですけど
662 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:30:00 ] >>652 651じゃないが、わざわざポインタを整数として扱おうとするなら、 その後なんらかの演算を行うんじゃないかってのは 容易に想像つきそうなものだが。 ま、演算は演算させておいて、ポインタはポインタのまま 別に持っておくとか手はありそうだけど。
663 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:30:14 ] 元々の命題は >>637 だろ。
664 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:33:40 ] 重箱の済みつつき過ぎ、話も出来やしないよ。 >>662 はまともな人だね
665 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:35:08 ] いや、>>631 なんじゃないの。 631を無視して637だけなら対応したGCを書けばいいだけの話。
666 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:35:43 ] >>662 演算をするかどうかじゃなくて、再代入するかどうかが問題でしょ。 コード辺だけでそこまでケアしろと?
667 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:42:04 ] 再代入というか、計算で合成した任意の値をアドレスとして アクセスできるかどうかだね。 GCはプログラム中のデータからトレースできるものを残して それ以外を回収するってことだから、 可能な演算の集合を定義してルートとなる即値だけでなく その集合に含まれる演算で計算可能な値もアドレスとして コンサバティブに扱うことをトレースとすればいいだけの話。 だから、むしろ「原理的には」GCは設計可能。「原理的には」だけど。
668 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:48:20 ] ちょっと修正 ルートとなる→アドレスとなる 「原理的には」GCは設計可能→「原理的には」完全に汎用なGCは設計可能
669 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 23:35:17 ] そのGC、何一つヒープを開放してくれなさそう
670 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 23:42:56 ] >>666 想像しろよ。書いてるもんが100%だと決めなきゃ話できないようじゃ CPUと一緒じゃないか。人間だろ? >>662 は十分想像可能な範囲。 現に出来てる者が居る以上、それが出来なかった奴は気がまわら ないということ。 なんで整数に持ってきたいのか用途は色々あるだろ。まあ想像でき ないかもしれないがな。
671 名前:デフォルトの名無しさん [2006/03/05(日) 23:47:32 ] まぁなんらかのお約束は必要だよ
672 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 23:48:31 ] >>669 コンサバだからねw 演算の集合は全域で同一である必要はないわけで、 適当にヒントを与えて限定してもいいし、GCがコードを解析してもいい。 普通はそこまでやってらんないから演算は値をそのまま使う という一択だと考えるだけで。
673 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 00:34:34 ] >>670 幾らでも拡大解釈しようはあると思うけど、GC の仕組みを知っていれば そちらには振れないんじゃないかというのが俺の解釈だっただけだよ。 ま、GC の仕組みを知っていれば、最初からこんな質問も出なかった だろうけど。
674 名前:デフォルトの名無しさん [2006/03/06(月) 00:36:57 ] なんか理論の飛躍が Ruby vs Lisp の時と似ているなぁ
675 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 01:06:36 ] 同じ面子でグルグル回してるだけだから
676 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 07:47:45 ] >〜俺の解釈だっただけだよ 後から言うなよ
677 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 08:30:12 ] 後から想像しろとか言ってきたのアンタじゃん。俺にどうしろと?? もうこの話は終わったんだから絡んで来るなよ。
678 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 10:17:54 ] >>677 > 俺にどうしろと?? 恐らく謝罪を要求してるのでしょう :-) あなたをやり込めたい一心であらゆる論理を適時付け替えて頑張っているのですから、 彼のプライドを満たすためにも謝ってあげてはどうかと思います。
679 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 10:40:02 ] >>678 >>657
680 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 10:47:47 ] >>679 笑えない現実に対する対処の話ですから、笑う箇所などありませんよ。 そんなことも読み取れないのですね :-)
681 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 10:54:51 ] >>680 ふーん?
682 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 13:07:06 ] >>680 よし、じゃ俺のプライドを満たすためにおまいが謝れ。
683 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 13:28:21 ] >>682 ごめんください。
684 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 13:52:59 ] エェェェェェェ(;´Д`)ェェェェェェェエ
685 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 14:23:03 ] >>684 ごめんくさい。
686 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 15:32:11 ] /\___/\ / / ヽ ::: \ | (●), 、(●)、 | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | ,,ノ(、_, )ヽ、,, | < まーた始まって、終わった。 | ,;‐=‐ヽ .:::::| \___________ \ `ニニ´ .:::/ /`ー‐--‐‐―´´\
687 名前:デフォルトの名無しさん mailto:sage [2006/03/07(火) 00:21:33 ] まけず嫌いで粘着なキチガイが暴れているスレはここですか
688 名前:デフォルトの名無しさん mailto:sage [2006/03/07(火) 00:31:35 ] ぶるんぶるん体操 ぶるんぶるんと僕は言う ぷるんぷるんとあなたは笑う そんな2人は、フォーエバー 世界の端から今日は そんなあなたはお毎度さん 今日もぶるんぶるん体操始まるよ ぶるんぶるん、ぷるんぷるん ぷるんぶるん ぶぷぷぷぷぷ *四谷街道繰り返し
689 名前:デフォルトの名無しさん mailto:sage [2006/03/07(火) 23:02:33 ] このスレでオリジナル言語作って公開してる人って何人ぐらいいるの?
690 名前:デフォルトの名無しさん mailto:sage [2006/03/07(火) 23:22:00 ] 俺的には、スクリプトはあくまで手段。目的は別にある。 だからスクリプトだけを公開する事は、俺にはありえん。
691 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 09:09:50 ] 現在の人数=0 >>690 ところで、目的って何ですか?
692 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 09:15:09 ] 現在の人数=1 ←どういうカウントだこれは? >>690 ぼくちんも知りたい。その手の業界ってけっこうあるのかな?
693 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 10:22:21 ] >>692 >>689
694 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 10:29:08 ] >>693 あーそういう意味だったのか。 じゃリセット。 現在の人数=0
695 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 12:58:30 ] 現在の人数=1 でもどこだかは教えない(w
696 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 13:19:30 ] 現在の人数=2 ……まあ、趣味の領域ですが。
697 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 19:53:28 ] >>691-692 単に自分の作りたいソフトを作るために、 下ごしらえでスクリプトを作ってるだけだよ。
698 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 20:06:51 ] 現在の人数=3 ……自分専用ツールとしてはじめたのがきっかけです。 私も、どこかは内緒w
699 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 20:17:47 ] >>697 マクロみたいなの搭載してるって意味だよね。 それとも何か目的のソフトを作るための言語を作ってるって意味?
700 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 21:05:27 ] >>699 後者。
701 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 21:19:45 ] >>700 マジで?言語作ってる間に既存の言語でソフト作っちゃったほうが早いんじゃないの?
702 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 22:16:53 ] >>701 プログラマの癖に手段と目的を取り違えたことがないの?
703 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 22:33:03 ] >>702 くせにとは何だ!くせにとは! お前こそ●●のくせに、いい気になるなよ。
704 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 22:54:10 ] >>702 ●2つも使ってるのか?なんて贅沢な。
705 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 23:05:44 ] >>703 なんだとこの●●●! お前だって●●●の●●●だろうに!●●●●!
706 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 23:22:18 ] >>705 うるさい、この●●のろ!
707 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 23:41:49 ] の●●の ↑鼻と目に見えた orz 以下、何事も無かったかのように再開。・゚・(ノД`)・゚・。↓
708 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 23:53:37 ] >>702 こいつは、真性の●●●●。 つまり、●●w あるいみ、●●●●●● ruby ● lisp ●●w
709 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 00:08:50 ] >>701 理想が高すぎる事と、自分自身の能力不足が原因なんだよ。 オブジェクトが多くなりすぎると、内容を追い切れなくなる。 つか、状態変位やイベントトリブンは、漏れには理解しづらい‥‥orz で、主に、個々の処理を独立させて、別個にまとめて見られる ようにするためにスクリプトを使ってる。
710 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 00:40:15 ] >>709 一言で言い表すと、 「グローバルオブジェクトなんて嫌いだぁ・・・ 全部ローカライズ化してやるぅ・・・・」 ってな感じでつ。orz
711 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 01:50:58 ] ローカライズ化? 頭痛が痛いだな。
712 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 02:16:15 ] 英語は嫌いだぁ・・・w
713 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 11:44:40 ] >>709 >つか、状態変位やイベントトリブンは、漏れには理解しづらい‥‥orz >で、主に、個々の処理を独立させて、別個にまとめて見られる >ようにするためにスクリプトを使ってる。 ちなみに、エミュレータのレジューム機能が元ネタ。 つ〜か、スレッドの場合は同期の管理が面倒なんだよな。
714 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 12:44:30 ] OSとエミュレータと、エミュレートされるソフトの動作を、 全部一つの実装で実現させたい、ってな所。
715 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 14:07:36 ] ネタが特許級に見えるのは気のせいか? 出願前に公開すると無効なはずだが・・・
716 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 14:54:39 ] レジューム機能付きのエミュレータが出る前なら、可能だったかもね。
717 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 20:09:47 ] >>714-715 似たようなネタのスクリプトなら実在するから探して味噌。 扱いやすいかどうかは別だが。w
718 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 20:50:04 ] 構文規則で、よくこんな表記つかってるけど A → B,C 矢印逆じゃないの? なんか、すげ〜違和感あり。
719 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 21:07:28 ] なにゆえ
720 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 22:33:32 ] 「生成」規則だからね。もともとのオートマトン理論では 規則によりどういった文章が生成されるかを考えていたから。 構文解析は、逆に与えられた文章がどういう生成規則を たどって作られたかを求める問題だ。その過程で生成規則を 逆向きに使って還元を行う。 だから構文解析だけを考えていたら、矢印が逆だと思うかも しれんね。
721 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 22:36:21 ] >>718 別に逆でもいいけど、たぶんおまいは逆にすると今度はそっちに違和感を感じるんだろ。 A → BC | DE ってのは A is defined as BC or DE A expands to BC or DE A generates BC or DE A is rewritten as BC or DE 逆方向には BC or DE can constitute A BC or DE can be reduced to be A などなど、色々な読み方ができる。
722 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 22:39:38 ] A ← BC | DE を A is defined as BC or DE と読んじゃいけないのかよ。
723 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 22:42:22 ] >>722 いいよ別に。咎めはしないけど真似してくれる人は少なそうだね。
724 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 22:43:50 ] >>722 それを流行らせてくれ!!
725 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 22:50:30 ] っていうか矢印の向きなんてどーでもいいし。 矢印以外の記号だって使われるわけだし、勝手にしろとしかいいようがない。
726 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 23:04:18 ] そんなに揉めるくらいならこっちを指せばいい A m9(^Д^) BC | DE
727 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 23:11:11 ] >>726 ワロタw でも、確かに代入文とかも A=B+C は A->B+C とは書かんな どうみても A<-B+C だな。
728 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 23:12:03 ] A ブギャー BC or DE と読むのか。勢いがあって好いな。
729 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 00:23:11 ] A pgr BC or DE なんかよく分からんが格好良いぞ
730 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 12:21:57 ] yaccやbisonでは、演算子の順位を指定することができますが、これもLALR(1)で必要なのでしょうか。 コンパイラの本を読むと、LALR(1)の説明では生成規則しか使わず、演算子の順位を含めたaction表やgoto表の作り方は特に書いてないように思います。 もしかして、yaccやbisonではLALR(1)と演算子順位解析法との併用なのかなと思ったりするんですけど、どうなんでしょうか? なお、やりたいことは自前で簡単なパーサジェネレータを作ることです。LALR(1)のアルゴリズムを勉強しているんですが、演算子の順位がまるででてこないので、どうやるんだろうと疑問に思ってます。