「コンパイラ・スクリプトエンジン」相談室9
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2005/12/20(火) 21:43:02字句解析・構文解析から,データフロー解析,ループ並列化,データ分散,SSA変換,
CPS変換,レジスタ割付,命令スケジューリング,ソフトウェアパイプライン,
SIMD命令生成,VLIW向けクラスタリング,スクラッチメモリ向け最適化,リンク時最適化,
JIT,動的バイナリ変換等の各種最適化,それにVM,GC,低消費電力化などなど。
意味論に関する話題も歓迎です。
過去スレ
1 http://pc.2ch.net/tech/kako/981/981672957.html
2 http://pc2.2ch.net/test/read.cgi/tech/1021136715/
3 http://pc5.2ch.net/test/read.cgi/tech/1070089173/
4 http://pc5.2ch.net/test/read.cgi/tech/1100097050/
5 http://pc8.2ch.net/test/read.cgi/tech/1106129164/
6 http://pc8.2ch.net/test/read.cgi/tech/1115335709/
7 http://pc8.2ch.net/test/read.cgi/tech/1129287390/
8 http://pc8.2ch.net/test/read.cgi/tech/1131273918/
関連リンクは多分 >>2-10 あたり
0002デフォルトの名無しさん
2005/12/20(火) 21:44:10・色々なツールの紹介
http://catalog.compilertools.net/
・コンパイラ関連のリンク集
http://www.ulis.ac.jp/~nakai/rel_web_compilers.shtml
・スクリプティング言語資料室(仮) (リンク集)
http://www.kt.rim.or.jp/~kbk/
・Compiler Construction
http://rananim.ie.u-ryukyu.ac.jp/~kono/lecture/2000/compiler/index.html
・Compiler Construction (1997)
http://rananim.ie.u-ryukyu.ac.jp/~kono/lecture/1997/compiler/compiler.html
・情報システム工学実験 III コンパイラ・コンパイラ
http://math.cs.kitami-it.ac.jp/~fuchino/proin/experimentIII-2000/jikken.html
・OS/Programming 簡単な C コンパイラ
http://www.csg.is.titech.ac.jp/~chiba/lecture/os/
・正規表現
http://hp.vector.co.jp/authors/VA007799/viviProg/doc_regexp.htm
・コンパイラ研究・開発情報の一集積所
http://compilers.cs.uec.ac.jp/
・Links and Selected Readings
http://www.gnu.org/software/gcc/readings.html
・国産のコンパイラ共通インフラストラクチャCOINS
http://www.coins-project.org/
0003デフォルトの名無しさん
2005/12/20(火) 21:48:20・Lex and YACC primer/HOWTO (邦訳)
ttp://www.linux.or.jp/JF/JFdocs/Lex-YACC-HOWTO.html
・Turbo Pascal Lex/Yacc
http://www.musikwissenschaft.uni-mainz.de/~ag/tply/tply.html
・Jim Roskind's LALR(1) C++ Grammar
ttp://www.empathy.com/pccts/roskind.html
・Flexと Bisonを同時に使う
http://guppy.eng.kagawa-u.ac.jp/~kagawa/1999/SysProg/both.html
・KITE_ASM (yacc,lex)
http://www.arch.cs.kumamoto-u.ac.jp/project/kite/kiteasm/
・bison用のC++ LALR skeleton
ttp://www.bj-ig.de/software/bison/
・ANTLR(非yaccのパーサジェネレータ)
ttp://www.antlr.org/
・JavaCC(Java Compiler Compiler)
ttps://javacc.dev.java.net/
ttp://village.infoweb.ne.jp/~fwif0083/program/java/javacc/javaccgrm.html
ttp://www.asahi-net.or.jp/~DP8T-ASM/java/tips/JavaCCHelloWorld.html
・CUP, JLex, JFlex
http://www.cs.princeton.edu/~appel/modern/java/ (JLex, CUP)
ttp://www.jflex.de/
・SableCC
ttp://www.sablecc.org/
・¬<><∪∪ (notavacc)LALR(1)
http://ne.cs.uec.ac.jp/~koto/notavacc/
・boost::spirit(C++のテンプレートでEBNFの構文を模倣)
http://spirit.sourceforge.net/
ttp://boost.cppll.jp/HEAD/libs/spirit/index.html(マニュアル日本語化プロジェクト)
ttp://www.fides.dti.ne.jp/~oka-t/cpplab-boost-spirit.html
0004デフォルトの名無しさん
2005/12/20(火) 21:48:57・GC FAQ -- draft
http://www.iecc.com/gclist/GC-faq.html
・A garbage collector for C and C++
http://www.hpl.hp.com/personal/Hans_Boehm/gc/
・一般教養としての Garbage Collection
http://www.is.s.u-tokyo.ac.jp/~vu/01/jugyo/processor/process/soft/compilerresume/gc/gc.html
・Garbage Collection : Algorithms for Automatic Dynamic Memory Management
http://www.amazon.com/exec/obidos/ASIN/0471941484/
★処理系,スクリプト
・kikyou.info (吉里吉里というゲームのスクリプト)
http://kikyou.info/
・tiny C コンパイラ (C)
http://www.watalab.cs.uec.ac.jp/tinyCabs.html
・6809用 Micro C コンパイラ
http://www.axe-inc.co.jp/pds/mc09.html
・Portable Object Compiler (Obj-C >> C のトランスレータ?)
http://users.pandora.be/stes/compiler.html
・自作コンパイラの部屋(PL/1, Pascal等)
http://www.tokumaru.org/
・『Rubyソースコード完全解説』サポートページ
http://i.loveruby.net/ja/rhg/
・『やさしい Lisp の作り方』『やさしい Java インタプリタ の作り方』
http://www.okisoft.co.jp/esc/go.html
・MSによるPEフォーマット仕様書(日本語)
http://www.interq.or.jp/chubu/r6/reasm/PE_FORMAT/intro.html
0005デフォルトの名無しさん
2005/12/20(火) 21:50:16・PLDI
http://research.microsoft.com/conferences/pldi06/
コンパイラの研究に関する最新成果を知りたければまずはここ。
・POPL
http://www.cs.princeton.edu/~dpw/popl/06/
PLDIよりは理論寄りだが大いに参考になる。
・ICFP
http://icfp06.cs.uchicago.edu/
関数型言語に関する学会。とても難しい。
・OOPSLA
http://www.oopsla.org/
オブジェクト指向言語に関する学会。最近はやや低調?
・ICCC
http://www.st.cs.uni-sb.de/cc/
ヨーロッパ系。派手さはないが堅実。
0006また貼り忘れてないか
2005/12/20(火) 22:07:19・コンパイラ 原理・技法・ツール 1&2
http://www.amazon.co.jp/exec/obidos/ASIN/4781905854/
http://www.amazon.co.jp/exec/obidos/ASIN/4781905862/
通称ドラゴンブック。バイブル。
・コンパイラ構成法 原田 賢一
http://www.amazon.co.jp/exec/obidos/ASIN/4320029224/
http://www.hara.cs.keio.ac.jp/kCompiler/ (ソース、正誤表のダウンロード)
・プログラミング言語処理系 岩波講座 ソフトウェア科学〈5〉 佐々 政孝
http://www.amazon.co.jp/exec/obidos/ASIN/4000103458/
一冊で済ませたい人へ。
・コンパイラの構成と最適化 中田 育男
http://www.amazon.co.jp/exec/obidos/ASIN/4254121393/
最適化がメインだが、構文解析からコード生成までの基本事項も解説されている。
・コンパイラの仕組み 渡邊 坦
http://www.amazon.co.jp/exec/obidos/ASIN/4254127081/
薄い奴(185p)を読みたい人に。
・21st Century Compilers (Alfred V. Aho, Sethi, Ravi Sethi, Jeffrey D. Ullman, Monica Lam)
http://www.amazon.co.jp/exec/obidos/ASIN/0321131436/
まだ出ていない。
・スモールコンパイラの制作で学ぶプログラムのしくみ
http://www.cbook24.com/bm_detail.asp?sku=4774121770
初心者向けの優しい解説本。
0007デフォルトの名無しさん
2005/12/21(水) 07:44:06貼り忘れてないか、はいいけど、リンク先の確認ぐらいしようね、ボク。
0008デフォルトの名無しさん
2005/12/21(水) 07:55:32処理系の実装と関係ない、どの言語が優れてるだとかの話は願い下げに
してもらいたい。
あと、このスレの1は前スレのテンプレをそのままコピペしたみたいで
前スレの1が立てたwikiが載ってないね。
http://www6.atwiki.jp/compilerandscriptengine/
0009デフォルトの名無しさん
2005/12/21(水) 13:18:54このスレでよろしいのでしょうか?
0010デフォルトの名無しさん
2005/12/21(水) 15:16:58こちらでどうぞ。
http://pc8.2ch.net/test/read.cgi/tech/1131273918/
0011デフォルトの名無しさん
2005/12/21(水) 15:58:32>>9
うはwまた荒れそうなネタをww
この議論に参加する者は、
「絶対的な答えはない」ということを肝に銘じておくように。
0012デフォルトの名無しさん
2005/12/21(水) 20:08:270013デフォルトの名無しさん
2005/12/21(水) 20:51:01じゃぁ何があればスクリプト言語と呼べると思う?
0014デフォルトの名無しさん
2005/12/21(水) 20:54:000015デフォルトの名無しさん
2005/12/21(水) 21:21:23必死だな市ね
0016デフォルトの名無しさん
2005/12/21(水) 21:46:33くだらないか?別に結論をださなきゃいけないわけじゃないんだから、
答えの出ない問題をわいわい議論してもいいじゃんか。
なにをもってスクリプト言語というかと聞かれたら、おれなら「処理系(構文解析系)と実行系がひとつになっている言語」と答える。
0017デフォルトの名無しさん
2005/12/21(水) 21:48:37Luaなんか良い線行ってる気がするんだけど、
コードをデータで扱ったり新しい構文は定義できないしなあ。
0018デフォルトの名無しさん
2005/12/21(水) 21:59:33つECMAScript
0019デフォルトの名無しさん
2005/12/21(水) 22:00:22言葉遊びにしかならん。逝け。
0020デフォルトの名無しさん
2005/12/21(水) 22:05:100021デフォルトの名無しさん
2005/12/21(水) 22:26:32盛り上がってないな。商用の Windows/Linux 処理系がオープン && フリーになったってのに。
純粋 OOPL かつ関数型言語でマクロもあるらしいけど。
0022デフォルトの名無しさん
2005/12/21(水) 22:28:01全部リストだとシーケンスを扱う時に効率悪そうだから
いっそのこと全部ベクターや配列で表現してみてはどうか。
{1 2 3}[0]
=>1
{1 2 3}[1..]
=>{2 3}
{define func0
{function {a b c}
{return {infix a + b + c}}}}
{defmacro defun args
`{define ,args[0] {function ,@args[1..] }}}
{defun func1{a b c}
{return {infix a + b + c}}}
func0{1 2 3}
=>6
func1{1 2 3}
=>6
ふむ。
0023デフォルトの名無しさん
2005/12/21(水) 22:29:46これはインタプリタっていうと思います。
あと普通は、「言語」は「仕様」であって「実装」ではないと思います。
実装が仕様って言ってる某言語を除いて。
0024デフォルトの名無しさん
2005/12/21(水) 23:25:16LISPがあるのに
これ以上何やろうっての?
0025デフォルトの名無しさん
2005/12/21(水) 23:35:550026デフォルトの名無しさん
2005/12/22(木) 02:39:570027デフォルトの名無しさん
2005/12/22(木) 03:41:44FunctionalDeveloperがOpenDylanになって、Gwydion Dylanとそのうちマージされるんじゃ?
と、期待してはいるけどねぇ。
しばらくは混沌としたままという気はするね。MLも停滞中だしなぁ。
0028デフォルトの名無しさん
2005/12/22(木) 07:39:28何の都合?
とりあえず速度ならバイトコード。デバッグしたいならツリーのまま。
0029デフォルトの名無しさん
2005/12/22(木) 11:30:30OpenDylan は何であんなに閑散としてるんだろう。
0030デフォルトの名無しさん
2005/12/22(木) 13:17:32正直なところ、これ以外どれも同じ。
0031& ◆77HZD.NR0E
2005/12/22(木) 21:13:010032デフォルトの名無しさん
2005/12/22(木) 21:24:49すくりぷとげんごといんたぷりたとのちがいはなに?
ばいなりにおとすかどうか?
0033デフォルトの名無しさん
2005/12/22(木) 21:33:40落ち着け!>>23は釣り臭いぞ。
0034デフォルトの名無しさん
2005/12/22(木) 22:18:33どんな阿呆でも、多少は学習能力があるということか
0035デフォルトの名無しさん
2005/12/22(木) 22:21:41LISPに釣られてるアフォw
0036デフォルトの名無しさん
2005/12/22(木) 23:56:28namespace.object.method
つーかluaって結構バランス良さげだね。
何気にproper tail recursionだし。
schemeと同じ様な書き方ができるっぽい。
0037デフォルトの名無しさん
2005/12/23(金) 00:30:46>ドットで階層表現
リーダーマクロじゃ無理?
(そのままドットで繋げる形式は無理だと思うけど)
0038デフォルトの名無しさん
2005/12/23(金) 07:19:25どのみちこういう話してる面子は両方見てるんだろ? 俺もだけど。
0039デフォルトの名無しさん
2005/12/23(金) 08:00:100040デフォルトの名無しさん
2005/12/23(金) 08:17:240041デフォルトの名無しさん
2005/12/23(金) 08:31:11というか過去スレで a[x] みたいな配列アクセスとか . でのオブジェクトへの
アクセスとかは実現されてたと思う。でも荒しが粘着している現状で向こうの
住人がわざわざこっち覗きにきたりはしないと思われ。
0042デフォルトの名無しさん
2005/12/23(金) 08:59:00oscm の構文定義で以下のようになっていたのだけれども
exp :
BOOL { Bool $1 }
| NUMBER { Number $1 }
| CHAR { Char $1 }
| STRING { String $1 }
| SYMBOL { Symbol $1 }
| LPAREN exp_list RPAREN
{ to_cons $2 Nil }
exp_list :
{[]}
| exp exp_list { $1::$2 }
上の定義の中で、
exp_list :
{[]}
の部分がどう作用するのかいまいちわかんないんですけど・・・
いつ、どの順序でこの部分がマッチするんですか?
0043デフォルトの名無しさん
2005/12/23(金) 11:08:52生成できることを意味している。exp_listを生成するもう一つの規則(2) exp exp_listは、
必ずexp_listというnon terminalを必要とするので、規則(1)がないとexp_listという
non terminalを生成することができない(帰納法のbase caseに相当する)。
規則(1)が使われる具体的なタイミングは、その構文規則でexpがstart symbolと
仮定すると、次のトークンがRPARENの時だと言える。
004442
2005/12/23(金) 13:29:00exp exp_list { $1::$2 }
において、 $2 が [] になるということですね
ありがとうございました。
0045デフォルトの名無しさん
2005/12/23(金) 13:51:33カモン。
http://pc8.2ch.net/test/read.cgi/tech/1132275726/20
0046デフォルトの名無しさん
2005/12/29(木) 00:25:030047デフォルトの名無しさん
2005/12/29(木) 00:40:050048デフォルトの名無しさん
2005/12/29(木) 01:02:380049デフォルトの名無しさん
2005/12/29(木) 01:09:400050デフォルトの名無しさん
2005/12/29(木) 09:20:53OS側に管理が回りそうな機能と
言語側に標準的に割り当てられそうな機能を教えてくれ
例えばガベージコレクションはOSがやることになって
マルチスレッドは言語レベルでサポートされるのが良いのじゃないかと
0051デフォルトの名無しさん
2005/12/29(木) 09:50:250052デフォルトの名無しさん
2005/12/29(木) 10:28:340053デフォルトの名無しさん
2005/12/29(木) 11:13:42それがナウなヤングなんだよ。
0054デフォルトの名無しさん
2005/12/29(木) 12:50:23>既存のソフトウェア資産が全て0から作られると仮定して
あのなー、
その「全て0から作らなくてはならなくなった理由」がない状態で、
どの機能を何処に割り当てるべきか、なんてのが決まる訳が無いだろ?
0055デフォルトの名無しさん
2005/12/29(木) 13:21:18OSの足りない分はソフトウェアがカバーしてるんだよ
0056デフォルトの名無しさん
2005/12/29(木) 13:28:14ナウでクォー(クール)でヤングですよ。
0057デフォルトの名無しさん
2005/12/29(木) 20:52:430058デフォルトの名無しさん
2005/12/29(木) 21:05:470059デフォルトの名無しさん
2005/12/30(金) 04:58:42みなさんお楽しみに!
0060デフォルトの名無しさん
2005/12/30(金) 06:08:190061デフォルトの名無しさん
2005/12/30(金) 06:21:04ない
0062デフォルトの名無しさん
2005/12/30(金) 06:24:260063デフォルトの名無しさん
2005/12/30(金) 08:02:02大差ないと思うよ。
半分くらいは俺が信者になったりアンチになったりしながら煽ってただけだから。
ちなみに俺はRubyもLISPも使ったことはない。
来年もよろしく。
0064デフォルトの名無しさん
2005/12/30(金) 09:38:36大差あると思うよ。
もう半分は俺が信者になったりアンチになったりしながらクマしてただけだから。
ちなみに俺はRubyもLispも長年使い込んだ。
今年限りにしておこうか。
0065デフォルトの名無しさん
2005/12/30(金) 13:50:43空気読めねー奴だな…。「ちなみに」とかいわなくても君が Ruby を使えない
低能野郎って事は分ってるから来年こそは氏んでくれ。
でも空気読めないからノコノコでてくるんだろうなぁ
0066デフォルトの名無しさん
2005/12/30(金) 19:39:50まったくの別次元だ。
特にスキャナ
0067デフォルトの名無しさん
2005/12/30(金) 23:27:350068デフォルトの名無しさん
2005/12/31(土) 04:07:32...で、それって結局全部、Rubyの欠点になってるよな。
0069デフォルトの名無しさん
2005/12/31(土) 15:59:230070デフォルトの名無しさん
2005/12/31(土) 16:27:46GCは、前見たときは、わりと標準的なmark-sweepだと思った。
スレッドは基本的に使ったことしかなくて、
スレッドスケジューラとかを作るやり方の話をよく知らなかったから
いまいち判断できなかった。
それでも、現実のOSなんかが搭載してるスケジューラに比べれば、
かなり簡潔(悪く言えばチープ)だろうな、と何となく思った記憶がある。
0071デフォルトの名無しさん
2005/12/31(土) 17:11:19>GCは、前見たときは、わりと標準的なmark-sweepだと思った。
うーん、Bohemとかと比べるんなら「標準的」なのかもしれないけど、
BohemはC向けだからああならざるを得ないのであって、インタプリタ言語で
なにもわざわざCスタックをスキャンすることないのではないかと。
あれのおかげでsetjmpでレジスタを対比するようなトリックが必要になっているし
(そのせいでCPUごとの#ifdefやインラインアセンブラも必要になっているし)、
ネイティブスレッドと相性が悪いのもあれのせいでしょ。
0072デフォルトの名無しさん
2005/12/31(土) 19:05:16言語上の問題じゃなくてオブジェクトメモリ操作のアトミック性の問題のためにスタックまで見る羽目になってるだけなんだけど
どうしたもんかねぇ。
個人的にGC関係が勉強になったというか良くできてるな〜と関心しきりだったのはioなんだよね。
シンプルなのにジェネレーションベースなんでGCに興味がある人は見ておくべきだと思う。
0073デフォルトの名無しさん
2005/12/31(土) 19:12:39CのプログラムがRubyのオブジェクトを捕まえたときに、
Cのプログラムが明示的にそれを開放しなくても良いという利点がある。
これのおかげでCで拡張ライブラリを作ったり
Rubyを他のアプリケーションに組み込んだりしやすくなる。
・・・という目的があったと思った。
でもvolatileつけないといつの間にかオブジェクトが回収される罠があったり、
これのせいでRubyの高速化がしにくかったり。
0074デフォルトの名無しさん
2005/12/31(土) 20:28:43お前らw
0075デフォルトの名無しさん
2005/12/31(土) 20:51:44好きです。結婚してくださ(ry
0076デフォルトの名無しさん
2005/12/31(土) 22:51:46明示的にガードできるようにした方がいいんじゃないかねえ。EmacsのGCPROみたく。
0077デフォルトの名無しさん
2005/12/31(土) 22:53:28(できるのはできるが目的が違う)
0079デフォルトの名無しさん
2006/01/01(日) 17:14:230080デフォルトの名無しさん
2006/01/01(日) 20:50:42重箱研究者だったりする件についてw
0081デフォルトの名無しさん
2006/01/01(日) 21:29:140082デフォルトの名無しさん
2006/01/02(月) 00:00:49それは言えてるかも。ある意味素人が世界的に有名になって
(以下略
0083デフォルトの名無しさん
2006/01/02(月) 00:22:580084デフォルトの名無しさん
2006/01/02(月) 00:50:46人機の秘密は案外こんなところおにあったりする。
0085デフォルトの名無しさん
2006/01/02(月) 00:52:48Rubyだのなんだのと遠回りする馬鹿の多いことよ
0086デフォルトの名無しさん
2006/01/02(月) 02:57:54そんなに使い易いもんでは無いわな。
Rubyのシンタックスシュガーはやりすぎな感じもするけど……
誰か表記改良版のLisp作らんかね?
0087デフォルトの名無しさん
2006/01/02(月) 03:00:55いいだしっぺの法則
0088デフォルトの名無しさん
2006/01/02(月) 03:20:150089デフォルトの名無しさん
2006/01/02(月) 03:35:36ネイティブコンパイラとオプショナルな静的型付けと Dylan 風マクロが備わったら認めてやる。
ECMAScript に静的型付けを導入する話はどうなったんだろうか。
0090デフォルトの名無しさん
2006/01/02(月) 04:30:38どっかで見た4thエディションでは予約語にはなってたようにおもう。
俺はバリアント型大好きだからいまさら感、感じてるけどね。
0091デフォルトの名無しさん
2006/01/02(月) 04:53:19ライターのM氏のページで、Cでの実装だと型そのものはUNIONにまとめてる感じでした。
やっぱり処理系が扱う変数型をまとめてUNIONにしてしまってフラグ変数で型を見分けて扱うというのが一般的なんでしょうか?
そのときに、たとえばWinapiに対する拡張とか、製作時点で未知のオブジェクトに対応する場合はどういう方向になるんでしょうか?
ヒントでもいいので、お返事お待ちしております。
0092デフォルトの名無しさん
2006/01/02(月) 05:01:58大筋その認識で間違いない。
ただし未知のオブジェクトなど存在しないと思って良い。
複雑な構造のオブジェクトがあったとしても、
レコード型などのなんらかの既知の型の組み合わせでしかない。
0093デフォルトの名無しさん
2006/01/02(月) 05:23:43お返事ありがとう。大筋でもあっててよかった。
Winapiのハンドル関連も元をたどればvoid*だったりするのかな。
構造体の内部表現とか結構気になるな。
うぅ。夢は尽きません。
ま、それはそれとして、参考になりました。
0094デフォルトの名無しさん
2006/01/02(月) 06:48:16つまり、型識別フラグのとりうる値がすべてわかっていないと書けない
部分というのが存在するかしないかなんだけど。
ちょっと考えた限りではなさそうに思える(効率は別として)。
0095デフォルトの名無しさん
2006/01/02(月) 08:23:22call/cc の実装で、継続を作成するという処理は
トップレベルに戻るコードと
そのときの環境オブジェクトというか全フレームを
対にしてまとめたものを保存しておけばよいのかなあと思ったのですが
gauche とかで、call/cc の実装を見ると結構複雑っぽいことを
しているんだけど、なんか考えが足りないのかなあ
識者の見識を聞かせてください
0096デフォルトの名無しさん
2006/01/02(月) 09:03:14未知の構造体を格納しつつ自由にメンバにアクセスしたいときってどうやってやるんかな。
リフレクション自作とかしないといけないのかな・・・。ドウヤッテツクルンダ・・・。
void*に突っ込んで使用時にキャストがいいのかな??スクリプトエンジンでそんな指定どうやって??
テンプレートは一個しかできない上に決めうちしないといけないから向いてない感じがする。
悩む。
>>94
C言語的構造体指向OO風味だと、メモリの配置さえあってれば問題なく下位の構造体にアクセスできるから、
なんとか構造体EXとかは可能だと思う。関数ポインタつければ仮想関数もどきとかもできますぜ。
ただ、型識別フラグは拡張を指しているだけとかそういうことになりそう。
細かい指定はどうだろ、enumの拡張って動的にできるのかな。あぁ、INTつかえばいいのかな??
型ID予約制とかそういうことになって管理大変かも??
とか、書いてたらねむくなってきたなぁ。
論点ずれてたらごめんね。
0097デフォルトの名無しさん
2006/01/02(月) 09:30:51継続というのはその時点での全アクティベーションレコード (スタック
フレームと思っておけばいい) そのものだから、基本的にはそれだけ
取っておけばいい。アクティベーションレコードを全部ヒープに
アロケートする処理系なら単にその先頭のポインタを掴むだけで済む。
概念的にはとても単純。
複雑になるのは効率を考えるから。普通のプログラムは、継続が絡まない
通常の関数呼び出し/復帰の方がはるかに多く、その場合はスタックを
利用する方が一般的にずっと速い。けれどスタック上のアクティベーション
レコードは関数復帰時に自動的に開放されてしまうから、継続が作られた
場合にそれを防ぐ何らかの方法がいる。継続作成時にヒープにコピーするとか、
継続作成時にスタックのベースを動かしてそれまでのスタックをヒープに
しちゃうとか、色々テクニックはある。
それから、単純な関数呼び出し/復帰モデルで賢い最適化をしたつもりが、
継続が入るとうまく動かなくなるってことも多い。効率を考えてゆくと
だんだん実装は複雑になる。
0098デフォルトの名無しさん
2006/01/02(月) 09:51:55C++で、コードが複雑な場合に、最適化でバグの発生する理由がようやく理解できた
0099デフォルトの名無しさん
2006/01/02(月) 16:10:25型式別のフラグ=型を理解するコードへのポインタ
にすればフラグの値を全部知ってる必要は無いでしょう?
実行時にロードされた場所が被るハズないって前提なのではあるけど。
0100デフォルトの名無しさん
2006/01/02(月) 16:57:04シッシッ
0101デフォルトの名無しさん
2006/01/02(月) 18:42:13効率を考えると色々あるのですね
効率を考えずに単純に実装しようと思うのですが
一度中間言語へコンパイルし、仮想マシンなりで走らせるようにする部分は
継続を実装する上で必須なのでしょうか
中間言語とかなしでインタプリタのままで実装することはできないものかと・・・
例えば、(+ 2 (+ a 1)) とかで、(+ a 1) の継続を
その時点での環境を丸々コピー&(lambda (x) (+ x 2)) を
継続コードとして保存する、とか考えてたのですが、
S式全体から (lambda (x) (+ x 2)) の部分を取得する上手い方法が
思いつかないっす
0102デフォルトの名無しさん
2006/01/02(月) 18:50:560103デフォルトの名無しさん
2006/01/02(月) 18:58:580104デフォルトの名無しさん
2006/01/02(月) 19:01:53なるほど!それがまさにそれに該当する方法っぽいです
ただどっちが簡単なんでしょうか
1.VM作って中間言語へコンパイルして継続を管理
2. CPSで継続渡し?みたいな形にS式をコンバート
なんか後者も結構メンドイ気がしてきた・・・
初心者向けなのはどっちですか?
0105デフォルトの名無しさん
2006/01/02(月) 19:39:59ただ、スタックを陽に管理することになるので
(実装言語のスタックをそのままは使えない)
それを仮想マシンと言えなくはない。
0106デフォルトの名無しさん
2006/01/02(月) 20:23:15CPS 変換の方が圧倒的に楽だと思う。
後は callcc 以外の Scheme インタプリタ作るだけだし。
ところで実装言語は何?
0107デフォルトの名無しさん
2006/01/03(火) 05:30:35レスty!
ぜんぜん僕が思ってたのと違う方法なきがする。
型を理解するコードか・・・。変数のことかな。
勉強不足でうまく思い浮かばないOrz
そのほかでは、
名前と値保持の領域をmap使って管理するのがいいのかな。
これ使えばJS風味のバリアントできるな。
でも1オブジェクトに1mapってなんか色々コスト高いような・・・。
あとは関数をどうやって抽象化するかかな・・・。
これこそテンプレートのでばんか!?
という感じで色々ひねって見ます。
ありがとー。
0108デフォルトの名無しさん
2006/01/03(火) 08:14:25C#です。GCとか作る自信ないもんで。
0109デフォルトの名無しさん
2006/01/03(火) 08:35:02typeinfoクラスへの参照をメンバに持っとけって話だろ。
0110デフォルトの名無しさん
2006/01/03(火) 08:49:43実装する目的がわからんのだけど、もしただの勉強なら、
せっかくだから Scheme で実装したらどう?
(eval 使ってはい終わりって意味じゃないよ)
自分のインタプリタで自分のインタプリタを動かすのは
一度はやっておくべきだと思う。
見当違い、余計なお世話だったら無視してくれ。
0111デフォルトの名無しさん
2006/01/03(火) 09:23:29C#で実装して、.net framework, managed directX と連携してゲームとか
簡単な画像処理のフィルタとかをお手軽に作れるような scheme インタプリタを
作ろうというのが処理系の目的といえば目的ですが・・・
現状はC#のインタプリタ部分は call/cc とかマクロとかその辺を
除けばほぼ完成まで来たので、とりあえずはこの路線で進もうかと。
scheme で実装するというのは発想自体思いつかなんだ
いずれやってみようかなと思いました
0112デフォルトの名無しさん
2006/01/03(火) 09:25:40スタックを陽に管理するとは?
0113111
2006/01/03(火) 09:33:390114デフォルトの名無しさん
2006/01/03(火) 13:05:21構文木を直接評価してくときに、素直に実装言語の(非末尾)再帰を
使うと、対象言語のスタックが実質的には実装言語のスタック上に
置かれることになるでしょ。そうすると継続を捕まえるのが面倒。
対象言語のスタックは自分で管理して、実装言語側で再帰しないように
評価器を呼んで行くことを「陽に管理する」と表現した。
実行時にCPS変換かけてるのと同じことだけどね。
0115デフォルトの名無しさん
2006/01/03(火) 19:18:40自分でメモリ管理することで(GC以外の部分でも)最適化の
余地が大きいからでせうかね?
0116デフォルトの名無しさん
2006/01/03(火) 19:24:11コアの部分に、他人のクセだらけのソースコードを使えるか?という問題かと
0117デフォルトの名無しさん
2006/01/03(火) 19:43:53他人のGCを使うのは、リスクが大きすぎるんだよな
何処にどんなバグが潜んでいるかは、作った人にしか分からない……
0118デフォルトの名無しさん
2006/01/03(火) 19:58:43C/C++にライブラリ乗せただけで使えるGCは原理的にコンサバ以外になり得ないので、
exactなGCが欲しければ、自分で作るしかあるまい。
だいたい、(mark sweepだとすれば)mark phaseはその言語のオブジェクト構造に
モロに依存するから、結局自分で書くことになると思うんだが。
0119デフォルトの名無しさん
2006/01/03(火) 20:29:35自分で書くことも考えたんだけど、ネイティブスレッドとか
incremental GCへの対応はプラットフォーム依存のコードが
入って来るから、自分一人ではサポートしきれないという判断。
色んなアーキテクチャでテストとデバッグしてくれる要員が
いるくらいプロジェクトが大きくなればいいんだけれどね。
0120デフォルトの名無しさん
2006/01/03(火) 20:47:56な!そんなクラスが!!!!
目から鱗です。
レスty!!
0121デフォルトの名無しさん
2006/01/03(火) 20:52:43俺言語に俺研究、本当にお前らときたら(ry
0122デフォルトの名無しさん
2006/01/03(火) 21:23:18自分が好き勝手に色々な事をやりたいから作るんだよ。w
それで他人向けにもなっていて、神になれれば万々歳だよ。www
妄想入り過ぎだな……orz
0123デフォルトの名無しさん
2006/01/03(火) 23:19:20ある意味皮肉なもんだ
0124デフォルトの名無しさん
2006/01/03(火) 23:28:490125デフォルトの名無しさん
2006/01/03(火) 23:43:190126デフォルトの名無しさん
2006/01/03(火) 23:45:05>>125 正当化に必死ワロw
0127デフォルトの名無しさん
2006/01/03(火) 23:51:48表面上は嫌っている(ツンツン)が、
内面では認めている(デレデレ)って意味
0128デフォルトの名無しさん
2006/01/04(水) 00:21:52実行速度の遅さと、色々と無駄の多くて破綻している文法以外……
0129デフォルトの名無しさん
2006/01/04(水) 00:33:21気がしている
0130デフォルトの名無しさん
2006/01/04(水) 00:39:14まあねえ。
このスレにいるような連中(のうち何割か)は、俺言語の5つや6つとっくに作ってて
(あるいは作りかけていて)、みーんなディスクの肥やしにしてるんだと思う。
言語処理系作るのなんて別に難しくないんだけど、ちゃんと完成させて、
かつちゃんと普及させる人は珍しい。その点じゃまつもとさんはすごいんだと思う。
0131デフォルトの名無しさん
2006/01/04(水) 00:39:41を
objをm1してm2してm3してm4する。
と書けるようになればいいのかも。
0132デフォルトの名無しさん
2006/01/04(水) 00:58:010133デフォルトの名無しさん
2006/01/04(水) 01:05:40まだまだ諦めとらんよ。
(SchemeとIOを合わせたようなのを作成中)
0134デフォルトの名無しさん
2006/01/04(水) 01:10:11最近実感した
0135デフォルトの名無しさん
2006/01/04(水) 01:13:51くだらねぇなあ。
そういう既存のものを中途半端に組み合わせたのって
数あるつまらん言語のうちの1つになるだけだろ。
0136デフォルトの名無しさん
2006/01/04(水) 01:21:07違う特徴がないとほんとに俺用で終わってしまうな。
Rubyだってフリーで国産とか、イテレータとか、一応特徴あったしな。
LispやSmalltalkやPrologやPerlなどは言うまでもないし。
0137デフォルトの名無しさん
2006/01/04(水) 01:24:14スクリプト言語が無かった。
今では珍しくもないと思われるかもしれないが。
0138デフォルトの名無しさん
2006/01/04(水) 02:21:53しかも、Lisp系言語愛好者は多少浮気をしたところで、
必ず最後はメジャー(少数派の中でだが)なCLかSchemeに戻る
したがって、どうあがいてもユーザーはほとんど出来ないだろうね
0139デフォルトの名無しさん
2006/01/04(水) 02:24:170140デフォルトの名無しさん
2006/01/04(水) 02:30:58http://www.answers.com/topic/list-of-programming-languages
ここに載ってないのがマイナーの条件。
0141デフォルトの名無しさん
2006/01/04(水) 02:42:32Hspとなでしこは世界ではダメだったか・・・
世界的にはRubyのほうが知名度高いんだな。
0142デフォルトの名無しさん
2006/01/04(水) 03:15:58議論はここに戻る
遠回りするアホは嘲笑の対象だね
0143デフォルトの名無しさん
2006/01/04(水) 03:24:580144デフォルトの名無しさん
2006/01/04(水) 04:27:34Lispがマイナー言語だとは書いてないだろ
Lisp愛好者が超少数派と書いたんだ
Lisp愛好者が多数派だと、本気で思ってるなら
死んだほうが良くねえか?
少なくとも、ボケ老人レベルの判断力としか思えんわ
0145デフォルトの名無しさん
2006/01/04(水) 05:31:54A言語愛好家、B言語愛好家、C言語愛好家、
〜言語愛好家って、たくさん見てけば超人数
多い部類だと思うが。
0146デフォルトの名無しさん
2006/01/04(水) 05:40:35"Lispが好き" の検索結果 約 316 件
"Javaが好き" の検索結果 約 259 件
"Rubyが好き" の検索結果 約 186 件
"C++が好き" の検索結果 約 175 件
"Perlが好き" の検索結果 約 134 件
"Pascalが好き" の検索結果 約 57 件
"Basicが好き" の検索結果 約 25 件
0147デフォルトの名無しさん
2006/01/04(水) 05:49:19高学歴の若者にファンが多い気がする。
0148デフォルトの名無しさん
2006/01/04(水) 05:55:12"Cが好き"は別回答含んでねぇか?
0149デフォルトの名無しさん
2006/01/04(水) 06:02:24"I love Ruby" の検索結果 約 21,500 件
"I love Java" の検索結果 約 17,200 件
"I love C" の検索結果 約 13,800 件
"I love Perl" の検索結果 約 9,980 件
"I love C++" の検索結果 約 1,610 件
"I love Basic" の検索結果 約 1,290 件
"I love Lisp" の検索結果 約 310 件
いろんな意味で m9(^Д^)プギャー!!
0150デフォルトの名無しさん
2006/01/04(水) 06:09:34likeにしてみると多少マシなんじゃないかな?
やってないけど
0151デフォルトの名無しさん
2006/01/04(水) 06:13:08"Java hacker" の検索結果 約 14,800 件中
"C++ hacker" の検索結果 約 1,540 件中
"Ruby hacker" の検索結果 約 969 件中
0152デフォルトの名無しさん
2006/01/04(水) 06:17:53"I like Ruby" の検索結果 約 15,700 件
"I like Perl" の検索結果 約 14,600 件
"I like Java" の検索結果 約 14,000 件
"I like C" の検索結果 約 11,000 件
"I like Basic" の検索結果 約 1,600 件
"I like Lisp" の検索結果 約 653 件
"I like C++" の検索結果 約 508 件
なるほど、確かに多少マシだw
おまけ。
"Pythonが好き" の検索結果 約 91 件
"I love Python" の検索結果 約 12,100 件
"I like Python" の検索結果 約 24,300 件
"Python hacker" の検索結果 約 808 件
0153デフォルトの名無しさん
2006/01/04(水) 06:21:59しかし、C++より多いのか。
いずれにせよ、それら超メジャー言語と張り合う程度に
愛好家はいるんだから、超少数派というのは当ては
まらないのではないか?
0154デフォルトの名無しさん
2006/01/04(水) 06:23:58Lisperっていうメジャーな代替表現があるのにこれはすごい。
0155デフォルトの名無しさん
2006/01/04(水) 06:30:48まあ、Ruby 厨の俺から見ても Lisp が超少数派なわきゃないと思うけどね。
>>153
C++ は確かに超メジャー言語だが、
"I love C++" "I like C++" って発言するほど C++ 自体が好きな奴って
あんまりいないんじゃないかという先入観がある。
>>154
Lisp Hacker ≒ Paul Graham
0156デフォルトの名無しさん
2006/01/04(水) 06:31:230157デフォルトの名無しさん
2006/01/04(水) 06:36:19今じゃ誰もこんなこと言わないとわかっているが敢えて言わせて貰おう。
ネタにマジレスカコワルイ
0158デフォルトの名無しさん
2006/01/04(水) 08:00:510159デフォルトの名無しさん
2006/01/04(水) 08:28:35言語設計者の嫉妬にみえなくもない
0160デフォルトの名無しさん
2006/01/04(水) 08:44:56ソースコード完全解説が出版されるはオンラインで公開されるは、挙句Matz氏もソース嫁と言わんばかりの勢いだからな。
0161デフォルトの名無しさん
2006/01/04(水) 09:27:27743 "I hate Perl"
15500 "I hate Java"
726 "I hate C"
988 "I hate Basic"
257 "I hate Lisp"
1320 "I hate C++"
Javaダントツ人気で砂
0162デフォルトの名無しさん
2006/01/04(水) 09:32:26わざわざ触りたいという気には不思議とならない
0163デフォルトの名無しさん
2006/01/04(水) 10:00:09http://www.boingboing.net/2006/01/02/twoheaded_snake_for_.html
0164デフォルトの名無しさん
2006/01/04(水) 10:04:420165デフォルトの名無しさん
2006/01/04(水) 10:24:01愛好家の数で言ったら、大体
C++、Java、Perl、Pythonなど>Ruby、Delphi、VBなど>Lisp、Basic、Pascalなど
>Cobol、PL/I、Fortran、Prologなど>>>>>>>>>マイナー言語の数々
って感じになるのは、これらを知ってる奴なら納得するだろ?
0166デフォルトの名無しさん
2006/01/04(水) 10:49:03処理系の実装に関係ない話はどっかよそでやってくれ。
0167デフォルトの名無しさん
2006/01/04(水) 11:00:34処理系を作っても、特徴がなければただの俺言語になる。
特徴があってもLispのように超少数派になる。
いや、Lispは超少数派ではない。←いまここ
0168デフォルトの名無しさん
2006/01/04(水) 11:04:45レベル低いなあ
0169デフォルトの名無しさん
2006/01/04(水) 11:06:55レベル低いなあ
↑これと同じくらいお前の論理は無意味
0170デフォルトの名無しさん
2006/01/04(水) 11:46:48皆さん、どう思います?
0171デフォルトの名無しさん
2006/01/04(水) 11:48:34愛好家ってカテゴリだったらC++の位置はそこじゃねぇだろ、実用性じゃダントツだってのは認めるけどさ。
チームに一人デコ助がいるだけで地獄を「簡単」にみられる言語の筆頭だぜ。
0172デフォルトの名無しさん
2006/01/04(水) 11:50:58いつから言語比較スレになったんだ?
0173デフォルトの名無しさん
2006/01/04(水) 11:54:05個人個人が好き勝手に好きな言語を推しているに過ぎない。
検索結果がどうのこうのしょうもない外人が書いたようなリストを持ち出そうが、そんなもんが言語研究と何の関係があるんだよ。
お前らもうちょっと理性的に考えたらどうなんだ?
0174デフォルトの名無しさん
2006/01/04(水) 12:07:590175デフォルトの名無しさん
2006/01/04(水) 12:09:19第二段が間違ってるぞ
「特徴があってもLisp系ではLisperしか食いつかないうえ、
Lisperは試食しただけで、またCL Schemeに戻る」だ
0176デフォルトの名無しさん
2006/01/04(水) 12:20:32井の中の蛙臭さの原因なんじゃなかろうか
0177デフォルトの名無しさん
2006/01/04(水) 12:27:35考えそうなありふれたアイディア。
目だった特徴にはならん。
0178デフォルトの名無しさん
2006/01/04(水) 12:28:37原因はむしろ比較の基準が使用者の人口なことじゃね?
0179デフォルトの名無しさん
2006/01/04(水) 12:31:14CLOSじゃいかんのか?
0180デフォルトの名無しさん
2006/01/04(水) 12:34:10LispもSchemeやJavaScript、果てはRubyやPythonに至るまで
フォロワーを生み出したことに凄さがある。
0181デフォルトの名無しさん
2006/01/04(水) 12:42:45Lisp起源ニダ
Ioも実はLispが起源ニダ
0182デフォルトの名無しさん
2006/01/04(水) 12:50:07そもそもSmalltalkがLisp起源・・・
0183デフォルトの名無しさん
2006/01/04(水) 12:51:57議論はここに戻る
遠回りするアホは嘲笑の対象だね
0184デフォルトの名無しさん
2006/01/04(水) 13:13:39そうだな。何だかんだ言われても、HSPにもフォロワーはいるからな
0185デフォルトの名無しさん
2006/01/04(水) 13:23:410186デフォルトの名無しさん
2006/01/04(水) 15:14:220187デフォルトの名無しさん
2006/01/04(水) 15:26:070188デフォルトの名無しさん
2006/01/04(水) 15:44:260189デフォルトの名無しさん
2006/01/04(水) 16:26:19今年は、環境ごとにミニ言語をさくっとでっち上げるのが
来ます
0190デフォルトの名無しさん
2006/01/04(水) 17:38:440191デフォルトの名無しさん
2006/01/04(水) 17:41:28Hspとなでしこって何?って素で思ったよ。漏れはorz
結構はびこってやがったのねん
0192デフォルトの名無しさん
2006/01/04(水) 17:46:36という意味だろ。
0193デフォルトの名無しさん
2006/01/04(水) 18:12:27僕らはもっと、早く、
出会うべき、ダッタ、のかも、
ウゥン・・・マスオ兄さん
シレナヒ・・・
ダッテ・・・もっと早かったらァ・・・
私ィ、赤チャンだyo^
イイの・・・
イイの・・・
イイ!!
0194デフォルトの名無しさん
2006/01/04(水) 18:33:22すごくいい本だった
中身は scheme で ML 作る本だった
多相型、型推論、CPS変換まで丁寧すぎるぐらいだった
Friedman 本にハズレないっすわ
0195デフォルトの名無しさん
2006/01/04(水) 19:04:33> 今日 Essentials of Programming Language を読了した
> すごくいい本だった
> 中身は scheme で ML 作る本だった
> 多相型、型推論、CPS変換まで丁寧すぎるぐらいだった
> Friedman 本にハズレないっすわ
大学院のとき、輪講でその本やったんだけど、俺、当時CPSで
脱落しました。orz
今でも、継続を使ったコルーチンなど、どうしてこうなるのか理解
できません。
今は、SICPからやりなおしています。EOPLには、機会を見て再挑戦
したいと思います。
0196デフォルトの名無しさん
2006/01/04(水) 19:38:32時が流れても、原点はLispであることを認識することができました。
0197デフォルトの名無しさん
2006/01/04(水) 20:03:15時代が流れても、原点は機械語です。
0198デフォルトの名無しさん
2006/01/04(水) 20:16:08--- 言語処理系開発議論スレ ---
コンパイラ・スクリプトエンジン相談室があまりにアホばっかなんで立てました。
このスレの話題は処理系の実装に関する議論に限定します。
言語の善し悪しなどは遠慮ください。
つまり、実装の議論に直接関わらない限り言語のデザインに関する議論、
もちろんどの言語が優れているだの使われる言語がえらいだの特徴がどうだの
成功失敗だのユーザがどうだのどの言語が起源だのなどなどの議論は禁止。
処理系をどの言語で実装するのがいいだのも禁止。
過疎上等、高S/N比優先でいきましょう。
くだらなくてもにぎわってる方がいいという方にはもっとよいスレがあります↓
関連スレ:
「コンパイラ・スクリプトエンジン相談室」という名の言語比較厨隔離スレ
http://pc8.2ch.net/test/read.cgi/tech/1135082582/l50
0199デフォルトの名無しさん
2006/01/04(水) 20:18:33時代が流れても、原点は二進数の数字です。
0200デフォルトの名無しさん
2006/01/04(水) 20:21:25時代が流れても、原点はチューリングマシンです。
0201デフォルトの名無しさん
2006/01/04(水) 20:27:47時代が流れても、原点はλ計算です。
0202デフォルトの名無しさん
2006/01/04(水) 20:39:45クロージャの実装についてですが例えば、以下のソース
(let ((a 0))
(define hoge (lambda (x) (+ a x))))
を eval する際に、クロージャ hoge をどのようにクラス化
するかについてですが、
トップ環境フレームを top 、矢印は親を指すとして上の例だと
top <- frame1(aを束縛している)
のようにフレームが伸びていて、クロージャオブジェクトは
frame1へのポインタをメンバに持つように作成したとします
で、このクロージャへの呼び出しをするとき、例えば (hoge 10)としたとき
top <- frame2(10を束縛)
のように別フレームが伸びるじゃないですか。
このとき、(hoge 10)を評価するときに必要な環境として2つの連結リスト
top <- frame1
top <- frame2
が二つ必要になる?という見解はあってますか?評価手順としては
x の検索を frame1 に対してかける(見つかる)
a の検索を frame1 に対してかける(見つからない)
a の検索を frame2(クロージャクラスのメンバ変数) に対してかける(見つかる)
を順次探しにいく、という風にするという考え方?で良いのでしょうか
なんか上手く日本語化できなかったorzけど
壮大な勘違いをしている可能性もありそうなのでアドバイス求む
0203デフォルトの名無しさん
2006/01/04(水) 20:40:520204デフォルトの名無しさん
2006/01/04(水) 20:52:31実装に関する質問だったらレベル低くてもOK?
当方このスレにかなり助けられているので相談できなくなるのは寂しい
0205デフォルトの名無しさん
2006/01/04(水) 20:59:23誰も同意しないので、気にするでない。
0206デフォルトの名無しさん
2006/01/04(水) 21:04:09んー、素直にやるなら、hogeの中の評価時には
top <- frame1 <- frame2
ってならない? 内側から探してけば自然にレキシカルスコープに
なると思うけど。
0207デフォルトの名無しさん
2006/01/04(水) 21:14:05俺もそう。
こんなスレのレベルが高くなるわけないだろ。
0208デフォルトの名無しさん
2006/01/04(水) 21:36:59俺なんかこのスレの誰も及ばないくらいレベル高いことを秘匿してるけどな。
0209デフォルトの名無しさん
2006/01/04(水) 23:25:42(let ((a 0))
(define hoge (lambda (x) (+ a x))))
(hoge 10)
だと、3行目ではシンボルhogeに値が束縛されてないと思うぞ。
(define hoge #f)
(let ((a 0)) ; frame1
(set! hoge (lambda (x) (+ a x)))) ; frame2
(hoge 10)
たぶん↑のようにしたいんだと思うけど、
この場合だと、letを評価した時点でframe1が作られ、top <- frame1 になり、
lambdaで作られた手続きは top <- frame1 の frame1 部分を参照する。
で、(hoge 10)が評価されたときに frame2 が作られて
top <- frame1 <- frame2 になる。
あとはaを検索するときは上から順に。という感じかな。
top <- frame2 のようなリスト(か何か)も必要になるけど、
これは継続絡みの話だと思う。
0210デフォルトの名無しさん
2006/01/04(水) 23:26:23あとは屑
0211デフォルトの名無しさん
2006/01/04(水) 23:26:28>Lisp起源ニダ
>Ioも実はLispが起源ニダ
Ioじゃないけどそれに近い主張と、
http://shiro.dreamhost.com/scheme/trans/icad-j.html
それに対する反論。
http://shiro.dreamhost.com/scheme/trans/IsPythonLisp-j.html
反論側のほうが説得力あるような。
>LispのS式表記は、声高に、はっきりと、過去半世紀の間拒否されてきた。
まったくだ。
Lisp信者の改宗の話。
http://www.gembook.jp/tsum/page.pys?wiki=How+I+lost+my+faith
0212デフォルトの名無しさん
2006/01/04(水) 23:29:140213デフォルトの名無しさん
2006/01/04(水) 23:33:08最後の記事を実際に見てみると、Lisp信者が改宗した話というよりは、
Lisp信者がLispを絶賛してる話にしか見えないぞ。
0214デフォルトの名無しさん
2006/01/04(水) 23:39:29これだからLisp厨は・・・
0215デフォルトの名無しさん
2006/01/04(水) 23:40:21Lisp厨=アンチLispだったら同意。
0216デフォルトの名無しさん
2006/01/04(水) 23:40:36待つのを諦めたからの提案だと思うけど。
0217デフォルトの名無しさん
2006/01/04(水) 23:41:10これってどういう意味で言ってるのか知らないけど、括弧がネストしすぎると
見難いとかめんどくさいとかなら、Lisp信者でもそう思ってると思うぞ。
0218デフォルトの名無しさん
2006/01/04(水) 23:46:40待ってないで自分で書き込めばいいのにね。
0219デフォルトの名無しさん
2006/01/05(木) 00:04:53THX!! なんとなくわかってきたような。
hoge に束縛された closureオブジェクトは
メンバに top->frame1 のフレームリストをメンバに持っている、と。
で、(hoge 10) という関数呼び出しを評価するとき
hoge はクロージャなので、hoge.env( top->frame1 ) に対して、frame2(10を束縛)を
リストに連結して評価する( top->frame1->frame2 )、と。
もし hoge がプリミティブなら掴んだ環境を持っていないので、
素直に10を束縛したフレーム(frame'とする)を
top に連結して( top->frame' )評価する、ということでしょうかね?
>>209
>あとはaを検索するときは上から順に。
上からというのは最下層からということですか。
top からではないですよね?
ありがとうございました。
0220デフォルトの名無しさん
2006/01/05(木) 00:13:240221デフォルトの名無しさん
2006/01/05(木) 00:36:57そのマクロにしてからが、
http://www.rubyist.net/~matz/20030910.html
>マクロは生産性の向上には有効、わかりやすさにはかなり不利
って言われてたりするわけだが。
0222デフォルトの名無しさん
2006/01/05(木) 00:56:310223209
2006/01/05(木) 00:58:00> 上からというのは
frame2側からね。
> もし hoge がプリミティブなら掴んだ環境を持っていないので…
プリミティブって、トップレベルで定義された手続きの事かな?
1. topを普通のフレームと同じように扱って、
NULL <- top <- frame1 <- frame2 ....
トップベルで定義された手続きはtop環境を参照。
2. topを特別なフレームと考えて
NULL <- frame1 <- frame2 ...
(検索して見つからなかったらtopから検索)
トップレベルで定義された手続きはNULLを参照。
の、どっちかかな。
>>221
個人的には、リストがやたらと扱いやすいことを挙げたい。
>マクロは生産性の向上には有効、わかりやすさにはかなり不利
「構文を言語のユーザが拡張する」という考えに慣れていないだけだと思う。
matz氏自身、Rubyの構文の拡張を何度も行っているが、
Rubyを拡張したことでRubyがわかりづらくなったと本人は言ってないよね?
0224デフォルトの名無しさん
2006/01/05(木) 01:25:28>個人的には、リストがやたらと扱いやすいことを挙げたい。
それは、リスト部分だけ、たいがいのスクリプト言語にある配列のリテラル
みたいに表記できるだけでは不足なの?
あとは簡潔に記述できるクロージャがあれば、(処理を変数などに代入することも
できるんだから)プログラムコードまでS式である必要は薄いんじゃ、って
疑問なんだけど。
>「構文を言語のユーザが拡張する」という考えに慣れていないだけだと思う。
ていうかその考え自体に批判的なんじゃないかなあ。
C++のオペレータオーバロードが、同じ文脈でよく批判されるよね?
Rubyの場合、Matz氏は言語設計者なんだから、拡張しても問題なし、
でもユーザがやるのは許さん、と。
0225デフォルトの名無しさん
2006/01/05(木) 01:43:420226223
2006/01/05(木) 02:52:56> リスト
「後ろ半分だけ実体が共通なリスト」とか、
「変数aの参照しているリストの3番目以降のリストを変数bに参照させたい」とか。
全体から見ると、リストというよりはグラフになるのか。
このスレに沿った話題だと、
構文木をいじったり、クロージャのリストを実装したりが簡単。
> プログラムコードまでS式である必要は薄いんじゃ
マクロを一切使わないなら必要ないんじゃない?
自分の作りたいプログラムを書くのに十分な構文をサポートしている言語が
常にあるなら、と読み替えてもいいけど。
> C++のオペレータオーバロードが、同じ文脈で
その辺の話なら同意。
利点欠点は大体同じだよね。
マクロの利点欠点ははオペレータオーバロードよりもずっと大きいけど。
0227デフォルトの名無しさん
2006/01/05(木) 07:25:37いいんじゃない?生産性が上がればいいんだし。
0228デフォルトの名無しさん
2006/01/05(木) 12:01:40御大ですら自分の好きな言語が一番素敵厨かYo!と思いマスタ(w
0229デフォルトの名無しさん
2006/01/05(木) 12:18:15頭の中でコードを考えてる時はグラフなわけ。
S式だとそれをそのままシンプルに書き下せる感じがする。
そして、Emacsの式単位 (文字単位や行単位でなく) の編集は
頭の中のグラフを直接いじっている感覚がある。
他の構文は、読むときも書くときもいちいち頭の中の
構造と字面とを翻訳してやらないとならないんでかえって面倒。
0230デフォルトの名無しさん
2006/01/05(木) 13:25:03というのを、頭の中では、
(d (c (b (a ... ))))
と考えるんだ、凄い頭だね
0231デフォルトの名無しさん
2006/01/05(木) 13:41:18>a した結果を b して、その結果を c して、その結果を d する
この時点で違ってんじゃないの、Lisp 脳と C 脳では。
0232デフォルトの名無しさん
2006/01/05(木) 13:50:390233デフォルトの名無しさん
2006/01/05(木) 13:52:08計算途中のデータを引っ張りだして、ちょっと修正してまた計算みたいなのを何も考えずに出来る。
0234デフォルトの名無しさん
2006/01/05(木) 14:58:34そっちの方向にネストが深くなるときってのは、だいたい
逆に考えてる。欲しいものが先にあって、最後にdを呼べば
それが得られる、dがその結果を出すためにはcが返す値
が必要で… とトップダウンで。
逆にボトムアップで考えるときはletが深くなる。構造が
見えて来たらどんどん整理するけど。
0235デフォルトの名無しさん
2006/01/05(木) 15:18:04Cでも d(c(b(a(..)))) なんだけど・・・
C++なら、hoge.a().b().c().d() とも出来る(どっちも出来る)が
0236デフォルトの名無しさん
2006/01/05(木) 15:37:37文法の話じゃなくて、「〜して、次に〜する」という手続き的な考え方をしていないんじゃないかって事。
0237デフォルトの名無しさん
2006/01/05(木) 18:14:22あ、それ初めて知った
0238デフォルトの名無しさん
2006/01/05(木) 18:25:13let云々はCで言えば
a_result = a(...);
b_result = b(a_result);
c_result = c(b_result);
d(c_result);
といったやり方だし
これを、S式で書くとグダグダになるが
0239デフォルトの名無しさん
2006/01/05(木) 19:04:44(let ((ra (a x)))
(let ((rb (b ra)))
(let ((rc (c rb)))
(d rc))))
でカーソルが一番最初にある時に、rcを束縛する
let式に行くのは C-M-d C-M-f C-M-f C-M-d C-M-f C-M-f
そのlet式全体をリファクタリングするために外に出したければ
C-M-Space C-M-w でカット。
(a x), (b ra), (c rb) の部分がどんなに複雑になっても
この操作は変わらない。木構造が変わらないからね。
a_result = a(...);
b_result = b(a_result);
c_result = c(b_result);
d(c_result);
でa(), b(), c() の部分が何行にもわたる式になった時に
同じことができるのかい。
0240デフォルトの名無しさん
2006/01/05(木) 19:08:170241デフォルトの名無しさん
2006/01/05(木) 19:12:420242デフォルトの名無しさん
2006/01/05(木) 19:16:25let*ってそのためにあると思ってたんだけど…。
(let* ((a-result (a ...))
(b-result (b a-result))
(c-result (c b-result)))
(d c-result))
使った事ないけどさ。
0243デフォルトの名無しさん
2006/01/05(木) 19:26:420244デフォルトの名無しさん
2006/01/05(木) 20:06:480245デフォルトの名無しさん
2006/01/05(木) 21:30:180246デフォルトの名無しさん
2006/01/05(木) 21:42:14Flexをつかって生成されたものに関してなのですが、
Note that the "flex.skl" scanner skeleton carries no copyright notice.
You are free to do whatever you please with scanners generated using flex;
for them, you are not even bound by the above copyright.
とあるので、生成されたものに関しては著作権表示すらなしに組み込むことが可能であってますでしょうか?
それとも、
This product includes software developed by the University of California, Berkeley and its contributors
この一文はやはりいれておかなければならないのでしょうか?
識者の方々よろしければご教授いただけたらとおもいます。
0247デフォルトの名無しさん
2006/01/05(木) 23:24:120248デフォルトの名無しさん
2006/01/05(木) 23:42:56一応、著作権スレにでもあたってみたら?
0249デフォルトの名無しさん
2006/01/05(木) 23:49:49ツールの方の著作権は関係ないって感じになる。
ライブラリリンクとかで、生成した成果物が、他人の著作物を含むと
ややこしくなるがこの場合そうじゃないしな。
0250デフォルトの名無しさん
2006/01/06(金) 00:14:17その程度なら誰でも想像できるんだけどな
中途半端なカキコ見は混乱のもと
0251デフォルトの名無しさん
2006/01/06(金) 00:29:25はっきり書いてあるようにしか見えんが。
0252デフォルトの名無しさん
2006/01/06(金) 00:56:01俺にもそう読める。246よ著作権表示は一切不要と心得よ
0253デフォルトの名無しさん
2006/01/06(金) 01:23:45みなさま質問に対してのご返答ありがとうございました。
ライセンスは色々とありまして、その中でも、特にツールで生成されたものに対しては扱いが分かりづらいものが
ありまして質問させて頂くに至りました。
コンパイラ・スクリプトエンジンに関連あるFlexについての質問でしたが、微妙にスレ違いだったかもしれません。
そのために気を害してしまった方がおられましたら、お詫び致します。
0254デフォルトの名無しさん
2006/01/06(金) 01:25:310255デフォルトの名無しさん
2006/01/06(金) 03:20:020256デフォルトの名無しさん
2006/01/06(金) 05:58:15俺言語は非難しないが、俺様言語な香具師が来ると痛すぎ
0257デフォルトの名無しさん
2006/01/06(金) 08:06:180258デフォルトの名無しさん
2006/01/06(金) 23:18:40さて、その心は?
0259デフォルトの名無しさん
2006/01/06(金) 23:55:00俺言語は局所的用途の為に作られたもの
俺様言語は自己満足のたまもの。
0260デフォルトの名無しさん
2006/01/06(金) 23:58:22WindowsでJIT作ろうとしたら
void *mem = VirtualAlloc(NULL, size, MEM_COMMIT, PAGE_READWRITE)
memの先にコード書き込む
VirtualProtect(mem, size, PAGE_EXECUTE, &old)
ジャンプする
で良いんでしょうか?
0261デフォルトの名無しさん
2006/01/07(土) 00:46:430262デフォルトの名無しさん
2006/01/07(土) 19:10:16うまい!
あんた、扇子あるよ。
0263デフォルトの名無しさん
2006/01/07(土) 20:11:220264デフォルトの名無しさん
2006/01/07(土) 21:27:15PAGE_EXECUTE
コミット済みページ領域に対する実行アクセス権を有効にします。
このコミット済み領域の読み取りまたは書き込みを行おうとすると、
アクセス違反が発生します。
0265デフォルトの名無しさん
2006/01/08(日) 05:32:27そうだったんか・・・
PAGE_EXECUTE_READ とは別か・・・
0266デフォルトの名無しさん
2006/01/08(日) 23:06:400267デフォルトの名無しさん
2006/01/08(日) 23:30:44===== FORTRAN 77 =====
0268デフォルトの名無しさん
2006/01/09(月) 01:38:260269デフォルトの名無しさん
2006/01/10(火) 23:40:58もうちょっと、かっこいい名前つけられんのかねぇ?
0270デフォルトの名無しさん
2006/01/10(火) 23:51:15還元(reduce)って言葉見つけたとき、酸化還元の還元かとおもったよ。
0271デフォルトの名無しさん
2006/01/10(火) 23:56:400272デフォルトの名無しさん
2006/01/11(水) 00:05:430273デフォルトの名無しさん
2006/01/11(水) 00:42:29日本語力の乏しさを棚に上げて何言ってんだ。
0274デフォルトの名無しさん
2006/01/11(水) 01:05:57例えば?
>>272
じゃ、「リデュース」で。
0275デフォルトの名無しさん
2006/01/11(水) 01:22:050276デフォルトの名無しさん
2006/01/11(水) 03:36:45コンピュータ用語自体変なの多いから気にスンナ
0277デフォルトの名無しさん
2006/01/11(水) 05:21:22for(i=0,i<10,i++,printf("%d\n",i));
といったかんじのことは出来るようになったのですが、
for(i=0;i<10;i++){printf("%d\n",i);}と言った外側にブロックを
持ったマクロは、どうやって実現したらいいか悩んでます。
何かいい参考資料ないでしょうか???
0278デフォルトの名無しさん
2006/01/11(水) 06:05:07ttp://mike-austin.com/blog/2005/10/dylan-macro-system-is-badass.html
0279デフォルトの名無しさん
2006/01/11(水) 08:25:43ありがとうございます。
Dylanですか。初めて聞きました。
結構古い言語なんですね。仕様読んでみます。
使ってみたい気がするのですが、windowsバイナリとか落ちてないのかなぁ。
0280デフォルトの名無しさん
2006/01/11(水) 08:36:56商用の Dylan 処理系がオープンソースになったものがあるよ。
http://www.gwydiondylan.org/downloads/opendylan/
0281デフォルトの名無しさん
2006/01/11(水) 12:53:41ほんとだ。ちょっと探せば見つかるじゃん。orz
ありがとうござます。
Hygieneって書いてあるので、基本的に名前の衝突が回避されていて、
BNFを書くような感じでパターン照合を行うものがDylanのマクロと考えてよいのでしょうか?
パターン照合はやったことがないのですが、
構文解析器の自動生成ができる技術力ないと作れないような気がするのですが。。。
0282デフォルトの名無しさん
2006/01/11(水) 13:27:11Schemeのsyntax-rulesの美しさに萌えろ。S式最強。
0283デフォルトの名無しさん
2006/01/11(水) 14:11:20Schemeのsyntax-rulesが作れれば、そりゃ、もー、うれしいんですけど。
S式だとS式でない場合に比べて、実装が簡単になるのでしょうか?
それだと、うれしいんだけどなぁ。
0284デフォルトの名無しさん
2006/01/11(水) 15:55:15どんな文法を使おうと、結局はツリーにしてマッチや変換をかけるでしょ。
S式の場合は最初からツリーになってるから前半の(どっちかっつうとtrivialな)
ステージが省ける、ってだけじゃないかと。
言語デザイナの立場だと文法も重要なんだろうけど。
0286デフォルトの名無しさん
2006/01/11(水) 20:53:090287デフォルトの名無しさん
2006/01/12(木) 00:51:450288デフォルトの名無しさん
2006/01/12(木) 06:39:51可能か不可能かなら可能でしょう。
使いやすいとかわかりやすいものになるかどうかは別。
0289デフォルトの名無しさん
2006/01/12(木) 08:35:55どうもありがとう。
>>287
Ruby や ECMAScript, Python は acceptable lisp と言われているけど、
マクロを追加すればもっと Lisp の強力さに近付くかなと。
0290デフォルトの名無しさん
2006/01/12(木) 11:28:30自分は、schemeのsyntax-rulesを実装したいのだけど、
わからないので、簡単なソース付きで解説してほしいです。
自分のほしい言語をすべて書いてもらえたら幸せです。
schemeのスレとかで聞いたほうがいいのかなぁ?
>>287>>288>>289
PythonはDylanに似たマクロが入るとかいう噂がある(あった?)ようです。
どんな言語でも適用できそうなので、(よくわかってないのですが)
Dylanのマクロのアイディアはとにかく凄いような気がします。
C用のDylan風マクロとか、Java用のDylan風マクロとかあったら
そりゃもう、うれしいんじゃないかなぁと思います。
0291デフォルトの名無しさん
2006/01/12(木) 11:40:090292トラックバック ★
2006/01/12(木) 21:15:09[タイトル] 萌え言語を作ろう!
[発ブログ] プログラム技術@2ch掲示板
http://pc8.2ch.net/test/read.cgi/tech/1131442510/l50
[=要約=]
日本語で書ける言語では「ひまわり」なんてのがありますが
いまいち使いづらいというか、萌えないw
ということで、萌え萌えな言語を作ってみようと言う企画です。
0293デフォルトの名無しさん
2006/01/12(木) 22:06:16ハァハァ{
…
}
の機能
while(1){
...
}
0294デフォルトの名無しさん
2006/01/12(木) 23:04:56萌えもハァハァも一緒だよ派
0295デフォルトの名無しさん
2006/01/13(金) 00:30:47とかやると、
for (;_;) 仕事;
となるわなw
萌えないが、実感はむしろこっちのほうが(泣)
0296デフォルトの名無しさん
2006/01/13(金) 00:42:10while (T_T) 仕事;
0297デフォルトの名無しさん
2006/01/13(金) 18:49:31while(ハァハァ) 言語スレ
0298デフォルトの名無しさん
2006/01/13(金) 23:33:15・せわしない。。。
・なまけた。。。
0299デフォルトの名無しさん
2006/01/14(土) 00:03:57bool T_T = true;
for(;A;) wile(T_T) int y=-(T_T);
0300デフォルトの名無しさん
2006/01/14(土) 10:39:00assert ( a == b ) → must( a == b )
0301デフォルトの名無しさん
2006/01/14(土) 11:31:50はそのまま読めるけど、mustはどう読んだらいいんだ?
0302デフォルトの名無しさん
2006/01/14(土) 13:16:28should ( a == b ) とか must( a == b )
0303デフォルトの名無しさん
2006/01/14(土) 15:18:27英語的におかしくないか。
! 演算子みたいに must が演算子だとして a must== b ならわかるが。
0304デフォルトの名無しさん
2006/01/14(土) 15:25:59なんじゃないの。
0305デフォルトの名無しさん
2006/01/14(土) 15:42:500306デフォルトの名無しさん
2006/01/14(土) 15:50:520307300
2006/01/14(土) 16:14:15英語的にどうこうというか、
自分的にはこっちのほうが直感的かなと思っただけ
初心者に assert を教えたらピンとこなさそうな顔してたもんだから
0308デフォルトの名無しさん
2006/01/14(土) 16:24:420309デフォルトの名無しさん
2006/01/14(土) 18:15:19assertって単語になじみが無いだけだ、辞書引かせてからassertを使った例文を毎日一個5営業日続ければ覚える。
0310デフォルトの名無しさん
2006/01/14(土) 18:37:19must.be.A.eq.B
が一番すんなりと入るかな?
0311デフォルトの名無しさん
2006/01/14(土) 19:04:13zettai(a == b)
が一番すんなりと入るわ。
0312デフォルトの名無しさん
2006/01/14(土) 19:05:530313300
2006/01/14(土) 19:41:09a == b 「だったら」警告するのか
a == b 「でなければ」警告するのか。
must とか(あるいは311,312 でもいいけど)だと、
明らかに後者が連想されるんじゃないかなと思った
0314デフォルトの名無しさん
2006/01/14(土) 19:57:210315デフォルトの名無しさん
2006/01/14(土) 20:01:060316デフォルトの名無しさん
2006/01/14(土) 20:01:450317デフォルトの名無しさん
2006/01/14(土) 20:03:01prolog の fail みたいな。
0319デフォルトの名無しさん
2006/01/14(土) 20:43:020320デフォルトの名無しさん
2006/01/14(土) 20:43:14正確には「もしここに来たら(a == b)がtrueであると断言する」と思えばいい。
assert falseは「もしここに来たらfalseがtrueであると断言する」、
つまり「ここには来ることはありえないと断言する」。
0321デフォルトの名無しさん
2006/01/14(土) 20:59:13断言する(a == b)
0322デフォルトの名無しさん
2006/01/14(土) 21:02:320323デフォルトの名無しさん
2006/01/14(土) 21:12:130324デフォルトの名無しさん
2006/01/14(土) 21:56:47たまたま 0x80 より大きいだけ
0325デフォルトの名無しさん
2006/01/14(土) 22:15:08アフォ来た〜〜〜!!
0326デフォルトの名無しさん
2006/01/15(日) 01:00:218バイトって何だ8バイトって。
実際には322の言うように、通るように作れば通るし、今時flexもbisonも
8bitは通す。マルチバイト文字というと、SJISだと0x5c問題が出てくる
可能性は歩けど、それはlexerのつくりの問題だよな。
0327デフォルトの名無しさん
2006/01/15(日) 23:35:26マトン
0328デフォルトの名無しさん
2006/01/15(日) 23:41:000329デフォルトの名無しさん
2006/01/15(日) 23:41:510330デフォルトの名無しさん
2006/01/15(日) 23:57:170331デフォルトの名無しさん
2006/01/16(月) 00:59:16というよりは
オー トマトン
何だが。
0332デフォルトの名無しさん
2006/01/16(月) 04:17:470333デフォルトの名無しさん
2006/01/16(月) 05:17:470334デフォルトの名無しさん
2006/01/16(月) 07:13:020335デフォルトの名無しさん
2006/01/16(月) 22:02:30automate(自動)+ton(〜風)、「自動っぽいもの」くらいの意味。
0336デフォルトの名無しさん
2006/01/16(月) 23:15:29こらこら。だますんじゃない。
0337デフォルトの名無しさん
2006/01/16(月) 23:29:550338デフォルトの名無しさん
2006/01/17(火) 01:33:13別にどうでもいいけど。
0339デフォルトの名無しさん
2006/01/17(火) 23:22:03昔食肉工場の機械が、簡易プログラムのような物で動いていて
たまたま羊毛の盛んな時期と重なった
0340デフォルトの名無しさん
2006/01/18(水) 00:58:17ツマンネ
しかしあれだな、Lisp叩きやRuby叩きの話が出て来ると、すぐ「実装の話をしろよ!」という
主張が出て来るが、実装の話が好きな人達は、スレが閑散としてても実装の話はしないんだよな。
0341デフォルトの名無しさん
2006/01/18(水) 01:14:520342デフォルトの名無しさん
2006/01/18(水) 01:26:06何一つ自分からネタ振れない輩が何を偉そうに。
つか、俺はassertやオートマータの話なんかしてないし。
だいたい、ここじゃちょくちょく構文解析+αのレベルで「間違い」が書き込まれる
ことがあるんだが、自称凄い人達はその訂正もしてくれないのな。
0343デフォルトの名無しさん
2006/01/18(水) 08:54:410345デフォルトの名無しさん
2006/01/19(木) 06:52:05もう少しお待ち下さい。
0346342ではないけれど
2006/01/19(木) 21:35:50俺はレベルの低い実装の質問を書き込んでいたものですが
342の人は多分質問に答えてくれた人なんじゃないかという
気がしています。
逆に意地悪な感じで初心者を馬鹿にしている人達は
初心者の質問が書かれるたびに
「このスレ〜以外は意味ない」とかそんなんばかりでしょう。
そういうのはレベルが低くはないんですか?
0347デフォルトの名無しさん
2006/01/19(木) 22:39:300348デフォルトの名無しさん
2006/01/19(木) 22:59:51VMや構文木直辿りのインタプリタしかやったことないのでそろそろコンパイラにチャレンジです。
0349デフォルトの名無しさん
2006/01/19(木) 23:16:32えーと、ギャグで言ってるんだよね?
0350デフォルトの名無しさん
2006/01/19(木) 23:23:56ひどく片手落ちな気がしてたよ
0351デフォルトの名無しさん
2006/01/19(木) 23:35:30どのマシンがターゲットなんだかワカランのじゃ話にもならないし、少しだけ乗せるとアンチとか出てきて喧嘩になるし
ろくな事ないからじゃないの?
0352デフォルトの名無しさん
2006/01/19(木) 23:42:03マカーでさえもう文句いわねえ
とおもったが、このスレの二大言語(笑)の信者は
蚊帳の外に置かれてしまうかw
0353デフォルトの名無しさん
2006/01/19(木) 23:47:30でIA32の場合インテルに資料請求するか秋葉あたりでデータシート買うって言う選択肢な訳だけど。
0354デフォルトの名無しさん
2006/01/19(木) 23:51:230355デフォルトの名無しさん
2006/01/19(木) 23:52:08>>353
例のpdfじゃ不足?
0356デフォルトの名無しさん
2006/01/20(金) 02:46:07でどうでしょう
0357デフォルトの名無しさん
2006/01/20(金) 02:53:46http://opensolaris.org/os/community/power_pc/powerpc_doc_library/
0358デフォルトの名無しさん
2006/01/20(金) 05:00:59> 択肢な訳だけど。
それ、いつの時代の話?
ほとんどのCPUの命令セットはWebから落せる。
しかも IA32 の場合、日本語に訳されてる。
http://www.intel.com/jp/developer/download/
にある
IA-32 インテル アーキテクチャ・ソフトウェア・デベロッパーズ・マニュアル
からどうぞ。
0359デフォルトの名無しさん
2006/01/20(金) 05:29:13紙のマニュアルの方が扱いが楽だからなぁ。
プリントすると紙質の関係でつらいからね。
0360デフォルトの名無しさん
2006/01/20(金) 07:49:40知らなかっただけなのに、言い訳苦しすぎですよ先輩。
0361デフォルトの名無しさん
2006/01/22(日) 12:39:02リンゴに続けるか?
0362デフォルトの名無しさん
2006/01/22(日) 13:30:05どれ?
0363デフォルトの名無しさん
2006/01/22(日) 14:24:41KWSK
0364デフォルトの名無しさん
2006/01/22(日) 14:25:30スモールコンパイラの制作で学ぶプログラムのしくみ?
0365デフォルトの名無しさん
2006/01/22(日) 19:48:58リンゴ本はその通り。
別名綾タソ本
0366デフォルトの名無しさん
2006/01/22(日) 23:16:51一時変数・局所データとか考えると色々と面倒……
一時変数については呼び出し側にスタック作っといて、呼び出され側が
勝手に取り出すようにするのが簡単かな?スタックマシンにすると構文木
を解釈するのが面倒臭そうだし……
0367デフォルトの名無しさん
2006/01/24(火) 00:04:05作ろうとしているのが機械語吐くコンパイラなのか、バイトコード吐くのか、
Rubyみたいに解析木を実行するタイプなのかもわからんでは何も言えんわな。
>一時変数については呼び出し側にスタック作っといて、呼び出され側が
>勝手に取り出すようにするのが簡単かな?
呼び出し側と呼び出され側でスタックが違うの?
>スタックマシンにすると構文木を解釈するのが面倒臭そうだし……
意味わかんねえっす。どっちみち構文木は解釈しなきゃいけないのでは。
0368366
2006/01/24(火) 00:46:10おお、すみませぬ。インタープリタ作ろうとしています。
まずの目標はRubyみたいな解析木を実行するタイプですね。
>呼び出し側と呼び出され側でスタックが違うの?
一時変数の管理責任と、手続呼び出しの動作主体をどのように割り振ろうかな……
と思いまして。前述の例だと
一時変数の管理責任:呼出側 -> スタック作って管理
動作主体:呼び出され側 -> 駆動はこちら
とかを考えています。
>意味わかんねえっす。どっちみち構文木は解釈しなきゃいけないのでは。
確かにそうですな……知恵が回らなかった……
結局、
今日一日考えた結果、スタックマシンの連鎖みたいなのを作ってみることにしました。
0369デフォルトの名無しさん
2006/01/24(火) 01:29:56実行環境フレームとか言う奴の事さしてんの?>>スタックマシンの連鎖
0370366
2006/01/24(火) 02:47:12(実装の手を抜くために)駆動ごとにスタックマシンを付けた感じ。
0371デフォルトの名無しさん
2006/01/24(火) 20:35:38おれは第三世
0372デフォルトの名無しさん
2006/01/25(水) 01:20:340373デフォルトの名無しさん
2006/01/25(水) 01:42:38なんでそこでLupinと言ってぼけないだよ
0374366
2006/01/25(水) 22:18:52オーバーロードでひどい目に会いそうですな……
取りあえずはスタックのリストを作って回避しようかと考えていますが、他にどんな
アイディアがあります?
0375デフォルトの名無しさん
2006/01/25(水) 22:24:520376デフォルトの名無しさん
2006/01/25(水) 23:18:18メソッド名とシグニチャが結びついてれば実行時解釈でも問題ないしね。
0377366
2006/01/25(水) 23:20:36でも、折角だから多値戻しを実装してみたい気もするんですよね……
Rubyみたいに配列を戻す手もありますが。
0378デフォルトの名無しさん
2006/01/25(水) 23:37:200379366
2006/01/26(木) 00:06:21仕事だったら素直にC++使いますし。
まあ、未だに駆動が回んなくて鬱ですが…… “1+1”ができるのはいつになることやら……
0380デフォルトの名無しさん
2006/01/26(木) 18:25:170381(ぱ)
2006/01/26(木) 21:14:22Rubyのような解析木実行タイプの言語を作ろうとしていて、かつ、独自スタックも
使うつもりなら、うちのcrowbarなんかは参考になりませんか?
http://kmaebashi.com/programmer/devlang/
>>368
>一時変数の管理責任:呼出側 -> スタック作って管理
>動作主体:呼び出され側 -> 駆動はこちら
ここで言っている「一時変数」がローカル変数のことであれば、管理責任は
呼び出され側にあるのでは。呼び出し側は呼び出され側のローカル変数を
知らないからです。
引数についてであれば、呼び出し側で領域を確保するにしても、別段それを
スタックに積む必要はないように思います。
crowbarの場合、駆動レコードごとに、変数名と値の対応表を持っています
(ver.0.3以降は、クロージャの実現のためにスコープチェーンを持っているので
ちょっとややこしいですが)。関数呼び出しでは、呼び出し時に、呼び出され側の
駆動レコード(CRB_LocalEnvironment)を作成し、その中に、ローカル変数として、
実引数の値を突っ込んでいるだけです。
引数やローカル変数の領域をスタックに確保するという実装ももちろん考えられますが
(crowbarでは代入により実行時にローカル変数が作られるのでそれはできなかった)、
その場合、引数は呼び出し側で積むことになるのでは。
いずれにしても、関数呼出しごとにスタックを持つ必要なないと思うのですが、
どうでしょうか。crowbarは演算用の独自スタックを持っていますが、スタックは1本です。
まあ、crowbarのスタックは足りなくなるとrealloc()するので、そのへんの効率低下を
嫌って関数呼び出しごとに持つ、というのならわかりますけど。
0382(ぱ)
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については
不可能ですよね。
0383366
2006/01/27(金) 00:10:43情報サンクスです。考え方のところとか色々と参考になります。
ただ、自分の目指しているのは型なし&プロトタイプ指向ですので、やっぱりちょっと
ポイントが違うようですね。まあ、その違いを見るのも楽しいですが。
>ここで言っている「一時変数」がローカル変数のことであれば、
いえ、関数の戻り値ですね。最初は関数の戻り値を次の継続に直接渡そうかと
考えていたのですが、そうすると今の自分のアイディアだと(継続のずっと先にある)
ブロックのローカル変数から実引数を取ってくるのが面倒にだったので、少し悩んでました。
スコープチェーン作って管理するのもいいのですが、もっと簡単な方法が無いかな……と
いうことで、取りあえずはスタックマシンを利用する方法でトライすることにします。
>いずれにしても、関数呼出しごとにスタックを持つ必要なないと思うのですが、
call/ccを実装したいと思っているのですが、その都度スタックを保存するのも面倒だし
いっそのこと全部の継続にスタック持たせちまえ、という乱暴なアイディアから来ています。
……まだ実装できていないので、本当にうまくいくのか不明ですが……
0384デフォルトの名無しさん
2006/01/27(金) 00:27:50なぜ既にあるものを使わん?
アフォ?
0385366
2006/01/27(金) 00:37:09既にある言語では無いから作っているんだけど……Schemeは近いものを感じるけどね。
あと、勉強という意味では車輪の再発明も重要だよ。
0386デフォルトの名無しさん
2006/01/27(金) 02:00:33勉強になってるか疑問だな。
>ただ、自分の目指しているのは型なし&プロトタイプ指向ですので、やっぱりちょっと
>ポイントが違うようですね。まあ、その違いを見るのも楽しいですが。
形無し&プロトタイプ指向だからポイント違う?
何言ってんだお前。
0387366
2006/01/27(金) 02:45:51> 勉強になってるか疑問だな。
あら、そう? 1+1てけっこう大変だよ?
まあ、継続とか移譲とかグラフとかオートマトンとか、回り道が多いちゃ多いがね。
それもまた勉強。
>形無し&プロトタイプ指向だからポイント違う?
>何言ってんだお前。
どういう意味?
0388デフォルトの名無しさん
2006/01/27(金) 09:10:54一年以上で未だ1+1もできないほど頭悪いんだろ?
これから先何年もアホ質問書き込まれるかと思ったらゾッとする。
0389デフォルトの名無しさん
2006/01/27(金) 12:24:31ヒープに置くって手もあるが。それだとcall/ccは駆動レコード
チェインの頭の掴んでおくだけだよ。
性能を気にしてるわけでもなさそうだし、駆動レコードごとに
スタックなんて面倒なことをなぜするのかよくわからない。
0390デフォルトの名無しさん
2006/01/27(金) 13:54:360391デフォルトの名無しさん
2006/01/27(金) 13:58:48どうして車とCDRに発想が結びつくの?
0392デフォルトの名無しさん
2006/01/27(金) 14:28:070393デフォルトの名無しさん
2006/01/27(金) 14:39:340394デフォルトの名無しさん
2006/01/27(金) 17:54:480395デフォルトの名無しさん
2006/01/27(金) 18:21:20しらないけどcarとcdrだからじゃない?
0396(ぱ)
2006/01/27(金) 20:21:31>ただ、自分の目指しているのは型なし&プロトタイプ指向ですので、やっぱりちょっと
>ポイントが違うようですね。まあ、その違いを見るのも楽しいですが。
crowbarは思いっきり型なし&プロトタイプベースのつもりですが。
>いえ、関数の戻り値ですね。最初は関数の戻り値を次の継続に直接渡そうかと
>考えていたのですが、そうすると今の自分のアイディアだと(継続のずっと先にある)
>ブロックのローカル変数から実引数を取ってくるのが面倒にだったので、少し悩んでました。
継続をやりたいということ自体初耳なわけですが。
継続は詳しくないので以下見当外れならすみませんですが、
「Rubyみたいな解析木を実行するタイプ」で、解析木を再帰で辿っているとすれば、
「Cのスタックどうするの?」という疑問が出てきます。
「関数の戻り値を次の継続に直接渡そう」ということだから、CPS変換を前提にしている?
だとすればそれはもう「Rubyみたいな解析木を実行するタイプ」とは言えないのでは。
>>389
関数内での、計算途中の値を積んでおくスタックのことなんじゃないでしょうか。
0397デフォルトの名無しさん
2006/01/27(金) 22:07:07yacc触りはじめてその日でできたよw
0398デフォルトの名無しさん
2006/01/27(金) 22:27:400399デフォルトの名無しさん
2006/01/27(金) 22:43:00コアな部分に限れば仮想マシンとコンパイラそれぞれ一日で書けるよ。
そしたら作りたい俺様言語で何をどうするかも少しは見えてくるんじゃね?
0400デフォルトの名無しさん
2006/01/27(金) 22:45:01うちの大学は字句解析だったよ…。
0401デフォルトの名無しさん
2006/01/27(金) 23:53:04漏れが最初にやったのは逆ポーランド式の理解だった・・・懐かしいな
0402デフォルトの名無しさん
2006/01/28(土) 00:42:37・yacc/lexまたはbison/flexで独学
・大学や専学でコンパイラ/インタプリタの講義
って感じなのかな?
0403デフォルトの名無しさん
2006/01/28(土) 00:43:460404デフォルトの名無しさん
2006/01/28(土) 00:58:280405デフォルトの名無しさん
2006/01/28(土) 01:02:410406366
2006/01/28(土) 04:22:49>389
今作っている実装だと、駆動レコードチェイン+駆動レコード内のスタックといった
感じにしています。>396の指摘通りですね……と言っても詳しく説明していないから
わかんないよね。ごめん
>396
>crowbarは思いっきり型なし&プロトタイプベースのつもりですが。
失礼しました。まだ読み込んでいないので……
>「Rubyみたいな解析木を実行するタイプ」で、解析木を再帰で辿っているとすれば、
>「Cのスタックどうするの?」という疑問が出てきます。
今のところ、Cの関数処理プロセスに頼らない(再帰を使わない)で、
・解析木から継続の連鎖を作る
・継続を駆動する
という駆動を外部からループで回そうとしています。
>399
そうなんだけど、作りたいのはSchemeじゃないし、Schemeからちょっと離れているし。
……とはいっても、練習に作ってみるのもいい勉強かな……
>388
はあ。
0407デフォルトの名無しさん
2006/01/28(土) 04:27:43その恐ろしい知ったかぶりに愕然とする
0408デフォルトの名無しさん
2006/01/28(土) 04:45:280409デフォルトの名無しさん
2006/01/28(土) 06:12:160410デフォルトの名無しさん
2006/01/28(土) 08:15:29そう? このスレの伝統だと思ってた。
0411デフォルトの名無しさん
2006/01/28(土) 10:56:44経験ない人が独学でやるには、1年はちょっとキツ過ぎじゃないか? とか擁護してみる。
0412デフォルトの名無しさん
2006/01/28(土) 11:08:31CSのバックグラウンドあってOOにドップリつかった人がやり始めれば理解するのに1日かからないだろうし、逆にこれからプログラミングを始めますって人には1年じゃ無理だろうし。
極端に言えばね。
一口に何日で理解したとか何年かかっても理解できないとかから能力を量ってしまうのはナンセンスだとは思う。
0413デフォルトの名無しさん
2006/01/28(土) 11:18:12if(strcmp(str,"1+1"))
printf("2\n");
0414デフォルトの名無しさん
2006/01/28(土) 11:38:52情報サンクスです。考え方のところとか色々と参考になります。
ただ、自分の目指しているのは型なし&プロトタイプ指向ですので、やっぱりちょっと
ポイントが違うようですね。まあ、その違いを見るのも楽しいですが。
0415デフォルトの名無しさん
2006/01/28(土) 12:32:42> 今のところ、Cの関数処理プロセスに頼らない(再帰を使わない)で、
> ・解析木から継続の連鎖を作る
それをCPS変換というんじゃ…
でも素直にCPS変換したらスタックなんて出てこないと思うんだけど
(「計算途中の値」も全て継続への引数になる)。
それとも複数の引数を渡す際に、既に計算した引数の値を一時保存
しておくエリアってことかな。それを「スタック」と呼ぶのはどうかと
思うが (FILOである必要がないから)。
スタックは、普通の関数呼び出し→リターンに特化した一種の最適化
なんだよ。>>406 が何か特別な最適化のアイディアを試したいなら
別だが、原理を理解するために書いているなら、まず基本的な
CPS変換→実行系を動かしてみることをお薦めする。判断に迷うところは
とりあえず簡単に実装できるほうで書いてみる。書いてみないとわからない
ことってたくさんあるからね。とにかく動かしてから、別のアイディアを
試してみればいい。
0416デフォルトの名無しさん
2006/01/28(土) 12:58:32そうだよね……自分の場合は駆動に引っ掛かっています。オブジェクトとメソッドを
等価に扱おうとして、『どうやって駆動すりゃいいの?』というところで散々悩んでいます。
あとは名前解決とか変数呼び出しとか……
>412
OOにはけっこうドップリ漬かっているんですけどね。
ここまで彷っているのは『当たり前と思っていた駆動とか関数呼び出しが、いざ
やってみると全然当たり前じゃなかった』というのが大きいですかね。
>407, 413, 414
へえ?
0417デフォルトの名無しさん
2006/01/28(土) 13:16:19>それをCPS変換というんじゃ…
……そうだった。
> でも素直にCPS変換したらスタックなんて出てこないと思うんだけど
最初は素直にCPS変換していたんですけど、レキシカルスコープやろうとしたときに
(オレ言語のアイディアが邪魔して)うまくアクセスリンクが処理できなかったので、
スタック……というか単なるリストも併用する形を検討しています。
> まず基本的なCPS変換→実行系を動かしてみることをお薦めする
やっぱりそっちの方が近道かな……もうちょっと悩んでみます。
0418366
2006/01/28(土) 13:38:37情報サンクスです。CPS変換のところとか色々と参考になります。
ただ、自分の目指しているのはCの関数処理プロセスに頼らない(再帰を使わない)ですので、やっぱりちょっと
ポイントが違うようですね。まあ、その違いを見るのも楽しいですが。
0419デフォルトの名無しさん
2006/01/28(土) 13:41:57そろそろ名無しに戻るか。
>418
ふうん?
0420デフォルトの名無しさん
2006/01/28(土) 13:42:19ふうん?
0421デフォルトの名無しさん
2006/01/28(土) 13:48:08>ただ、自分の目指しているのは型なし&プロトタイプ指向ですので、やっぱりちょっと
>ポイントが違うようですね。まあ、その違いを見るのも楽しいですが。
とか言ったのが一番面白かった。最高にバカ丸出しで。
何か言われたら、はあ?とかへえ?とかふうん?とか、
何か言い返さないと気がすまないってのもポイント高し。
0422デフォルトの名無しさん
2006/01/28(土) 13:50:38で?
0423デフォルトの名無しさん
2006/01/28(土) 13:58:5410ポイントアップ
0424デフォルトの名無しさん
2006/01/28(土) 17:51:310425デフォルトの名無しさん
2006/01/28(土) 17:55:29ただし、技術は(ry
0426デフォルトの名無しさん
2006/01/28(土) 18:08:160427デフォルトの名無しさん
2006/01/28(土) 18:52:11PGの四大欲求の一つである、言語の作成をやってるわけだし
OSと言語とファイルシステムとAIで良かったんだっけ?
0428デフォルトの名無しさん
2006/01/28(土) 19:03:384 番目に来るのは、Emacs とか Smalltalk みたいな「環境」じゃないかな。
0429デフォルトの名無しさん
2006/01/28(土) 23:43:42アフォ?
0430デフォルトの名無しさん
2006/01/28(土) 23:48:460431デフォルトの名無しさん
2006/01/28(土) 23:58:480432デフォルトの名無しさん
2006/01/29(日) 00:06:410433デフォルトの名無しさん
2006/01/29(日) 00:50:20とかの方が
0434デフォルトの名無しさん
2006/01/29(日) 01:50:220435デフォルトの名無しさん
2006/01/29(日) 01:55:090436デフォルトの名無しさん
2006/01/29(日) 01:58:33願望を持つ奴は多いと思う。
ゲーム、言語、OS、AIだろう。
0437デフォルトの名無しさん
2006/01/29(日) 06:09:51計算機科学の実情についてはよく分かってるね。
http://www.ritsumei.ac.jp/se/~takayama/MathEssays/essays.html
>>428
どうでもいい話だけど、現代においてはOSこそ「環境」ではないのかな。
0438デフォルトの名無しさん
2006/01/29(日) 06:23:47この人は自分が高いレベルにいすぎて、考え方の基準が高すぎるね。
確かに数学者を目指すレベルからすれば、計算機科学はおちこぼれが
流れる分野なのかもしれないが、一般の高校生から見れば
やっぱり、数学が必要な学科だよ。
単位とるにも数学的なものの考え方が必要な科目ばかりだしね。
一般の高校生の99%は大学でどちらかと言えば数学嫌い
になるだろうし。
一般の高校生のレベルと数学者のレベルを混同してるように見える。
0439デフォルトの名無しさん
2006/01/29(日) 06:30:44レベル低くも見えるだろ。
それでもそこにいる学生は相対的に数学が得意で好きだった学生
なんだということが理解できないんだろうな。
0440デフォルトの名無しさん
2006/01/29(日) 09:23:250441デフォルトの名無しさん
2006/01/29(日) 15:33:57一度数学の講義を受けないとそもそも数学の必要性に気付けない罠。
0442デフォルトの名無しさん
2006/01/29(日) 15:41:09ああなるほど、ようやく分かった
人工無能の事ではなく、ホントの人格の事だったのか
人間の場合は四つの判断力を持ってるからな。
直感と理性の再現だけならどうにかなるかもしれないが、
感情と欲求の再現となると、なかなか難しいだろな
0443デフォルトの名無しさん
2006/01/29(日) 16:30:38PGの3第欲求
(1)OS
(2)言語
(3)ハーレム
この辺りが本当の所だろう。
0444デフォルトの名無しさん
2006/01/29(日) 16:34:410445デフォルトの名無しさん
2006/01/29(日) 19:55:350446デフォルトの名無しさん
2006/01/29(日) 20:06:05OSも言語も興味ないやつはいくらでもいそうだけどな。
0447デフォルトの名無しさん
2006/01/29(日) 20:15:58(2)酒
(3)ハーレム
0448初心者
2006/01/29(日) 21:13:56Yaccとかで論理式の短絡評価を行う常套手段はどのようなものでしょうか?
例えば、if(a==b||c==d) でa==bが確定するとc==dの評価はスキップ可能ですが、
Yaccとかだと、先にa==bとc==dが認識されてしまうと思うのです。
0449デフォルトの名無しさん
2006/01/29(日) 21:53:31yaccが生成するのは構文解析器。
意味解析は通常は構文解析で構文木を作った後のステップであって、yaccはやってくれません。
[文字列]→字句解析→[トークン列]→構文解析→[構文木]→意味解析→[一時コード]→最適化→[ましなコード]→コード生成→[出力コード]
というように道のりは長い。
yaccがやってくれるのは構文解析だけ(でも構文解析は最適化の次に面倒くさい部分なので大助かり)。
0450デフォルトの名無しさん
2006/01/29(日) 23:39:37それだ
0451デフォルトの名無しさん
2006/01/31(火) 00:42:32そのプログラムではアクションの中で計算もやっちゃってることが多いから
>>448 のように思ってしまうのも無理はないのかも。
制御構造を持つちゃんとしたプログラミング言語を作ろうと思ったら、
yaccのアクションでは解析木を作るだけにしておいて、評価は後で行います。
0452448(初心者)
2006/01/31(火) 02:22:55そうでしたか。奥が深いですね。
一瞬、言語の仕組みが分かったような錯覚をしましたが、
本格的なものと電卓的なものとでは、ずいぶんとギャップがあるということが
わかりました。
ありがとうございました。
0453デフォルトの名無しさん
2006/01/31(火) 02:33:120454デフォルトの名無しさん
2006/01/31(火) 02:36:00その錯覚はあながち間違いじゃないよ。
449で道のりは長いとか書いちゃったけど、実際には構文木まで作れれば終わったようなもんだし。
あとはその周辺の理論的な考察とか最適化の手法は好きなように学んだらいいだけ。
0455デフォルトの名無しさん
2006/01/31(火) 07:15:12多分ある。というかC#でコンパイラ作るみたいな本がなかったっけか。
0456デフォルトの名無しさん
2006/01/31(火) 12:20:28たしかANTLRが対応してたような気が
0457448(初心者)
2006/01/31(火) 23:15:15どうもです。すこしづつ勉強して行きたいと思います。
(老後の趣味です。ハハハ)
ところで、Yaccってコンパイラコンパイラ等と呼ばれたりもしますが、
結構誇張された言い方とも受け取ったのですが、言語専門家の方は
どのように感じますか?
(技術的な話でなくてすいません。)
0458デフォルトの名無しさん
2006/01/31(火) 23:30:380459デフォルトの名無しさん
2006/02/01(水) 01:12:13パーサジェネレータの方がしっくり来る
0460デフォルトの名無しさん
2006/02/01(水) 02:09:030461デフォルトの名無しさん
2006/02/01(水) 02:16:09移動不可なデータ(ロックとか)ってどう扱ってるのでしょうか。
何かおいしい資料(論文とか)ありましたら教えて下さい。
0462デフォルトの名無しさん
2006/02/01(水) 06:49:40例えば、移動不可データ専用の予備領域を取っておくとか
0463デフォルトの名無しさん
2006/02/01(水) 10:08:04質問者にとっては初めての質問でも、答える方は3度目、4度目というのが当たり前。
日常では温厚な人間でも切れ気味になる。顔が見えりゃいいんだけどね。
おれは一度目にした質問にはレスしないことにしている。
0464デフォルトの名無しさん
2006/02/01(水) 11:48:51のインクリメンタルガベコレの説明ですが、
GCが処理しているカレントオブジェクトをプログラムが変更しちゃう場合が
言及されていないのですがまさにその場合が問題である気がします。
カレントオブジェクトが保持する別オブジェクトへの参照のうち、既に処理
した参照が書き換えられるとおかしくなると思うんですが。
0465デフォルトの名無しさん
2006/02/01(水) 20:10:10どうもありがとう。後で思いついたんですが、世代別なら一番古い世代に置くというのも手ですね。
0466デフォルトの名無しさん
2006/02/01(水) 21:42:14ヒント:ルサンチマン
0467デフォルトの名無しさん
2006/02/01(水) 22:19:13ハツモノでもあんたのレスはいらんよw
0468デフォルトの名無しさん
2006/02/01(水) 23:38:35俺もちゃんと読んでないけどひとまず貼っとく。
http://www.nminoru.jp/~nminoru/java/cms/concurrent_mark_sweep.html#45
0469デフォルトの名無しさん
2006/02/02(木) 00:59:19>464
GCが処理しているカレントオブジェクト
灰色
カレントオブジェクトが保持する別オブジェクトへの参照のうち、既に処理した参照
灰色 -> 黒 または
灰色 -> 灰色
灰色 -> 灰色については言及されていないけど、どちらの種類のリンクともうまく処理されます。
0470デフォルトの名無しさん
2006/02/02(木) 01:46:04カレントオブジェクトに参照A,B,Cがあってこの順で処理するとして、
Aをキューに追加して灰色にした後、Bを処理しようとしているときに
別プログラムがAを白への参照に書き換えてしまったら?
0471デフォルトの名無しさん
2006/02/02(木) 23:59:03ごめん、ちょっと勘違いしていたみたい。
・カレントオブジェクトの処理(参照先の灰色化 & 参照元の黒化)はアトミックに処理する
・カレントオブジェクトが参照された場合、処理を中断してキューの最後に持ってくる
・カレントオブジェクトは黒と同様に処理する
あたりはどう?
0472デフォルトの名無しさん
2006/02/03(金) 00:49:26最後でしょうか。つまりこの条件においては黒→白取り付けと同様に考える
(のでその後に書いてある各手法のようなバリアを張る)と。
前二者はオーバーヘッドが重すぎますよね。
このページ、過渡状態を無視せずにもうちょっと厳密に書いてくれていれば
よかったんですけどねえ。
0473デフォルトの名無しさん
2006/02/04(土) 01:50:29特別扱いしなくて済むかな?
0474デフォルトの名無しさん
2006/02/04(土) 02:13:510475デフォルトの名無しさん
2006/02/04(土) 02:48:08処理中のカレントオブジェクトが
「それが参照している先は必ず灰色か黒」という黒の定義に反することになるのが
気持ち悪い。
0476デフォルトの名無しさん
2006/02/04(土) 10:51:06そのページはマルチスレッドは考えてないでしょ。
シングルスレッドなら普通 >>471 の 1 にするかと。
0477デフォルトの名無しさん
2006/02/04(土) 13:02:40アホかお前
0478デフォルトの名無しさん
2006/02/04(土) 17:24:37黒の定義を変えるヨロシ
「GCから『それが参照している先は灰色か黒しか存在しない』と認識されるオブジェクト」
かな?
0479デフォルトの名無しさん
2006/02/07(火) 00:59:07生きているオブジェクトの数だけに比例する時間がかかるGCは
メモリを大きく取ることでいくらでも1セルあたりのGCコストを減らせますよね。
だからGCはスタックアロケーションよりも速いっていうのは間違ってますか?
0480デフォルトの名無しさん
2006/02/07(火) 01:39:530481デフォルトの名無しさん
2006/02/07(火) 10:54:53例えばコピーGCでメモリのサイズをM、GCで生き残ったオブジェクトのサイズをA
とすると、GCにかかる時間は定数Cを使ってCAになります。
回収されたオブジェクトのサイズはM-Aなので、これで割るとCA/M-Aになります。
スタックのポップだと一般にサイズ当たりにかかる時間は定数です。
コピーGCではMを大きくすることで、いくらでもコストが減るので
"Garbage Collection Can Be Faster Than Stack Allocation" Andrew W. Appel
ということらしいです。
0482デフォルトの名無しさん
2006/02/07(火) 12:22:38その理論だとスタックの最大サイズM(仮想メモリ使えば∞と思ってよい)
に対して同じ式が出てくるんじゃないか?
スタックのポップのコストがサイズ当たりってことは、
ポップのコストはサイズに比例って意味だよね?
0483デフォルトの名無しさん
2006/02/07(火) 12:44:12スタックのポップは引き算すればいいだけなので、ほんとは比例しないんですが
使い終わる度にポップするのでサイズに比例するってことです。
スタックのポップのコストにスタックの最大サイズは関係ありません。
0484デフォルトの名無しさん
2006/02/07(火) 13:01:35それって、前提条件が 1スタック=1オブジェクト になっていない?
ただ単に「GCによるオーバーヘッド > まとめてメモリ回収する時間節約」つうてる
だけのような気がする
0485デフォルトの名無しさん
2006/02/07(火) 13:28:06すいませんがよく意味が分からないです...
VMのスタックをポップせずに一杯になったときにGCを起動した方が
性能がいいんじゃないかって話です。
環境をヒープにコピーしたり末尾再帰を最適化したりしなくてすみます。
ただコンパクションしないと断片化するのでGCは結構重そうです。
>>482 のようにメモリが無限にあるのなら GC自体必要ないのでコストは0です。
で、現実問題としてどんなもんなのかなあと。Chickenで実装されているらしいのですが...
0486デフォルトの名無しさん
2006/02/07(火) 13:35:44・Mはメモリのサイズというよりは、今までアロケートしたセルのサイズ
・「スタックアロケーション」といっているのはヒープに確保したセルを明示的に開放する話。スタックは関係ない。
・「スタック〜」では開放するセルの個数に比例したコストがかかるが、
コピーGCでは生き残ったセルの個数に比例したコストがかかる。
・コピーGCでは開放するセルあたりのコストはCA/M-A なので、
開放するセルあたり1インストラクションより小さくなることすらある。
0487デフォルトの名無しさん
2006/02/07(火) 13:57:28> ・Mはメモリのサイズというよりは、今までアロケートしたセルのサイズ
MはコピーGCで使われるメモリ領域です。つまり 2Mのメモリが必要です。
> ・「スタックアロケーション」といっているのはヒープに確保したセルを明示的に開放する話。スタックは関係ない。
どちらにしても explicit freeingはセルの個数(開放する回数)に比例したコストがかかります。
この論文でも特にヒープかスタックか特定していないような気がします
5章でもスタックとヒープを比較しているので、どちらかといえばスタックかなあと
間違ってたらすいません。
>・「スタック〜」では開放するセルの個数に比例したコストがかかるが、
> コピーGCでは生き残ったセルの個数に比例したコストがかかる。
>・コピーGCでは開放するセルあたりのコストはCA/M-A なので、
> 開放するセルあたり1インストラクションより小さくなることすらある。
その通りです。
他の論文にも StackGCの性能がよいと書いてあったのですが
Chicken くらいしか実装例を知らないのでどうなのかと思ったんです。
飯喰ってきます。
0488484
2006/02/07(火) 14:49:37意図しているのは >486 の通りね。
GCによるオーバーヘッド => GCでの生き残ったセルの個数に比例したコスト
まとめてメモリ回収する時間節約
=> スタックでの開放するセルあたりのコスト - GCでの生き残ったセルの個数に比例したコスト
といった感じかな?
0489デフォルトの名無しさん
2006/02/08(水) 14:42:58>これで割るとCA/M-Aになります。
うんうん。なるほど・・・
ところで、その割った「値」っていうのは、
一体何を意味している数なのかな?
0490デフォルトの名無しさん
2006/02/08(水) 17:20:13そのまんま「回収したサイズ当たりの計算量」です。
一般的なコピーイングでは 2Mのメモリが必要ですが、explicit freeing
と効率が同じになるサイズNを超す生存オブジェクトを許さないのならば M + Nで済みます。
(コピーGCでは生存オブジェクトのサイズに比例したコストがかかるので、
Nを超えると explicit freeingの方が効率的になるということです。)
生存オブジェクトのサイズがNを超えたらスタックオーバーフローにします。
で、この論文の例の場合 M = 7Nなので 8Nのメモリが必要となります。
これは コンスセル一つ 3ワードという前提の上での計算です。
VMスタックにこの GCを使った場合、環境フレームの大きさは固定では
ありませんがほとんどの場合 3ワードよりも大きいので、M/Nはもっと大きいです。
という訳で生存オブジェクトに対して十分大きなメモリが確保されないと
GCの優位性は保たれないので、現実問題としてどうなのかと思ったのです。
20年前の論文なのでもっと流行っててもよさそうなものですし
(停止時間が長いという欠点はありますが)。
0491デフォルトの名無しさん
2006/02/08(水) 19:20:52ヒープ領域が大きいほどGC回数が減ってGCのオーバヘッドが小さくなる
ということ自体は別に直感に反してないし、流行る流行らないの話ではない
と思うな。他の要因がなければヒープ領域は大きいに越したことはないに
決まってるし。
0492デフォルトの名無しさん
2006/02/08(水) 19:34:11>現実問題としてどうなのか
が知りたいなら、>>479の時点でそう書け。
学生がゼミの宿題で悩んでるのかと思って
時間割いちまったじゃねぇか。
0493デフォルトの名無しさん
2006/02/08(水) 20:30:01知らない人には何を言ってるかわからない説明力。
0494デフォルトの名無しさん
2006/02/08(水) 20:42:14その通りなんですが、スタックをヒープとみなしてポップせずにGCで回収してしまおう
って話なんです。何度も書きますが。
VMのスタックをGCで回収させる処理系って何があるでしょうか。
>>492
ごめんなさい。2chにこんな優しい人がいるなんて。
0495デフォルトの名無しさん
2006/02/08(水) 21:00:240496デフォルトの名無しさん
2006/02/08(水) 22:22:51>VMのスタックをポップせずに一杯になったときにGCを起動
>>494
>スタックをヒープとみなしてポップせずにGCで回収
それって普通はスタック上で確保するフレームを
ヒープ上に確保するのと一緒だから
パフォーマンスが悪くなることはあっても良くなる事はないんじゃない?
0497デフォルトの名無しさん
2006/02/09(木) 06:21:45494はたぶんHenry BakerのCheney on the M.T.A.みたいな話を
してるんだと想像するが。この話のキモは、多くのオブジェクトは
短命で、GCが走る頃にはごみになってるからヒープにさえ移らな
いってこと。スタックを世代別GCの第0世代とみなしてると考えても良い。
で、Chickenがそれを実装してるわけだが。Scheme処理系としての
性能はそこそこ良いらしいが、処理系の性能はGC以外の部分にも
依存するからねえ。Cheney on the MTA自体がどのくらいの性能かを
測るには、GC部分だけを取り替えて比べるしかないんじゃない。
0498デフォルトの名無しさん
2006/02/09(木) 07:35:56言語の構造にも依存するんだよね、ヒープ上につくるオブジェクトの種類。
もし比較するならそのあたりの事も考慮しないといけないし、その場合の
試験プログラムの内容も影響受けるだろうし面倒臭そうだね。
0499デフォルトの名無しさん
2006/02/09(木) 11:11:46エクステントは関数を抜けるまでに決まってるから、popしてしまう方が
良さそうだ。継続がある場合はどうせ捕捉時にスタックを何とかしなくちゃ
ならないからCheney on the MTAと相性が良さそうなんだが。
0500デフォルトの名無しさん
2006/02/09(木) 11:22:34環境に関してはどうですか?
一般的にはクロージャが生成されたときにスタックからヒープにコピーすると
思うんですが、それが必要なくなりますよね。
どちみちGCのときにはコピーするので微妙ですが。
0501デフォルトの名無しさん
2006/02/12(日) 14:59:24NUMBER => "NUMBER", STRING=>"STRING", '+' => "+" みたいなかんじです。
0502デフォルトの名無しさん
2006/02/12(日) 23:09:560503デフォルトの名無しさん
2006/02/13(月) 13:11:20yaccはそんなことするためのものではないので、ご自分でどうぞ。
0504デフォルトの名無しさん
2006/02/13(月) 20:24:30yaccの仕事じゃない。
もしどうしても今組んでいるコードがそれを要求するのであればlex側で処理しておくべし(トークンの持ち方で2つの意味づけしとけ)
0505デフォルトの名無しさん
2006/02/14(火) 23:32:01kmyaccならできる。起動時に-tオプションをつけてみて。
0506デフォルトの名無しさん
2006/02/16(木) 20:56:42キムチ!
0507デフォルトの名無しさん
2006/02/17(金) 00:34:110508デフォルトの名無しさん
2006/02/17(金) 00:39:370509デフォルトの名無しさん
2006/02/17(金) 01:10:02ワロwwwwwwwwwwwwwwwwwww
0510デフォルトの名無しさん
2006/02/18(土) 04:59:51それってオーサリングツールとどう違うの?
0511デフォルトの名無しさん
2006/02/18(土) 08:53:21たま〜に見る。
で思った事なんだが、言語の一部としてモデリングツールがあり、
モデリングツールの細かい調整用にスクリプトを用いたツールを
作ろうと思ってるのだが、このツールは何と呼べば良い?
0512デフォルトの名無しさん
2006/02/18(土) 08:56:15コンパイラでは?
0513デフォルトの名無しさん
2006/02/18(土) 09:06:47オーサリングツール自体が、広義ではコンパイラだと考えられる。
0514デフォルトの名無しさん
2006/02/18(土) 09:28:22どちらかといえばスクリプトエンジンの方かと
0515デフォルトの名無しさん
2006/02/18(土) 09:38:070516デフォルトの名無しさん
2006/02/18(土) 11:08:33(というよりモジュールプログラムって感じ)して、バイナリを出すシステム
があったけど、そういう奴のこと?>>510
それともIBMのVisualAgeシリーズみたいな奴かな?
0517デフォルトの名無しさん
2006/02/18(土) 11:33:02前スレの最後の方で出てたネタなんだが・・・見れないな。
CAD/CAMとか、UMLとか、電子回路みたいな奴の事。
DVDの編集ツールとか、アニメーション製作ツールといったオーサリングツールと、どうも似てるなと。
0518デフォルトの名無しさん
2006/02/18(土) 11:34:530519デフォルトの名無しさん
2006/02/18(土) 11:59:53って、本はどうなのでしょう?
初心者向け?
0520デフォルトの名無しさん
2006/02/19(日) 02:11:30だれか答えてやれよ。
0521デフォルトの名無しさん
2006/02/19(日) 03:03:091000部も出てないだろう本の内容なんか知るかボケ。
自分で買うなり立ち読みするなりして調べろバーカ。
0522デフォルトの名無しさん
2006/02/19(日) 05:37:260523デフォルトの名無しさん
2006/02/19(日) 07:32:330524デフォルトの名無しさん
2006/02/19(日) 12:09:03522はそうでもない
0525デフォルトの名無しさん
2006/02/19(日) 14:22:050526デフォルトの名無しさん
2006/02/19(日) 20:07:33Lisp最高!!!
と言ってみるtest
0527デフォルトの名無しさん
2006/02/19(日) 20:15:000528デフォルトの名無しさん
2006/02/19(日) 20:42:23Rubyがいいに決まってるだろ?
新しい時代には新しい言語が必要だ
Lisp?はぁ〜?
コボルジジイと一緒にオナ●ーでもしてる!
0529デフォルトの名無しさん
2006/02/19(日) 20:46:14S式……すごい興奮します……
あふっ、いぐのぉおおおっ、インデントすごいぃいいい!
いくっ、いきます、いっちゃう!いぐぅぅぅぅぅぅぅぅぅぅぅぅぅぅぅぅぅ!!!
0530デフォルトの名無しさん
2006/02/19(日) 21:07:070531デフォルトの名無しさん
2006/02/19(日) 21:12:100532デフォルトの名無しさん
2006/02/20(月) 00:27:06Javaの機能も使える超絶的多機能Ruby
0533デフォルトの名無しさん
2006/02/20(月) 00:29:240534デフォルトの名無しさん
2006/02/20(月) 00:56:140535デフォルトの名無しさん
2006/02/20(月) 03:19:330536デフォルトの名無しさん
2006/02/21(火) 20:42:51ゴボルと一緒で保守用?
0537デフォルトの名無しさん
2006/02/21(火) 21:02:06信者の多そうなHaskellとかSmalltalkがお勧め
0538デフォルトの名無しさん
2006/02/21(火) 21:23:400539デフォルトの名無しさん
2006/02/21(火) 23:40:07(除く、研究用)
0540デフォルトの名無しさん
2006/02/21(火) 23:46:270541デフォルトの名無しさん
2006/02/21(火) 23:47:50なぜ「研究用」が除かれるんだ?
0542デフォルトの名無しさん
2006/02/21(火) 23:50:05最適であるのは間違いないと思うがな。
0543デフォルトの名無しさん
2006/02/22(水) 00:37:490544デフォルトの名無しさん
2006/02/22(水) 00:46:40Javaのスクリプトコレクションがどんどん増えていって楽しい
0545539
2006/02/22(水) 21:51:56(除く、実用)
0546デフォルトの名無しさん
2006/02/22(水) 21:53:16新しい言語を手軽に実装できる、に尽きるような。
(で、この言葉がまた誤解されると。)
0547デフォルトの名無しさん
2006/02/23(木) 00:44:35(除く、他の言語を見下して優越感に浸る)
0548デフォルトの名無しさん
2006/02/23(木) 00:49:39だれが書いても同じようなソースになるのは意図したこと
汚くないソースを書く癖を付けさせるためにインデントを強制している
0549デフォルトの名無しさん
2006/02/23(木) 01:11:55Pythonって使ったことないんだけどtabの扱いってどうなるの?
0550デフォルトの名無しさん
2006/02/23(木) 02:35:36>手軽に自分用のスクリプトを組み込むという用途としては
>最適であるのは間違いないと思うがな。
なんで?
パーサ書くのが簡単だから、というのはよく聞くけど、パーサなんて
パーサジェネレータ使えば簡単に生成できるから、メリットにならんと思う。
LL(1)文法なら再帰下降パーサでもそんなに大変じゃないし。
# だからよく聞く「言語処理系を作りたければまずLispから」ってのは
# おかしいと思う。みんな、自分が普段使ってるCとかJavaみたいなのから
# 処理系に興味を持つんだから、そういうのを作ってみたいんじゃなかろうか。
それとも他の理由?
0551デフォルトの名無しさん
2006/02/23(木) 03:01:37http://www.python.jp/doc/nightly/ref/indentation.html
>まず、タブは (左から右の方向に) 1 つから 8 つのスペースで置き換えられ、
>置き換え後の文字列の終わりの位置までの文字数が 8 の倍数になるように調整されます
>(Unixで使われている規則と同じになるよう意図されています)。
で、下がったインデントが上がるときには以前のどっかのインデントレベルと
合ってなければいけないけれど、1回のインデントでどれだけ下げるかは
決められてなくて、2文字インデントと4文字インデントと8文字インデントが
混在していてもいいってことか。
>>548
>だれが書いても同じようなソースになるのは意図したこと
>汚くないソースを書く癖を付けさせるためにインデントを強制している
中途半端だよなあ。
http://www.artima.com/weblogs/viewpost.jsp?thread=101968
>All code indented with four spaces. This will also get rid of the tabs problem!
やっぱこれだこれ。
0552デフォルトの名無しさん
2006/02/23(木) 07:19:59他の理由。
飽きれるぐらい繰り返し出てる話だけど、
新しい言語を追加できるんだよ。
0553デフォルトの名無しさん
2006/02/23(木) 09:40:180554デフォルトの名無しさん
2006/02/23(木) 21:26:25それ程までに、優越感を感じる言語って
一体…?
0555デフォルトの名無しさん
2006/02/23(木) 22:27:38ユーザーが優越感を感じたりはしないだろうな
0556デフォルトの名無しさん
2006/02/23(木) 22:29:43よい言語ではある、でも偉いのは作ったmatzで優越感を感じてる厨房は単なる馬鹿
0557デフォルトの名無しさん
2006/02/24(金) 00:35:12>新しい言語を追加できるんだよ。
新しい言語を「何に」追加するのさ。
542は、AutoCADがAutoLispを組み込んでいるように、アプリケーションにLispを
組み込む話をしてるのかと思ったから550を書いたんだけど、違ってたのかね。
Lispでプログラムをばりばり書きながら、そのなかのある特定の領域について
DSLが欲しいと思ったときにLispだと楽に作れるって話?
だとすれば、それはどんな言語をどんな形態で組み込むことを想定しているの?
(1)Lispでスキャナやパーサを書いて、Lispとはまったく似ていない言語を組み込む。
(2)Lispのリーダを使ってS式を読み込み、自力で評価する。
(3)Lispのマクロで俺言語っぽいものを作る。
どれ?
(2), (3)だと、作れる言語は所詮S式になるな。
0558デフォルトの名無しさん
2006/02/24(金) 01:16:46もちろんLispを使うということはS式ありきだよ。
552じゃないけどLisperの思考なら(1)も結果をS式に変換して、
Lispにそのまま食わせたり(これが(2)や(3)に繋がったり)すると思うよ。
適当に俺言語っぽいものを作ってみたとして、仮にS式で不満に
なったらフロントエンドに俺言語スキャナを追加したりという、
色んな箇所で入出力できるのがLispの使い勝手の良さに繋がってる
のではないかと。
アプリの組み込みについては、とりあえずS式読めるように
Lispコアを埋め込んでおくと便利という意味じゃないかな。
0559デフォルトの名無しさん
2006/02/24(金) 09:22:510560デフォルトの名無しさん
2006/02/24(金) 09:29:13( ´Д`) キサマ・・・見た目に惑わされているな
0561デフォルトの名無しさん
2006/02/24(金) 10:53:43XML
0562デフォルトの名無しさん
2006/02/24(金) 20:46:420563デフォルトの名無しさん
2006/02/24(金) 23:13:290564デフォルトの名無しさん
2006/02/24(金) 23:46:350565デフォルトの名無しさん
2006/02/25(土) 01:44:26アプリ組むならC++Boostのspritがデフォなんだけどどうなんだろう。
開発業務における調査・解析の仕事って結構あるのよね。
最終的にはgrep一覧と確認結果をレポートするんだけど、当たりを付ける時は
自前のスクリプト使ってる。
抽象的な入力を対話式に行って解析出来るツールが欲しいなぁと思うこの頃。
誰か作ってません?
0566デフォルトの名無しさん
2006/02/25(土) 02:25:160567565
2006/02/25(土) 02:35:29あー、そういうアプローチもあるねw
自分が考えているのは、もっとバカチョンなやつ。
理想は自然言語をINPUTとして扱えるとか。
チームで使うのに、Prolog覚えるのは敷居を上げてしまうので
普及しない希ガス。
0568デフォルトの名無しさん
2006/02/25(土) 02:40:220569565
2006/02/25(土) 02:53:28それやりすぎだしw
つか、相当マニアックだなおい。
文章は命令形式で良いと思うんだ。
list param CFoo::m_bar1 when CFoo::m_bar2 == 0
見たいな感じ。全然自然言語じゃないな。やっぱ形式言語がいいかw
SQLみたいだと良いかも。
すまんな、求めているものが変わってきたw
0570デフォルトの名無しさん
2006/02/25(土) 10:19:440571デフォルトの名無しさん
2006/02/25(土) 11:59:25めでたしめでたし。
0572デフォルトの名無しさん
2006/02/25(土) 13:34:49こんな感じだろ
もしお金が10億あれ場合
会社を辞める
それ以外の場合
銀行を襲う
以上
0573デフォルトの名無しさん
2006/02/25(土) 15:00:20ElizaよりMedicが必要な希ガス
0574デフォルトの名無しさん
2006/02/26(日) 19:01:55コンパイラ入門 C#で学ぶ理論と実践 ソフトウェア実践講座
冨沢 高明 (著)
http://www.amazon.co.jp/exec/obidos/ASIN/4797331690/qid=1140946035/sr=1-1/ref=sr_1_10_1/250-3599959-2832238
マクロアセンブラのコードを吐く「ジェネレータ」の説明に60ページほど費やしてました。
このコードをインラインに展開するツールも添付されてます。
現在MS社の上級社員?である著者がアメリカの大学で行っていた講義の中身を再編集した本らしいです。
MS製品の開発環境の使い方から書かれてあるので
手元にC#があれば便利ですが、C++が使える人には多分問題でないでしょう。
Javaのバイトコードを吐く「スモールコンパイラ」本と同程度の内容ですが、
類書でマクロアセンブラのコードジェネレータまで扱う本はあまり無かったのではないでしょうか?
やる気のあるアメリカ人大学生相手の講義が元ネタなので内容はずっと真面目で、
著者は特に情報工学部の実習本・TAのためのガイド本を意識されておられるようです。
ただ、アセンブラ「ジェネレータ」部分ですが、複雑なテクニックは使っていないはず
なので、「俺はCのソースを見るだけでアセンブラのコードが頭に浮かんでくる、
これまでにコンパイラはいくつも書いてきた」、という方やRuby厨は買う必要ないと思います。
インタプリタやスクリプト言語の作成から、コンパイラの作成へとステップアップしたいが
アセンブラの勉強がどーにも…、という方には喜ばれる内容だと思いました。
0575デフォルトの名無しさん
2006/02/26(日) 19:04:44コンパイラ入門 C#で学ぶ理論と実践 ソフトウェア実践講座
冨沢 高明 (著)
http://www.amazon.co.jp/exec/obidos/ASIN/4797331690/qid=1140946035/sr=1-1/ref=sr_1_10_1/250-3599959-2832238
マクロアセンブラのコードを吐く「ジェネレータ」の説明に60ページほど費やしてました。
このコードをインラインに展開するツールも添付されてます。
現在MS社の上級社員?である著者がアメリカの大学で行っていた講義の中身を再編集した本らしいです。
MS製品の開発環境の使い方から書かれてあるので
手元にC#があれば便利ですが、C++が使える人には多分問題でないでしょう。
Javaのバイトコードを吐く「スモールコンパイラ」本と同程度の内容ですが、
類書でマクロアセンブラのコードジェネレータまで扱う本はあまり無かったのではないでしょうか?
やる気のあるアメリカ人大学生相手の講義が元ネタなので内容はずっと真面目で、
著者は特に情報工学部の実習本・TAのためのガイド本を意識されておられるようです。
ただ、アセンブラ「ジェネレータ」部分ですが、複雑なテクニックは使っていないはず
なので、「俺はCのソースを見るだけでアセンブラのコードが頭に浮かんでくる、
これまでにコンパイラはいくつも(心の中に)書いてきた」、という方は勿論買う必要ないと思います。
インタプリタやスクリプト言語の作成から、コンパイラの作成へとステップアップしたいが
アセンブラの勉強がどーにも…、という方には喜ばれる内容だと思いました。
0576デフォルトの名無しさん
2006/02/26(日) 22:27:19コンパイラ入門 C#で学ぶ理論と実践 ソフトウェア実践講座
冨沢 高明 (著)
http://www.amazon.co.jp/exec/obidos/ASIN/4797331690/qid=1140946035/sr=1-1/ref=sr_1_10_1/250-3599959-2832238
マクロアセンブラのコードを吐く「ジェネレータ」の説明に60ページほど費やしてました。
このコードをインラインに展開するツールも添付されてます。
現在MS社の上級社員?である著者がアメリカの大学で行っていた講義の中身を再編集した本らしいです。
MS製品の開発環境の使い方から書かれてあるので
手元にC#があれば便利ですが、C++が使える人には多分問題でないでしょう。
Javaのバイトコードを吐く「スモールコンパイラ」本と同程度の内容ですが、
類書でマクロアセンブラのコードジェネレータまで扱う本はあまり無かったのではないでしょうか?
やる気のあるアメリカ人大学生相手の講義が元ネタなので内容はずっと真面目で、
著者は特に情報工学部の実習本・TAのためのガイド本を意識されておられるようです。
ただ、アセンブラ「ジェネレータ」部分ですが、複雑なテクニックは使っていないはず
なので、「俺はCのソースを見るだけでアセンブラのコードが頭に浮かんでくる、
これまでにコンパイラはいくつも書いてきた」、という方やLisp厨は買う必要ないと思います。
インタプリタやスクリプト言語の作成から、コンパイラの作成へとステップアップしたいが
アセンブラの勉強がどーにも…、という方には喜ばれる内容だと思いました。
0577デフォルトの名無しさん
2006/02/26(日) 22:56:34コンパイラ入門 C#で学ぶ理論と実践 ソフトウェア実践講座
冨沢 高明 (著)
http://www.amazon.co.jp/exec/obidos/ASIN/4797331690/qid=1140946035/sr=1-1/ref=sr_1_10_1/250-3599959-2832238
マクロアセンブラのコードを吐く「ジェネレータ」の説明に60ページほど費やしてました。
このコードをインラインに展開するツールも添付されてます。
現在MS社の上級社員?である著者がアメリカの大学で行っていた講義の中身を再編集した本らしいです。
MS製品の開発環境の使い方から書かれてあるので
手元にC#があれば便利ですが、C++が使える人には多分問題でないでしょう。
Javaのバイトコードを吐く「スモールコンパイラ」本と同程度の内容ですが、
類書でマクロアセンブラのコードジェネレータまで扱う本はあまり無かったのではないでしょうか?
やる気のあるアメリカ人大学生相手の講義が元ネタなので内容はずっと真面目で、
著者は特に情報工学部の実習本・TAのためのガイド本を意識されておられるようです。
ただ、アセンブラ「ジェネレータ」部分ですが、複雑なテクニックは使っていないはず
なので、「俺はCのソースを見るだけでアセンブラのコードが頭に浮かんでくる、
これまでにコンパイラはいくつも書いてきた」、という方やLisp厨は買う必要ないと思います。
インタプリタやスクリプト言語の作成から、コンパイラの作成へとステップアップしたいが
アセンブラの勉強がどーにも…、という方には喜ばれる内容だと思いました。
0578デフォルトの名無しさん
2006/02/26(日) 23:57:26どうした?
どうした?
どうした?
0579デフォルトの名無しさん
2006/02/27(月) 02:52:17おまえら長文で微妙に書き換える位なら差分だけあげろや惚け
0580デフォルトの名無しさん
2006/02/27(月) 21:37:29エディタ組み込みのスクリプトで書くのも面倒だし。
0581デフォルトの名無しさん
2006/02/27(月) 22:05:37perl : Algorithm::Diff
Python : difflib
0582デフォルトの名無しさん
2006/02/27(月) 22:52:22コンパイラ屋なら差分くらい自分で抽出せい
0583デフォルトの名無しさん
2006/02/27(月) 23:15:050584デフォルトの名無しさん
2006/02/27(月) 23:15:29プログラマは無駄を嫌うので、
出来る・出来ないに関わらずやりたくない。
とりあえず最後の577だけ読んだ。
0585デフォルトの名無しさん
2006/02/27(月) 23:33:55そして>>585も…
0586デフォルトの名無しさん
2006/02/28(火) 03:17:49書かれているにもかかわらず、インターフェースがまったく使われてない。
そういうもの?
0587デフォルトの名無しさん
2006/02/28(火) 09:59:13作者は仕様を考えたりできなかったんだろう
0588デフォルトの名無しさん
2006/02/28(火) 11:20:560589デフォルトの名無しさん
2006/02/28(火) 11:47:260590デフォルトの名無しさん
2006/02/28(火) 12:47:340591デフォルトの名無しさん
2006/02/28(火) 14:00:13矢印使わないほうが紛れが無くて良いと思うよ。
0592デフォルトの名無しさん
2006/02/28(火) 14:07:00>>591はバカでアホすぎ。死んだ方がいいよ。
0593デフォルトの名無しさん
2006/02/28(火) 14:47:080594591
2006/02/28(火) 15:39:260595デフォルトの名無しさん
2006/02/28(火) 16:14:380596デフォルトの名無しさん
2006/02/28(火) 16:28:380597デフォルトの名無しさん
2006/02/28(火) 17:09:390598デフォルトの名無しさん
2006/02/28(火) 17:39:02ClonableやAppendableとかはなんかインタフェースとは違う気がする。(使うないう意味じゃなくてね)
0599デフォルトの名無しさん
2006/02/28(火) 17:54:15ttp://www.dumpalink.com/media/1140251493/Most_Patient_Guy_In_The_World
0600デフォルトの名無しさん
2006/02/28(火) 17:58:58うざいから火病くんは消えてね
0601デフォルトの名無しさん
2006/02/28(火) 18:06:280602デフォルトの名無しさん
2006/02/28(火) 18:08:230603デフォルトの名無しさん
2006/02/28(火) 18:10:59うざいから火病くんは消えてね
0604デフォルトの名無しさん
2006/02/28(火) 18:12:07相手に放置されちゃった方の負け
反応が無くて俺のこのレスが最後になったらどうしよう、と
ハラハラしながら送信してるんだろうな、どっちも
0605デフォルトの名無しさん
2006/02/28(火) 18:49:08逆だ逆。自分が最後じゃないと悔しいんだよ。こういう手合いは。
0606デフォルトの名無しさん
2006/02/28(火) 23:42:26まったくお前らって(ry
0607デフォルトの名無しさん
2006/02/28(火) 23:50:10もう Ruby や Lisp じゃ釣れない事を学習しろ。
0608デフォルトの名無しさん
2006/02/28(火) 23:52:220609デフォルトの名無しさん
2006/03/01(水) 04:44:59それともデマ?
0610デフォルトの名無しさん
2006/03/01(水) 05:08:000611デフォルトの名無しさん
2006/03/01(水) 07:17:46> rubier
0612デフォルトの名無しさん
2006/03/01(水) 07:20:320613デフォルトの名無しさん
2006/03/01(水) 08:48:37よーわからんけどFlex/Bisonに勝てそうな気がしない。
なんかすごい効率的にやってそうじゃん。
0614デフォルトの名無しさん
2006/03/01(水) 14:02:45http://kmaebashi.com/programmer/devlang/index.html
0615デフォルトの名無しさん
2006/03/02(木) 01:01:49>381
0616デフォルトの名無しさん
2006/03/02(木) 02:13:510617デフォルトの名無しさん
2006/03/02(木) 19:41:510618デフォルトの名無しさん
2006/03/02(木) 22:32:390619デフォルトの名無しさん
2006/03/03(金) 12:52:34そんな彼氏に捧げるプログラミング言語 氏ね
0620デフォルトの名無しさん
2006/03/03(金) 19:52:46プログラミング言語 ORZ
0621デフォルトの名無しさん
2006/03/04(土) 07:42:53むしろ OTL?
0622デフォルトの名無しさん
2006/03/04(土) 11:04:14ウィザードしか使えないくせによく言う(都市伝説ですか?)
0623デフォルトの名無しさん
2006/03/05(日) 11:54:43>プログラミング言語 姫
これの勉強を始めるのは「姫はじめ」か。
0624デフォルトの名無しさん
2006/03/05(日) 13:26:210625デフォルトの名無しさん
2006/03/05(日) 15:40:34循環参照でも問題ないし、スループット、レスポンスともにほとんど
アプリの動作を邪魔しないし、効率は参照カウンタ方式の99%は
出る見込み(Cで普通にmalloc,freeする程度の負荷以上はかから
ない)
0626デフォルトの名無しさん
2006/03/05(日) 18:26:210627デフォルトの名無しさん
2006/03/05(日) 19:12:420628デフォルトの名無しさん
2006/03/05(日) 19:19:560629デフォルトの名無しさん
2006/03/05(日) 19:20:290630デフォルトの名無しさん
2006/03/05(日) 19:42:43現状だってプロセスのメモリ空間の中はスタックとか読み込んだライブラリを置く所とか
色々細分化されている訳で、そういう所は好き勝手弄っちゃダメでしょ。同じように GC
ヒープ領域を用意してあげれば良いんじゃないの。
0631デフォルトの名無しさん
2006/03/05(日) 19:49:14通常のmallocやnewに対応した完全に汎用的なGCがあるの?
原理的に絶対無理だと思うんだが。
やっぱGC専用のポインタが必要ってことだよね。
0632デフォルトの名無しさん
2006/03/05(日) 20:01:52ポインタのアライメントを利用して下位1ビットに情報を…
とか、その手の事をやられるとお手上げ。
0633デフォルトの名無しさん
2006/03/05(日) 20:03:380634デフォルトの名無しさん
2006/03/05(日) 20:05:07>ポインタのアライメントを利用して下位1ビットに情報を…
もともとこういうことをするのは、C言語でも未定義なのでする奴が悪い、でオワリ
0635デフォルトの名無しさん
2006/03/05(日) 20:31:54アセンブラに落とす時にJavaのVMみたいに複雑なメモリ管理を織り込めばいいんだから。
お前ら、言語仕様とABIを混同してないか?
0636デフォルトの名無しさん
2006/03/05(日) 20:34:410637デフォルトの名無しさん
2006/03/05(日) 20:45:38>JavaでできていることがCで出来ないはずはない
JavaがGCできるのはCよりも操作の制約が強いからだ
char *a = malloc(100);
int b = (int)a; // これの善悪は別問題として
a = 0;
ってやってaからの参照がなくなった時点でGCが掃除しちゃったら
まずいだろ。プログラムとしてはbから復元して利用することもあり
えるから。
よってこういうことが出来る素のCには、「触らないでねポインタ」を
新たに導入しないとGCは装備できないんじゃねーか?
0638デフォルトの名無しさん
2006/03/05(日) 20:53:070639デフォルトの名無しさん
2006/03/05(日) 20:57:37聞いたことあるけど、そんなにすごいもんなのか?
0641デフォルトの名無しさん
2006/03/05(日) 21:03:26http://homepage2.nifty.com/aito/gc/gc.html
http://www.donguri.sakura.ne.jp/~shock8/wisper/gc1.html
0642デフォルトの名無しさん
2006/03/05(日) 21:18:35リンク先見たけど(情報どうも)結局>>637をやられると吹き飛ぶじゃん。
回収し損ねは許容するとして、ポインタを隠蔽して分解して
持っておくようなことはやったら駄目ってことだね。
よって「触らないでねポインタ」を導入しないことには回収しそこねや
ハングアップを防止することは出来ないというのがオレの結論。
0643デフォルトの名無しさん
2006/03/05(日) 21:18:530644デフォルトの名無しさん
2006/03/05(日) 21:21:01全然理解できないんだろうなあ。
0645デフォルトの名無しさん
2006/03/05(日) 21:22:430646デフォルトの名無しさん
2006/03/05(日) 21:26:39それなりに大変だろうね
0647デフォルトの名無しさん
2006/03/05(日) 21:29:25JavaはCのManagedコードライブラリと見ることも出来る
0648デフォルトの名無しさん
2006/03/05(日) 21:29:34というかGC使いたかったら泥臭いことはあきらめろってしかいえない。
0649デフォルトの名無しさん
2006/03/05(日) 21:30:560650デフォルトの名無しさん
2006/03/05(日) 21:30:59スマソ。>>641 の下のリンク先は読まない方が良いや。
適当にググって貼っつけただけだから。何じゃこりゃ。
0651デフォルトの名無しさん
2006/03/05(日) 21:41:52もうちょっと詳しく。当方アセンブラプログラマだ。
int b = (int)a;
a = 0;
とやったあとでb をビットレベルで分解したらどうにもならんと思うが、
コンサバ型だとそうならない魔法があるのか?
bを再構成してポインタに戻してアクセスしたら開放されてるって
いう状況は起こりうると思うが。
0652デフォルトの名無しさん
2006/03/05(日) 21:44:210653デフォルトの名無しさん
2006/03/05(日) 21:52:27とはいえ、ビットレベルで分解→後で計算によって得た値が
セマンティクスの面で有効なポインタかどうかは疑問ではある。
>>652
つか、「原理的に無理」で思考停止してるから。
0654デフォルトの名無しさん
2006/03/05(日) 21:59:47議論に勝つために、徐々に条件を変えていくんだよなー。
2chはこういう奴ばかり。
0655デフォルトの名無しさん
2006/03/05(日) 22:09:08俺の知らないところで何かあるのかな?w
0656デフォルトの名無しさん
2006/03/05(日) 22:13:50議論に勝つためというより、物知らずというか
ものの評価基準が幼稚なだけだと思われる。
0657デフォルトの名無しさん
2006/03/05(日) 22:21:310658デフォルトの名無しさん
2006/03/05(日) 22:24:050659デフォルトの名無しさん
2006/03/05(日) 22:25:210660デフォルトの名無しさん
2006/03/05(日) 22:25:56コンサバティブ GC を初めて知ったレベルなら仕方が無いんじゃないの。
まだ当たりが付けられないだけだと思う。
0661デフォルトの名無しさん
2006/03/05(日) 22:26:56>>642の時点で分解って書いてるんですけど
0662デフォルトの名無しさん
2006/03/05(日) 22:30:00651じゃないが、わざわざポインタを整数として扱おうとするなら、
その後なんらかの演算を行うんじゃないかってのは
容易に想像つきそうなものだが。
ま、演算は演算させておいて、ポインタはポインタのまま
別に持っておくとか手はありそうだけど。
0663デフォルトの名無しさん
2006/03/05(日) 22:30:140664デフォルトの名無しさん
2006/03/05(日) 22:33:40>>662はまともな人だね
0665デフォルトの名無しさん
2006/03/05(日) 22:35:08631を無視して637だけなら対応したGCを書けばいいだけの話。
0666デフォルトの名無しさん
2006/03/05(日) 22:35:43演算をするかどうかじゃなくて、再代入するかどうかが問題でしょ。
コード辺だけでそこまでケアしろと?
0667デフォルトの名無しさん
2006/03/05(日) 22:42:04アクセスできるかどうかだね。
GCはプログラム中のデータからトレースできるものを残して
それ以外を回収するってことだから、
可能な演算の集合を定義してルートとなる即値だけでなく
その集合に含まれる演算で計算可能な値もアドレスとして
コンサバティブに扱うことをトレースとすればいいだけの話。
だから、むしろ「原理的には」GCは設計可能。「原理的には」だけど。
0668デフォルトの名無しさん
2006/03/05(日) 22:48:20ルートとなる→アドレスとなる
「原理的には」GCは設計可能→「原理的には」完全に汎用なGCは設計可能
0669デフォルトの名無しさん
2006/03/05(日) 23:35:170670デフォルトの名無しさん
2006/03/05(日) 23:42:56想像しろよ。書いてるもんが100%だと決めなきゃ話できないようじゃ
CPUと一緒じゃないか。人間だろ? >>662は十分想像可能な範囲。
現に出来てる者が居る以上、それが出来なかった奴は気がまわら
ないということ。
なんで整数に持ってきたいのか用途は色々あるだろ。まあ想像でき
ないかもしれないがな。
0671デフォルトの名無しさん
2006/03/05(日) 23:47:320672デフォルトの名無しさん
2006/03/05(日) 23:48:31コンサバだからねw
演算の集合は全域で同一である必要はないわけで、
適当にヒントを与えて限定してもいいし、GCがコードを解析してもいい。
普通はそこまでやってらんないから演算は値をそのまま使う
という一択だと考えるだけで。
0673デフォルトの名無しさん
2006/03/06(月) 00:34:34幾らでも拡大解釈しようはあると思うけど、GC の仕組みを知っていれば
そちらには振れないんじゃないかというのが俺の解釈だっただけだよ。
ま、GC の仕組みを知っていれば、最初からこんな質問も出なかった
だろうけど。
0674デフォルトの名無しさん
2006/03/06(月) 00:36:570675デフォルトの名無しさん
2006/03/06(月) 01:06:360676デフォルトの名無しさん
2006/03/06(月) 07:47:45後から言うなよ
0677デフォルトの名無しさん
2006/03/06(月) 08:30:12もうこの話は終わったんだから絡んで来るなよ。
0678デフォルトの名無しさん
2006/03/06(月) 10:17:54> 俺にどうしろと??
恐らく謝罪を要求してるのでしょう :-)
あなたをやり込めたい一心であらゆる論理を適時付け替えて頑張っているのですから、
彼のプライドを満たすためにも謝ってあげてはどうかと思います。
0679デフォルトの名無しさん
2006/03/06(月) 10:40:02>>657
0680デフォルトの名無しさん
2006/03/06(月) 10:47:47笑えない現実に対する対処の話ですから、笑う箇所などありませんよ。
そんなことも読み取れないのですね :-)
0681デフォルトの名無しさん
2006/03/06(月) 10:54:51ふーん?
0682デフォルトの名無しさん
2006/03/06(月) 13:07:06よし、じゃ俺のプライドを満たすためにおまいが謝れ。
0683デフォルトの名無しさん
2006/03/06(月) 13:28:21ごめんください。
0684デフォルトの名無しさん
2006/03/06(月) 13:52:590685デフォルトの名無しさん
2006/03/06(月) 14:23:03ごめんくさい。
0686デフォルトの名無しさん
2006/03/06(月) 15:32:11/ / ヽ ::: \
| (●), 、(●)、 | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| ,,ノ(、_, )ヽ、,, | < まーた始まって、終わった。
| ,;‐=‐ヽ .:::::| \___________
\ `ニニ´ .:::/
/`ー‐--‐‐―´´\
0687デフォルトの名無しさん
2006/03/07(火) 00:21:330688デフォルトの名無しさん
2006/03/07(火) 00:31:35ぶるんぶるんと僕は言う
ぷるんぷるんとあなたは笑う
そんな2人は、フォーエバー
世界の端から今日は
そんなあなたはお毎度さん
今日もぶるんぶるん体操始まるよ
ぶるんぶるん、ぷるんぷるん
ぷるんぶるん ぶぷぷぷぷぷ
*四谷街道繰り返し
0689デフォルトの名無しさん
2006/03/07(火) 23:02:330690デフォルトの名無しさん
2006/03/07(火) 23:22:00だからスクリプトだけを公開する事は、俺にはありえん。
0691デフォルトの名無しさん
2006/03/08(水) 09:09:50>>690
ところで、目的って何ですか?
0692デフォルトの名無しさん
2006/03/08(水) 09:15:09>>690
ぼくちんも知りたい。その手の業界ってけっこうあるのかな?
0693デフォルトの名無しさん
2006/03/08(水) 10:22:21>>689
0694デフォルトの名無しさん
2006/03/08(水) 10:29:08あーそういう意味だったのか。
じゃリセット。
現在の人数=0
0695デフォルトの名無しさん
2006/03/08(水) 12:58:30でもどこだかは教えない(w
0696デフォルトの名無しさん
2006/03/08(水) 13:19:30……まあ、趣味の領域ですが。
0697デフォルトの名無しさん
2006/03/08(水) 19:53:28単に自分の作りたいソフトを作るために、
下ごしらえでスクリプトを作ってるだけだよ。
0698デフォルトの名無しさん
2006/03/08(水) 20:06:51……自分専用ツールとしてはじめたのがきっかけです。
私も、どこかは内緒w
0699デフォルトの名無しさん
2006/03/08(水) 20:17:47マクロみたいなの搭載してるって意味だよね。
それとも何か目的のソフトを作るための言語を作ってるって意味?
0700デフォルトの名無しさん
2006/03/08(水) 21:05:27後者。
0701デフォルトの名無しさん
2006/03/08(水) 21:19:45マジで?言語作ってる間に既存の言語でソフト作っちゃったほうが早いんじゃないの?
0702デフォルトの名無しさん
2006/03/08(水) 22:16:53プログラマの癖に手段と目的を取り違えたことがないの?
0703デフォルトの名無しさん
2006/03/08(水) 22:33:03くせにとは何だ!くせにとは!
お前こそ●●のくせに、いい気になるなよ。
0704デフォルトの名無しさん
2006/03/08(水) 22:54:10●2つも使ってるのか?なんて贅沢な。
0705デフォルトの名無しさん
2006/03/08(水) 23:05:44なんだとこの●●●!
お前だって●●●の●●●だろうに!●●●●!
0706デフォルトの名無しさん
2006/03/08(水) 23:22:18うるさい、この●●のろ!
0707デフォルトの名無しさん
2006/03/08(水) 23:41:49↑鼻と目に見えた orz 以下、何事も無かったかのように再開。・゚・(ノД`)・゚・。↓
0708デフォルトの名無しさん
2006/03/08(水) 23:53:37こいつは、真性の●●●●。
つまり、●●w
あるいみ、●●●●●● ruby ● lisp ●●w
0709デフォルトの名無しさん
2006/03/09(木) 00:08:50理想が高すぎる事と、自分自身の能力不足が原因なんだよ。
オブジェクトが多くなりすぎると、内容を追い切れなくなる。
つか、状態変位やイベントトリブンは、漏れには理解しづらい‥‥orz
で、主に、個々の処理を独立させて、別個にまとめて見られる
ようにするためにスクリプトを使ってる。
0710デフォルトの名無しさん
2006/03/09(木) 00:40:15一言で言い表すと、
「グローバルオブジェクトなんて嫌いだぁ・・・
全部ローカライズ化してやるぅ・・・・」
ってな感じでつ。orz
0711デフォルトの名無しさん
2006/03/09(木) 01:50:58頭痛が痛いだな。
0712デフォルトの名無しさん
2006/03/09(木) 02:16:150713デフォルトの名無しさん
2006/03/09(木) 11:44:40>つか、状態変位やイベントトリブンは、漏れには理解しづらい‥‥orz
>で、主に、個々の処理を独立させて、別個にまとめて見られる
>ようにするためにスクリプトを使ってる。
ちなみに、エミュレータのレジューム機能が元ネタ。
つ〜か、スレッドの場合は同期の管理が面倒なんだよな。
0714デフォルトの名無しさん
2006/03/09(木) 12:44:30全部一つの実装で実現させたい、ってな所。
0715デフォルトの名無しさん
2006/03/09(木) 14:07:36出願前に公開すると無効なはずだが・・・
0716デフォルトの名無しさん
2006/03/09(木) 14:54:390717デフォルトの名無しさん
2006/03/09(木) 20:09:47似たようなネタのスクリプトなら実在するから探して味噌。
扱いやすいかどうかは別だが。w
0718デフォルトの名無しさん
2006/03/09(木) 20:50:04A → B,C
矢印逆じゃないの?
なんか、すげ〜違和感あり。
0719デフォルトの名無しさん
2006/03/09(木) 21:07:280720デフォルトの名無しさん
2006/03/09(木) 22:33:32規則によりどういった文章が生成されるかを考えていたから。
構文解析は、逆に与えられた文章がどういう生成規則を
たどって作られたかを求める問題だ。その過程で生成規則を
逆向きに使って還元を行う。
だから構文解析だけを考えていたら、矢印が逆だと思うかも
しれんね。
0721デフォルトの名無しさん
2006/03/09(木) 22:36:21別に逆でもいいけど、たぶんおまいは逆にすると今度はそっちに違和感を感じるんだろ。
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
などなど、色々な読み方ができる。
0722デフォルトの名無しさん
2006/03/09(木) 22:39:38を
A is defined as BC or DE
と読んじゃいけないのかよ。
0723デフォルトの名無しさん
2006/03/09(木) 22:42:22いいよ別に。咎めはしないけど真似してくれる人は少なそうだね。
0724デフォルトの名無しさん
2006/03/09(木) 22:43:50それを流行らせてくれ!!
0725デフォルトの名無しさん
2006/03/09(木) 22:50:30矢印以外の記号だって使われるわけだし、勝手にしろとしかいいようがない。
0726デフォルトの名無しさん
2006/03/09(木) 23:04:18A m9(^Д^) BC | DE
0727デフォルトの名無しさん
2006/03/09(木) 23:11:11ワロタw
でも、確かに代入文とかも A=B+C は A->B+C とは書かんな
どうみても A<-B+C だな。
0728デフォルトの名無しさん
2006/03/09(木) 23:12:030729デフォルトの名無しさん
2006/03/10(金) 00:23:11なんかよく分からんが格好良いぞ
0730デフォルトの名無しさん
2006/03/10(金) 12:21:57コンパイラの本を読むと、LALR(1)の説明では生成規則しか使わず、演算子の順位を含めたaction表やgoto表の作り方は特に書いてないように思います。
もしかして、yaccやbisonではLALR(1)と演算子順位解析法との併用なのかなと思ったりするんですけど、どうなんでしょうか?
なお、やりたいことは自前で簡単なパーサジェネレータを作ることです。LALR(1)のアルゴリズムを勉強しているんですが、演算子の順位がまるででてこないので、どうやるんだろうと疑問に思ってます。
0731デフォルトの名無しさん
2006/03/10(金) 12:30:17コンフリクト時にシフト/還元のどれを選択するかでうまいことやっている。
ドラゴンブックに説明があったかもしれない。
0732デフォルトの名無しさん
2006/03/10(金) 20:02:39> もしかして、yaccやbisonではLALR(1)と演算子順位解析法との併用なのかなと思ったりするんですけど、どうなんでしょうか?
そうです。
expr → expr + expr | expr * expr
っていう生成規則はLALR文法ではないけど使えた方が便利でしょ。
0733デフォルトの名無しさん
2006/03/10(金) 23:20:040734デフォルトの名無しさん
2006/03/10(金) 23:52:420735デフォルトの名無しさん
2006/03/11(土) 09:18:24GLRはshift/reduceコンフリクトでreduceを優先するから、あいまいなぶらさがりelseが遠い方のifにくっついちゃう。
0736デフォルトの名無しさん
2006/03/11(土) 10:42:50ちがうよー。
コンフリクトでshiftとreduceの両方追いかけるのがGLR。
>>734
GLRもできるけど>>732をGLRで扱うと
+の優先度が高い場合の構文木と*の優先度が高い場合の構文木の
両方を解析結果として得る話になるから、
演算子の順位指定の話とはからまないと思われ。
0738デフォルトの名無しさん
2006/03/12(日) 01:08:18なせばなるよ
0739デフォルトの名無しさん
2006/03/12(日) 23:28:26還元ということばに違和感を感じる自分。
どうせなら、還元よりも換言だとおもう。
0740デフォルトの名無しさん
2006/03/13(月) 02:55:260741デフォルトの名無しさん
2006/03/13(月) 03:37:22>>739 は明治時代辺りに生れてればよかったのに
0742デフォルトの名無しさん
2006/03/13(月) 03:58:250743デフォルトの名無しさん
2006/03/13(月) 04:00:45Programming for the Java(TM) Virtual Machineって本見つけたんですが1999年出版なんです。バーチャルマシンの仕様とかは変わってないのですか?
0745デフォルトの名無しさん
2006/03/13(月) 09:32:08The JavaTM Virtual Machine Specification, Second Edition
http://java.sun.com/docs/books/vmspec/
同 Maintenance Page
http://java.sun.com/docs/books/vmspec/2nd-edition/jvms-maintenance.html
どうもありがとう。
0747デフォルトの名無しさん
2006/03/17(金) 23:50:511から見てみたが、お前のレスが一番ワロタw
0748730
2006/03/18(土) 08:20:23このように1つの記号が複数の意味を持つ場合、字句解析で別のトークンを返さないといけないのでしょうか。
それとも構文解析時に判断できるものなのでしょうか。
例えば仮引数に *p とあれば、これはポインタを意味するための * であり、四則演算ではないとすぐにわかります。
しかし、*p1 * *p2 などとあった場合、ひとつの式の中でポインタを表す * と四則演算を表す * とが混じってるんですけど、こういったものはどうやって別物であると判断しているのか不思議です。
0749デフォルトの名無しさん
2006/03/18(土) 11:05:59字句解析では区別せず、構文解析で判定する。
教科書で、-1 - -2 のような式を扱う例を探してみて。
0750デフォルトの名無しさん
2006/03/18(土) 13:14:580751デフォルトの名無しさん
2006/03/18(土) 13:27:130752http://www.vector.co.jp/soft/win95/util/se072729.html
2006/03/18(土) 19:03:18もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?
0753デフォルトの名無しさん
2006/03/18(土) 19:50:35単純に 3<=x<99 とか書けてもいいとは思うんだが、
0754デフォルトの名無しさん
2006/03/18(土) 19:58:120755デフォルトの名無しさん
2006/03/18(土) 20:00:44とかあったら何なんだか困るじゃん
Lispだと (< 10 x 20) とか書けるけどね
0756デフォルトの名無しさん
2006/03/18(土) 20:02:06おれは perl の =~ を代入演算子だとばっかり思ってたから
$a =~ s///; はいいけど
$b =~ m//; の意味がわかんなくなって混乱してた…
0757デフォルトの名無しさん
2006/03/18(土) 21:14:54とりあえず、C で 3<=x<99 はコンパイル通るぞ。
0758デフォルトの名無しさん
2006/03/18(土) 21:18:530759デフォルトの名無しさん
2006/03/18(土) 23:30:10いっぺん死ねって書いてもよまねぇだろうな(w
0760デフォルトの名無しさん
2006/03/18(土) 23:51:40確かに
Mathematicaは書ける、って言うか書けないと数学ソフトだし不便すぎる。
0761デフォルトの名無しさん
2006/03/19(日) 02:21:26別に領域を確保するのとではどっちが一般的ですか?
前者はスタックが一つの領域でないといけないのと reallocのコストが欠点で、
後者はフレームの削除などを絶対アドレスで指定しないといけないので
継続を作る時にちょっとめんどくさいのが欠点だと思います。
0762デフォルトの名無しさん
2006/03/19(日) 20:27:31へぇ、書ける言語あるんだね。しらなんだわ
0763デフォルトの名無しさん
2006/03/19(日) 21:19:100764デフォルトの名無しさん
2006/03/19(日) 21:19:290765デフォルトの名無しさん
2006/03/19(日) 21:21:33おれなんかは自家製超高速malocを作ってダブルリンクリストでスタック作ってます。
スタックに無茶な要求するにはこれが一番かなとか思ってたりします。
>>762
おれは、例外を作ってもこの表現ができるべきだと思うのですが、みんなどう思っているのだろうか?
絶対見通しいいとおもうんだけどな・・・
0766デフォルトの名無しさん
2006/03/19(日) 21:27:41継続使わないならシングルリンクリストでも良さそうだが。
0767デフォルトの名無しさん
2006/03/19(日) 21:28:42ダブルでないと削除がややっこしいです。
0768デフォルトの名無しさん
2006/03/19(日) 22:30:250769761
2006/03/19(日) 23:11:42気づきました。
>>765
セグメントテーブルをリストにするってことでしょうか?
最初からセグメントテーブルのサイズを決め打ちして配列にしても良い気がします。
リストだとアクセスにコストがかかりますし。
確かに途中を削除するっていうのならリストの方がいいですが、どういう状況なんでしょうか。
0770デフォルトの名無しさん
2006/03/20(月) 13:38:41ヒープへの参照をスタックに積んでスタックそのものは小容量ですまそうって方向じゃないんだ?
0771デフォルトの名無しさん
2006/03/20(月) 19:01:49リフレクションってどんな構造で作るの?
javaぐらいみっちり仕込まないと不可能?
0772デフォルトの名無しさん
2006/03/20(月) 19:54:37例だけど、
scheme(L)でscheme(L')インタプリタを書いて、L'からLを操作したり、L'自身の環境情報などを
取得できるように作る。このときL'からLをいじったことによってL'の動作に影響が及ぶことを
causal connectionという。
言語、用途により様々だけど、メタレベルに何を求めるのかで、実装や仕様が変わると思う。
0773デフォルトの名無しさん
2006/03/21(火) 20:59:46どんな構造っつーか、単にオブジェクトやクラスに関する情報を、実行時に取り出せる(アクセスできる)仕組みを用意するだけ。
ただそれだけだから、あんまり構造がどうとか悩まなくていいよ。
リフレクションの仕組みや構造について考えるなら、まずは言語の仕組みについて知らないと。
それがわかれば、リフレクションの仕組みはおのずとわかる。
0774デフォルトの名無しさん
2006/03/23(木) 14:28:000775デフォルトの名無しさん
2006/03/26(日) 10:03:01↓こんな文章があって要はfortran90でない場合一番下のfcに何か入力しろという意味だと思うのですが、
なんと打ちこんだらよいのですか?fortran77なので打ち込まないといけないのはわかっているのですが、
全くこのあたりの知識がないのでわかりません。
--------------------------------------------------------------------
#if your machine's fortran compiler command is not "f90", need to set #
# the following macro to adjust. #
---------------------------------------------------------------------
FC=
0776デフォルトの名無しさん
2006/03/26(日) 10:23:11Format C:
0777デフォルトの名無しさん
2006/03/26(日) 10:53:150778775
2006/03/26(日) 13:29:06ですが入力してもだめでした。
そこで方向転換してfortran90のコンパイラをインストしたいのですが、
どこに転がっているのですか?
windowsです。
0779デフォルトの名無しさん
2006/03/26(日) 17:44:13それともネタですか?>>775
0780デフォルトの名無しさん
2006/03/26(日) 17:47:03じゃあかんの?
0781デフォルトの名無しさん
2006/03/27(月) 07:31:07そゆーの既にある?
0782デフォルトの名無しさん
2006/03/27(月) 07:40:260783デフォルトの名無しさん
2006/03/27(月) 08:23:08C/C++インタプリタ CINT
http://pc8.2ch.net/test/read.cgi/tech/1114397934/
CINTの需要自体はちと薄そうな印象。
もしもありとあらゆるCのライブラリが元のC言語の文法と比べて違和感なく全て呼び出せたらはやりそうなもんだけどな。
0784デフォルトの名無しさん
2006/03/27(月) 12:53:33訳してみた。
-------------------------------------
#手持ちのマシンにおいて、Fortranコンパイラのコマンドが "f90" でない場合は、
#次のマクロを設定する必要があります。
-------------------------------------
FC=
つまりだな、Fortranコンパイラのコマンドが例えばf77とかだったら、
FC=f77
と設定すればよい。
これ以上はスレ違いだから質問はやめたほうがよい。
0785デフォルトの名無しさん
2006/03/28(火) 03:57:44perlだとParse::RecDescentがメジャーなの?
代入と()のネストくらいを1行ずつ処理できればいいので手で書いてもいいけど
昔yacc+bisonで遊んでたときみたいにまたBNF触りたくなった
割鶏焉用牛刀だが
0786デフォルトの名無しさん
2006/03/28(火) 12:29:49yacc+bisonの経験あるなら、kmyaccはどう?
yaccの書き方そのままで、perlやjavaやjavascriptが使える。
0787デフォルトの名無しさん
2006/03/28(火) 14:31:402型言語の任意の位置に [] の組を挿入できるようにした文法って1型言語?
例えば 1+2 を変化させた 1[+2] とか [1+]2 とかを許容する文法なんだけど……
0788デフォルトの名無しさん
2006/03/29(水) 02:59:38入力が小さい場合は Parse::RecDescent が手軽だね。外部ツールにくらべると
手軽さが違う。
0789デフォルトの名無しさん
2006/03/29(水) 07:51:32>>788
情報ありがと。しかし構文解析久しぶりで大分忘れてるわ。
0790デフォルトの名無しさん
2006/03/31(金) 18:10:09あれって事前に呼ぶ関数名を全て列挙して組み込んでるのですか?
0791デフォルトの名無しさん
2006/03/31(金) 18:19:490792デフォルトの名無しさん
2006/03/31(金) 21:28:550793デフォルトの名無しさん
2006/03/31(金) 21:31:420794デフォルトの名無しさん
2006/03/31(金) 21:32:210795デフォルトの名無しさん
2006/03/31(金) 21:34:540796デフォルトの名無しさん
2006/03/31(金) 22:29:350797デフォルトの名無しさん
2006/03/31(金) 22:51:20事前にわからない場合でも呼べる方法ってありますか?
0798デフォルトの名無しさん
2006/03/31(金) 23:00:22http://cvs.sourceforge.net/viewcvs.py/sbcl/sbcl/src/runtime/x86-assem.S?rev=1.32&view=auto
call_into_c の部分とか。C なら引数とか戻りアドレスとか用意して call すれば良い。
あとは dlsym() とかを調べる。
0799デフォルトの名無しさん
2006/03/31(金) 23:42:34orz
0800デフォルトの名無しさん
2006/03/32(土) 00:22:440801デフォルトの名無しさん
2006/03/32(土) 02:40:22簡単だろ
0802デフォルトの名無しさん
2006/03/32(土) 06:02:31規則を増やして左再帰を消去して左括り出しするとか地道な方法しかなさそう(自動化するツールもあるのかな?)。
それで衝突が起こるならその文法がそもそもLLじゃない可能性もあるので、文法自体を修正する。
ちなみにLL文法ってLALR文法のサブセットだっけ?
LL(∞)⊂LR(1)は確かだったと思うけど、LR(0)は微妙だったような気が。
誰か教えて。
0803デフォルトの名無しさん
2006/03/32(土) 14:03:32その言語のソースを読んでみようとは思わないのかな。
xyzzyのdefine-dll-entryとかRubyのdlモジュールはC++/Cだった。
0804デフォルトの名無しさん
2006/04/03(月) 21:46:49最近は、海外では関数型言語で書くのがはやっているみたいですが・・・
OCamlとか。
自分の一番慣れている言語!というのはなしの方向で。
0805デフォルトの名無しさん
2006/04/03(月) 23:54:21yaccがあるからC! とか、JavaCCがあるからJava! ってのもなしの方向で?
0806デフォルトの名無しさん
2006/04/03(月) 23:57:150807デフォルトの名無しさん
2006/04/03(月) 23:58:13自分で作った言語でコンパイラ書くのがおすすめ
0808デフォルトの名無しさん
2006/04/04(火) 00:26:280809デフォルトの名無しさん
2006/04/04(火) 00:46:06emacs 程の神アプリじゃなくても、ちょっと気の利いたツールの拡張言語にすれば
それなりにユーザを獲得出来るんじゃない。
0810デフォルトの名無しさん
2006/04/04(火) 00:59:31COINS使うらしい。
0811デフォルトの名無しさん
2006/04/04(火) 01:17:00設計思想による
0812デフォルトの名無しさん
2006/04/04(火) 01:28:00そこまでいければ苦労しないw
と思ったけど、それもいいな。
GCCみたいに、最初はどこでもコンパイルできるミニマムなCでコンパイラを生成して、
そのコンパイラで自分自身をまたコンパイルして・・・と。
そういえば、マルチプラットフォームなコンパイラつくりたいと思ったら、
やっぱり、GCCのフロントエンド作るのが正解なんかね。
最初見たとき、中間言語がわけわかめだった。
他に方法ないすか?
0813デフォルトの名無しさん
2006/04/04(火) 08:29:54>他に方法ないすか?
お前の知能じゃドレもムリ。
大人しくHSP使ってろ
0814デフォルトの名無しさん
2006/04/04(火) 11:20:410815デフォルトの名無しさん
2006/04/04(火) 15:35:540816デフォルトの名無しさん
2006/04/04(火) 17:24:170817デフォルトの名無しさん
2006/04/04(火) 18:56:18COINSはいつJavaに対応するのでしょうか?
図には書かれているのに…
0818デフォルトの名無しさん
2006/04/05(水) 13:09:14一応あるみたい。
http://www.coins-project.org/COINSdoc/frontend/index.html#i-5-1-3
これ以上まともにJavaに対応することには、
苦労に見合うだけの学術的な意味がないからなあ。
0819デフォルトの名無しさん
2006/04/05(水) 18:50:53> Javaのフロントエンドは以下の方針で開発しているが、デバッグ中であるので、
> リリース版にはまだ入っていない。
だから公開はされてないんですね。いつからデバッグしてるのかちょっと不安…
0820デフォルトの名無しさん
2006/04/11(火) 18:25:41参考になります。
ただ、自分の目指しているのは型なし&プロトタイプ指向ですので、やっぱりちょっと
ポイントが違うようですね。まあ、その違いを見るのも楽しいですが。
0821デフォルトの名無しさん
2006/04/11(火) 18:54:360822デフォルトの名無しさん
2006/04/16(日) 21:51:35自分で作ろうかと思ってるんだけど、結構大変そうだし。
自作するならSableCCあたりで作ろうと思ってる。
ASTを作るまでは楽だろうけど、その後が...。
0823デフォルトの名無しさん
2006/04/17(月) 01:13:490824デフォルトの名無しさん
2006/04/17(月) 12:07:17どうもありがとう。学習支援用にインタープリタでも作ろうかと思って。
0825デフォルトの名無しさん
2006/04/17(月) 20:22:45情報処理学会誌、今日家に届いたよ。
0826デフォルトの名無しさん
2006/04/17(月) 21:48:30家にも来た。
情処会員相手ということで
初心者本や教科書なら必要な噛み砕いた説明がないから
読むほうとしては面白いことだけさらっと読めていいね。
3月までの連載は
http://www.ipsj.or.jp/07editj/promenade/index.html
で見れるから、コンパイラの連載も誰でもダウンロードできるようになるかもね。
0827デフォルトの名無しさん
2006/04/17(月) 22:43:380828デフォルトの名無しさん
2006/04/18(火) 12:14:03構文解析だけなら、JavaCCやANTLRなら有志によってCの文法定義ファイルが用意されている。
Cだけじゃなくて、JavaやXMLも用意されている。
JavaCCやANTLRのサイトをのぞいてみて。
0829デフォルトの名無しさん
2006/04/18(火) 12:26:480830デフォルトの名無しさん
2006/04/18(火) 14:23:00感謝。実はSableCC用のgrammarを発見しました。
あとはASTを上からなめるようなものを書けばいいと思う。
あとプリプロセッサがないから手で書くか、IPAのを借りようかと思う。
>>829
完成したらソース公開するから期待しないで待ってて。
Javaで作るつもり。ライブラリはアドオン形式で。
C89も結構複雑だよねぇ。これがC99になったらと思うと・・・。
0831デフォルトの名無しさん
2006/04/18(火) 14:31:21国内のコンパイラの書籍で見かける人ばっかり・・・。
0832デフォルトの名無しさん
2006/04/18(火) 15:45:54それを言うならC++0xになったらと思うと…
0833デフォルトの名無しさん
2006/04/18(火) 16:07:22仰る通り。言語が複雑化すると処理系作る人は大変だね。
LL(1)で解析できる言語(Pascalとか)は素晴らしいなあ。
もっともそのせいで":="あたりで賛否両論になるわけだが...。
0834デフォルトの名無しさん
2006/04/18(火) 16:08:48どういうことですか?kwsk
代入演算子が = で、比較演算子が ==なら済む話?
0835デフォルトの名無しさん
2006/04/18(火) 16:59:55ごめんごめん、深い意味はないのよ。個人的な感想。
個人的には":="が"="で、"<>"が"!="で、"="が"=="だったら
もっと好きになってたかもってことで。
#自分が最初に使った言語にもよるんだろうけど
0836デフォルトの名無しさん
2006/04/18(火) 18:09:40それは、ホントに個人によるな。
俺の場合、= が代入なのはキモく感じる。
今は慣れたが、最初に言語を習うときに、既存の教育(数学)の常識と違うから。
代入は、:= とか <- とかの方がしっくりくる。
0837デフォルトの名無しさん
2006/04/18(火) 20:23:17確かに。a = a + 1 なんて絶対成立しないもんね。
そういう意味では := や <- が支持されるのはわかるなぁ。
ただ、<> が等しくないというのはちょっと違和感?
後輩で「<>って大なりでも小なりでもないから等しいってことですか」って
マジで言ってる奴がいた(w
...なるほど深読みするとそうとも取れるのかと思ったよ。
0838デフォルトの名無しさん
2006/04/18(火) 21:06:01個人的には!=という記号の対称性のなさが少し嫌かも。
それだったらprologのように=\=の方が好きだ。
0839デフォルトの名無しさん
2006/04/18(火) 21:16:390840デフォルトの名無しさん
2006/04/18(火) 21:26:260841デフォルトの名無しさん
2006/04/18(火) 21:38:370842デフォルトの名無しさん
2006/04/18(火) 22:28:55://www.com/?1=1+2
なよーなURL見て、
このサイト足し算もできないとんでもねー馬鹿だなって言ってたの思い出した
この業界はとりあえず普通じゃないよね
0843デフォルトの名無しさん
2006/04/18(火) 22:31:35というかURLの意味がわからないんだけど。
俺のプログラマでない友人も、x=x/3というのを見て、x==0と思い込んでた
0844デフォルトの名無しさん
2006/04/18(火) 23:17:020845デフォルトの名無しさん
2006/04/18(火) 23:19:150846デフォルトの名無しさん
2006/04/19(水) 01:05:410847デフォルトの名無しさん
2006/04/19(水) 01:14:130848デフォルトの名無しさん
2006/04/19(水) 01:25:27スレ違い
0849デフォルトの名無しさん
2006/04/19(水) 01:29:000850デフォルトの名無しさん
2006/04/19(水) 01:44:170851デフォルトの名無しさん
2006/04/19(水) 01:50:130852デフォルトの名無しさん
2006/04/19(水) 02:31:05関数型言語?
0853デフォルトの名無しさん
2006/04/19(水) 02:38:570854デフォルトの名無しさん
2006/04/19(水) 02:47:100855デフォルトの名無しさん
2006/04/19(水) 08:55:35BASICの頃に作られた定石でつね
0856デフォルトの名無しさん
2006/04/19(水) 09:04:53力説してるヤツがいたなぁ。
つーか、トークンの切り出しは字句解析の仕事で、
LL(1)は構文解析の話だと思うのだが。
0857デフォルトの名無しさん
2006/04/19(水) 20:48:54Rubyとかの言語がコンパイラコンパイラで作られてるのはその為?
0858デフォルトの名無しさん
2006/04/19(水) 20:53:30その本によるとなんで手書きに向いていないか書いてある?
0859デフォルトの名無しさん
2006/04/20(木) 02:33:51FORTRANの頃だろう。
0860デフォルトの名無しさん
2006/04/20(木) 17:53:43LALR(1)を手で書こうとすると地獄を見るよ。
再帰下降の文法がどれだけ簡単か感謝するようになる(w
0861デフォルトの名無しさん
2006/04/20(木) 20:15:23LALR(1)は適用範囲が広いけど書きにくい。
すげージレンマです!
0862デフォルトの名無しさん
2006/04/20(木) 21:58:00この関数を定義しないようにするにはどうすればいいでしょうか?
lex.yy.c: warning: 'yy_flex_realloc' defined but not used
0863デフォルトの名無しさん
2006/04/21(金) 00:40:110864デフォルトの名無しさん
2006/04/22(土) 10:06:33ttp://www.logos.t.u-tokyo.ac.jp/~endo/gc/gc.pdf
0865デフォルトの名無しさん
2006/04/22(土) 10:56:10違うだろ?
0866デフォルトの名無しさん
2006/04/22(土) 22:41:570867デフォルトの名無しさん
2006/04/25(火) 21:58:090868デフォルトの名無しさん
2006/04/27(木) 11:58:47どうでしょう。HSPって文法は何?LALR(1)?
0869デフォルトの名無しさん
2006/04/27(木) 23:41:05例えるなら紙芝居エロゲのシナリオスクリプト
0870デフォルトの名無しさん
2006/04/29(土) 18:18:300871デフォルトの名無しさん
2006/04/30(日) 13:00:490872デフォルトの名無しさん
2006/04/30(日) 13:08:48それともツール込みの事か?
おいらは最後には自己記述するから自分自身とかって事になるもんだと思ってるんだけど。
0873デフォルトの名無しさん
2006/04/30(日) 14:31:34ツリーを弄りやすく、静的な強い型検査をし、メモリ管理がらくちんな
言語が向く。ML系かHaskellでどうぞ。
0874デフォルトの名無しさん
2006/04/30(日) 15:34:17ツリーを弄りやすく、強力なマクロを持ち、メモリ管理がらくちんな
言語が向く。LispかSchemeでどうぞ。
0875デフォルトの名無しさん
2006/04/30(日) 15:52:58ツリーを弄りやすく、すべてがオブジェクトで、メモリ管理がらくちんな
言語が向く。Ruby でどうぞ。
0876デフォルトの名無しさん
2006/04/30(日) 16:01:31ツリーを弄りにくく、貧弱なマクロを持ち、メモリ管理がたいへんな
言語は向かない。CかC++はやめとけ。
0877デフォルトの名無しさん
2006/04/30(日) 16:10:52・・・orz
0878デフォルトの名無しさん
2006/04/30(日) 16:24:160879デフォルトの名無しさん
2006/04/30(日) 16:25:330880デフォルトの名無しさん
2006/04/30(日) 16:28:070881デフォルトの名無しさん
2006/04/30(日) 16:30:190882デフォルトの名無しさん
2006/04/30(日) 16:31:29スレもここで終了してもいいんじゃないかな?
というわけで
======= 終 了 =========
0883デフォルトの名無しさん
2006/04/30(日) 18:27:010884デフォルトの名無しさん
2006/04/30(日) 19:54:42でも習得が簡単なのはLisp?
うーん迷う。
0885デフォルトの名無しさん
2006/04/30(日) 19:59:03お前が言いたいのはLispじゃなくてSchemeだろ?
0886デフォルトの名無しさん
2006/04/30(日) 22:30:19では、何故Rubyは、Rubyで書かれていないのですか?
0887デフォルトの名無しさん
2006/04/30(日) 23:22:400888名無しさん@Linuxザウルス
2006/05/01(月) 07:38:23コア部分はCだったりする。
移植考えた場合gccでミニ言語構築してからブートストラップかな。
開発者はELFとかPEまで面倒見たくないのが本音。
0889デフォルトの名無しさん
2006/05/01(月) 08:26:55こういう馬鹿がたまに湧いてでてくるようだが、
おっとそろそろ連休かぁw
言語にはそれぞれの目的があるのも分からんの?
アセンブラからベン教しなおしたら?
0890デフォルトの名無しさん
2006/05/01(月) 09:22:190891デフォルトの名無しさん
2006/05/01(月) 09:45:36rubyのことはよく知らないけど、もしパフォーマンスに関して考慮しないとしたら、rubyは自己記述できるだけの記述力はあるの?
0892デフォルトの名無しさん
2006/05/01(月) 10:53:530893デフォルトの名無しさん
2006/05/01(月) 19:54:21ただ、パフォーマンスが問題なだけ。
0894デフォルトの名無しさん
2006/05/01(月) 19:58:44>ruby を用いれば(理論上は)なんでも記述できる。
証明は?
0895デフォルトの名無しさん
2006/05/01(月) 20:07:020896デフォルトの名無しさん
2006/05/01(月) 20:09:170897デフォルトの名無しさん
2006/05/01(月) 22:55:01あまり良い例じゃないかもしれないけど、GC は Ruby で書けないんじゃない?
0898デフォルトの名無しさん
2006/05/01(月) 23:46:150899デフォルトの名無しさん
2006/05/01(月) 23:49:020900897
2006/05/02(火) 00:07:17まぁ、そういう意味では書けそうかな。
仮想的なメモリの様な物を定義して、GC のアルゴリズムを実装したり、
malloc/free/etc. をラップしてゴリゴリ書いたりは出来るだろうね。
0901デフォルトの名無しさん
2006/05/02(火) 00:15:59チューリング完全関係ない^^;
0902デフォルトの名無しさん
2006/05/02(火) 01:29:530903デフォルトの名無しさん
2006/05/02(火) 01:38:250904デフォルトの名無しさん
2006/05/02(火) 01:44:500905デフォルトの名無しさん
2006/05/02(火) 07:01:58Ruby と Haskell を学べば他のウンコ言語は不要
0906デフォルトの名無しさん
2006/05/02(火) 10:12:400907デフォルトの名無しさん
2006/05/02(火) 18:16:08いやしかし、ごく普通のPCで
「720x480ピクセルのインターレースの画像データを
デインターレース処理してね。当然60fpsでよろしく」
「ビットレート10MBpsのMPEGデータを・・・」
とか、そういうごく有りがちな応用とかでは C/C++ は捨てがたい。
0908デフォルトの名無しさん
2006/05/02(火) 22:20:30一日中一人で荒らしてるが丸分かりでおもしろいのになぁ
0909デフォルトの名無しさん
2006/05/02(火) 22:57:40そろそろrubyでも届く処理になっていると思われ。
0910デフォルトの名無しさん
2006/05/02(火) 23:04:470911デフォルトの名無しさん
2006/05/02(火) 23:05:59C/C++はシビアな処理が必要なところとか、大規模開発向き。
言語は住み分けが大切なんだって言ってるでしょ。
0912デフォルトの名無しさん
2006/05/02(火) 23:09:570913デフォルトの名無しさん
2006/05/03(水) 01:05:190914デフォルトの名無しさん
2006/05/03(水) 01:46:15またまたご冗談を
>>911
激しく同意
0915デフォルトの名無しさん
2006/05/03(水) 01:50:51repl があって、文法が奇麗な言語って無いですかねぇ。仕様がある程度かっちり
していると嬉しいのですが。
JavaScript に型が付いた様なの、あるいは言語仕様がきちっと決まっている Pike
みたいな感じのキボンヌ。
0916デフォルトの名無しさん
2006/05/03(水) 01:59:06オブジェクト指向はラムダ式の包含的なアプローチなわけだが・・
とりあえずOCamlあたりのことを言っているのかな・・
0917デフォルトの名無しさん
2006/05/03(水) 02:27:23-- object.method() の様な感じで記述出来る -- 言語が無いかなと思いまして。
OCaml はミニマム指向なのでしょうか?
ML97 みたいな規格があると嬉しいです。
0918デフォルトの名無しさん
2006/05/03(水) 04:11:54Ruby。動的型だけど。
0919デフォルトの名無しさん
2006/05/03(水) 06:38:260920デフォルトの名無しさん
2006/05/03(水) 06:42:150921デフォルトの名無しさん
2006/05/03(水) 06:52:13JavaScript 2.0では随所に型情報をつけられるよ。
つーか「型が付いた」ってどういう意味で言ってるの?
静的型付けってこと?
0922デフォルトの名無しさん
2006/05/03(水) 07:25:26JavaScript 2.0 は以前ちょっとだけ見て忘れてました。
もう一度調べてみます。どうもありがとう。
0923デフォルトの名無しさん
2006/05/03(水) 07:33:02今はもう実装されてんの?
0924デフォルトの名無しさん
2006/05/03(水) 07:50:290925デフォルトの名無しさん
2006/05/03(水) 07:54:420926デフォルトの名無しさん
2006/05/03(水) 08:45:35Ruby コンプレックスかよダセw
どうせオブジェクト指向が使いこなせなかった低能だろ?
氏んでくださーい。あっ HSP 厨房?
0927デフォルトの名無しさん
2006/05/03(水) 10:27:540928デフォルトの名無しさん
2006/05/03(水) 13:26:480929デフォルトの名無しさん
2006/05/03(水) 15:30:010930デフォルトの名無しさん
2006/05/03(水) 15:30:40≠´ `く≠≦´_ 〃
. , ' 〈、⌒ヽ`ヽ=≠"
/, , / , キヽ. ヽ
///〃 / / / }}川 i|! i } ハ ト、 キ
. jハl|‖{ { { { ノノ川 jj| j / / j}_,メ ヾリ
. l{八 ヽヽヽ \ //ノノノノノ} /〃// `二ニ=- 、
八 、ヽ、 x≦ミヽ、{ { ≧=ミ.ノ/ノ_厶斗-‐== 二 」
/ ゝ≧ミyィ゙j:i} ` ´{゙j:;;!ii}ゞ≧=彡ヘ-‐=≡ ‐= ニコ
. / /{ミ辷彡}oー ' , ーo' {ミ辷__彡}二ニ=- jノ
{ / , ゝー=人"" cっ "" °{ミ辷__彡}-‐==≡ミ〉
\{ / /{辷彡}> .. __ イj从ミ辷_彡ノ==≡ニ≦、
`{ { f´≧=彡'´ ̄`ヽ_」 jァァ' ゞ=个辷ニニ=-テ′
`ーァ `≠ x==く(´ /,≠=キテノハミ辷=≦
ヤ/ 〈く `'ァfj彡'゙ 》/ ヽ�_弓
`{ ヾx、__,≠ハミヽ、 〃 丿 リノ
. \/´  ̄_/,≠= 、 `'≡彡゙ '⌒'く ´
/ _/´~ニ{ニ Y´ -‐- 、丿
{ /i{ ニ{- ハr┬- 、 }
ノイ| キ ノ゙T ¬i ! } } ヽ {
/ {l| キf´‖{| j }ノノ } }
‖ ミ{ キ!、リ キ /// ′ハ
人 ヾ、 ヾツ キー' 〃 _ .. イ ヽ
. / `アアア丁! ! `T¨丁 ̄i i | \
. / / / / �Ui i �U | �U i i \
うう・・・・・・・グス・・・・・・・ひっく・・・・・・・・ごめんなさいなのぉ・・・
0931デフォルトの名無しさん
2006/05/03(水) 22:14:41最近流行ってる見たいですが…
0932デフォルトの名無しさん
2006/05/03(水) 22:23:220933デフォルトの名無しさん
2006/05/03(水) 23:33:12さすがに紙に穴あけたことはないけど。
0934デフォルトの名無しさん
2006/05/04(木) 00:48:06> いまどきアセンブラの仕事している俺っていったい・・・
1チップ組込用マイコン設計屋で、アセンブラでテストパタン作っていますが、何か?
0935デフォルトの名無しさん
2006/05/04(木) 00:58:010936デフォルトの名無しさん
2006/05/04(木) 01:12:31カコイイ!!
0937デフォルトの名無しさん
2006/05/04(木) 04:32:360938デフォルトの名無しさん
2006/05/04(木) 04:53:01disassemble や decompile した事無いの?
0939デフォルトの名無しさん
2006/05/04(木) 07:20:30スゲー!!!
0940デフォルトの名無しさん
2006/05/04(木) 08:53:20FPGA とか CPLD でゴニョゴニョ出来る人はちょっと憧れる。
↓こんなのとか。
http://crystal.freespace.jp/pgate1/nes/index.html
0941デフォルトの名無しさん
2006/05/04(木) 09:00:37お嫁さんにして下さい。
0942デフォルトの名無しさん
2006/05/04(木) 10:15:22カコイイ
0943デフォルトの名無しさん
2006/05/04(木) 13:03:21m9(^Д^)プギャー!!
0944デフォルトの名無しさん
2006/05/04(木) 13:18:00そういや、アセンブラやってからCをやると、
ポインタが分かりやすいという話があったな。
0945デフォルトの名無しさん
2006/05/04(木) 19:21:03それ、逆というか本末転倒。
ポインタの概念を理解できないと、そもそもアセンブラを理解できない。
従って、アセンブラをやった者にはポインタは空気のような存在。
使えない事の方が理解しがたい。
0946デフォルトの名無しさん
2006/05/04(木) 19:33:46アセンブラの次にcやった人だと、ポインタに対する
インクリメント(++)で、型によって値が+2されたり+4
されたりするのが理解しづらいとオモ
つ〜か、漏れが昔はそうだった
0947デフォルトの名無しさん
2006/05/04(木) 19:54:500948デフォルトの名無しさん
2006/05/04(木) 20:22:540949デフォルトの名無しさん
2006/05/04(木) 20:35:340950デフォルトの名無しさん
2006/05/04(木) 21:05:251チップマイコンは地味に流行ってて面白そう。ARM 基板とか安く手に入るし。
0951デフォルトの名無しさん
2006/05/04(木) 23:18:48みな中途半端
0952デフォルトの名無しさん
2006/05/04(木) 23:25:020953デフォルトの名無しさん
2006/05/04(木) 23:56:18今んとこ最強だよね
0954デフォルトの名無しさん
2006/05/05(金) 04:45:55それほど中途半端な感じはしなかったけど・・・
0955デフォルトの名無しさん
2006/05/05(金) 04:47:52rubyも中途半端
0956デフォルトの名無しさん
2006/05/05(金) 06:04:080957デフォルトの名無しさん
2006/05/05(金) 06:50:44それを言っちゃうとメジャーな言語でオブジェクト指向を謳ったものはほとんど残らないじゃないか。
0958デフォルトの名無しさん
2006/05/05(金) 10:24:17また古い話だな。でも Ruby は Smalltalk の良い所を継承しつつ、その制限や
不便な部分を改善しているよ。今迄実行環境については構文木を Eval という
Smalltalk に大きく見劣りする形式だったけど YARV によって GC 回りを含め
て大きく改善された。
0959デフォルトの名無しさん
2006/05/05(金) 10:28:29YARV の詳細は知らんけど、世代別 GC と JIT くらい備えないと
10 年前の Smalltalk にすら追い付いてないのでは。
0960デフォルトの名無しさん
2006/05/05(金) 11:52:13YARV 世代別 GC になるよ。JIT も計画されてるみたいだけど
最初は搭載されないだろうなー
0961デフォルトの名無しさん
2006/05/05(金) 16:48:22YARVてなんか未踏でもなんでもない気がくぁwせdrftgyふじこ
0962デフォルトの名無しさん
2006/05/05(金) 16:49:140963デフォルトの名無しさん
2006/05/05(金) 16:49:490964デフォルトの名無しさん
2006/05/05(金) 18:47:40だろう。
純粋な関数型: Haskell
純粋なオブジェクト指向: Ruby
このスレもこの二つメインで良くね?ぶっちゃけのこりの雑種共はいずれ死滅
するだろ。
0965デフォルトの名無しさん
2006/05/05(金) 18:54:520966デフォルトの名無しさん
2006/05/05(金) 20:15:27孤高の言語 Lisp Prolog > 新しいパラダイム Smalltalk Haskell > 面白いモデル ML Forth
て感じだろ。
Java Perl Ruby Python なんかはカスみたいなもんだ。
0967デフォルトの名無しさん
2006/05/05(金) 20:21:220968デフォルトの名無しさん
2006/05/05(金) 20:25:44実用言語が一つもない件w
0969デフォルトの名無しさん
2006/05/05(金) 20:30:53まじめな話Forthは実用言語だぞ。
今はあまり使われないがリソースが少なかった頃の組み込み分野じゃ一斉を風靡したもんだ。
(ちなみにforthラブラブな本があったんだけどタイトル失念した)
0970デフォルトの名無しさん
2006/05/05(金) 20:35:110971デフォルトの名無しさん
2006/05/05(金) 20:40:43つうか、あるパラダイムに本当に完全に純粋な言語なんて無いよなぁ。
0972デフォルトの名無しさん
2006/05/05(金) 20:48:04純粋な言語は幾らでもあるけれど?
0973デフォルトの名無しさん
2006/05/05(金) 21:09:50政治的な話はなしにしないとemacsとviみたいに不毛な話しかでてこなくなる。
#つーか原理主義だけはやめようよ〜
0974デフォルトの名無しさん
2006/05/05(金) 22:01:34実用的なソフトが作れない
>>969
おお、それは失礼した。
組み込みで使われてたか。知らん分野だった
>>972
どこどこ?
0975デフォルトの名無しさん
2006/05/05(金) 22:09:58つC$
0976デフォルトの名無しさん
2006/05/05(金) 22:31:030977デフォルトの名無しさん
2006/05/05(金) 23:07:39Vi を使って Ruby スクリプトを書くようなイメージ
0978デフォルトの名無しさん
2006/05/05(金) 23:12:09もっとお勉強しましょうねー
0979デフォルトの名無しさん
2006/05/05(金) 23:12:400980デフォルトの名無しさん
2006/05/05(金) 23:31:46お前の言う「純粋」な言語は存在しない。お前がもっと勉強してね。
0981デフォルトの名無しさん
2006/05/05(金) 23:34:05あと印刷関連の言語 PostScript もほぼ純粋 Forth だよ。
0982デフォルトの名無しさん
2006/05/05(金) 23:51:09SchemeとSmalltalkはRubyよりは「純粋」だと思うよ
Rubyのアイデンティティってなんなの?
0983デフォルトの名無しさん
2006/05/05(金) 23:54:45SchemeとSmalltalkが「純粋」?
ブハッツww バカだコイツww
0984デフォルトの名無しさん
2006/05/05(金) 23:58:11Smalltalk のどのへんが OO 言語として純粋でない部分?
ちょっと通りすがりだけど興味あるんで聞いてみたい。
0985デフォルトの名無しさん
2006/05/05(金) 23:58:15もっとお勉強しましょうねー
0986デフォルトの名無しさん
2006/05/06(土) 00:05:59後付っぽい感じがただよいまくり。
0987デフォルトの名無しさん
2006/05/06(土) 00:07:11実用の為に導入されている。
0988デフォルトの名無しさん
2006/05/06(土) 00:11:10OO の本質が何であるかは人によって様々。
勿論クラス指向でも問題無し。
0989デフォルトの名無しさん
2006/05/06(土) 00:11:31Smalltalk は全てオブジェクト
Ruby は 、、、 えっ 文字列を evalするの?
ブロックなにそれ?
そんな Rubyのアイデンティは? 、 ないよねー
0990デフォルトの名無しさん
2006/05/06(土) 00:14:03つまり、人によって純粋の定義は異なる。
よって、純粋かどうかに拘って、アイデンティティがどうとか言ってる982はバカだってことで
0991デフォルトの名無しさん
2006/05/06(土) 00:18:15いじってみたくなっただけなんだ。
正直純粋とかアイデンティティとかどうでもいい。いまは反省している。
0992デフォルトの名無しさん
2006/05/06(土) 00:18:35>つまり、人によって純粋の定義は異なる。
これはそのとおりだし、「純粋」議論には意味がないと思うが。
で、「純粋なOO言語だっ」と言いたがるのはたいていRuby信者だが、それはさておき。
Rubyが、いろんな言語からつぎはぎした統一感のない言語だってのは事実なんじゃね?
それを「いいとこ取り」と言う奴もいるだろうが、「ぐちゃぐちゃ」とか「アイデンティティがない」とか
思う奴もいてよかろう。
0993デフォルトの名無しさん
2006/05/06(土) 00:18:36純粋の定義は変わらんよ。どっちの方向に純粋かが変わるだけ。
純粋である事にはそれ程意味がある訳じゃないけどね。
>>989
Ruby のアイデンティティは ad-hoc さとごちゃ混ぜ感じゃないの。
yet another perl だから。
0994デフォルトの名無しさん
2006/05/06(土) 00:22:21今回は特にテンプレ貼らず、Wikiのまとめページへのリンクだけでもいい気がする。
http://www6.atwiki.jp/compilerandscriptengine/
0995デフォルトの名無しさん
2006/05/06(土) 00:31:26他の言語のよいところをつぎはぎしない言語は、死んで使われてない言語だけだろ。
>それを「いいとこ取り」と言う奴もいるだろうが、「ぐちゃぐちゃ」とか「アイデンティティがない」とか
>思う奴もいてよかろう。
それは無知だからだろ。 というと怒るか?
では、Rubyも全てオブジェクトだし、純粋だと言うヤツがいてよかろう。
それを否定して、無知だからだと言ってるヤツは何だ?
0996デフォルトの名無しさん
2006/05/06(土) 00:39:47その話はもう終わり。無駄レスで残り少ないレスを消費するなよ。
0997デフォルトの名無しさん
2006/05/06(土) 00:43:12浅はかなんだよ。お前は。
0998デフォルトの名無しさん
2006/05/06(土) 00:51:28アイデンティティがないのがアイデンティティって? まあ否定はしないけど。
>>995
ブロックはオブジェクトじゃないよ。RubyはSchemeに似すぎている。だからこそ中途半端に感じる。
もっと Schemeっぽくして callを applyにしてオブジェクトを evalするようにするのは簡単
だろうけど、それって嬉しいの? ってなる。Schemeでいいじゃんみたいな。
使ってる人もいっぱいいるし、身動きとれなくなって結局 Perlみたくなるんだよ。
0999デフォルトの名無しさん
2006/05/06(土) 00:59:00>RubyはSchemeに似すぎている。だからこそ中途半端に感じる。
最近のLL言語はそらLisp系に似てるだろうけど、それで中途半端に感じる?意味不明すぎ。
>もっと Schemeっぽくして callを applyにしてオブジェクトを evalするようにするのは簡単
>だろうけど、それって嬉しいの? ってなる。Schemeでいいじゃんみたいな。
なんでSchemeっぽくする話にしてんの?しないよ。
Schemeでいいじゃんみたいなって、意味不明な論理からその結論かよ。アホか。
>使ってる人もいっぱいいるし、身動きとれなくなって結局 Perlみたくなるんだよ。
だからなんだってんだ?
1000デフォルトの名無しさん
2006/05/06(土) 01:00:0710011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。