1 名前:デフォルトの名無しさん mailto:sage [2006/05/06(土) 00:59:13 ] プログラミング言語処理系の開発に興味のある人達のスレッドです。 字句解析・構文解析から,データフロー解析,ループ並列化,データ分散,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/ 関連リンクは多分 >>2-10 あたり
703 名前:デフォルトの名無しさん mailto:sage [2006/08/26(土) 14:14:21 ] >>702 大昔の論文や書籍くらい読め #とか思ったら良書は絶版かYo!
704 名前:デフォルトの名無しさん mailto:sage [2006/08/26(土) 14:57:32 ] >>701 聞けば答えてもらえると思うな、厨房。
705 名前:デフォルトの名無しさん mailto:sage [2006/08/26(土) 16:47:29 ] けちくせーやつだな。だったらスレみてんじゃないよ。 Take,TakeでGiveはなしか。
706 名前:デフォルトの名無しさん mailto:sage [2006/08/26(土) 16:53:24 ] 言いたがりが勝手に口を滑らせるだけだよ。 そんなものでも、最新の情報なら役に立つ。
707 名前:デフォルトの名無しさん mailto:sage [2006/08/26(土) 17:12:04 ] >>689 出来ると書いてないから それにつきますな
708 名前:デフォルトの名無しさん mailto:sage [2006/08/26(土) 20:46:44 ] >>702 っSICP 後ろのほうに自己記述に1章裂いてるお
709 名前:デフォルトの名無しさん mailto:sage [2006/08/27(日) 01:19:54 ] Schemeを最初からCで書くより、一通りSchemeで書いてから必要な部分だけ Cにする方が楽だよね。
710 名前:デフォルトの名無しさん mailto:sage [2006/08/27(日) 07:43:17 ] 今、M$のVisualStudio2005いじってるんだが、GC付きで64bitポインタ、メモリ管理サポートの ランタイム上で、C#、C++、VisualBasicが走るなんて、Lisp系言語を載せてくださいと言ってる ようなもんだな、と思った。Javaは過去にやろうとして16MBでギブアップしやがったので、 M$のCLIには少し期待している。
711 名前:デフォルトの名無しさん mailto:sage [2006/08/27(日) 13:02:07 ] >>710 HotSpot以降のJVMならパラメータでメモリ量の調整きくよ。 web上のappletが廃れかけた頃にはいろんな言語のコンパイラがjvm用のクラス吐くようになったけど 今ははやらないのかねぇ。
712 名前:デフォルトの名無しさん mailto:sage [2006/08/27(日) 14:01:08 ] >>711 むしろ最近になって流行ってきてると思うのだが JDK6でJava VM用のスクリプト言語をJavaから呼び出すための APIが標準化されるのも、Java VM用のスクリプト言語が流行ってきたからだろうし ちなみに先に言っておくと、GroovyもJava VM用のJavaScript処理系であるRhinoも Pnutsも単なるインタプリタではなく、JVM用のクラスファイルを内部で生成して、実行してる
713 名前:デフォルトの名無しさん mailto:sage [2006/08/27(日) 16:15:07 ] >>712 スクリプト処理系が実行時にclassファイル吐いてるのはしらなかったな。 外部ファイルコンパイル実行する時にclassローダ的にはどういう扱いするんだろう?
714 名前:デフォルトの名無しさん mailto:sage [2006/08/27(日) 18:10:57 ] 今のJVMならメモリの調整効くとかいってるが そんなことねーよただ確保してるだけでなんも有効には使ってない。 そのへんM$のは賢い。
715 名前:デフォルトの名無しさん mailto:sage [2006/08/27(日) 20:13:16 ] >>713 いくつかのスクリプト処理系のソース読んだ限りでは、基本的に、 java.lang.ClassLoaderをサブクラス化して、スクリプトをコンパイルしたクラスは それに読み込ませるようにしてる ちなみに、自作のJVM上で動作するJavaライクなスクリプト言語でも、同じような手法で 実装してる
716 名前:デフォルトの名無しさん mailto:sage [2006/08/27(日) 20:15:58 ] >>713 あと、わかっているかもしれないけど、念のため追記しておくと、クラスファイルを 生成するといっても、スクリプトを直接実行するときは、別に実際にファイルが 生成されるわけではなく、オンメモリにbyte配列としてクラスファイルを生成して、 それをClassLoaderで読み込むようになってる
717 名前:デフォルトの名無しさん mailto:sage [2006/08/28(月) 08:56:44 ] >j ava.lang.ClassLoaderをサブクラス化して これが必要ってことはclassfileの仕様を拡張してるってこと?
718 名前:デフォルトの名無しさん mailto:sage [2006/08/28(月) 12:32:30 ] >>717 いや、そういうわけじゃない java.lang.ClassLoaderのAPI見ればわかるんだが、 byte配列からClassオブジェクトを構築するためのメソッドなどはprotected になってるので、プログラムからこのメソッドを呼び出したいなら、サブクラス化 しなければいけないということ
719 名前:デフォルトの名無しさん mailto:sage [2006/08/31(木) 03:43:18 ] >>714 >そんなことねーよただ確保してるだけでなんも有効には使ってない。 そんなわけねーだろw
720 名前:デフォルトの名無しさん [2006/09/07(木) 15:26:38 ] ちょっと質問。 スタックを使って実装する言語についてです。 JavaのようにGCを持っていて、オブジェクトへの参照とプリミティブの 両方をスタックに積むことが出来る場合に、 スタック上のプリミティブはGCの邪魔になりました。 オブジェクトはクラス情報を持っていますが、プリミティブには持たせていません。 なぜなら高速性を期待してプリミティブはオブジェクトと区別したからです。 そこでどうしたらいいかと考え、オブジェクト用とプリミティブ用の 個別のスタックを用意したらどうだろうと考えたのですが、 何か考えられる問題点はありますか? また、ほかにいい方法はありますか? よろしく。
721 名前:デフォルトの名無しさん mailto:sage [2006/09/07(木) 19:57:05 ] >>720 ここはお前専用の相談室だ。 よろしく。
722 名前:デフォルトの名無しさん mailto:sage [2006/09/07(木) 20:25:02 ] >>720 GCの実装は?
723 名前:デフォルトの名無しさん mailto:sage [2006/09/07(木) 20:53:31 ] つーか>>720 の言ってることよくわからんな。 スタックって何に使うスタックのこと言ってるのかわからないし、なんでそのスタックに積んであるものがGCされるのかもさっぱり。 プリミティブ値が邪魔になるってのも意味がわからん。
724 名前:デフォルトの名無しさん mailto:sage [2006/09/07(木) 21:09:47 ] >>723 ……(;´Д`)アチャー
725 名前:デフォルトの名無しさん mailto:sage [2006/09/07(木) 21:16:00 ] >>723 ( ゚д゚ )
726 名前:デフォルトの名無しさん mailto:sage [2006/09/07(木) 22:52:51 ] >>723 (笑)
727 名前:デフォルトの名無しさん mailto:sage [2006/09/07(木) 23:06:54 ] >>720 型システムが堅いなら系列分けたスタック持っても良いかもしれないが もし引数がバリアントみたいに使える言語処理なら徒労におわると思う
728 名前:デフォルトの名無しさん mailto:sage [2006/09/07(木) 23:20:08 ] >>727 スタック上のプリミティブとオブジェクトを区別できないことから考えて、 構文として静的に区別できるような言語なんじゃないだろうか。 だったら分けても良いかも知れない。
729 名前:デフォルトの名無しさん mailto:sage [2006/09/07(木) 23:27:16 ] >>728 ボクシングとかほしくなったら困るんじゃなかろうか(関数呼び出しフレーム作る時ね)
730 名前:デフォルトの名無しさん mailto:sage [2006/09/07(木) 23:29:51 ] ボクシングしたものは全てオブジェクト扱いでイイような気がする。 箱に入れてさ。
731 名前:デフォルトの名無しさん mailto:sage [2006/09/08(金) 06:09:40 ] 素直にプリミティブにタグ付けした方が良い希ガス。
732 名前:デフォルトの名無しさん mailto:sage [2006/09/08(金) 07:46:50 ] オブジェクトのメンバの、ポインタと即値はどうやって区別してんだ?
733 名前:デフォルトの名無しさん mailto:sage [2006/09/08(金) 12:00:11 ] >>732 型のある言語ならコンパイル時にGC対象を列挙できるので問題はないでしょ?
734 名前:デフォルトの名無しさん mailto:sage [2006/09/09(土) 02:18:41 ] >>720 がもどってこなくてショボーン(´・ω・`) どんな言語なのか聞きたかったのに
735 名前:デフォルトの名無しさん mailto:sage [2006/09/09(土) 02:31:01 ] >>734 ねー
736 名前:デフォルトの名無しさん mailto:sage [2006/09/09(土) 09:46:37 ] 質問のレベルから察するとだな
737 名前:デフォルトの名無しさん mailto:sage [2006/09/09(土) 19:25:02 ] チン子もえもえどぴゅーってレベルだな
738 名前:デフォルトの名無しさん mailto:sage [2006/09/09(土) 20:27:29 ] スタックに積む量次第だけど、スタックに積むときだけプリミティブにタグ付けるのが 実装的には一番楽な気がする。
739 名前:デフォルトの名無しさん mailto:sage [2006/09/09(土) 20:34:15 ] で、もうちょい話が進むと、プリミティブは常にタグつきがいいという話になる ちなみに、L(ry も R(ry も、そうなってたような
740 名前:デフォルトの名無しさん mailto:sage [2006/09/09(土) 20:47:24 ] もう手抜きして保守的GCにしちまおうぜ
741 名前:デフォルトの名無しさん mailto:sage [2006/09/09(土) 21:20:50 ] 可算無限個のメモリを用意するのが最近のトレンド。
742 名前:デフォルトの名無しさん mailto:sage [2006/09/09(土) 23:20:12 ] >>739 LispとRuby? Rubyのprimitiveは最下位ビットが1になっているので 保守的GCに引っかからない、というものだったと思う。 Lispの実装は山ほどあるんでわからん。
743 名前:デフォルトの名無しさん mailto:sage [2006/09/09(土) 23:42:47 ] >>741 黙れニート
744 名前:デフォルトの名無しさん mailto:sage [2006/09/13(水) 20:20:23 ] LISPは今風の書き方ができない。 やっぱa.b.c.d().e.f.gとかしたいわけよ。 LISPで同じことしようとするとオペレータ毎いちいち括弧でくくらないとな。 (dot(dot(dot(call(dot(dot a b)c)d)e)f)g) もうなんだかわからん。 おっと、マクロにすりゃいいとか言い出すなよ。 俺はLISPを長年研究してきたから嘘は通じんぞ。
745 名前:デフォルトの名無しさん mailto:sage [2006/09/13(水) 20:39:58 ] CLOSみたいにaccessorで触る仕組みにすると (g (f (e (d (c (b a)))))) のような感じになるかな。
746 名前:デフォルトの名無しさん mailto:sage [2006/09/13(水) 21:07:10 ] (chain (a obj) (b it) (c it) (d it) (e it arg1 arg2)) みたいに書けるようにするのはマクロでできるよ。 Rubyでselectやらmapやらを繋げて配列を引き回していたりなんかすると、 ブロック+ドットよりもこっちの方がむしろ見易い気がする。
747 名前:デフォルトの名無しさん mailto:sage [2006/09/13(水) 21:14:01 ] >>744 そういう風に華麗にかけるのはいいんだけど、デバッグするときにめんどくさくなんね? gの呼び出しで値がおかしくなってるんだけどどこで値がおかしくなってるのかわかんないみたいな。
748 名前:デフォルトの名無しさん mailto:sage [2006/09/13(水) 21:28:46 ] >>746 で、誰がそんなアホなマクロ使うの? プロジェクト全体でそのマクロ使うように、 ルール決めしたりできる?www
749 名前:デフォルトの名無しさん mailto:sage [2006/09/13(水) 21:55:53 ] >>744 引数を沢山とれるようにして (dot (call (dot a 'b 'c 'd)) 'e 'f 'g) でいいじゃん。
750 名前:デフォルトの名無しさん mailto:sage [2006/09/13(水) 22:01:13 ] だから、んな誰も使うはずのないゴミを書いてみても 自己満足以外の意味ないだろ
751 名前:デフォルトの名無しさん mailto:sage [2006/09/13(水) 23:26:44 ] vimのマクロはなにに影響されてできたもんなの?
752 名前:デフォルトの名無しさん mailto:sage [2006/09/14(木) 00:00:43 ] >>744 | LISPは今風の書き方ができない。 | やっぱa.b.c.d().e.f.gとかしたいわけよ。 いや。そんな書き方したいと思ったことは一度もないんだが。
753 名前:744 mailto:sage [2006/09/14(木) 00:03:24 ] ふむ、ふむ。 予想通りのレスだな。 おれは結局フロントエンドを書いた。 しかし、それはもはやLISPではなく、 >>750 の言う通りでもあった。 LISPはリスト処理が得意なはずなのに、 こういった階層表現のオペレートが苦手なのは意外だった。 素直にLISPとして表現するならば、 (defvar a '(b (c (d (e (f (g value))))))) というタグ付きリスト階層を作り、 (cdadadadadadadar a) => value という操作を行う事だろうか。
754 名前:デフォルトの名無しさん mailto:sage [2006/09/14(木) 00:34:25 ] >>744-753 マクロにする必要すらないんじゃ? ドットで繋ぐんだから実装はハッシュか何かだよね? Schemeで申し訳ないが (define (pp obj r) (if (null? r) obj (pp (ref obj (car r)) (cdr r)))) (define (p obj . r) (pp obj r)) で (p a 'b 'c 'd) と書けるよ。 あとはgauche限定?になるけど (define-method object-apply ((b <hash-table>) . c) (pp b c)) で (a 'b 'c 'd) と書ける。
755 名前:デフォルトの名無しさん mailto:sage [2006/09/14(木) 01:45:33 ] だから、ゴミの実装の詳細なんぞ、 興味ねえから、チラシの裏にでも書いてろ
756 名前:デフォルトの名無しさん mailto:sage [2006/09/14(木) 01:57:39 ] 744=750=755 ?
757 名前:デフォルトの名無しさん mailto:sage [2006/09/14(木) 02:06:28 ] Lisp に絡んでいた奴がまた粘着してるのかねぇ? ↓のようなマクロじゃ気にくわないわけ? 例1: #{ a.b.c.d().e.f.g } 例2: #[ a b c #[ d ] e f g ] どっちでも好きなほうを選べ.
758 名前:デフォルトの名無しさん mailto:sage [2006/09/14(木) 02:47:35 ] >>755 ではないが、>>744 の質問はスレ違いじゃないのか? 特定の実装(Lisp)の問題なんだから、Lispスレでやればいいじゃんと思った。
759 名前:デフォルトの名無しさん mailto:sage [2006/09/14(木) 02:54:08 ] Lisper に喧嘩売ってる俺ってスゲー、みたいな奴が出てくるのは Lisp の功罪だな。 こんな事が後何回繰り返されるのだろうか。
760 名前:デフォルトの名無しさん mailto:sage [2006/09/14(木) 03:23:00 ] Lisp スレで相手にしてもらえなかったんじゃないの? だからって関係ないこっちに来られても困るわけではあるが。
761 名前:デフォルトの名無しさん mailto:sage [2006/09/14(木) 06:04:36 ] >>759 相対性理論が長きにわたって物理系のトンデモさんを 無数に相手にしてきたのと、ちょっと似てるね。
762 名前:デフォルトの名無しさん mailto:sage [2006/09/14(木) 06:30:52 ] だーから相手にすんなって…すぐにまた LISP 最強!! とか暴れはじめる気配がする
763 名前:デフォルトの名無しさん mailto:sage [2006/09/14(木) 06:51:13 ] 相対性理論、やっぱ無敵ってこと?それともダサダサってこと? 文章からどっちの意味か見えなかった。
764 名前:デフォルトの名無しさん mailto:sage [2006/09/14(木) 07:05:01 ] 相対性理論とLispはどっちが難しいんだ?
765 名前:デフォルトの名無しさん mailto:sage [2006/09/14(木) 07:52:51 ] それ自体がどうのではなく、名の通り方の問題だろう。 「挑戦者」達は、まず何より名前に噛み付いてる。
766 名前:デフォルトの名無しさん mailto:sage [2006/09/14(木) 22:03:26 ] Lispの話になっても、Lisperのオナニーが多少見えるぐらいで、話は何にも広がらんのな
767 名前:デフォルトの名無しさん mailto:sage [2006/09/14(木) 22:09:54 ] Lispのマクロってどんな感じなんでせう? 文法を自分で定義してシンタックスシュガーを作れるってイメージ?
768 名前:デフォルトの名無しさん mailto:sage [2006/09/14(木) 22:25:34 ] ググれタコ
769 名前:デフォルトの名無しさん mailto:sage [2006/09/14(木) 22:28:54 ] レス数増えたと思ったらやっぱりこれか
770 名前:デフォルトの名無しさん mailto:sage [2006/09/15(金) 01:12:03 ] >>767 構文抽象ってやつだね。でも粘着が暴れるから別のスレで聞いたほうがいいとおもう。
771 名前:デフォルトの名無しさん mailto:sage [2006/09/15(金) 01:16:34 ] >>767 後はコンパイル時にデータを生成したりとか。
772 名前:デフォルトの名無しさん mailto:sage [2006/09/15(金) 03:25:42 ] >>744 俺は、a.b.c.d().e.f.gって書けるような S式みたいというかM式の一種というかC言語風の データ形式を考えてるけど、なかなか、難しいです。 簡単なschemeへのトランスレータは書いてみたけど、 なんか納得がいってません。 こう、ごちゃごちゃと考えがスパゲッティになってて どう考えを積み上げていったらいいのかわからない段階です。 とりあえず、c言語のセミコロンやカンマがどうして必要なのか? とか考えてます。
773 名前:772 mailto:sage [2006/09/15(金) 03:49:02 ] なんか、話が長くなりそうだし、 スレ作ってしまいました。 pc8.2ch.net/test/read.cgi/tech/1158259643/
774 名前:デフォルトの名無しさん mailto:sage [2006/09/15(金) 13:24:14 ] >>772 >とりあえず、c言語のセミコロンやカンマがどうして必要なのか? カンマがないと、 1, -1 が 1-1 になっちゃうでしょ。
775 名前:デフォルトの名無しさん mailto:sage [2006/09/15(金) 16:15:57 ] スペースをデリミタにすればカンマは必要ないと思うけど?
776 名前:デフォルトの名無しさん mailto:sage [2006/09/15(金) 17:25:25 ] スペースをデリミタにするなよ
777 名前:デフォルトの名無しさん mailto:sage [2006/09/15(金) 21:57:36 ] 改行をデリミタにすればセミコロンは必要ないと思うけど?
778 名前:デフォルトの名無しさん mailto:sage [2006/09/15(金) 23:19:37 ] >>777 EcmaScriptとかはその戦略を採用しているな。 おかげで構文解析が死ぬほどめんどい。
779 名前:772 mailto:sage [2006/09/16(土) 02:44:14 ] >>774 2項演算子あるいは後置演算子と前置演算子に使われる演算子があった場合に 何らかのデリミタ(セパレータ?)が必要である。 てことですかねぇ。 他に、 名前のない括弧が前のカッコに結合しないようにする。 f()(1+2)と f();(1+2)みたいなかんじで。 みやすくするためにも存在してますよね。
780 名前:デフォルトの名無しさん mailto:sage [2006/09/16(土) 03:40:14 ] java で実装されたスクリプトエンジンで、コルーチンの yield に相当する機能を実装したものはありますか? Jython がジェネレータの名称で実装していることは知っているのですが、他の実装も見てみたいのです。
781 名前:デフォルトの名無しさん mailto:sage [2006/09/16(土) 15:48:29 ] >>776 forth
782 名前:デフォルトの名無しさん mailto:sage [2006/09/16(土) 20:02:26 ] FORTHって絶対メジャーになれない言語の筆頭だよな。
783 名前:デフォルトの名無しさん mailto:sage [2006/09/16(土) 20:10:41 ] >>782 PostScriptはメジャーじゃない、とおっしゃる?
784 名前:デフォルトの名無しさん mailto:sage [2006/09/16(土) 20:21:13 ] >>782 となると、LISPもだな。
785 名前:デフォルトの名無しさん mailto:sage [2006/09/16(土) 22:58:15 ] java仮想マシンもたしかFORTHだよな?
786 名前:デフォルトの名無しさん mailto:sage [2006/09/16(土) 23:54:15 ] はい、違いますよ
787 名前:デフォルトの名無しさん mailto:sage [2006/09/16(土) 23:56:54 ] >>785 誰に聞いたのよw
788 名前:デフォルトの名無しさん mailto:sage [2006/09/17(日) 00:01:31 ] スタックマシンがすべてFORTHだというのであれば
789 名前:デフォルトの名無しさん mailto:sage [2006/09/17(日) 00:15:31 ] PDFを書く言語ってあったか? それ。
790 名前:デフォルトの名無しさん mailto:sage [2006/09/17(日) 03:22:01 ] FORTHをアーキテクチャとか言語分類とかのことだと思ってる奴がいるのか?
791 名前:デフォルトの名無しさん mailto:sage [2006/09/17(日) 03:49:48 ] OpenFirmware も Forth だよ。
792 名前:デフォルトの名無しさん mailto:sage [2006/09/18(月) 01:35:09 ] FORTHを信じても意味がなかった
793 名前:デフォルトの名無しさん mailto:sage [2006/09/18(月) 02:08:16 ] >>792 そりゃFORCEじゃないのか?ルーク
794 名前:デフォルトの名無しさん mailto:sage [2006/09/18(月) 02:09:45 ] Use the Force, 792. >>792 , trust me. Remember, the Force will be with you always.
795 名前:デフォルトの名無しさん mailto:sage [2006/09/18(月) 12:37:38 ] Lisp最強!!!!!!
796 名前:デフォルトの名無しさん mailto:sage [2006/09/18(月) 14:30:56 ] はいはい。 LISPは面白いもんを沢山残してったけど、 FORTHは言葉遊びが出てくる程度だったな。
797 名前:デフォルトの名無しさん mailto:sage [2006/09/18(月) 14:33:37 ] FORTHって、普通に使われてる言語やん。
798 名前:デフォルトの名無しさん mailto:sage [2006/09/18(月) 14:34:32 ] Lispは今では遊びと教育用の言語でしかなくて、実際に使われているのは知らない。
799 名前:デフォルトの名無しさん mailto:sage [2006/09/18(月) 14:53:41 ] スタックが複数本必要な言語はロクなのがないね。
800 名前:デフォルトの名無しさん mailto:sage [2006/09/18(月) 21:56:30 ] >>798 emacs 知らんの? 珍しいやっちゃな。
801 名前:デフォルトの名無しさん mailto:sage [2006/09/18(月) 22:05:13 ] emacsが実際に使われていないということなんだろうけどな
802 名前:デフォルトの名無しさん mailto:sage [2006/09/19(火) 01:53:34 ] PCLの2章より: An even more impressive instance of remote debugging occurred on NASA's 1998 Deep Space 1 mission. A half year after the space craft launched, a bit of Lisp code was going to control the spacecraft for two days while conducting a sequence of experiments. Unfortunately, a subtle race condition in the code had escaped detection during ground testing and was already in space. When the bug manifested in the wild--100 million miles away from Earth--the team was able to diagnose and fix the running code, allowing the experiments to complete.14 One of the programmers described it as follows: Debugging a program running on a $100M piece of hardware that is 100 million miles away is an interesting experience. Having a read-eval-print loop running on the spacecraft proved invaluable in finding and fixing the problem. ドキドキもんだろうけど、楽しそうな体験ではある。
803 名前:デフォルトの名無しさん mailto:sage [2006/09/19(火) 04:03:57 ] >>801 何が?