「コンパイラ・スクリプトエンジン」相談室5
at TECH
1:デフォルトの名無しさん
05/01/19 19:06:04
プログラミング言語処理系の開発に興味のある人達のスレッドです。
字句解析・構文解析から,データフロー解析,ループ並列化,タスク並列化,SSA変換,
CPS変換,レジスタ割付,命令スケジューリング,ソフトウェアパイプライン等各種最適化,
それにVM,GC,JIT,リンク時最適化,動的バイナリ変換などなど。
意味論に関する話題も歓迎です。
前スレ
1 URLリンク(pc.2ch.net)
2 スレリンク(tech板) (dat落ち)
3 スレリンク(tech板)
4 スレリンク(tech板) (前スレ)
関連リンクは多分 >>2-10 あたり
2:デフォルトの名無しさん
05/01/19 19:06:33
コンパイラ等を扱ったドキュメント
色々なツールの紹介
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)
3:デフォルトの名無しさん
05/01/19 19:06:53
Lex(Flex) Yacc(Bison) 構文解析
UNIX板
yacc & lex
スレリンク(unix板)
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)
URLリンク(www.arch.cs.kumamoto-u.ac.jp)
Cygwin
URLリンク(www.cygwin.com)
GNU utilities for Win32
URLリンク(unxutils.sourceforge.net)
4:デフォルトの名無しさん
05/01/19 19:07:16
その他のパーサジェネレータ等
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 or CUP & JFlex
CUP URLリンク(www.cs.princeton.edu)
JLEX URLリンク(www.cs.princeton.edu)
JFlex URLリンク(www.jflex.de)
SableCC
URLリンク(www.sablecc.org)
¬<><∪∪ (notavacc)LALR(1)
URLリンク(ne.cs.uec.ac.jp)
JavaCCはLL(k)だけど、上のはANTLR以外はLALR(1)
でもANTLRはC++なんかにも対応。
boost::spirit(C++のテンプレートでEBNFの構文を模倣)
URLリンク(spirit.sourceforge.net)
URLリンク(boost.cppll.jp)(マニュアル日本語化プロジェクト)
URLリンク(www.fides.dti.ne.jp)
5:デフォルトの名無しさん
05/01/19 19:07:38
ごみ集め
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)
6:デフォルトの名無しさん
05/01/19 19:07:57
参考書籍
●コンパイラ 原理・技法・ツール 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.amazon.co.jp)
●スモールコンパイラの制作で学ぶプログラムのしくみ
URLリンク(www.cbook24.com)
7:デフォルトの名無しさん
05/01/19 19:08:15
処理系,スクリプト
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 インタプリタ の作り方』見つけた。
Java と C# で実装。
URLリンク(www.okisoft.co.jp)
URLリンク(www.okisoft.co.jp)
URLリンク(www.okisoft.co.jp)
URLリンク(www.okisoft.co.jp)
MSによるPEフォーマット仕様書(日本語)
URLリンク(www.interq.or.jp)
8:デフォルトの名無しさん
05/01/19 19:10:03
>>1お疲れさま。
前スレ埋め厨お疲れさま。
9:デフォルトの名無しさん
05/01/19 19:14:47
以上です。
関連リンクは前スレッドのものをそのまま利用しました(手抜きです)。
追加があればお願いします。
>8
ありがとうございます。
10:デフォルトの名無しさん
05/01/19 19:34:25
寂しいので学会紹介を少し。
○ PLDI: URLリンク(research.ihost.com)
コンパイラの研究に関する最新成果を知りたければまずはここ。
○ POPL: URLリンク(www.cs.princeton.edu)
PLDIよりは理論寄りだが大いに参考になる。
○ ICFP: URLリンク(www.brics.dk)
関数型言語に関する学会。とても難しい。
○ OOPSLA: URLリンク(www.oopsla.org)
オブジェクト指向言語に関する学会。最近はやや低調?
このスレッドから、この辺の学会にacceptされる人がでてくることを祈って…
11:デフォルトの名無しさん
05/01/19 19:49:20
>>4
JavaCCはLOOKAHED使った場合、手続き型プログラムで選択肢を自由に選べるので、
LL(k)より強力。
(URLリンク(javacc.dev.java.net)のboolean_expression)
ANTLRも同じだったと思う。
¬<><∪∪は強いて言えばLALR(∞)。
ちなみに最近のbisonはGLRも選択できる。
(URLリンク(www.gnu.org))
¬<><∪∪も論文だとGLRサポート版も発表されてるけど、
webに乗ってるのは違うみたい。
12:デフォルトの名無しさん
05/01/19 20:57:15
前スレ最後の方で話題になってた、文と式だけど
expressions を式と日本語当てたのは、まずかったかもな。
まぁ専門用語にはよくあることだけど。
13:デフォルトの名無しさん
05/01/19 21:09:53
>>10
PLDIのページをみたが,topicsの先頭がlanguage support for security and safetyなんだね。
時代が変わったなー。
Topics of Interest
* language support for security and safety
* languages and compilers for parallel computing
* design and processing of domain-specific languages
* effective implementation of advanced language features
* program representations
* program analysis
* program optimizations and transformations
* dynamic compilation and optimization techniques
* storage management techniques
* compilation for distributed heterogeneous systems
* techniques for embedded and of mobile code
* interactions between compilers and architectures
* software development tools
* techniques for effective compiler construction
14:デフォルトの名無しさん
05/01/19 21:50:42
>>12
ハァ?
15:デフォルトの名無しさん
05/01/19 23:32:02
>>10
このスレッドでこれを忘れちゃいかんだろ。
International Conference on Compiler Construction
URLリンク(cc05.cs.berkeley.edu)
16:デフォルトの名無しさん
05/01/19 23:38:07
>>14
WordNetからの引用
> 1. (23) expression, look, aspect, facial expression, face -- (the expression on a person's face; "a sad expression"; "a look of triumph"; "an angry face")
> 2. (18) expression, manifestation, reflection, reflexion -- (expression without words; "tears are an expression of grief"; "the pulse is a reflection of the heart's condition")
> 3. (15) expression -- (the communication (in speech or writing) of your beliefs or opinions; "expressions of good will"; "he helped me find expression for my ideas")
> 4. (6) saying, expression, locution -- (a word or phrase that particular people use in particular situations; "pardon the expression")
> 5. (4) formulation, expression -- (the style of expressing yourself; "he suggested a better formulation"; "his manner of expression showed how much he cared")
> 6. (4) formula, expression -- (a group of symbols that make a mathematical statement)
> 7. expression -- ((genetics) the process of expressing a gene)
> 8. construction, grammatical construction, expression -- (a group of words that form a constituent of a sentence and are considered as a single unit; "I concluded from his awkward constructions that he was a foreigner")
> 9. expression -- (the act of forcing something out by squeezing or pressing; "the expression of milk from her breast")
17:デフォルトの名無しさん
05/01/19 23:40:01
CISCアーキテクチャでの効率的なレジスタ割付けアルゴリズムってありませんか?
RISCみたいにレジスタがatomicでない上、命令ごとの制約がたくさんあるため
今はものすごくad hocな実装になってしまってます。
18:デフォルトの名無しさん
05/01/19 23:40:58
ちなみにターゲットはH8です。
19:デフォルトの名無しさん
05/01/19 23:45:01
後これも。
URLリンク(compilers.iecc.com)
ニュースグループcomp.compilersの記事がアーカイブされている。
今年で20周年らしい。fjは死亡同然だが、こちらは元気だね。
20:デフォルトの名無しさん
05/01/19 23:54:45
>>17
CISCでのレジスタ割付けに関しては、最近だと
Andrew W. Appel, Lal George, Optimal Spilling for CISC Machines with Few Registers, PLDI, 2000.
がある(URLリンク(citeseer.ist.psu.edu))。
けど、結局ぐちゃぐちゃになるのは仕方ない気もする。
21:デフォルトの名無しさん
05/01/20 02:18:41
うんこw
22:デフォルトの名無しさん
05/01/20 02:33:00
・知能障害を起こす
23:デフォルトの名無しさん
05/01/20 02:34:40
うんこage
24:デフォルトの名無しさん
05/01/20 03:04:49
う
25:デフォルトの名無しさん
05/01/20 05:25:02
ん?
26:デフォルトの名無しさん
05/01/20 05:32:43
こ
27:デフォルトの名無しさん
05/01/20 06:09:51
ま
28:デフォルトの名無しさん
05/01/20 06:11:09
俺は今起きたとこだが
君らは何時寝るんだい?
29:デフォルトの名無しさん
05/01/20 06:13:52
今から ノツ
30:デフォルトの名無しさん
05/01/20 06:15:14
う
31:デフォルトの名無しさん
05/01/20 07:19:01
ん
32:デフォルトの名無しさん
05/01/20 07:29:21
レジスタ割付ならRamseyの
A Generalized Algorithm for Graph-Coloring Register Allocation(PLDI)
も面白そう。
確かλRTLとかいう、gcc風のRTLとλ式をあわせたような中間語を設計してた人だね。
33:デフォルトの名無しさん
05/01/20 08:08:55
死ねよ
34:デフォルトの名無しさん
05/01/20 08:11:53
う
35:デフォルトの名無しさん
05/01/20 08:51:25
>>19
これ面白いですね。出勤前なのに読み耽ってしまいました。
日本語版があるといいのに。
36:デフォルトの名無しさん
05/01/20 08:56:54
いま地震があった!
37:デフォルトの名無しさん
05/01/20 09:01:58
う
38:デフォルトの名無しさん
05/01/20 09:20:47
国産のコンパイラ共通インフラストラクチャCOINS
URLリンク(www.coins-project.org)
39:デフォルトの名無しさん
05/01/20 09:33:16
貼るならもっと使えるサイト貼れよな…
40:デフォルトの名無しさん
05/01/20 09:37:14
>>39
ならお前が張れ、詭弁厨の荒らしが。
41:デフォルトの名無しさん
05/01/20 10:05:07
結局あの詭弁コピペの人って2ch初心者だったのかな?
42:デフォルトの名無しさん
05/01/20 10:06:52
それにしても詭弁認定厨はうざかったな。
詭弁でもなんでもないものを、詭弁のガイドラインに
無理矢理あてはめようとしてるところが笑えた。
43:デフォルトの名無しさん
05/01/20 10:07:34
GCの気持ちがよく分かる。
せっかくsweepしても、どんどん(ry
44:デフォルトの名無しさん
05/01/20 10:10:49
>>41-42
スルーできない初心者ウザ
45:デフォルトの名無しさん
05/01/20 10:14:16
荒らしと同一人物だったとは思えん。
46:デフォルトの名無しさん
05/01/20 10:31:15
今前スレ見てきたが、なるほど、デビューしたての純粋クンが来てたのかよ。
47:デフォルトの名無しさん
05/01/20 10:39:21
オレの推理では前スレ955が
956が自分へのレスだと思い込んだ。
(時間と文脈からみてたぶん954へのレス)
その後964を無視られ、968で煽られ、971あたりから暴走開始。
41-42も前スレ955。
どう呼ぼうと作者の勝手の人とは別人。
48:デフォルトの名無しさん
05/01/20 10:47:14
どうやら図星された詭弁厨の自己弁護が始まったみたいね。
49:デフォルトの名無しさん
05/01/20 10:50:36
まだやるのかよ、ウザ
50:デフォルトの名無しさん
05/01/20 10:54:21
そこまで詭弁荒らしを擁護する47っていったい…
51:デフォルトの名無しさん
05/01/20 11:05:19
普通、赤の他人は時間とか詳しく見ねーだろ。興味ねーし。
47=前スレ荒らしの当事者。
52:デフォルトの名無しさん
05/01/20 11:44:02
うんこ
53:デフォルトの名無しさん
05/01/20 11:52:49
詭弁厨の人が焦点をうんこ厨に移すためにガンガリ始めた様子です。
54:デフォルトの名無しさん
05/01/20 11:54:34
もういらないと思うので削除依頼を出してきた。
55:デフォルトの名無しさん
05/01/20 12:00:32
↑詭弁荒らしの傍若無人振りって、正直凄まじいと思う。。。
56:デフォルトの名無しさん
05/01/20 12:43:56
まあ、詭弁荒らしとか興味ないけど、作者の勝手という言い分は
正しいな。詭弁ではなく。それだけは確か。
57:デフォルトの名無しさん
05/01/20 12:51:10
ウルフが心と身体・メンタルヘルス板から帰ってこられた御様子です。
58:デフォルトの名無しさん
05/01/20 13:20:28
>>57
Rubyでは文が値を持ちますが、それについてどう思われますか?
Rubyの作者は詭弁でしょうか?
59:デフォルトの名無しさん
05/01/20 13:24:17
こうして新スレは
詭弁厨とうんこ厨と
放置できない厨に占拠されました。
おわり。
60:デフォルトの名無しさん
05/01/20 13:58:33
死ね。
61:デフォルトの名無しさん
05/01/20 14:08:27
う
62:デフォルトの名無しさん
05/01/20 14:27:44
Rubyにはif式とかif文とかある。
↓
総てのプログラム言語で、「式」とか「文」とか他の言葉とかも
意味は作者が主観で勝手に定義していい。
↓
ゆえに俺は詭弁荒らしでないし、
俺が昔作って人に使わせた糞言語もうんこじゃない。
( c´,_ゝ`) .。oO(モイチド心と身体・メンタルヘルス板逝ッテコイ クスクス
63:デフォルトの名無しさん
05/01/20 14:40:58
荒らし方は変わっても、やっぱり中身はRuby厨ですか…。
64:デフォルトの名無しさん
05/01/20 14:47:29
>>62
反論があるなら煽りではなく論理的にどうぞ。
それから、議論とは関係ないが、「昔言語作ってた人」は別人。
>>63
文が値を持つのは、Rubyだけではない、Ioだと、文は式の一種で、全ての文は値を持つ。
探せば、文が値を持つ場合がある言語って結構あるんじゃないかな。
それと、値を持とうが持つまいが、仕様で何を文と呼ぶのか
決めているというのはいろんな言語に共通のことだね。
65:デフォルトの名無しさん
05/01/20 15:15:09
evalがあれば何でも式にはなるな。
あと言葉の定義だが、プログラミング言語は言語、つまり言葉だから文もあれば文法エラーもあるってだけで、
「文」という言葉には、数学的に深い意味はあんまないような気もするし。
どっちにしろ言語のことは言語学者の領分だな、字面の「言語」を尊重すれば。
66:デフォルトの名無しさん
05/01/20 15:16:44
>>64
なにか美味しいものでも食べて落ち着け。
トートロジー、意味の無い言葉、主観に基づく言葉に対して反論することは
それ自体ナンセンスだし、暇つぶしとしても漏れはお勧めできない。
67:デフォルトの名無しさん
05/01/20 15:22:41
>>66
主観ではない。
多くの言語で、仕様で何を文と呼ぶか決定している。
これは客観的事実。
68:デフォルトの名無しさん
05/01/20 15:27:47
COBOLはもろ言語学者が作った言語だよな。
昔のCOBOLは足し算でさえ英語の文法そのままにADDだしよ。
APLはその対極。
69:デフォルトの名無しさん
05/01/20 15:31:55
>>65
式や、文という言葉に対しては、仕様で数学のようにきっちり定義
されてることが多いよ。
こういう、厳密な定義をする場合って、学問の世界では
当たり前のことなんだけど、既分野によって定義が違うなんてよくあることだな。
同じように、言語によって用語の意味が違う。まさかこのことを
わからない奴がいるなんて思わなかったよ。
70:デフォルトの名無しさん
05/01/20 15:33:14
プログラムがそのままドキュメントになるというのかコンセプトだったね >COBOL
最近はどれも似たり寄ったりな言語ばかりで、コンセプトのしっかりした言語が少ないな。
71:デフォルトの名無しさん
05/01/20 16:17:57
>>67
漏れは64を主観だっていってるんじゃないよ。「・・・には反論しても無意味だから落ち着け」って言っただけ。
人の言動がなんでも自分への攻撃に見えてしまうっていうのは、何らかのストレス状態だと思うよ。
72:デフォルトの名無しさん
05/01/20 17:15:27
何でも攻撃に見えてる分けじゃなく君が文脈を考慮しなかったため
誤解されただけのこと
わかりやすい日本語を心がけよう
73:デフォルトの名無しさん
05/01/20 19:02:39
>>67で
「多くの言語で、仕様で何を文と呼ぶか決定している。
これは客観的事実。」
とあるが、その多くの言語の仕様は数学的な基盤に沿って
設計されているのが「客観的事実」では? その意味で
仕様書は用語の意味を勝手に改竄できる魔法の書ではないよ。
それにあなたが理論的基盤にしているRubyの仕様ってのは
実際テキトーかも…と言ったら、また暴れだすかなぁ? ドキドキ
まぁ、大好きなRubyの投影から計算理論(?)を構築するのは
人様の自由だけど…。その出発点は「客観」ではないですね。
74:デフォルトの名無しさん
05/01/20 19:24:06
>>67
スルーすればいいからな。
いやスルーしてくれ、頼む。
75:デフォルトの名無しさん
05/01/20 19:24:37
>>73
Ruby狂信者に何言っても無駄だからヤメレ。
ここまでの展開で物事の正誤が奴の眼中にないの、分かるだろう?
詭弁でもなんでもいいからRubyにまつわるすべては正しくないと希ガスマンのだ。
コワイネ
76:デフォルトの名無しさん
05/01/20 19:34:31
スレ住人がココロ一つに爆発物処理班の気分で以下ドウゾ
77:デフォルトの名無しさん
05/01/20 19:37:33
だからあ
Rubyのリファレンスを全部修正すれば解決するだろ
誰かMLで言ってこいよ
「ここで使う用語はRuby信者(キチガイ含む)が勝手に定義したもので
世間一般のそれとは全く異なる場合があります。」
とでも補足しとけ、と
つーかここ見てるよな?>いつも修正してる人
78:デフォルトの名無しさん
05/01/20 19:45:13
仕様書は用語の意味を勝手に改竄できる魔法の書ですが何か?
79:デフォルトの名無しさん
05/01/20 19:45:25
爆弾バッファリング中・・・
80:デフォルトの名無しさん
05/01/20 19:46:59
つうか、Rubyは文が値を持つ一例としてあげただけで、
Ruby信者でもなんでもないしな。
まあ、だんだん本物の馬鹿で納得させることは無理だって
事はわかったからまともに議論する気はなくなってきた。
81:デフォルトの名無しさん
05/01/20 19:55:17
仕様書に、「文とは〜を指します。」と書いてあったら、
その言語においては文はそういう意味になる。
何でこんな当たり前の常識もわからないんだろうか?
82:デフォルトの名無しさん
05/01/20 19:58:33
まあ文や式の完全に一般的な定義は存在しないし、ここで決めるのも難しいだろうな。
式は値を持つことが多い。
文は値を持たないことが多い。
正確な定義は言語によって異なる。
としか言えんでしょ。
前スレでdenotational semanticsから明らかと言ってた人は何か勘違いしてるとしか
思えない。
83:デフォルトの名無しさん
05/01/20 20:37:46
>>82 でファイナルアンサー。
そもそも文や式の「定義」は、大抵の言語では文法の上で定義するよね (厳密には BNF とか) 。
意味 (値を返すとか返さないとか) から「説明」することはできるけど、
それは「定義」じゃないし。
# もちろん「文とは値を返さないものです」とか定義されてる謎な仕様の言語を除く
今調べたところ、仕様書じゃないけど Ruby のチュートリアルによると
> Rubyでは任意の式をセミコロン(;)または改行で区切った並びを文とします.
らしい。なので Ruby の式は文でもあるということらしい。
メジャーな言語しか知らない香具師は
世の中には Ruby に限らずいろんな言語があるということを
肝に銘じておいてくださーい。
# とかいうと「Ruby はメジャーだ」って怒られるかな。
84:デフォルトの名無しさん
05/01/20 20:55:20
「文脈自由文法」の名前の意味がよくわかりません。
「文脈」とは何を意味しているんでしょう。
それから「自由」は「文脈に対して自由」?「文脈から自由」?「文脈が自由」?
おせーて。
85:デフォルトの名無しさん
05/01/20 21:04:29
>>84
英語は "Context-free grammar" 。
つまり「文脈がない」ってこと。
といっても、どこに何を書いてもいいということではなく、例えば
「整数が式であるならば、式を書いてもいいところには例外なく整数を書いてもいい」
って感じ。
86:デフォルトの名無しさん
05/01/20 21:23:05
【問】
文(Statement)と式(Expression)の違いは何ですか?
2つの違いは言語に依存しますか?
【答】
なにを式と呼ぼうが、なにを文と呼ぼうが作者の勝手。
言語に依存する。
87:デフォルトの名無しさん
05/01/20 21:26:43
凄いスレ発見
88:デフォルトの名無しさん
05/01/20 21:27:42
>>85
duty freeとかと同じだね。
関係ないが、よくwebページにある「リンクフリー」宣言は、「リンクはないよ」と言ってる
ことになるのだろうか。
89:デフォルトの名無しさん
05/01/20 21:29:29
>>88
英語だとそうなるね。まあ和製英語だし。
90:デフォルトの名無しさん
05/01/20 21:30:41
>>85
「isは動詞だけど、主語が三人称単数のときしか使えない」(特定の文脈でしか使えない)
って文法はcontext-freeじゃないってことか。
>>87
頼むからほっといて(´・ω・`)
91:デフォルトの名無しさん
05/01/20 21:38:06
Cの文はCの規格が主張する文。
Cの式はCの規格が主張する式。
Cの関数はCの規格が主張する関数。
数学用語は借り物だし、日本語訳の言葉の定義は規格による。
これが現実だな。
92:デフォルトの名無しさん
05/01/20 21:38:45
>>82はともかくとして、>>83は何か話がずれてる。
93:デフォルトの名無しさん
05/01/20 21:40:29
>>86と>>91が結局正しい答えだな。
94:デフォルトの名無しさん
05/01/20 21:44:13
>>83
話がずれてるが、ちょっと突っ込むと、BNFで定義してるのは、構文規則であって
意味じゃない。
意味を定義するには普通は人間の言葉を使う(意味論などを使うこともある)。
95:デフォルトの名無しさん
05/01/20 21:45:50
Ruby厨だからどうしても斜めにずれるの >>92
96:デフォルトの名無しさん
05/01/20 21:48:21
>>86は>>87の煽りだろ・・イイのか(w?
97:デフォルトの名無しさん
05/01/20 21:53:57
意味を定義するには普通は人間の言葉を使う
↑
自然言語の話かよ
98:デフォルトの名無しさん
05/01/20 21:54:50
文や式は一段落がついたので、次は関数の定義でお願いします。
99:デフォルトの名無しさん
05/01/20 21:55:41
>>96
はぁ?
100:デフォルトの名無しさん
05/01/20 21:56:06
>>91
なるほど、関数も考えるとその通りだね。(数学or一般的な関数とは明らかに
意味が違う。)
101:デフォルトの名無しさん
05/01/20 21:56:41
式=Expression は和声英語?
102:デフォルトの名無しさん
05/01/20 21:59:48
>>98
関数=プログラム
103:デフォルトの名無しさん
05/01/20 22:01:22
お前らのスレでは情報数学の用語は借り物でイイのか(w?
カッコいい言語出来そうだな。最高はやっぱRubyか?
104:デフォルトの名無しさん
05/01/20 22:02:41
関数fとは、定義域dom(f)と値域cod(f)の間の関係であって、
∀x ∈ dom(f). ∀y, z ∈ cod(f). f x = y ∧ f x = z ⇒ y = z
を満たすものを言う。
105:デフォルトの名無しさん
05/01/20 22:07:43
void function(void)
106:デフォルトの名無しさん
05/01/20 22:08:22
>>86は凄スレアンカーのつもりだったんだが・・イイヨイイヨ〜
107:デフォルトの名無しさん
05/01/20 22:11:49
>104と>105は別に矛盾しないな。
108:デフォルトの名無しさん
05/01/20 22:14:46
そしてmonadやstate transformerの話になるか。
109:デフォルトの名無しさん
05/01/20 22:24:20
Cの関数は最強。
だって数学厨でもCには文句つけない。
110:デフォルトの名無しさん
05/01/20 22:25:29
アッタマワルソーなスレ
、と思ったら実は中身はRubyスレか。
,riTl|l.il|..ll..|ll.i..lli、
ril l!|.|l|.l||!.l|.|l|lil.l|l|l
||l!i!|州l|l|ll||lllミillll|l|
!|||ラ''' '´!|ll||l!lソ|||l|| こ
`t'_,,,ヽ i´l州 の
゙iー '' /i',ノ'゙入 荒 ス
`ー'、´ /,r'´ ,>、 れ レ
,イy' / /,r ヽ, 見 て
,r'// / /,i' ' i ゙、 え い
/,/li,/ ,/,i',i' ,r ,r7' ヽ,i. 奥 る る
〃,//l/ .// ,' /'´ / ハ. が が. よ
/,' / l./ ,i'i l// / / l 深 う
/ ,i ,i ,!/ ,i' l // ,/ ,/ l. い 案. に
,/ l l i l./ !i .l / _,/ / l! . ・ .外
,r'=‐、_ll_!j'_,_、-‐、‐' __,,. !l. . ・
/ノ /´/ ``ヽ、 ` ``''''"´ ,! l ・
/´ ,/-/ `` ``ヽ、、___,, i l
/ ,.イl / ,.r‐ ``ヽ、,__ ,! ./!l
/ jly' - '´ i i !.|
111:デフォルトの名無しさん
05/01/20 22:27:08
値はvoidだし…
112:デフォルトの名無しさん
05/01/20 22:29:54
わざわざvoid用意するってことは…そういうことだな。
113:デフォルトの名無しさん
05/01/20 22:37:39
void関数だけ使う数学に厳しい数学厨。
文法エラーのような気もするが。
114:デフォルトの名無しさん
05/01/20 22:39:37
プログラムの実行過程に応じて関数の解釈が変化すると考えれば、値の一意性は
保たれるな。evolving algebraなんてのもあったっけ。
115:83
05/01/20 22:39:52
>>94
そう言ったつもりなんだけど……。
116:デフォルトの名無しさん
05/01/20 22:40:56
【結論】
日本人はコンパイラ・スクリプトエンジンを開発するには向いてない。
117:デフォルトの名無しさん
05/01/20 22:42:14
bison++2.0マダー?
118:デフォルトの名無しさん
05/01/20 22:43:29
Kripke構造を用いたpossible worlds semanticsとかもあるな。
60年代も今も余り苦労は変わらない。
119:デフォルトの名無しさん
05/01/20 22:47:48
>>115
だから、、普通、プログラミング言語の用語の意味は人間の言葉で「定義」してる。
これが間違い。↓
>そもそも文や式の「定義」は、大抵の言語では文法の上で定義するよね (厳密には BNF とか) 。
>意味 (値を返すとか返さないとか) から「説明」することはできるけど、
>それは「定義」じゃないし。
120:デフォルトの名無しさん
05/01/20 22:52:29
>>109
そりゃ、数学の関数とCの関数は別物なんだから当たり前。
分野によって言葉の定義が違うのが当たり前。
言語によっても定義が違うのが当たり前。
121:デフォルトの名無しさん
05/01/20 22:56:22
>>119
あ、ひょっとして
BNF exp ::= digit+ | exp + exp | exp - exp | ...
ではなくて
「『式』とは上の exp のことである」
この日本語が「定義」だ、って言ってる?
それとも、用語は普通こんな日本語では定義しない、って言ってるのかな。
122:デフォルトの名無しさん
05/01/20 23:00:02
>>121
>BNF exp ::= digit+ | exp + exp | exp - exp | ...
これは一応定義の一部と解釈できるかもしれないが、どちらにせよ、
「構文規則」を定義してるだけ。
意味を完全に定義してるわけじゃない。
用語の意味を定義するには、「これはここを繰り返す」「これは値を返す」
「この値がtrueの時にここを実行」等、人間の言葉で定義するのが普通。
Cもそう。
123:デフォルトの名無しさん
05/01/20 23:05:42
>>122
えーと。
だから「式と文の違いを意味で説明することはできるかもしれないが、
それは別に式と文それぞれの定義ではない」とゆーたんですよ。
124:デフォルトの名無しさん
05/01/20 23:08:36
>>121ではないが、>>122の想定してる定義は
URLリンク(swissnet.ai.mit.edu)
の7.2節みたいな内容か?
まあすべての言語がalgolやsmlやschemeみたいな意味定義は持ってないわな。
125:123
05/01/20 23:12:34
あー!わかった。
漏れ「式とはこういう構文のことだ。そのように定義される式はこういう意味をもつ(これは式の定義ではなく式の意味の定義、のつもり)」
>122「式とはこういう構文であり、かつこういう意味をもつものだ」
とそれぞれ主張していたのか。多分。
この辺は趣味じゃないかなー。
126:デフォルトの名無しさん
05/01/20 23:17:12
>>123 >>125
あのね、
>そもそも文や式の「定義」は、大抵の言語では文法の上で定義するよね (厳密には BNF とか) 。
>漏れ「式とはこういう構文のことだ。そのように定義される式はこういう意味をもつ(これは式の定義ではなく式の意味の定義、のつもり)」
これがとりあえず間違いなのね。文や式の定義って言う時は、普通、「意味」の定義のこと、あるいは、意味を含んだ定義を
言ってるわけで、文法上では定義されないの。
>意味 (値を返すとか返さないとか) から「説明」することはできるけど、
>それは「定義」じゃないし。
この「それ」は「違いを意味で説明すること」だったわけね・・・・
それはこちらが誤解してました。スマソ。
俺が定義だといってるのは、「値を返す」とかの説明がまさに意味の
定義だから。定義と言ってたわけ。
>>124
そうだよ。そういうふうに意味論で定義するか、もしくは自然言語で定義するわけだけど、
これは文法とは別物。
127:デフォルトの名無しさん
05/01/20 23:23:28
>>124
しかしそれも今となっては古めかしいな。
言語に並行性を取り込もうとすると全面書き直しになりそうだ。
128:デフォルトの名無しさん
05/01/20 23:25:43
激論のとこ今更で悪いが、そもそもCの式は厳密には、値を”返さない”ぞ
operatorや関数が値を返すだけでなw
式は値を返すが、文は値を返さないとか言ってる奴はCでも間違いだぞw
129:123
05/01/20 23:31:17
>>126
うーん、考え直すとやっぱ
>122「式とはこういう構文であり、かつこういう意味をもつものだ」
の方が自然ですね。ごめん。
>>128
今度は「返す」「返さない」の意味定義の話?
130:デフォルトの名無しさん
05/01/20 23:32:35
どうせ例をあげるならvoid型関数の呼び出し式にでもすればよかったのに。
131:デフォルトの名無しさん
05/01/20 23:45:26
値を持つ・値が定まる
132:デフォルトの名無しさん
05/01/20 23:53:46
>>127
7.2節は意味関数で定義されてるが
それは人間の言葉で定義してるということでいいのか?
133:デフォルトの名無しさん
05/01/20 23:56:42
Ruby厨の脳内仕様では値を持つも値を返すも同じ
134:デフォルトの名無しさん
05/01/21 00:00:49
>>128
そうなのか?orz
ところで、式と文の関係は言語に関係なく、
式⊂文
でいいんだよなぁ?
これに反する言語ってある?
135:デフォルトの名無しさん
05/01/21 00:00:58
void がイカンのは
( void ∈ dom(f) ) = false ∧ ( void ∈ ∈ cod(f) ) = false
が常に成立するからだとおもふ
136:デフォルトの名無しさん
05/01/21 00:01:44
あっ、∈が一個多すぎた、まあ気にするな。
137:デフォルトの名無しさん
05/01/21 00:05:20
>>126
煽りじゃなくて単に見解を聞きたいんだけど、
式のセマンティクスを定義するのに式という言葉を使いたくて
式という言葉をとりあえずBNFとかで定義しておいて、
「式は値を持つ」とかいう形でセマンティクス上の意味を付加していくことがある
(特に数学的にセマンティクスを定義したい場合)。
こういう場合、「式という言葉(の意味)」はBNFで定義され
「式の(セマンティクス上の)意味」は日本語とかで定義される、
といったことになると思うんだけど、どう?
138:デフォルトの名無しさん
05/01/21 00:08:08
こんだけ暴れて何も学んでないんだなぁ。
139:デフォルトの名無しさん
05/01/21 00:10:12
「式という言葉(の意味)」はBNFで定義され
は
「式という言葉(の字面・パターン)」はBNFで定義され
じゃない?
140:デフォルトの名無しさん
05/01/21 00:11:38
>>137
俺の見解としては、それは普通に間違い。
「式の意味」という言葉を人間が使う時、普通は「式の(セマンティクス上の)意味」を指すから。
あくまで、BNFで使っている名前は、構文規則を定義するための記号にすぎず、
人間が「式という言葉(の意味)」と言っているときでも、そのBNF上の記号を
指しているということはまず無い。
ここでのもともとの議論も無論、前者の意味で皆「式は〜」と言っていた。
141:デフォルトの名無しさん
05/01/21 00:12:58
>>134の
「 ところで、式と文の関係は言語に関係なく、
式⊂文
」はいいの? またRuby論理?
142:デフォルトの名無しさん
05/01/21 00:13:45
(゚∈゚ )
143:デフォルトの名無しさん
05/01/21 00:15:59
>>132
127じゃないが、良くないよ。
人間の言葉で定義している場合が多いというだけで、
Schemeの7.2節は例外。
Schemeは人間の言葉と、形式的な意味論と両方の定義が存在するな。
後者の方がより厳密かもしれない。
144:123
05/01/21 00:16:58
>>137
僕もそんな風に考えてたんだけど、どっちも「式」の定義だし、
「普通」は式の定義というと意味論的な意味のことを指すと言われれば
反論できないし、そんな気もしてきた。
>>141
漏れがそうでない言語を定義してあげよう。
145:123
05/01/21 00:18:22
×意味論的な意味
○意味論的な定義
146:デフォルトの名無しさん
05/01/21 00:19:04
形式的意味論で定義していないプログラム言語は
意味関数で定義できないということを意味しているの?
147:デフォルトの名無しさん
05/01/21 00:20:41
意味関数の定義自体は人間の言葉で定義してるんだから
結局は人間の言葉で定義してることにならん?
>>146
意味関数で定義できるけどしてないだけの場合も。
148:デフォルトの名無しさん
05/01/21 00:21:10
>>144
極端なこと言えば、式の構文を定義するのに、式という言葉を使わなくてもいいわけで。
もちろん、わかりにくいからそんなことは普通しないんだけど、例えば、stmtって略したり
する時もある。
だから、BNF上の記号はあくまで言葉の(意味の)定義とは別。
構文規則を定義するために便宜上わかりやすい名前をつけた記号に過ぎない。
149:デフォルトの名無しさん
05/01/21 00:22:39
>>147
まあ、間接的には結局そういうことだよ。
数学だってそう言えてしまう。
でも、普通はそういう直接自然言語で定義してないものを
自然言語で定義してるとは言わないわな。
150:デフォルトの名無しさん
05/01/21 00:23:43
Rubyの人が言うように仕様書で自由に決めたとき
意味関数に落とすと矛盾が発生することはないの?
151:デフォルトの名無しさん
05/01/21 00:24:41
>>150
あるに決まってるだろ。その場合はもちろん無効だよ。
そういうバグが無いことを前提にみんな議論してるんだろ。
152:デフォルトの名無しさん
05/01/21 00:25:27
>>150
矛盾が発生しないように意味関数を定義していくんじゃないかな。
ひょっとして意味関数を「日本語->意味」みたいな関数だと思ってる?
153:デフォルトの名無しさん
05/01/21 00:26:22
Schemeの意味関数とRubyを形式意味論を用いて意味関数に落としたものは
互いに矛盾するってことはある?
154:デフォルトの名無しさん
05/01/21 00:27:01
>>153
意味がわからない。矛盾するもなにも、別の言語の別の定義だからなんの関係もない。
155:デフォルトの名無しさん
05/01/21 00:27:53
URLリンク(swissnet.ai.mit.edu)
の7.2節の形式の意味関数を念頭においてますよ。
156:デフォルトの名無しさん
05/01/21 00:30:16
>>154
同じ状態機械を想定して
同じ形式の意味関数を用いたらどうです?
157:デフォルトの名無しさん
05/01/21 00:30:34
で?何が聞きたいの?
SchemeとRubyの間の矛盾って?
158:デフォルトの名無しさん
05/01/21 00:32:59
一方では文は値を持ち、他方では持たないと自由に定義されてると
抽象機械の遷移状態が異なってくることはないですか?
159:デフォルトの名無しさん
05/01/21 00:34:43
言語が違うんだから、形式(?)なるものが同じだとしても、意味関数や状態遷移機械は
もちろん違うし、全く関係ないんだが。
160:デフォルトの名無しさん
05/01/21 00:37:01
>>159
なんだか見えない相手と戦っているドンキホーテのようだな。がんがれ。
161:デフォルトの名無しさん
05/01/21 00:37:24
すみません、「形式(?)」って具体的にお願いします。
162:デフォルトの名無しさん
05/01/21 00:38:43
>>161
俺が聞きたいよ。
お前が「形式が同じだとどうです?」と言ってるだろ。
察するに、表示的意味論なら表示的意味論、操作的意味論なら操作的意味論で、
似たような記号使うということか?
163:デフォルトの名無しさん
05/01/21 00:38:46
意味関数の記述形式のことでいいですか?
164:デフォルトの名無しさん
05/01/21 00:39:38
>>163
いいですか?てなんだよ。お前が使ってる言葉だろ。
165:デフォルトの名無しさん
05/01/21 00:40:23
とりあえず、俺に聞く前に意味論の本読んでください。
166:137
05/01/21 00:42:11
>>140
了解。dクス。
>>139
うーんと、式=加算or減算etcって感じ。
数学的には
式の集合=加算の集合∪減算の集合∪etc
みたいな。
167:デフォルトの名無しさん
05/01/21 00:44:58
言語が違っても処理が同じなら、ターゲットの抽象機械が同じで
同じ意味関数を用いれば、おなじ記述になるはずですが、
文の定義が異なるのなら両者の遷移状態は異なることになりませんか?
168:デフォルトの名無しさん
05/01/21 00:49:34
同じ記述結果が出来るはずなのに、遷移状態が異なるのは
問題ではないのか?ということだな。
169:デフォルトの名無しさん
05/01/21 00:52:16
言質を確かめられてるだけで、意味論のことをおまえに
聞いてる訳じゃなさそうだから答えてやれ >>165
170:デフォルトの名無しさん
05/01/21 00:54:09
文の定義とは勿論「文」の意味論的定義な
171:デフォルトの名無しさん
05/01/21 00:54:20
>>167-168
偶然同じ処理で同じ記述になろうが、別の処理で別の記述になろうが、
別の世界の別の定義同士は何の関係も無いぞ。
あと、表示的意味論と操作的意味論ごっちゃになってるだろ。
172:デフォルトの名無しさん
05/01/21 00:57:37
同じ抽象機械で同じ目的の処理なら関係ないとホントにいえるのか?
173:デフォルトの名無しさん
05/01/21 01:04:53
ていうか、SchemeとRuby全然違うだろ。
同じ目的の処理とかほとんどありえない。そもそもSchemeに文なんて無いだろ。
174:デフォルトの名無しさん
05/01/21 01:06:46
>>173
ふふん??
175:デフォルトの名無しさん
05/01/21 01:10:15
仮に、操作的意味論で、同じ抽象機械が対象で同じ目的の処理なら、同じ記述にできるよ。
違う目的なら違う記述になるよ。
で?それが何?
176:デフォルトの名無しさん
05/01/21 01:13:17
gcでlazy sweepについて知りたいんだけど
なにかいい文献ない?
177:デフォルトの名無しさん
05/01/21 02:03:20
くだらない質問なんですが、
構文解析器のことを英語で"parser"と言いますが、
字句解析器は英語で何と言うのでしょうか?
178:デフォルトの名無しさん
05/01/21 02:04:36
>>177
lexer
# 数時間でえらい書き込みだと思ったら案の定・・・
179:デフォルトの名無しさん
05/01/21 03:03:07
scannerてのも見るけど
180:デフォルトの名無しさん
05/01/21 03:09:37
スキャナだと意味が広すぎるんでは
知らんけど
181:デフォルトの名無しさん
05/01/21 03:47:45
死ね。
182:デフォルトの名無しさん
05/01/21 03:53:25
lexというツールもあるくらいだし、lexerですかね。
ありがとうございます。
183:デフォルトの名無しさん
05/01/21 03:56:15
そういえば、Schemeに文はありませんでしたね。
184:デフォルトの名無しさん
05/01/21 03:59:22
う
185:デフォルトの名無しさん
05/01/21 04:04:47
>>176
定番のあの青い本にのってない?
186:デフォルトの名無しさん
05/01/21 04:49:21
ん
187:デフォルトの名無しさん
05/01/21 05:02:26
う
188:デフォルトの名無しさん
05/01/21 05:14:58
なんでもいいから早く誰か俺言語さらせよ
189:デフォルトの名無しさん
05/01/21 07:38:01
俺言語I(cbt)
[syntax]
x ∈ Var
n ∈ Nat
Exp e ::= n | x | e1 e2 | e(x)
[semantics]
s ∈ State = Var -> Exp
[[e]]s = n iff s |- e => n
s |- n => n
s |- x => s(x)
s |- e1(x) e2 => e1[e2/x] <- capture avoiding substitution
s |- e(x) => e(x)
190:デフォルトの名無しさん
05/01/21 08:29:37
ぜんぜん意味わかんないから説明キボン。
∈ってなん?
191:デフォルトの名無しさん
05/01/21 08:34:52
くちばし
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5328日前に更新/188 KB
担当:undef