「コンパイラ・スクリプトエンジン」相談室6
at TECH
1:デフォルトの名無しさん
05/05/06 08:28:29
プログラミング言語処理系の開発に興味のある人達のスレッドです。
字句解析・構文解析から,データフロー解析,ループ並列化,タスク並列化,SSA変換,
CPS変換,レジスタ割付,命令スケジューリング,ソフトウェアパイプライン等各種最適化,
それにVM,GC,JIT,リンク時最適化,動的バイナリ変換などなど。
意味論に関する話題も歓迎です。
前スレ
1 URLリンク(pc.2ch.net)
2 スレリンク(tech板)
3 スレリンク(tech板)
4 スレリンク(tech板)
5 スレリンク(tech板) (前スレ)
関連リンクは多分 >>2-10 あたり
2:デフォルトの名無しさん
05/05/06 08:28:55
★コンパイラ一般
・色々なツールの紹介
URLリンク(catalog.compilertools.net)
・コンパイラ関連のリンク集
URLリンク(www.ulis.ac.jp)
・スクリプティング言語資料室(仮) (リンク集)
URLリンク(www.kt.rim.or.jp)
・Compiler Construction
URLリンク(rananim.ie.u-ryukyu.ac.jp)
・Compiler Construction (1997)
URLリンク(rananim.ie.u-ryukyu.ac.jp)
・情報システム工学実験 III コンパイラ・コンパイラ
URLリンク(math.cs.kitami-it.ac.jp)
・OS/Programming 簡単な C コンパイラ
URLリンク(www.csg.is.titech.ac.jp)
・正規表現
URLリンク(hp.vector.co.jp)
・コンパイラ研究・開発情報の一集積所
URLリンク(compilers.cs.uec.ac.jp)
・Links and Selected Readings
URLリンク(www.gnu.org)
・国産のコンパイラ共通インフラストラクチャCOINS
URLリンク(www.coins-project.org)
3:デフォルトの名無しさん
05/05/06 08:29:18
★字句・構文解析
・Lex and YACC primer/HOWTO (邦訳)
URLリンク(www.linux.or.jp)
・Turbo Pascal Lex/Yacc
URLリンク(www.musikwissenschaft.uni-mainz.de)
・Jim Roskind's LALR(1) C++ Grammar
URLリンク(www.empathy.com)
・Flexと Bisonを同時に使う
URLリンク(guppy.eng.kagawa-u.ac.jp)
・KITE_ASM (yacc,lex)
URLリンク(www.arch.cs.kumamoto-u.ac.jp)
・bison用のC++ LALR skeleton
URLリンク(www.bj-ig.de)
・ANTLR(非yaccのパーサジェネレータ)
URLリンク(www.antlr.org)
・JavaCC(Java Compiler Compiler)
URLリンク(javacc.dev.java.net)
URLリンク(village.infoweb.ne.jp)
URLリンク(www.asahi-net.or.jp)
・CUP, JLex, JFlex
URLリンク(www.cs.princeton.edu) (JLex, CUP)
URLリンク(www.jflex.de)
・SableCC
URLリンク(www.sablecc.org)
・¬<><∪∪ (notavacc)LALR(1)
URLリンク(ne.cs.uec.ac.jp)
・boost::spirit(C++のテンプレートでEBNFの構文を模倣)
URLリンク(spirit.sourceforge.net)
URLリンク(boost.cppll.jp)(マニュアル日本語化プロジェクト)
URLリンク(www.fides.dti.ne.jp)
4:デフォルトの名無しさん
05/05/06 08:29:35
★ごみ集め
・GC FAQ -- draft
URLリンク(www.iecc.com)
・A garbage collector for C and C++
URLリンク(www.hpl.hp.com)
・一般教養としての Garbage Collection
URLリンク(www.is.s.u-tokyo.ac.jp)
・Garbage Collection : Algorithms for Automatic Dynamic Memory Management
URLリンク(www.amazon.com)
★処理系,スクリプト
・kikyou.info (吉里吉里というゲームのスクリプト)
URLリンク(kikyou.info)
・tiny C コンパイラ (C)
URLリンク(www.watalab.cs.uec.ac.jp)
・6809用 Micro C コンパイラ
URLリンク(www.axe-inc.co.jp)
・Portable Object Compiler (Obj-C >> C のトランスレータ?)
URLリンク(users.pandora.be)
・自作コンパイラの部屋(PL/1, Pascal等)
URLリンク(www.tokumaru.org)
・『Rubyソースコード完全解説』サポートページ
URLリンク(i.loveruby.net)
・『やさしい Lisp の作り方』『やさしい Java インタプリタ の作り方』
URLリンク(www.okisoft.co.jp)
・MSによるPEフォーマット仕様書(日本語)
URLリンク(www.interq.or.jp)
5:デフォルトの名無しさん
05/05/06 08:29:53
★参考書籍
・コンパイラ 原理・技法・ツール 1&2
URLリンク(www.amazon.co.jp)
URLリンク(www.amazon.co.jp)
通称ドラゴンブック。バイブル。
・コンパイラ構成法 原田 賢一
URLリンク(www.amazon.co.jp)
URLリンク(www.hara.cs.keio.ac.jp) (ソース、正誤表のダウンロード)
・プログラミング言語処理系 岩波講座 ソフトウェア科学〈5〉 佐々 政孝
URLリンク(www.amazon.co.jp)
一冊で済ませたい人へ。
・コンパイラの構成と最適化 中田 育男
URLリンク(www.amazon.co.jp)
最適化がメイン。
・コンパイラの仕組み 渡邊 坦
URLリンク(www.amazon.co.jp)
薄い奴(185p)を読みたい人に。
・21st Century Compilers (Alfred V. Aho, Sethi, Ravi Sethi, Jeffrey D. Ullman, Monica Lam)
URLリンク(www.amazon.co.jp)
いつ出るんだ?
・スモールコンパイラの制作で学ぶプログラムのしくみ
URLリンク(www.cbook24.com)
6:デフォルトの名無しさん
05/05/06 08:30:07
★学会
・PLDI
URLリンク(research.ihost.com)
コンパイラの研究に関する最新成果を知りたければまずはここ。
・POPL
URLリンク(www.cs.princeton.edu)
PLDIよりは理論寄りだが大いに参考になる。
・ICFP
URLリンク(www.brics.dk)
関数型言語に関する学会。とても難しい。
・OOPSLA
URLリンク(www.oopsla.org)
オブジェクト指向言語に関する学会。最近はやや低調?
・ICCC
URLリンク(cc05.cs.berkeley.edu)
かなり実用寄り。
7:デフォルトの名無しさん
05/05/06 08:31:38
ということで、新スレです。
8:デフォルトの名無しさん
05/05/06 17:56:21
乙。
9:デフォルトの名無しさん
05/05/07 09:05:25
お疲れ。
10:三遊亭円楽
05/05/07 10:19:03
スレリンク(tech板)
プログラミング言語処理系をネタにした大喜利は上記すれでどうぞ
11:デフォルトの名無しさん
05/05/08 08:10:36
このスレにしては奇跡的に穏やかな始まり方だな。
12:デフォルトの名無しさん
05/05/08 11:41:07
なんだ荒れてほしいのか?
>>1
糞スレ
13:あぼーん
あぼーん
あぼーん
14:あぼーん
あぼーん
あぼーん
15:あぼーん
あぼーん
あぼーん
16:デフォルトの名無しさん
05/05/08 14:45:38
>>1が前スレのテンプレを使っているのでこっちが本スレ。
17:あぼーん
あぼーん
あぼーん
18:デフォルトの名無しさん
05/05/08 14:49:36
>>16
意味なく上げるなボケッ
19:デフォルトの名無しさん
05/05/08 15:42:28
前スレをわざわざ埋めたやつが居るんだな
時刻からして手動っぽい?
20:マニュアル嫁
05/05/08 15:54:04
FLEX
URLリンク(www.asahi-net.or.jp)
Bison
URLリンク(www.gnu.org)
21:デフォルトの名無しさん
05/05/08 15:57:50
OCamllex, OCamlyacc
URLリンク(caml.inria.fr)
22:あぼーん
あぼーん
あぼーん
23:デフォルトの名無しさん
05/05/08 17:05:10
おまいらはどんなコンパイラを作りましたか
24:あぼーん
あぼーん
あぼーん
25:あぼーん
あぼーん
あぼーん
26:あぼーん
あぼーん
あぼーん
27:あぼーん
あぼーん
あぼーん
28:あぼーん
あぼーん
あぼーん
29:デフォルトの名無しさん
05/05/08 23:19:37
池沼がわいてるな。
30:デフォルトの名無しさん
05/05/08 23:46:10
>>29
意味の無い書き込みで上げるな、ボケッ
31:デフォルトの名無しさん
05/05/09 00:08:11
どっちが本スレなのかはっきりしてくれないか
32:デフォルトの名無しさん
05/05/09 00:35:39
両方の>>1のタイムスタンプ見れば一目瞭然
33:デフォルトの名無しさん
05/05/09 00:39:19
>>31
>>1を読む限りじゃこっちだと思われる。
つかネタないの?
34:デフォルトの名無しさん
05/05/09 00:49:27
ではGCについて。
35:デフォルトの名無しさん
05/05/09 00:58:06
GCで連想するのは、Javaがスレッドでいつもいつもメモリを観察しているということと、マークアンドスイープしか知りません。
超エリート中学生の私にいろいろ教えてください。
36:デフォルトの名無しさん
05/05/09 01:02:46
マーク付けはオブジェクトにフラグを持たせるのと
ビットマップで管理するのとどっちが好きですか?
37:デフォルトの名無しさん
05/05/09 01:06:22
1ビットも無駄にしたくないからビットマップ。
ただしリニアなメモリブロックを強要される。
38:あぼーん
あぼーん
あぼーん
39:デフォルトの名無しさん
05/05/09 09:38:29
lex+yaccで、yaccからスキャナに文脈を渡したいときにフラグを使いますが、
lexのスタート状態を変更できるようにすればいいのではと思うことがあります。
ただlexにはy.tab.hのようなのを吐かないので
多少冗長なコードを書く(もしくはそれを生成するツールを書く)必要があり、
標準ではそれが簡単にできるようにはなっていません。
しかしそれが有用ならとっくにflexあたりには実装されているでありましょうし、
やはり上記の思いつきはあまり有用ではないのでしょうか...?
40:デフォルトの名無しさん
05/05/09 19:02:28
>>39
なるほど確かに弁理かもしれんな。
じゃが、標準というものは得てしてそういうものじゃ。
ex. /bin/sh
41:デフォルトの名無しさん
05/05/09 20:38:15
>>40
flexあたりには、という部分を読んどらんのか?
42:デフォルトの名無しさん
05/05/09 20:59:06
>>39
よくわからん。
.lファイルの%%の後ろに、
void start_hoge() {
BEGIN HOGE;
}
って書いといて、yacc側からstart_hoge()を呼んだらだめなんだっけ?
43:40
05/05/09 21:19:38
>>41
読んで書いてるんだが?
>>42
余計なもの(-1)
44:デフォルトの名無しさん
05/05/10 00:45:55
>>42
それが
> 多少冗長なコードを書く(もしくはそれを生成するツールを書く)必要があり、
という部分なのでは。
>>43
読んでたら>>40には繋がらんような。flexは標準じゃないだろ。
/bin/shに例えられるのはAT&T lexとかじゃねえ? flexはbashとかzshだと思われ。
45:42
05/05/10 08:20:34
>>44
うーん、たいした手間じゃないし、lexerのカプセル化という点から考えても、
むしろその手間は「かけるべき手間」なんでは。
だいたいparserがlexerに頻繁にちょっかい出すってのもなあ…
Rubyじゃあるまいし。
46:デフォルトの名無しさん
05/05/10 17:45:20
Rubyに限らずわりとよくある要求だろ。 > lexerに文脈を渡す
47:デフォルトの名無しさん
05/05/10 18:28:43
>>45
うーん、スタート状態の変更は実質的にスキャナの切り替えとみることもできるから
BEGINマクロというインタフェースが公開されれば
むしろ変数で情報を渡すよりカプセル化に有益なんでは。
だいたいlexがマクロの定義をヘッダに出力するオプションが一つあれば済む話なのに
それ以後%startと整合性をとる必要を生じるのが「かけるべき手間」ってのもなあ…
マゾじゃあるまいし。
48:デフォルトの名無しさん
05/05/10 19:50:04
このスレでflexのパッチでも作ってみるか。
49:あぼーん
あぼーん
あぼーん
50:デフォルトの名無しさん
05/05/10 20:46:08
馬鹿かおまえら?
LISPじゃあるまいし
51:デフォルトの名無しさん
05/05/10 23:27:57
LISPがあればいいや
52:42
05/05/10 23:42:48
>>46
>Rubyに限らずわりとよくある要求だろ。 > lexerに文脈を渡す
そうかねえ。
Cあたりでも、typedefなんかでparserがlexerにちょっかい出すけど、
parserがlexerに『頻繁に』ちょっかい出すのはやっぱり行儀悪いと俺は思うよ。
人間にとっても曖昧な、落とし穴の多い言語になりそうだ。
>>47
>むしろ変数で情報を渡すよりカプセル化に有益なんでは。
「変数で状態を渡す」と言った覚えはないし、
>それ以後%startと整合性をとる必要を生じるのが「かけるべき手間」ってのもなあ…
「%startと整合性をとる必要を生じる」ってのがわからないんだけど。
俺アホだからなにか気付いてないことがあるんかね。だとしたら教えてくれや。
>マゾじゃあるまいし。
クラスにsetterメソッド書くのがマゾだ、とまで言うんならもう何も言わないけどさ。
現状で、flexでさえそんな機能がないってことが、大半のプログラマはそんな
機能を望まない、っていうひとつの証拠だと思うよ。
53:デフォルトの名無しさん
05/05/11 00:00:13
アホなら黙ってりゃいいのに。
54:デフォルトの名無しさん
05/05/11 02:18:35
>>52
機能がないことがその証拠ってのもおかしいだろ。機能がないからほとんどの人間が気づいていないだけ、という可能性も十分あるわな。
いろんな記号を多用するような言語(スクリプト言語では多いよな)なら、コンテキストによってlexerの動作を変えたいという要求はすごくある。
それが今までのツールじゃ難しかったか面倒くさかったから、言語の機能が増えるたびに予約語も増える傾向にある。
55:デフォルトの名無しさん
05/05/11 03:05:04
>>52
> 人間にとっても曖昧な、落とし穴の多い言語になりそうだ。
ここに全く同意できない。
開発する人間とって曖昧な、落とし穴の多い実装になりそうだ。
↑これなら納得するし説得されてやる。
56:デフォルトの名無しさん
05/05/11 04:44:45
>>55
>開発する人間とって曖昧な、落とし穴の多い実装になりそうだ。
んで、だからこそそれをサポートする>>39の提案が意味を持つわけだね。
57:デフォルトの名無しさん
05/05/11 20:41:25
WindowsでC++モドキを作ってて、UNIXに移植する段階でこの問題が出た。
WindowsのC++処理系のほとんど(全て?)はtry catchの例外機構を
SEHで実装してるけど、
UNIXでは何使って実装するもんなの?まさかsetjmp/longjmpとか?
58:デフォルトの名無しさん
05/05/11 20:54:31
g++を見たほうが早いような
59:デフォルトの名無しさん
05/05/11 21:01:17
たぶんアセかな。
そのアセ自体が何してるのか知らんが。
60:デフォルトの名無しさん
05/05/11 21:07:35
>>57
言いたいことはわからんでもないが,SEHとはtry/catchのような構文によるエラー処理の
総称では?
SEHをCで実装する場合、setjmp/longjmpもしくは2返戻値によるのが普通かな。
61:デフォルトの名無しさん
05/05/11 21:09:26
確かに
> try catchの例外機構をSEHで実装してるけど、
という言い方は変だよな。
62:デフォルトの名無しさん
05/05/11 21:10:15
>>57
つまり、そのまさか。
63:デフォルトの名無しさん
05/05/11 21:12:12
>>60-61
知ったかぶんなよ。
WindowsにはSEHという機構がOSに組み込まれてるの。
64:デフォルトの名無しさん
05/05/11 21:19:39
>>63
そんなことは分かってる
65:デフォルトの名無しさん
05/05/11 21:20:25
ちなみに例外がアプリケーション側で補足されず、そのままスルーすると出る
デフォルトのダイアログ(ご迷惑をお掛けしています〜)は、
OS側にこの機構があるおかげです。
UNIXの糞ダンプと違って、そのままデバッガに飛ぶなりできます。。。
66:デフォルトの名無しさん
05/05/11 21:22:08
>>64
いや、おまえ判ってない。
ぜんぜんわかってない。
67:デフォルトの名無しさん
05/05/11 21:23:08
>SEHをCで実装する場合、setjmp/longjmp
なんせこんなこと言ってるし
68:デフォルトの名無しさん
05/05/11 21:25:45
じゃあ糞UNIXはsetjmp/longjmpで糞チェインを自分で作らないと駄目って事で。
69:デフォルトの名無しさん
05/05/11 21:28:21
言語語ってるやつが、WIN使いとはなw
ワロタ
70:デフォルトの名無しさん
05/05/11 21:29:36
え、どこが面白いの?
71:デフォルトの名無しさん
05/05/11 21:31:13
>>69
そんな奴おらんだろw
72:デフォルトの名無しさん
05/05/11 21:33:25
Windowsの高度な技術議論についてけずUNIXerの頭が崩壊したらしいなw
73:デフォルトの名無しさん
05/05/11 21:34:28
それで、UNIXでは本当にsetjmp使うんですか?
なんか信じられないけど。
まあgcc読んできますが。
74:デフォルトの名無しさん
05/05/11 21:39:00
SEHとはこれのことだろ。
URLリンク(www.microsoft.com)
URLリンク(www.microsoft.com)
75:デフォルトの名無しさん
05/05/11 21:42:23
>>65
サーバでそんな事してたらアホだろ
76:デフォルトの名無しさん
05/05/11 21:42:36
なんでsetjmp使うことに驚く。別にUNIXでなくても普通に使ってるぞ。
ところで上でもめてるようだが、SEHという言葉には
・win32固有の機能(よく__try, __exceptで利用するものね)
・try〜catch的なエラー処理構文(on error goto等との対比で)
のふたつの意味があり、Microsoftでもその両方を文脈に応じて使いわけている。
77:デフォルトの名無しさん
05/05/11 21:45:19
>>75
Windowsにはサービスというものが(以下略
ほんと糞UNIXerは使えねえなw
78:デフォルトの名無しさん
05/05/11 21:46:00
UNIX使いの使えなさ加減にワロタ
79:デフォルトの名無しさん
05/05/11 21:46:44
>>76
文脈から理解できなかったアフォの言い訳だなw
80:デフォルトの名無しさん
05/05/11 21:48:08
UNIX使いのアホさ加減にワロタ
81:デフォルトの名無しさん
05/05/11 21:49:08
やけにスレ伸びてるかと思ったら
UNIX嫌いのバカが一匹いるだけか
82:デフォルトの名無しさん
05/05/11 21:49:50
UNIX使いの煽りってたいしたことないのなw
83:デフォルトの名無しさん
05/05/11 21:50:15
>>77
一生モニタのお守りしてるつもり?
84:デフォルトの名無しさん
05/05/11 21:50:18
UNIX使いの煽りの低レベルさにワロタ
85:デフォルトの名無しさん
05/05/11 21:51:11
windows最高。microsoftは神。
86:デフォルトの名無しさん
05/05/11 21:51:14
>>83
無知がでしゃばるなって。
サービス登録すれば勝手に再起動とか色々できるわけですよ。
87:デフォルトの名無しさん
05/05/11 21:51:42
UNIX使いの無知さ加減にワロタ
88:デフォルトの名無しさん
05/05/11 21:52:06
はやくunixにもwin32が移植されるといいね。
89:デフォルトの名無しさん
05/05/11 21:52:40
win32万歳。seh万歳。
90:デフォルトの名無しさん
05/05/11 21:54:02
>>86
ヘェ、凄い凄いw
91:デフォルトの名無しさん
05/05/11 21:54:13
windowsは究極のos
92:デフォルトの名無しさん
05/05/11 21:54:33
UNIXを馬鹿にしないでください
2chのサーバだってUNIXですよ?
93:デフォルトの名無しさん
05/05/11 21:54:44
windowsに足りないものは何もない
94:デフォルトの名無しさん
05/05/11 21:55:51
余分なものは山ほど(ry
95:デフォルトの名無しさん
05/05/11 21:56:07
みんなで崇めようwindows
96:デフォルトの名無しさん
05/05/11 21:56:26
>>92
おれが馬鹿にしてるのはUNIXでなくてここにいるUNIX使いだってばw
97:デフォルトの名無しさん
05/05/11 21:56:59
>>96
おい、レベル下がってるぞ
もっと面白い事言ってくれよ
98:デフォルトの名無しさん
05/05/11 21:57:00
こんなに愛されて…windowsも幸せ者だな
99:デフォルトの名無しさん
05/05/11 21:57:29
UNIX使いの早とちりにワロス
100:デフォルトの名無しさん
05/05/11 21:57:47
そうだwindowsで行こう
101:デフォルトの名無しさん
05/05/11 21:58:38
世の中windowsが標準です
102:デフォルトの名無しさん
05/05/11 21:59:52
つまらん
103:デフォルトの名無しさん
05/05/11 22:00:33
_ ∩
( ゚∀゚)彡 windows! windows!
⊂彡
104:デフォルトの名無しさん
05/05/11 22:00:38
UNIXにもプロセスが死んだらコアダンプというものがあって、
デバッガを自分で起動できますが何か?
105:デフォルトの名無しさん
05/05/11 22:02:20
unixさんが好きです。でもWindowsさんの方がもっと好きです。
106:デフォルトの名無しさん
05/05/11 22:03:53
お前ら、まとめてこっちへ行っちゃえ。
最高に頭悪そうな発言してください in ム板 (V)
スレリンク(tech板)
107:デフォルトの名無しさん
05/05/11 22:06:38
ためになるお話でした。
108:デフォルトの名無しさん
05/05/11 22:10:48
いまさらWindowsで動かない処理系はクソだと思ってる俺様がきましたよ
109:デフォルトの名無しさん
05/05/11 22:12:14
もうみんな帰っちゃったよ
110:デフォルトの名無しさん
05/05/11 22:40:37
>>108
馬鹿の見本みたいな奴だなw
111:デフォルトの名無しさん
05/05/11 22:41:58
windowsが好きで好きで仕方がない
112:デフォルトの名無しさん
05/05/11 22:42:57
>>110UNIXだけだとサーバの日陰者アプリしか作らないじゃん
113:デフォルトの名無しさん
05/05/11 22:44:00
windowsを愛することにかけては誰にも負けない
114:デフォルトの名無しさん
05/05/11 22:44:42
>>112
UNIXでも最近まともに動いてるサーバはWebぐらいだよ。
正直ApacheやJavaのおかげと言っていい。
他の用途では正直使い物にならない。
115:デフォルトの名無しさん
05/05/11 22:44:50
windowsのためなら死ねる
116:デフォルトの名無しさん
05/05/11 22:46:41
まだDBがあるさ。
Oracleとかのおかげだけど。
117:デフォルトの名無しさん
05/05/11 22:47:07
削れるものは何もない。加えるものは何もない。それがwindows
118:デフォルトの名無しさん
05/05/11 22:48:25
何も足さない、何も引かない
119:デフォルトの名無しさん
05/05/11 22:48:53
Windowsの49日ルールがある限りUNIXは生き残れる!
120:デフォルトの名無しさん
05/05/11 22:50:01
そんなにいいのかwindowsは。明日買ってこよう。
121:デフォルトの名無しさん
05/05/11 22:50:10
そろそろ違う所でやってもらえませんか?>UNIX関係
一応誘導しておきます。
UNIXプログラミング質問すれ Part5
スレリンク(tech板)
UNX板
URLリンク(pc8.2ch.net)
122:デフォルトの名無しさん
05/05/11 22:50:51
凄いな。俺も買ってこよう。
123:デフォルトの名無しさん
05/05/11 22:52:31
でもこんなにいいwindows、高いんじゃないの?
124:デフォルトの名無しさん
05/05/11 22:56:59
無料Linuxが1円の価値だとすると、プロ仕様はその約3万倍ぐらいです。
でもほとんどのお店で売ってるPCに何故か付いてきます。
何故でしょうね。
この謎を解き明かしてみるのも面白いかもしれませんよ。
125:デフォルトの名無しさん
05/05/11 22:57:10
それが奥さん、聞いてくださいよ。
なんとたったの28,350円(価格コム調べ)
URLリンク(kakaku.com)
さらに今お買い上げいただくと
126:42
05/05/11 23:16:31
なんかスレッドが伸びてると思ったら... なんだこりゃ。
で話を戻すけど、
>>55
>> 人間にとっても曖昧な、落とし穴の多い言語になりそうだ。
>ここに全く同意できない。
根拠もなしにんなこと言われてもなあ。実際Rubyは落し穴の多い言語になってるし。
URLリンク(i.loveruby.net)
で、Rubyのlexerには状態が9種類あるようだけど、parserから設定するのは
4種類だけだ(EXPR_BEG, EXPR_END, EXPR_ENDARG, EXPR_FNAME)。
だったらlexerにsetterを4個付ければ済む話。
たいした手間じゃないし、勝手に他の状態にされる危険もないし(カプセル化の基本)。
>>54
>機能がないからほとんどの人間が気づいていないだけ、
>という可能性も十分あるわな。
本気でそう思ってるんならパッチでも何でも作って公開すりゃいいじゃん。止めないよ。
>>57
ちなみにだが、Rubyの実装ではsetjmpもlongjmpも使いまくってるよ。
# ありゃひでえ。
127:デフォルトの名無しさん
05/05/11 23:41:25
初期のいったんCのコードを吐くやつはsetjmo,longjmp使いまくりだったじゃん
128:デフォルトの名無しさん
05/05/12 09:48:50
>>57-
例外が発生しない場合のオーバーヘッドを0にする手法がある。
setjump/longjumpだと、tryに入ったときにsetjumpして、
例外が発生したらlongjumpすると思うけど、
setjumpを省く代わりに、例外が発生したらスタックを遡りながら、
例外を起こしたコードのアドレスから対応するcatchを特定する。
129:デフォルトの名無しさん
05/05/12 11:37:43
何がひどいのかよくわかりません
130:デフォルトの名無しさん
05/05/12 12:18:26
とにかくRubyがひどいんでしょう
131:デフォルトの名無しさん
05/05/12 12:41:16
Rubyのソースが酷いのはRuby使い(信者除く)も認めてるらしいので
具体的に酷いところを挙げてみてほしいなぁ
132:三遊亭円楽
05/05/12 14:42:43
座布団ageようとおもって山田君駆動レコードをスタックに積んだのだが
何故、windowsやらunixやらですれがのびるんだね。
133:デフォルトの名無しさん
05/05/12 19:05:56
構造化例外処理のメジャーな手法は、
setjmp法、>>60の2返戻法、>>128の例外表法
の3つかな。
個人的には、変換後最適化が色々適用できる2返戻法が好きかも。
定量的な比較はしてないが…
134:デフォルトの名無しさん
05/05/12 19:59:16
>2返戻法
これの説明だれかしてください
意味わかんねえよ
135:デフォルトの名無しさん
05/05/12 20:30:02
(通常の戻り値,例外オブジェクト)
だとググらずにカキコ
136:デフォルトの名無しさん
05/05/12 20:40:49
>setjmp法、>>60の2返戻法、>>128の例外表法
つーか>>133説明してくれよ
そもそもそんな〜法なんて言い方あるのかも
137:デフォルトの名無しさん
05/05/12 20:50:25
"2返戻値法" はググるで引っ掛かった
千葉 雄司という人の造語?
URLリンク(ssl.ohmsha.co.jp)
138:デフォルトの名無しさん
05/05/12 21:26:46
URLリンク(fw8.bookpark.ne.jp)
735円だって
139:デフォルトの名無しさん
05/05/12 22:05:10
>>130
そうではない。
古いいまのパーサやスキャナの枠組に入らないだけ。
「古いブドウ酒は、新しい皮袋に馴染まない」
とは、まさにことこと。
新しい言語は、古い開発パラダイムを駆逐する。
140:デフォルトの名無しさん
05/05/12 23:15:18
>>139
信者乙。
141:130
05/05/12 23:27:10
>>139
ごめん、あれは42に対するいやみのつもりだった。
142:デフォルトの名無しさん
05/05/12 23:41:11
さっぱり意味不明
143:デフォルトの名無しさん
05/05/12 23:46:43
>>142
古いタイプの人間?
144:デフォルトの名無しさん
05/05/12 23:47:24
>>42
145:42
05/05/13 00:16:26
>>131
>具体的に酷いところを挙げてみてほしいなぁ
だから挙げてるじゃん。
(eval.cにおいて)setjmp, longjmpを使いまくってること、
parserがlexerにむやみにちょっかい出すこと。
まあ後者は言語仕様の問題だが、それを実装するために、
グローバル変数で通信してるってのはどうかと思う。
eval.cとparse.yが汚いってのは作者も認めてたと思う。
>>141
いやみったって、意味わかんねえんだけど。
むしろparserとlexerがきれいに分かれない言語の方が、古い言語っていうイメージが
あるけどね。俺は。
146:デフォルトの名無しさん
05/05/13 00:23:32
その実装のせいで処理系のユーザにとってどういう不具合が出てくるかが知りたい。
処理系自体がどういう実装になってようが、処理系のユーザにはあまり関係ないよね。
147:42
05/05/13 00:41:42
>>146
そりゃ実装が汚いからってユーザに不具合が出るとは限らんわな。
だから俺そんなこと言ってないし。
なんか粘着に絡まれてるなあ...
148:デフォルトの名無しさん
05/05/13 00:42:27
URLリンク(i.loveruby.net)
スペースの入れ方で解釈が変わる言語ってどうなのよ?
149:ヽ(´ー`)ノ ◆.ogCuANUcE
05/05/13 00:43:42
>>146
> 処理系自体がどういう実装になってようが、処理系のユーザにはあまり関係ないよね。
それを言っちゃうとこのスレの存在意義がなくなってしまうのだが。
150:デフォルトの名無しさん
05/05/13 00:50:48
>>148
a[i] = 1 # a[i] = (1)
a [i] # a([i])
前者はインデックス代入であり、後者はメソッド呼び出しの括弧を省略して引数に配列の要素を渡している。
また次のような場合もある。
a + 1 # (a) + (1)
a +1 # a(+1)
このあたりの仕様は一部の地域でやたらと嫌われているようだ。
つうかわざわざこんな仕様にした作者の意図を激しく聞いてみたい
151:デフォルトの名無しさん
05/05/13 02:42:38
別にそれらをそういう風にしたかったわけじゃなく、
メソッド呼び出しの括弧を省略できるようにした結果だろうね。
152:デフォルトの名無しさん
05/05/13 02:47:39
>>149
そんなことない。
効率的な実装で処理系が速くなるならユーザにも意味はあるし、
言語仕様や意味論の話題だってあるだろう。
153:デフォルトの名無しさん
05/05/13 02:49:33
なんでルミナスのウッドシェルフに35*120がないんだ…
構成考えた後に気づいて鬱…orz
154:デフォルトの名無しさん
05/05/13 02:49:59
誤爆すまん…orz
155:デフォルトの名無しさん
05/05/13 03:19:28
>>151
なんというか・・・そのために文法が複雑になり、パーサーが複雑になり・・・って
そこまでするほどのメリットなのかそれ?
156:デフォルトの名無しさん
05/05/13 03:19:51
パーサーじゃなくてスキャナだな・・・orz
157:デフォルトの名無しさん
05/05/13 04:45:37
粘着してる奴が粘着されてるとか言ってりゃ世話ないな。
158:デフォルトの名無しさん
05/05/13 07:00:58
lex、yaccに手を入れるより新しく作った方がいいんじゃないかと誰も言わないのはなぜ?
159:デフォルトの名無しさん
05/05/13 07:04:32
それ以前の問題だからじゃないか?
160:デフォルトの名無しさん
05/05/13 11:12:25
>>158
何が不満だ?
161:デフォルトの名無しさん
05/05/13 11:50:49
>>160
不満じゃなくてな、変数隠蔽とか以前の時代のソフトに今時の概念入れろとか言うのって不毛じゃないのかって事
そんなメンテナが泣きそうな事するくらいならいっそ1から作るとしたらどうするかって話する方がよかないか?
最近の処理系ならちゃんと備わってたりするし(メジャーじゃないけどさ)
162:デフォルトの名無しさん
05/05/13 12:28:46
なぜかRubyばかり槍玉にあげられてるけど、
Perlのlexer/parserってあんな言語でも実は綺麗なの?
>>155
もちろん主観の問題だけど、Rubyの1ユーザとしては
引数が0個か1個の場合は括弧省略したいかな。
ary.sortとかary.push 1とか。
あと、a [i]やa +1なんて現実的には書かなくない?
163:デフォルトの名無しさん
05/05/13 12:37:10
>>162
そんなんだったらsmalltalk風の呼び出しの方がきれいだと思う。
164:デフォルトの名無しさん
05/05/13 13:01:14
>>163
smalltalkを知らない俺様にもわかるように
5行で説明してくださいおながいします
165:デフォルトの名無しさん
05/05/13 13:15:39
anObject hoge: arg1 page: arg2 fuga: arg3.
166:デフォルトの名無しさん
05/05/13 13:25:01
>>162
>Perlのlexer/parserってあんな言語でも実は綺麗なの?
知らないけどPerlが汚いからといってRubyが汚くないという話にはならないでしょ
>もちろん主観の問題だけど、Rubyの1ユーザとしては
(中略)
>あと、a [i]やa +1なんて現実的には書かなくない?
いや、だからメソッドの括弧省略のために作者自らわざわざスキャナを複雑にしてるんだよね、
それほどまでにメソッドの括弧省略にメリットがあるのかなと思ってさ・・・
あと現実には書かなくてもやっぱりスペースの位置だけで動きが変わるのは混乱の元だと思う。
167:デフォルトの名無しさん
05/05/13 13:36:47
>>165
セレクタとかある時点で比較対象になってなくない?
>>166
なんでRubyばっかり槍玉にあがるのかな、って。
RubyがRubyが言ってるのみると、
アンチRuby厨の戯れ言にみえてしょうがないんだよね。
メリットがあるかどうかはやっぱり主観によるけど、
混乱の元だと思う人がいるのは理解はできる。
168:デフォルトの名無しさん
05/05/13 13:59:34
>>167
そんなにRubyの話ばかりされるのが嫌なら他の話題を振ればいい
169:デフォルトの名無しさん
05/05/13 14:38:09
>>167
lexとyaccが協調動作することの是非や方法の話題はおもしろいのに
いちいちRubyの場合ばかり持ってきてRubyを叩くアンチがうざいのには同意。
そしてそれにいちいち反応するRuby信者もうざいぞ。
170:デフォルトの名無しさん
05/05/13 14:50:12
つか、TMTOWTDIを目指してる言語の字句構文解析が複雑なんて
神が文法設計しないかぎり、当たり前じゃないの?
171:デフォルトの名無しさん
05/05/13 17:55:12
>>164
嫌です
172:デフォルトの名無しさん
05/05/13 18:31:44
>>162
> あと、a [i]やa +1なんて現実的には書かなくない?
ギャハハ、腹痛ぇw
173:デフォルトの名無しさん
05/05/13 18:56:53
なんか先日の重複スレ以来あれてるなぁ。
174:デフォルトの名無しさん
05/05/13 19:12:20
なんかこの分野の議論ってすぐ「勝負」になるんだよね。
「俺の方が深く理解してるぜ。お前は全然分かってない。大馬鹿野郎だ」
みたいな。仲良くやっていきたいものだが。
175:デフォルトの名無しさん
05/05/13 19:15:15
>>174
2ちゃんねらって、誇れるものをあまり持たない人が多いような気がします。
だから、そうなるのでしょうね。
176:デフォルトの名無しさん
05/05/13 19:36:23
結果として複雑になったのならともかく自らわざわざ複雑にしてしかもそれに見合うメリットが見当たらないのはどうかと
177:42
05/05/13 20:46:09
>>162
>Perlのlexer/parserってあんな言語でも実は綺麗なの?
最初にRubyを出したのは俺だけど、Perlを出さなかったのは、Perlは
あまりにソースが読みにくくて読むのを断念したからだ w
だから、parserがlexerにどれくらいちょっかい出してるのかも知らない。
「Rubyソースコード完全解説」に相当する日本語解説もないしね。
別にアンチRubyってわけじゃないよ。>>150だって、推測だけどたぶん
ふだんはCとかJavaとかC++とかC#とか使ってて、たまたま>>126のリンク見て
びっくり仰天なんじゃこりゃ、と思っただけだと思うよ。
なんでもかんでもアンチだの信者だのにしたがる方こそ病んでないか。
ところで、メソッド呼び出しの括弧が省略できるのは、
「引数がひとつもないとき」は明らかなメリットがあるよな。
ひとつでも引数があるのなら、括弧ぐらいつけりゃいいじゃん、と
俺は思うけど。文末のセミコロンもね。
>>174
というわけで俺はアホだから、>>47の
>むしろ変数で情報を渡すよりカプセル化に有益なんでは。
>それ以後%startと整合性をとる必要を生じる
という発言の趣旨を>>52以来ずーっと教えて欲しいと思ってるんだが。
178:デフォルトの名無しさん
05/05/13 21:11:42
俺も括弧くらい付けりゃ良いじゃんと思う
文法は厳格かつ単純な方が好きだな
if-then-else の else が省略出来ないとか、四則演算に優先順位が無いとかでも問題無し
179:デフォルトの名無しさん
05/05/13 21:54:46
LISPがオススメ
究極の汎用プログラミング言語
180:デフォルトの名無しさん
05/05/13 22:00:28
もうお前ら、forth でも使ってりゃいいよw
181:デフォルトの名無しさん
05/05/13 23:32:47
括弧を省略できるってのは結構大きいよ。
>>178
単純で、四則演算に優先順位が無くてもOK
あなたにオススメの言語はHSPです。よかったね。
182:デフォルトの名無しさん
05/05/13 23:33:32
HSPは言語ではありません。
以後、HSPの話題はゲ製板で行ってください。
183:デフォルトの名無しさん
05/05/13 23:36:34
HSPに対する反応はぇぇぇぇぇぇぇぇぇ!
>>182
そんなあなたにオススメの言語はHSP3です。
コレは優先順位つくらしいよ。よかったね。
184:デフォルトの名無しさん
05/05/13 23:36:55
言語といえば、LISPりんごですよ!
185:デフォルトの名無しさん
05/05/13 23:41:33
LISP も HSP も大して変わらないよ。
ものは試しに、
LISP
↑この横棒を少し上に持ち上げてご覧
直ぐに HSP に変わるから。
186:デフォルトの名無しさん
05/05/13 23:45:57
文法の話とかしだすと宗教戦争になるから駄目だな(わら
187:デフォルトの名無しさん
05/05/14 00:16:37
評価するならヒューマンインターフェース的な評価手法を採るべきだ
188:デフォルトの名無しさん
05/05/14 06:23:37
日本語で懇切丁寧に解説してあるのを読んで「ソースコードを読んだ」と威張り、
ソースコードを読めないとコーディングの汚さのせいにし、
Rubyを読んだ程度でさも様々な言語のソースコードを読んだように振舞う42の
いるスレはここですか?
189:デフォルトの名無しさん
05/05/14 06:57:53
Rubyのソースが糞なのは、言語仕様側も少なからず影響してるからなあ・・
190:デフォルトの名無しさん
05/05/14 06:58:42
あ、すまん。
糞なのは、は言い過ぎた。
汚く見えるのは、に読み替えてね。
つい本音が出てしまった。
191:デフォルトの名無しさん
05/05/14 07:06:35
Rubyは入門者用のソースの解説本があるから、ソースを覗いた人は一番多いんじゃないかい。
悪口いいっぱはともかく、言語の規模考えても、準拠ポイントとしてはちょうどいいんじゃないか。
192:デフォルトの名無しさん
05/05/14 07:19:18
なんでわざわざ入門者用に糞ソース読む本が出たんだろうね。
本という形態だとすでにバージョン的に無意味になってる部分も多いだろうし。
Rubyの動作原理ならともかく、糞ソース読む練習に良いとか?
193:デフォルトの名無しさん
05/05/14 07:23:59
>括弧を省略できるってのは結構大きいよ。
なんつーか、ad hoc 感ブリバリで好きになれないな
194:デフォルトの名無しさん
05/05/14 07:53:49
現実問題、実用レベルに達した処理系で
「ソースが糞」じゃないプロジェクトなんてあるの?
195:デフォルトの名無しさん
05/05/14 07:55:25
>>192
> Rubyの動作原理ならともかく、糞ソース読む練習に良いとか?
あの本、能書きにはそれっぽく書いてある。だけど実際の本文は
「わかった奴が教えを垂れる」スタイルなんで、あんまり
ソースの読み方の参考というのにはならない。
前提となる知識が先に書いてあるのは別にいいんだが、何をとばして何を読む
ってのが説明の都合で決まりすぎで、ソースの読み手から見た判断という視点
じゃない。
196:デフォルトの名無しさん
05/05/14 10:40:28
>>185
ホントダw
I-I S P
197:デフォルトの名無しさん
05/05/14 10:41:29
偶然の一致がこれほど恐ろしいとは
198:42
05/05/14 12:19:46
念のため書いとくけど、Rubyのソースが全編糞とは俺は思ってないからね。
eval.cのsetjmp/longjmpの乱用と、parserとlexerがグローバル変数で
状態を共有してるのがひどいと言ってるだけ。他はまあ、普通のCソースだと思う。
>>188
>ソースコードを読めないとコーディングの汚さのせいにし、
Perlのソース読んだことあるかい?
199:42
05/05/14 12:39:23
補遺:
setjmp/longjmpの乱用についても、実行形態を考えるとやむを得ないところは
あるんだよな。
いっそバイトコードインタプリタにでもした方がよかったんじゃないかとも
思う。そうするとGCも今のコンサバGCじゃなくなって、もはや原型をとどめなく
なりそうだが。
200:デフォルトの名無しさん
05/05/14 15:42:13
プププププ このスレおもしれー。
Perlのソースコードが汚いって?
少なくともRubyが***自力で***読めてPerlが読めない理由はねえよ。
てめえのおつむが足りないってことを精一杯開陳しつつしかも自分では
認めないって、最悪じゃね?
しかもいっちょまえに批評家気取って、はーゲラゲラゲラ
しかもえらそうなくせに何言ってるかわかってなさげなトンチンカンぶりがラブリー
201:デフォルトの名無しさん
05/05/14 15:44:11
>>200
ソースは汚いと思わないが、build課程はかなりひどい物の一つだと思うぞ。
202:デフォルトの名無しさん
05/05/14 17:01:52
Perlのは暗号だからな、読む気にもならん
203:42
05/05/14 19:50:57
そもそも俺は自分はアホだと再三言ってるんだがねえ。
何がそんなに気に入らないんだか。
>少なくともRubyが***自力で***読めてPerlが読めない理由はねえよ。
へえ。
Rubyのソースが間違いなく***自力で***読める人のご意見。
URLリンク(jp.rubyist.net)
| Perl のソースコードは印象的だよね。すごい。読めない。
| マクロの嵐で、よくわからない識別子が山のように出てきて、
| いったい何? みたいな、すごい略語でさぁ。ほんとに、名前重要。]
| この識別子は、何を表しているのか、何をしようとしているのか、
| わかんないんだよ。
204:デフォルトの名無しさん
05/05/14 20:02:36
そりゃ自分で書いたコードなんだから読めるだろ。
それが論拠になると本気で思ってる? 痛い奴。
205:デフォルトの名無しさん
05/05/14 20:20:43
>>203
>>53
206:デフォルトの名無しさん
05/05/14 22:53:41
>>194
その通り!
めずらしく、いい書き込みだなw
207:デフォルトの名無しさん
05/05/14 23:33:01
だから、Perlが汚いからといってRubyが汚くないという話にはならないの
ことあるごとにPerlをもちだしてくる信者はいい加減にしろ
208:デフォルトの名無しさん
05/05/14 23:44:40
Ocamlのソースは綺麗だったよ
実用レベルなのか知らないけど
209:デフォルトの名無しさん
05/05/15 00:04:59
>>208
高速な事は事実。
210:デフォルトの名無しさん
05/05/15 01:17:27
OCamlのソースはコアのインタプリタ以外OCamlで書かれてるからね。
Cで処理系書いてる限りソースが糞になるのはやっぱり避けられないのかも?
211:デフォルトの名無しさん
05/05/15 01:22:45
LISPも、というか関数型言語は綺麗なソースが多い気がする。
それぞれの言語自身で記述する風習みたいなのがあるからかね。
212:デフォルトの名無しさん
05/05/15 02:02:08
関数型言語に限らずbootstrapしてない言語処理系なんて
表現能力のなさを露呈してるようなもんじゃないかな。
WindowsをUnixで作ってるみたいな。
SubversionのソースをCVSで管理してるみたいな。
もちろんスクリプト言語のように目指すところが違えば話は別だけど。
213:デフォルトの名無しさん
05/05/15 03:37:32
>>211
SBCL は C の部分が汚くて悶絶した
214:デフォルトの名無しさん
05/05/15 03:45:28
そうか? 普通に読めたけどなあ。SBCL。
215:デフォルトの名無しさん
05/05/15 03:59:02
読めるけど、エラー処理省いてたり、マジック文字列埋め込んでたり、バータリ的な所が
けっこうあったよ。-Wall 付けてビルドするとやたら Warning が出るし。
たまにクリーンアップのパッチが提出されてるけど、マージされてるのか疑問。
216:デフォルトの名無しさん
05/05/15 07:41:04
すれ違いですまんが、「バータリ的」って何?
217:デフォルトの名無しさん
05/05/15 07:44:34
場当たり的
218:デフォルトの名無しさん
05/05/15 08:24:59
>>217
サンクス。
人の名前かと思ったんでワケワカラン様になってた。
219:デフォルトの名無しさん
05/05/15 11:39:02
>>212
ブートストラップの意味おしえて
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4946日前に更新/221 KB
担当:undef