いらん。
くそスレ立てる子もいらん。
10 :
デフォルトの名無しさん :04/11/10 23:49:54
LISP?はぁ? 負け組言語は不要w
11 :
M.B. :04/11/11 00:01:58
>>10 馬鹿め、Lisp と Forth はどこにでもいるのだぞ。
侮ってはイカン。
LISPはCと同じ速度、Javaよりも省メモリ、AI関係に使用しやすい とかの理由でボーイング777の製造とかYahooStoreのシステムに フレームワークとして利用されてるよね。。 LISPがコンパイルして実行できて、同じAI向けのPrologができへんのなんで? (LISPはS式で、Prologの方は実行時に述語を受理したりすんのと関係ある?) Prologもコンパイルできる…とか、法律家気取りの言語マニアな 意見は抜きにして簡単に教えて。
漏れはいつも構文解析まではフンフンって読めるけど、 意味解析やコード生成以降はホント、チンプンカンプン。 CPUとかアセンブラとかの勉強、やっぱ必要か(笑)?
>>12 LispとPrologを同列視してる時点で何もわかっちゃいないのが丸わかりだが、ま、
WAMをキーワードにぐぐってみれ。
リスパーとか来ると嫌だなあ。
LisperでもSmalltelkerでもコアな言語をゴリゴリ使ってて自分コンパイラをその上で作っちゃう人もかなり 居るらしいからいいんでね? でもLispとかSmalltalkの話を聞くとかなり初期段階で他の言語の処理系を作ってるね。 あれはなんでだ?(w
後半何がいいたいのかよくわからん……
>>17 Java で Lisp のインタプリタ書くのは簡単。
けどハマりそうでイヤ。
いつもはじめからS式で書けば字句解析も構文解析も いらないじゃんと思う。面白いのはそっから先だよな。
全く同感。
>>14 みたいのを見るたびそう思う。
Cみたいな言語の構文解析をやって、そっから先に進みがたかったら
Lispのコンパイルを理解すればいい。
後からその両者を真中でつなげれば楽ちん。
> Lispのコンパイルを理解すればいい。 わかった。Lispのコンパイルを自作を目指して勉強する。 お勧めの情報源があれば教えてチン子。
なんか
>>1 のスレッド紹介がバージョンアップしてるな。
羊頭狗肉になりそうな気もするが…
28 :
M.B. :04/11/11 22:39:12
M.B.==20 いきなりコアな話だが、変数スコープの扱いにだけは気をつけれ。 「funarg問題」でググると出てくる。
29 :
デフォルトの名無しさん :04/11/11 23:58:08
LISPってかなり、マニアックな言語だと思うんだけど(学術的に) LISPを勉強するメリットって何かありますか?
Ruby >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Lisp
実装が楽なので最初はいいかもね>LISP
33 :
デフォルトの名無しさん :04/11/12 00:35:22
25歳、LISPを勉強するまでは金無し君だったけど(ry
素人丸出しで悪いが インタプリンタとかって結局 int * code_ptr Func_CPU{ swithc{ // add byte case 0x0000: *code_ptr+1 += *codo_ptr +2; codde_ptr+=2; break; // sub byte case 0x0001 *code_ptr)+1 -= *codo_ptr +2; codde_ptr+=2; break; ・・・ } とかして命令とその後ろデータを置いといて CPUが実際に演算するような関数を作ればと 思ったんですが実装では遅くなりそうですが もっと良い実装方法はありませんか?
35 :
M.B. :04/11/12 00:43:04
>>29 LOGO と同じくらい簡単。本当に、小学生でも大丈夫。
いろんなオマジナイを書かなくても、
電卓なみに簡単に使える。こういう言語でメジャーな言語は
Lisp と FORTH くらい。
OR や AND が制御文っつーのも目からウロコ。
教育用には Pascal と Lisp と FORTH はかなり向いているので、
Java でインタプリタ書いておくといいかも。
ちなみに FORTH インタプリタは、正味一日あれば書ける。
連投すまないけどコードが間違ってたので int * code_ptr Func_CPU{ swithc(*code_ptr){ // add byte case 0x0000: *code_ptr+1 += *code_ptr +2; code_ptr+=2; break; // sub byte case 0x0001 *code_ptr+1 -= *code_ptr +2; code_ptr+=2; break; ・・・ } です。 こうやって命令とデータを配置してCPUの演算のような 関数を作って、そこで計算さえる方法だと実際に 他の関数内で演算をさせるより実装が遅くなりそうなんですが もっと速い実装方法がありますか?
38 :
M.B. :04/11/12 00:49:42
>>34 Java の「中間コード+仮想マシン」方式が、
なんだかんだいっても一番実際的。
USCD の p-System とか、BCPL の IntCode とか。
とりあえずこの方式で動かしてみて、
「遅い」と思ったら javaCC なり BISON なりに
乗り換えるのが実際的。
何より移植が楽だしな。
byte * code_ptr Func_CPU(){ swithc(*code_ptr){ // add byte case 0x0000: *code_ptr+1 += *code_ptr +2; code_ptr+=3; // 3byteだけポインターを動かす break; // sub byte case 0x0001 *code_ptr+1 -= *code_ptr +2; code_ptr+=3; break; ・・・ } >>USCD の p-System とか、BCPL の IntCode とか。 これは知らないので調べてみます JAVAの実装方法が載ってる本でもあるのでしょうか? 自分もそういった本が欲しかったので探したのですが 見つからなかったので・・・
LISPのlambda知っとくだけでかなり変わるよなあ Cでコールバック関数別途用意するとかがアホらしくなる JavaScriptはその辺のLISPの良い所をうまく抽出した言語
>>39 switch使うと1命令毎のジャンプが2回発生するし、
関数テーブルにすると関数呼び出しで時間が掛かる。
C言語で書こうとすると効率はあまり良くならない。
こういった技術にdirect threaded codeというのがあって、
gnu forthの実装などで使われているらしい。
gccにはこのために用意したとしか思えないラベルを変数に格納できる
という拡張機能があって、うまく使うとswitchや関数より効率が良いVMが作れる。
VM() {
static void *op[] = {&&op1, &&op2, &&op3} ;
goto *op[pc++];
op1:
//・・・
goto *op[pc++];
op2:
//・・・
goto *op[pc++];
op3:
//・・・
goto *op[pc++];
}
これでswitchの倍程度は速くなる。
あ、上はindirectだった directの場合は↓ VM() { static void *op[] = {&&op1, &&op2, &&op3} ; void *pc = op; goto *pc++; op1: //・・・ goto *pc++; op2: //・・・ goto *pc++; op3: //・・・ goto *pc++; } これでindirectよりも数割ぐらい効率がよくなる。 実際使う時はopの中身を実行する順に並べればいい。
>>42 なるほど、VM(CPU部分)を呼び出さずに、
命令コード毎、関数内でGotoを使って飛ばしていけばいいのですね
確かにこっちの方が速いですね。
>>36 彡´⌒ヽミ
(´・ω・`) 知らなかったでし。
(つ甘と) 親切にどうも。
`u―u´
>>41 ギゴBASICみる限り、自分が考えた設計と同じですね
来週から1週間掛けて、スクリプトを作るつもりです。
>>42 これ他の言語にも欲しいよね、インタプリタ作るにはもってこいの機能で、
アセンブラで書けば一発なのに、高級言語では全く書けない。
>>42 gccにテーブルジャンプ書く機能あるなんてしらんかった。
自分のVMを書き換えてみるよ、ありがとん。
49 :
M.B. :04/11/12 08:40:20
>>39 ×USCD
○UCSD (カリフォルニア州立大学サンディエゴ校)
BCPL については
リチャーズ&スティーヴンズ
『BCPL 言語とそのコンパイラ』共立出版
51 :
M.B. :04/11/12 22:25:59
>>50 VCでできるかどうかはワカランけど、
BASIC では定跡とのこと。
はぁ?
53 :
デフォルトの名無しさん :04/11/12 23:06:16
26歳、VMを覚えるまでは金無し君だったけど(ry
マジお勧め。
bignumのライブラリでよさげなのないですか? ライセンスとか面倒なのは避けたいので DLL形式で使えるとうれしい。
56 :
デフォルトの名無しさん :04/11/13 00:23:10
アフォ? ライブラリでもライセンスは関係する罠w
M.B. age sugi
いま Java で Lisp を書こうとして、禿死苦悩んでいる。 atom や car や cdr は List クラスのメソッドにするとして、 read/write や eval って何のメソッドにするんだ? 入出力ストリームを extend して List を扱えるようにするのか? ListProcceser とかいうクラスを定義して eval メソッドを実装するのか? なんやらオブジェクト同士のつかみ合いみたいになって、 設計が綺麗くなんないんだが。
つまんないことで悩んでるな。 Lispとしての関数と、それを実装するJavaでの話は全く関係ないよ。 簡単なLisp処理系のソースを読んでみることを勧める。 そうすればシンボルテーブルの概念も掴めるだろう。
殴り書き。 class LispObject { ...} class LispCons extends LispObject {...} class LispSymbol extends LispObject {...} class LispNumber extends LispObject {...} class LispString extends LispObject {...} class LispFunction extends LispObject {...} class LispInterpreter { Hashtable obarray; public LispObject eval(LispObject form) throws LispError { if (form.isAtom()) { return (form.isSymbol() ? ((Symbol)form).getValue() : form); } else if (isList(form)) { func = ((LispCons)form).getCar(); if (func.isSymbol()) { func = func.getFunction(); if (function == null || !function.isFunction()) { throw LispError(略); } } else { func = createLambdaFunction(func); } return callFunction((LispFunction)func, form.getCdr()); } else { throw LispError("form is not a list.", form); } }
殴り書きその2。 LispObject callFunction(LispFunction func, LispObject args) throws LispError { int len = getListLength(args); if (len < func.getMinArgs() || (func.getMaxArgs() != null && len > func.getMaxArgs())) { throw LispError(略); } argsarray = new LispObject[len]; // コード略。引数をargsarrayにコピー。maxargsに足りなきゃnullで埋める。 func.call(argsarray); } void initialize () { defineFunction("car", new LispFunction_car()); defineFunction("eval", new LispFunction(1,1) { LispObject call(args) { return eval(args[0]); } }); // ... } void defineFunction(String name, LispFunction func) { LispSymbol sym = intern(name); sym.setFunction(func); }
その2訂正: s/nullで埋める/nilで埋める/ その3。 LispSymbol intern(String name) { Obj s = obarray.get(name); if (s == null) { LispSymbol sym = new LispSymbol(name); obarray.put(name, sym); return sym; } else { return (LispSymbol)sym; } } class LispFunction_car extends LispFunction { LispFunction_car() { super(1,1); } // minargs, maxargs LispObject call(LispObject[] args) throws LispError { if (args[0].isCons()) { return ((LispCons)args[0]).getCar(); } else { throw LispError(略); } } }
しまった、関数かマクロかで判別して、関数のときは先に引数を評価するんだった。 直すのマンドクセ。
ここはお前の日記帳じゃねえんだ(ry
いやなに、59の参考にでもなればと思って。
SICPの「メタサーキュラ・インタプリタ」の章を嫁. あそこのコードは素のSchemeでなくOOPLだったらもっと簡潔に書ける.
> メタサーキュラ・インタプリタ 関係ないが、この言葉を見るとprologスレの論争を思い出す。 結局誰が正しかったのかな。
記録自体はもぅ何年も前のものなのに そのまま生々しく残ってて痛々しいよね。
71 :
デフォルトの名無しさん :04/11/13 21:07:36
まぁ、プロログ、リスプと言ってる時点で 実用的なプログラムを書いていない証拠だなw
設計で悩んでたら、eval 以外の関数だけで半日潰れちまった 甘かった _| ̄|○
あれは邪道。LinkedList なんぞ使っちゃイカン。 結局 eq と equal の区別ができなくなって詰まってる。 現在、 中西正和『Lisp入門 システムとプログラミング』近代科学社 黒川利明『LISP入門』培風館 竹内郁雄『初めての人のためのLISP』サイエンス社 を読みながら悪戦苦闘中。
>>71 > まぁ、プロログ、リスプと言ってる時点で
> 実用的なプログラムを書いていない証拠だなw
まぁ、tsv や XML で間に合う仕事をしてる香具師には
無縁な話なのだがね。それが悪い訳ではまったくないが。
なんかキチッとしたもの作り込んでるみたいなんで 完成したらサイトも作ってアップして下さい。
>>75 まあ本人の自由だろうけど、そういうレベルの人が言語処理系について
知ったような口をきくのはどうかと思う(
>>35 とかね)。
>>78 象牙の塔の中で言語論争してるわけじゃないからイイでし。
ここは78さんのために用意された花園でも、まして法廷でもないし。
そういうことをPrologスレを眺めてオモタ。
>>78 前回 Lisp を書いたときは、
言語が FORTRAN (「大文字のフォートラン」、つまり60)で、
しかも再帰呼び出しが使えないので
(なにせ関数呼び出し用のスタックがなく、レジスタに直接
割り当てていたので、7層までしか使えない)、
プリプロセッサの皮を被せて「再帰呼び出し可能なFORTRAN」を
実現し(RATFOR みたいなもんだ)、その上で LISP を書いて、
その上に機械翻訳システムを実現したもんだ。
とはいえ N88 BASIC 上に LISP も PROLOG も実装したことがあるのだが
内部構成が全然思い出せない _| ̄|○
82 :
M.B. :04/11/13 23:00:18
なんか思い出してきたぞ。 あのころはメモリが少なくて実用的なプログラムが書けるような環境が 立てられなかったのと、LISP はあくまで数式処理なんかに使う ツールでしかなかったので、動いたところで「こんなん使えねーや」 っつーんで捨てちゃったんだ。 今なら Java で Lisp インタプリタ書いて、その上で Prolog の処理系 (Lisp で六百行くらい)を動かしても十分実用になる。 いい時代になったもんだ。
だからさあ
ここはお前の日記帳じゃねえんだ>MB
つーかRATFOR出てくるなんていつの時代の人間だよ
>>75 の文献も古すぎだぞ
古い本見ながら中途半端なLISP作るより
R5RSでも読んでScheme覚えたほうがいい
>>83 別にいいじゃん、興味ないから読んでないけど(汗
まあ内容はここに一応ふさわしい。
極めてスレ違いな言語論争で埋め尽くされるよりマシ。
85 :
デフォルトの名無しさん :04/11/13 23:24:27
スモールコムパイラを作ろうのねーちゃんは何歳だ?
10さい
87 :
M.B. :04/11/13 23:27:01
>>83 > つーかRATFOR出てくるなんていつの時代の人間だよ
知ってんじゃねーか。
89 :
デフォルトの名無しさん :04/11/13 23:35:10
コンパイラ と コンバイナ と コンバンワ の区別が出来ない人がいるのですが、どうしたらいいですか。
そういえば某スレにこんなのがあったなぁ #include <stdio.h> #include <stdlib.h> int b[2<<16],f,g,i,n;char*p,l[103][80],c[80],*q,*r,x;S(){for(;*p==32;++p);}T(){ for(r="GET \0OTO \0PUT \0RUN\0 QUIT\0IF"+5*n++;*r&&*r==*p;++r)++p;return!*r&&(S ()|1);}I(){g=atoi(p);return*p-48?g?g:b[*(short*)p]:g;}main(){for(;;){gets(p=l[i =100]);while(i<101){n=0;S();g=atoi(p);if(*(q=p)==48||g)for(p=l[g],q+=3;*p++=*q ++;)i=101;else p=!*q?l[++i]:T()?printf("?"),gets(c),b[*(short*)p]=atoi(c),l[++i ]:T()?l[i=I()]:T()?printf("%d\n",I()),l[++i]:T()?l[i=l[100][0]=0]:T()?exit(0),0 :T()?I()?p+3:l[++i]:(61-q[2]?puts("ERR"):(p=q+3,f=I(),x=p[2]-43,p+=3,g=I(),b[*( short*)q]=x?x-2?x+1?x-4?x-17?x-19?x+10?x-18?x+6?f:f%g:f==g:f!=g:f>g:f<g:f/g:f*g :f-g:f+g),l[++i]);}puts("OK");}}
ネタはマ板でやると喜ばれます
92 :
デフォルトの名無しさん :04/11/13 23:49:01
まぁ、LISPなんぞ哲学みたいなものだ。 つまり、概念なりを学には大変よい言語だが、 実用的な価値は、ほぼゼロに近いw
>>92 言語論争は死滅スレでやると喜ばれます、死ね
hai hai
>>96 「親分! てぇへんだ!」
「おいおい、どうしたんだ八」
「まぁまぁ八兵衛さん、朝御飯はお済みになったの?」
「すんませんお内儀さん、ってそれどころじゃ無ぇんで。
大川にお六字が……」
>>97 ……ってこんだけネタ振っといて八兵衛じゃなくて八五郎だ
またやっちまった _| ̄|○
コテハンってどうしてこんな(ry
100get!!!!!
煽り以外で
>>92 に反論できる LISPer は居ない?
誰かあの文章を紹介してやれよ。「普通のやつらを作り出せ」とかいうやつ。
と、LISPのことが気になって仕方の無い
>>101 が語られました。
>>101 数式処理は Lisp 以外の言語で書く気がせん。
これで十分。
……つーか Mule があるじゃん。あれって Lisp だろがよ。
竹内郁雄さんが 新しいマシンを開発するときは その上に Lisp を実装すると非常に楽だと bit の連載(TAO かなんかの開発の話)に書いてたな。
その辺にしておくべし。 LISPのことばっか喋ると
怠け者の
>>101 がまた荒らしで知識を得ようと熱くなる。
結局スレに迷惑かかる。多様な話題のほうが楽しいし。
>101 これ以上LISPerを呼ぶなよ
LISPer は独自スレを立てれ。
つーかLISPスレ立ってるだろ
処理系依存でない LISP スレが・・・ナイ!
LISPerは自体は構わんよ、下らん言語論争やフレームの元になるような事を書く奴さえこなければ。
このスレは実装技術のスレだ、個々の言語の良し悪しや独善的思想はフレームの元、
>>104 そういう奴にレスを付けると百害あって一利ないから一切書くな。
どうしてもレスを付けたければ死滅スレを立ててそこでやれ
連想配列って意外に不便。 キーワードのスペル間違えてデバッグに半日。 型なし言語も意外に不便。 評価しそこなってデバッグに半日。 PerlとPHPのソースコードレベルの検証ツールをキボンヌ
LISPのエンジン設計の話しはスレ的に歓迎なんだが・・・ LISPが気になるくせに「コンパイラ・スクリプトエンジン」の相談ができないのが頑張ると 言語論争の話題しか提供できなくてフレームの種を蒔くことになる。
>相談ができないのが頑張ると 個人のレベルにイチャモンつけるようなのは良くないよ 最初はみんな初心者
友達いないだろう? 死ねば〜
LISPは変換が面白いと思うよ (define (f proc) (proc #t)) (f (lambda(x)(if x 0 1))) ↓ ((lambda(proc)(proc #t))(lambda(x)(if x 0 1))) ↓ ((lambda(x)(if x 0 1)) #t) ↓ (if #t 0 1) ↓ 0 コンパイラに渡すまでもなくこれぐらいの変換はユーザー関数レベルで可能なとことか まあコンパイラ自体もユーザー関数レベルで書けるけど
>>112 インタープリタ系言語はインタラクティブな環境があると開発しやすい。
自分で作った言語処理系もってるけど、そういう環境ができるまでは至極面倒だった(某ゲームの移植性をあげるために中間コード使っただけなのであんまり良いものじゃないけど)
perlはデバッグモードがあるが、phpはお手軽な環境が無いから面倒になったんだろう。
だいたい連想配列のキー間違いなんざインスペクタ使えば一発で解りそうなもんだよ。
>>118 いや、漏れはPerlからJavaに乗り換えたのでモウマンタイなのだが、
「CGIはPerlかPHP」って頭っから信じてる香具師がいて
そいつが管理してるプロジェクトからブツが上がってこないんで
迷惑してるんだが、下っ端のプログラマーに聞いてみると、
どうやらソースが荒れてて手がつけらんなくなってるらしいのだ。
かといって開発ツールを導入するのにも消極的なのだ。
だから、なんかしらソースコードレベルで適用できるツールはないもんかと。
PerlUnit
ここで聞く内容じゃないね
Ruby以外の言語は糞・
eval.c を読んでから言え。
124 :
デフォルトの名無しさん :04/11/14 20:25:46
LISPer ですが、何か?
RubyはRecursive Decentでつか?
Ruby >>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Lisp
>>125 ソース読んでないけどLALR(1)じゃなかったっけ?
128 :
デフォルトの名無しさん :04/11/14 22:05:42
emacs の弱点の1つがlispだったり擦るわけだがw
Emacsは元々LISP用のエディタだったんだろ?
逆にLISPだからこそここまで生き残ったとも言える。
S式嫌いならフロントエンド作ればいいだけの話な気がするけど、
>>129 のスレはそういうことじゃないみたいだな。
emacsとviがUNIXのイメージを悪くしたのは確かな様だ。
>>130 > emacsとviがUNIXのイメージを悪くしたのは確かな様だ。
現在でも UNIX 上で動くエディタの標準は emacs 互換の Mule。
「テトリス」と並ぶ有名なゲーム「rogue」の操作は vi 互換。
それを言うなら「emacs派とvi派の対立が」だろうと思うが、
実際には棲み分けができていたように思われ。
いろいろ勉強してたけど、そろそろネイティブバイナリも吐ける コンパイラを作ろうかなって気になったよ。 なんつーか、コンパイラ作成って楽しいな。
石田綾ってなにもの? 過去の実績を知りたい。
135 :
M.B. :04/11/15 01:03:51
>>133 つーか言語処理系の開発って、
(゚∀゚)イイ!
137 :
デフォルトの名無しさん :04/11/15 19:01:23
再帰下降は仕組みが簡単だし最強っぽいのですがなんで LALRやらLLやらを使うコンパイラが多いのですか?
139 :
ほんたま :04/11/15 20:16:29
おみゃ〜らよ、HSPはメニューつくれるのか? おみゃ〜らよ、HSPのヘルプに目を通したが、命令語の一覧眺めたが、メニューつくる命令はないっぽかったが、どうか? おみゃ〜らよ、Windowsソフトってメニューはつきものだろう? そのWindowsソフトをつくるHSPにメニューをつける命令がないのはどういうこっちゃ? おみゃ〜らよ、しゃくせんのあるけん、どうじ?
↑ 誤爆??
HSPスレに逝け
>>137 再起下降では解析できない文法があるから。自分でLALRとか書いてるじゃん。
>>137 LL の文法を解析するパーサが再帰下降型パーサだが……
上昇型パーサを使うのは LL よりも広い範囲の文法を効率よく扱えるから。
LL だと、たとえば四則演算を次のように書くと左再帰を含むためアウト。
E -> E '+' T
T -> T '*' F
F -> '(' E ')'
ちょっと頑張れば LL に書き直せるけど、よけいな非終端記号が増えて
面倒な上、文法が直感的でなくなる。そんな機械的な作業はプログラムに
任せたいっしょ?
>>132 目次を見たときは結構いい構成になってると思ったけど,
ソースコードはかなり苦しいな
本の限られたスペースに載せるにはああしなきゃ
いけないとか決まりでもあるんだろうか?
>>144 再帰下降型というのは、LLじゃなくてrecursive decentの事です。
LLは下降型ですが再帰下降とは別物じゃないですか?
でも結局左再帰の問題はつきまといそうですね。 だから難しい上昇型使うのですね。
再起加工って文法の名前なのか?
>>132 のコードも別に普通の手書き再帰下降パーサですよね。
なんか問題有るんですか?
LL(k)の事を再帰下降って言ってるだけ?
再帰下降は下降型解析法(LL)のやりかたの一つ 一度コンパイラの本でも読め
LL(k), LR(k), LALR(k) etc. は *文法の* 種類分け.
Recursive Decent, Top-down, Bottom-up etc. は *解析方法の* 種類分け.
LLはTop-down(特にRecursive Decent)と,LR(LALR含む)はBottom-upと相性がよい.
このPDFでも嫁 っ[
ttp://www.cs.vu.nl/~dick/PTAPG.html ]
ありがとう。読んでみる。
154 :
デフォルトの名無しさん :04/11/15 23:41:07
まぁ、口ばかり達者な奴がいるみたいだが(例
>>138 >>145 )
それほどの実力の持ち主なら、
そちら様の完成コードでも拝見さしてもらいましょうかな?
>そちら様の完成コードでも拝見さしてもらいましょうかな? >そちら様の完成コードでも拝見さしてもらいましょうかな? >そちら様の完成コードでも拝見さしてもらいましょうかな?
>>154 pやらGやらVやら何って感じだが、
それよりなにより是非って( ゚д゚)ポカーン
基本的な日本語が使えてない。
コード以前に中学の国語あたりをやり直せ。
>>152 LL(k)構文解析で解析できる文法をLL(k)文法っていうんじゃないの?
>
http://www.cbook24.com/bm_detail.asp?sku=4774121770 監:中田育男
法政の学生?
本人が見ることもあるかもしれないから書くけど、
体を表す名前を付けることを身につけてほしい。
CellG=lexer
CellK=parser
CellV=仮想マシン
らしいけど、もしそうなら、
Lexer, Parser, VirtualMachine といった名前を付けるべき。
記号表のエントリにはTableEntryといった名前をつけるべきで、
Tableという名前を付けてはいけない。
読んで分かりやすいプログラムを書くのは
ある程度プログラムを読んだり書いたりの
経験がないと難しいだろうけど、ガンガレ。
あと、配列じゃなくてListを使うとか、
文字リテラルはinternしなくていいとか
もうちょっとJavaを勉強しよう。
著者が中田先生の下の学生かと思ったです。
G…Gikukaiseki K…Koubunkaiseki V…VM これくらい想像できないようでは現場のコードは読めないぞ
”コンパイラの最適化”と”アーキテクチャごとのコードの最適化”は、 考え方のレイヤが違いますよね? やはりコンパイラを作成する場合、ターゲットとなるアーキテクチャに対しても 詳しくないと本当の意味での最適化コードは作成できない??
>>162 だいたい同じPentiumでも種類ごとに適した最適化手法が違うし
定数値の最適化やら誘導変数の最適化やらはCPUが何だろうができると思うが。
>>158 そういう小姑みたいな性格は何処に行っても嫌われますよ〜
Gokiburi Kokkurochi Varusan
>Pentiumならsubroutineが速い そりゃそうだろ(w
著作権は大丈夫なのでしょうか, 2004/11/02 レビュアー: カスタマー 帯広市 Japan JavaのVM向けのコードを生成する簡単なコンパイラが乗っているというので買いました。 非常に参考になると思います。 ただ、よけいなことかも知れませんが、この本の構文解析の部分は、中田育男著の「コンパイラ」の本と、 例題や説明までほとんど同じなので驚きました。 著作権の方は大丈夫なのでしょうか。
ガクガクブルブル
中田先生監修だからなあ。
>>175 それどころか前書き見たいのも中田先生が書いてた
弟子が中田先生の本の改訂を引き受けた、ってことでFA? 印税山分けだったりして
石田綾なんて人間ははじめから居なかったっつうことだろ
180 :
デフォルトの名無しさん :04/11/20 18:03:52
始めて読むコンパイラ本としてはいかがですか?
ところで、最適化の話なんだけど、 ドラゴンブックにある「基本ブロック」 っていう考え方って、何かセンス悪い気がしない? 基本ブロックだろうが、大域的構造だろうが 同じ「グラフ」なんだから、それらを区別せず 統一的に扱って最適化を施すのが、 筋の通った考え方だと思うんだけど。 ま、確かに「基本ブロック」内だけで考えれば 殆どの問題は簡単になるのは分かるけどさ。 現実のコンパイラでも「基本ブロック」って いう戦略は、よく使われているんだろうか?
買っちゃいましたorz
本屋で見かけたので買ってきた。中田育男監修の文字を見たからw
本屋に行ったけど見当たらなかった
>>181 基本ブロックが何かわかってないだろ。
基本ブロック自体はグラフそのものじゃなくて、
グラフの節点だぞ。
>>181 コンパイラ書いてみろ。どんなに頑張っても、基本ブロックの概念を使わないコンパイラは、
仮に
>>181 が天才で、同じ質のコード生成を達成したとしてもコンパイル速度は100倍
遅くなる。更に言えば、基本ブロックの性質を完全に無視するとするなら、同じ質の
コードは生成できない。
最適化ってのはいわゆる難しい問題なので、現在の計算機では残念ながら純粋な
数学のようには取り扱えない。
ついでに言うと、一般のプログラムってのは再帰的な構造を持っていることを考えると、
基本ブロックという概念はむしろセンスが良い。
>>186 基本ブロックの中の人とはリストであり、
すなわち縮退したグラフだと思うけど?
>>187 >同じ質のコード生成を達成したとしてもコンパイル速度は100倍遅くなる。
多分そうだろうと思う。
でも、その手法の「泥臭さ」自体は認るでしょ?
後はそれを「よいセンス」と捕らえるかどうかの差だね。
認るでしょ 認るでしょ 認るでしょ
190 :
デフォルトの名無しさん :04/11/21 15:08:21
>>188 > 基本ブロックの中の人とはリストであり、
> すなわち縮退したグラフだと思うけど?
細かく分けすぎ。そこまで分けて最適化に役に立つのか?
何のためのグラフか考えてみろって。
語義的には確かに正しいんだが、その反論はちょっと苦しいと思うぞ。
自分も基本ブロックはセンスが良いと思うほうに一票。
191 :
デフォルトの名無しさん :04/11/21 18:21:48
相談なのですが、flex,bison とC#を連携させて 言語処理系を開発するとしたら、みなさんなら どういう実装戦略をとりますか?
192 :
デフォルトの名無しさん :04/11/21 19:07:40
Ruby!>>>>>>>>>>>>>>>>>>>>>>>>>>C#
>>191 がどんな言語処理系を求めて
開発を始めようとしているのか、まずそれから語るんだ。
>>191 リフレクションで丸ごと生成できないかなと・・・
思っただけ(汗
問題はBNFを何処に書く、というところ?
boostみたいに言語中言語にできれば、シームレスで最高なんですが、
C#のジェネリッククスは果たしてどこまでできるのか?
てところ。
VisualStudio.NET2005でたら、ちょっとアタックしてみよかと思ってます。
えっ?
>>194 に手段が目的になってしまっている人をboost病患者と呼びます
>>196 「手段」を作る方法を語るのが目的のスレで何を言う
古くは m4 病患者とも呼んだな。。。
-- かなづちを持つ者には、すべてが釘に見える
-- Minamo Narukaze
flex,bison,リフレクション,BNFの記述,boost,…、どれ一つとて実際に 使いこなしてないのまる分かりだぁ。。 (o´C_,`o) ハズカスィ〜 それっぽい用語並べていけば、自発的に連結して 素敵な何かが自然発生する・・・とか、連結方法が思いつかないから みなさんに『実装戦略』の糸口を聞きにきた、とかか…。 ハ・ス・゙カ・スィ〜
スルーしろよ
203 :
デフォルトの名無しさん :04/11/22 09:25:48
>>201 作りたいからやってんだろいいじゃネェか
使いこなしているかどうかは関係ないってしてほしいね
「何」を作りたいのか? (回答例)
>>194 頭に浮かんだ抽象像を前に悩む前衛彫刻家みたい
ツチやノミを前にしただけでイッパイ・イッパイなのが見て取れるから
>>196 みたいなこと言われるっち。
>>205 意味不明の煽りヤメレ、フレーム引き起こしたいなら適当な死滅スレにでも逝け
>イッパイ・イッパイなのが見て取れるから 余計な一言
l /\___/ヽ / :::::::\ | '''''' '''''' .:::| / ̄ ̄ ̄ ̄ ̄ ̄ ̄ |(●), 、(●)、.::::| < 糞スレで余計なこと | ,,ノ(、_, )ヽ、,, .:::::::| | 二度と聞かねぇょ・・・ \ `-=ニ=- ' .:::::/ \_______ `ー`ニニ´-一´ヽ、 / _ l /  ̄`Y´ ヾ;/ | ______,| | |´ ハ | | |-‐'i′l |__ | _| 7'′ ( (  ̄ノ `ー-'′\  ̄  ̄ \
何もできない奴があせる必要もないのに、勝手にあせって人の邪魔をしようと必死なだけ、気にスンナ。
l /\___/ヽ / :::::::\ | '''''' '''''' .:::| |(●), 、(●)、.::::| .。oO( プッ | ,,ノ(、_, )ヽ、,, .:::::::| \ `-=ニ=- ' .:::::/ `ー`ニニ´-一´ヽ、 / _ l /  ̄`Y´ ヾ;/ | ______,| | |´ ハ | | |-‐'i′l |__ | _| 7'′ ( (  ̄ノ `ー-'′\  ̄  ̄ \
boostってさ、C++の機能だけでなんとかしようとしてるけど あそこまですんならperlとか駆使すればいいじゃんねえ
>>212 一度使ってみたら?
別ファイルとして扱っていた文法定義ファイルが、
ライブラリーになるという意味がどれだけ重要かわかるよ。
C++でPerlの処理系を書いて丸ごと埋め込むよりは C++の機能だけで実装した方がネイティブな感じがして(・∀・)イイ!!
Ruby >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> C++=糞言語 >>>>>>>>>>>>>>Perl=汚物
Rubyは動的評価の手段が文字列をevalするだけだから このスレ的にはいまいちだろ。やはりLisp >>> Ruby、とか言ってみる。 Lispのほかにも構文木をファーストクラスオブジェクトとして扱える言語は あるのかな?
Pythoooooooooooooooooooooooooooooooooooooooooooooooooooooon
l /\___/ヽ / :::::::\ | '''''' '''''' .:::| |(●), 、(●)、.::::| | ,,ノ(、_, )ヽ、,, .:::::::| \ `-=ニ=- ' .:::::/ `ー`ニニ´-一´ヽ、 / _ l /  ̄`Y´ ヾ;/ | ______,| | |´ ハ | | |-‐'i′l .。oO( プッ |__ | _| 7'′ ( (  ̄ノ `ー-'′\  ̄  ̄ \
>>216 誤解があるようです。
Ruby のイテレータメソッドはそんな単純なものじゃないです。
>>216 とイテレータメソッドに何の関係があるのだろうか
>>223 オレも221と同じ疑問をもってるのでよろしければどういうことか
教えてください。
Ruby以外は糞 死ね
>>225 Rubyの評判を落としたいのか?
それともスレの趣旨が理解できない池沼か?
>>224 これは221に語りかけたものです、ちょっと足らなかったですね
でも、なんでも煽りに見えるのは良くないです。
#つか、そんなスレになっている元凶は死ね、
#いくら煽ったってお前の実力は向上しないし、稚拙でもタコでもやる奴の実力のみが向上するんだよ。
#おまえの行き着く先は何もできない才能も人望も無いロートル爺だ。
/\___/ヽ l
/::::::: \ /\___/ヽ
.|:::. '''''' '''''' | / ̄ / :::::::\
|::::.,(一), 、(一)| <
>>227 | '''''' '''''' .:::|
.|::::::: ノ ,,ノ(、_, )ヽ、,, | \_ |(●), 、(●)、.::::| .。oO( 心の敵とアツク戦い始めた・・・
\:::::.ヽ`-=ニ=- ' / | ,,ノ(、_, )ヽ、,, .:::::::| ソッ、としておくべし
/ `一`ニニ´-,ー´ \ `-=ニ=- ' .:::::/
/ | | / | `ー`ニニ´-一´ヽ、
/ | | / | | / _ l
/ l | / | | /  ̄`Y´ ヾ;/ |
__/ | ⊥_ーー | ⊥_ _____________,| | |´ ハ
| `ーヽl_l_l.} ヽl_l_l.} | | |-‐'i′l
(、`ーー、ィ } ̄` ノ |__ | _| 7'′
`ー、、___/`"''−‐" ( (  ̄ノ `ー-'′\
, ̄  ̄ \
2chでなにをムキになってるんだかw
まったりしよう
知らぬ間に荒れてるし・・・ え〜とですね。 JavaでLispという企画を読んで、そんなら俺はC#で Lispみたいに考えただけなんですけど・・・ ガーベジコレクションはC#任せにできるけど 字句解析構文解析で既存の生成系を生かせないかなと 思っただけなんですね、はい S式ならそんなの必要ないとかそういう突っ込みはなしで お願いします・・・
↓以後何事もなかったかのようにどうぞ
で、あや本の話はどうなった?
今日大学病院行ってしまい一日仕事休んだから買ってきて読んでみるつもり
あや本のソース見ていると、Javaの書き方じゃないね。 C言語のソースから写しましたって感じだなあ。
236 :
デフォルトの名無しさん :04/11/23 11:50:45
JAVA作るのに、JAVAの書き方せんだろ?
haxa?
>>235 大学院の実習で作ったプログラムみたいだね。
java.util を使ってないところがすごい。
ヲマイラ何打カンダであやの掌(テノヒラ)の上で転がされてるっす・・ 今ごろこのスレみて、あ〜や、印税の計算でニタニタしてるよ・・ ↓ 曰 ,,-─-、 | | [lllllllllll] 卒研の成果物ためしに活字にしたら ノ__丶 |||`_ゝ´|||_ 株を買うより楽に儲けれた ||日|| 丿 ( .| ¢、 _ ||本|||/丿 .  ̄丶.) \ ||酒||L二⊃ . ̄ ̄\ ||\`~~´ (<二:彡) \ ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄ . || ̄ ̄ ̄ ̄ ̄ ̄ ̄||
. 曰 | | ,,-─-、 ノ__丶 [lllllllllll] ./ ̄いくら煽ったってお前の実力は向上しないし、 ||中|| |||`_ゝ´|||_ < 稚拙でもタコでもやる奴の実力のみが向上するんだよ。 ||田|| 丿 ( .| ¢、 .\_ おまえの行き着く先は何もできない才能も人望も無いロートル爺だ。 _ ||育|||/丿 .  ̄丶.) \ ||男||L二⊃ . ̄ ̄\ ||\`~~´ (<二:彡) ←「コンパイラ・スクリプトエンジン」相談室住民 ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄ . || ̄ ̄ ̄ ̄ ̄ ̄ ̄||
>>241 インポートはjava.ioだけだったような・・・。
まあ藻前裸はその程度の本を書く実力と人脈さえ無いんだけどな(w
λ...... λ...... λ...... λ...... λ...... λ...... λ...... λ...... λ...... λ...... λ...... λ...... λ...... λ...... λ......
>>242 この手の技術書は初刷 2000 冊くらいだぞ。
2000円 * 5% * 2000 = 20万円
バイト代程度じゃん。
現状売り切れ続出
今日買ってみたよ。安かったんで。
ソースに関するレスが多いけど 本文はどう?>買った人
コン・パイラさんががんばってます。
あれはおかしいよな。コンバイ・ラの方がいいよな
結局誰も買ってないのか(´д`)
買ったよ、本当に言語処理初心者向けに書いてあって、ある意味面白かったけど。 中田先生の本とかを読む人には向かないんじゃないかな(最適化技法の本でこれだったら随喜の涙だけど)
257 :
デフォルトの名無しさん :04/11/24 23:35:53
もしかして、あや本は虎の巻だけ読めばOK?
>>257 綾本は言語処理に興味がでたごくごく一般的な人向けに書かれている。
中田先生の書籍は専門書なので、これらを読む人には退屈だろう、ただしこういう感じで一般向けに最適化技法を説明してくれれば楽しい思いができると思う。
これならわかってもらえますか?
261 :
デフォルトの名無しさん :04/11/25 13:02:40
Javaのコンパイラを作ってみようかと思ってます。 Parser GeneratorはJavaCCやANTLRなどいくつかあるけど、Bytecode Generator作成を支援してくれるツールはありますか。 ぶっちゃけ、既存のJavaコンパイラと同じASTを作成すれば、Bytecode生成はそのコンパイラのバックエンドに任せることが できるんではないかと考えてはいるんですが。
>>261 2chで聞く前に自分で調べる行動力が無いと無理
もはや作るとは言わんような。
264 :
M.B. :04/11/25 21:27:49
>>261 swap と loop〜until〜do〜repeat 構文を実現できるんなら、
Java 拡張言語のコンパイラは作ってもいいかなと思っている。
JavaCC を使えば Java のライブラリはそのまんま利用できるしな。
>>262 いや、ググってもバックエンド部分がわからなかったから聞いているんだが。
パーサジェネレータはたくさん見つかったんだが、バックエンドは見つからないぞ。
>>264 swapやloopではないんだが、独自に文法を拡張したコンパイラを作ってみたいと思って。
Javaのコンパイラで ソース公開されてるやついじればいいじゃん。 何でメタツールの話から入るかねぇ。
267 :
デフォルトの名無しさん :04/11/26 00:57:15
コンパイラとスクリプトだと作る難しさは違いますが? 実際にプロのプログラマーだと、PC関係のソフトで難しいプログラムは なんでしょうか 規模にもよるかもしれないけど、OSが一番難しそうで、その次にデータ ベースなどがありそうですが、難しいソフトってどんなものがありますか? コンパイラ・スクリプトはそのなかでどれくらいの難易度なのか もうしわけありませんが宜しくお願いします。
>>268 違いますが?
↓
違いますか?
でOK?何いきなり煽ってるんだと思ったんだけど。
>>269 すいません。”違いますか?”です。
単純にコンパイラやスクリプトを作れるプログラマはプログラマの
レベルではどれくらいか?
プロになったことないし、周りにプログラマーがいないので解らないので
もしよければおしえてくださいませんか?
それかスクリプト以外のアプリケーションでもっと難しいものって
なんでしょうか?
OSやデータベースなどが規模にもよるけど難しいそうと思うのですが?
>>270 ピンキリ。
スクリプトもOSも、簡単な物は比較的簡単に作れるけど、
ちゃんとしたものを作るのは難しい。
>>268 期待してる答えとは違うと思うけど、
とりあえず将棋や囲碁でプロに勝つのが難しい。
ドラゴンブックと中田育男本、今から買って読むとしたらどっちがお勧めですか?
対象読者や用途が違うので
というか、コンパイラの基礎も知らないで育男本は無理。
育男本の用途は最適化、 ドラゴンブックは原理・技法・ツールの紹介だと思うのですが、 対象読者はやっぱり育男本がエキスパート、 ドラゴンブックは学部生あたりと考えてよろしいでしょうか?
>>276 どっちも教科書だよ。
ドラゴンブック読んで、それから育男本って感じか。
強いていうなら、学部生向けと修士学生向けってくらいの違い。
いずれにせよ、どちらもコンパイラの専門家が改めて読むレベル
の本じゃない。
コンパイラ屋のプロは何読んでるの?
>>278 たぶん・・学会集とか論文じゃない??
プロのコンパイラ屋としてどのくらいが飯食っていけてるのかしらんけんど・・
IBM東京基礎研究所のひととか想像すればいいのか?
電気メーカーにショボイコンパイラ屋たくさんいるぞ。
そっ、そうなのか、 優しい気持ちになれました
最適化って最適するパターンを作ってそれに合うか 合わないかというものでしょうか? CPU毎の最適化とは別に他は思い浮かばないのですが
定数式の最適化とか依存しない物もたくさんあるだろ。
電気メーカーのショボイコンパイラ屋です。 文献はPLDI、POPL、TOPLAS、CCあたりが定番でしょうか。 他のコンパイラ屋の方々はどの辺をチェックしてます?
>>283 不変式のループ外移動とか、ループアンロールとか、グラフの状態を探索しないといけない最適化はいくらでもある。
287 :
デフォルトの名無しさん :04/11/26 23:38:35
こういう地味な仕事してる奴って、地味な言語つかってたりするのかな?
グラフの探索にあこがれるんだけど 自分の頭では無理っぽい 3番地コードからやってみるか・・
知人?
>>289 3番地コードってのが三つ組みの事なら、グラフの方が楽ですよ、何でもかんでもつっこんじゃうから頭がこんがらがるのも解るけど。
>>288 慶応の卒研でもこんなものか。
ちょっと勇気づけられた。
しかし慶応大生でもこんなのか。
もうどうしていいやら……
>>280 そでもないよ、もっと簡単に済ましてる。
開発時間との戦いは別にどの業種と限ったものじゃないです。
>>285 漏れは高卒なのでアカデミックな世界のことはなーんも
分からんのですが、カンファレンスみたいなものから
著名人の名前と研究テーマを探して、名前でぐぐって、
研究者のHPを見つけ、論文一覧から欲しいものを探す、
そういう感じですか?
>>295 情報学会誌とかACMとか購読してる方が多いと思う。
Webで検索するよりノイズ少ないし。
>>296 日本情報処理学会って ACM と比べてどう?
入会する価値ある?
>>297 ACM と IEEE だけで十分だと思うよ。
>>298 でも日本で何が起きているのか知る一端にはなる。
それと辞書無しでも読めるんで休憩時間には向いてる。
>>299 世界的にはトレンドから外れちゃったけど、なぜか日本では
続いているってなネタもあるしね。暇つぶしにはなるわな。
日本情報処理学会 顔見知り同士のしょぼいミニコミ誌
海外だって一部の除けば似たようなもんじゃん
303 :
デフォルトの名無しさん :04/11/27 19:14:19
たとえば、って大抵の分野は狭いので自然と知り合い同士になるのが道理なんだが
>>304 必ずしも「しょぼい」わけではないんでない?
307 :
デフォルトの名無しさん :04/11/28 00:16:15
>>268 >実際にプロのプログラマーだと、PC関係のソフトで難しいプログラムは
>なんでしょうか
Mathematicaみたいなソフトも作るのむずかしそう。
>>307 IE も大変だと思うよ。不正な HTML でもそれなりに表示する必要があるし、
HMTL, CSS, XML あたりは規格もそれなりにデカイ上に、画像の遅延表示や
ユーザが任意のタイミングでリロード、戻る、進むなんかを実行できることが
大前提になってる。
部分的な実装に関わるだけならともかく、全体の設計からって話だと
Office なんかも大変だろう。
>>308 不正のタグの事。
結構打ち込みタグでエラー起こしてるけど、エラー処理してるとは
思えないな。
それから、リロードとかのタイミングとかも、単純にタスク処理すれば
良さそうなので、問題ないかと
理屈的にIEを作るのは難しくなくても、使えるものを実際に作ると
なると、設計段階でくじけそうだけど。
単純にIEみたいなもののスクリプト系の表示プログラムは
簡単そうだし。
javascriptとかの解釈は?
Lispが気になってしょうがない奴がいるなこのスレ。
>>309 > 結構打ち込みタグでエラー起こしてるけど、エラー処理してるとは
> 思えないな。
Amaya とか使うと、IE がいかに適当(良い意味で)に処理してるか良く分かるぞ。
314 :
デフォルトの名無しさん :04/11/28 19:07:15
lispに骨髄反射してる奴がいるな、この摺れw
315 :
デフォルトの名無しさん :04/11/28 19:47:31
Rby >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>lisp
骨髄・・・バンク
317 :
368 :04/11/29 01:35:38
こんな事聞いたら怒られるかもしれないですが、 XMLのいろいろな規格を解釈するリーダーを作成しようと思ったら、 どのような手順を踏めばいいのですか?頭がよろしくなく理解力がないですが よろしくお願いします。
未来からこんにちは。
368に近づくまでまだ時間がある。それまでに理解力をつけるんだ。
単純に<〜>を付いてるものを3つのポインタを使った typedef staruct tagXML{ 〜 struct tagMML *prev; struct tagMML *next; struct tagMML *yoko; char *namel; char *data; } とかやって、階層的なものを作ってデータの意味を付けていく ようにしたらいいかも??? この階層を作った後に、全体的な階層を作った後にキャンパスというのに まず、仮想的に描写情報を作った後に、実際に描写するだけぁない。 仮想的な描写情報を作ってどういった画面になるかを一度シミュレート するのがちょっとメンドイけど、それさえ出来ればすぐに出来るよ。
HTMLも基本は一緒だよ。 BODY− | +---tabel | +---tabel | | | +--- tabel +---IMAGE | /BODY という階層を作ったを作った後に、フォントとかtableや画像を情報を 元に、仮想で描写するイメージを作って、どれくらいのクライアントに どのような配置をするか決めて、下(バッググランドから、上に書き込むだけ IEの場合、タスクを使ってるみたいでデータが来た順に描写するので バッググランドの画像データが先に受信されてない場合、一度、上に タグの描写した後に、もう一度下を描写して再描写してるみたい。 全体的な階層を作って→その階層のデータと元に仮想描写(データで)→ した後に、実際に描写するだけ・・・ タグ毎の描写の仕方を決めて、それを配置するプログラムさえ 出来れば殆どできるから。理屈では難しくないがあんだけのタグを 実際に作るとなるとメンドイな・・・ tableとイメージとpreを使った簡単なブラウザを今度作ってみるつもり だけど・・・。
イラネ
tabel
描写するだけぁない。 酔っ払いか?
なんでも煽りに見えるのは良くないです。
つか、そんなスレになっている元凶は死ね、
いくら煽ったってお前の実力は向上しないし、稚拙でもタコでもやる奴の実力のみが向上するんだよ。
おまえの行き着く先は何もできない才能も人望も無いロートル爺だ。
【語り「コンパイラ・スクリプトエンジン」相談室4
>>227 】
コンパイラの学習はLISPが良いな
初心者がLISPでコンパイラを書こうとすると、グラフの実現でつまづく気がする。
330 :
デフォルトの名無しさん :04/11/30 00:14:03
LISP最高! これ覚えると他がアフォらしく見えるよ!
なんでも煽りに見えるのは良くないです。
つか、そんなスレになっている元凶は死ね、
いくら煽ったってお前の実力は向上しないし、
稚拙でもタコでもやる奴の実力のみが向上するんだよ。
おまえの行き着く先は何もできない才能も人望も無いロートル爺だ。
【語り・・・「コンパイラ・スクリプトエンジン」相談室4
>>227 】
LispよりSchemeの方が単純で良いと思う。
継続と末尾再帰最適化が義務になるので却ってハードル高くなんない?
>>333 MiniSchemeとか、継続も末尾再帰もGCまかせにする単純な方法があるから、
そんなに大変じゃないよ。
まあ極力GCを避ける実装とか、コンパイルするとかなるとそれなりに大変だけど、
自己記述できるからだいぶ小さくまとまる。
下手な俺流言語でがんがるよりはマシ。
『コンパイラの学習はLISPが良い
↓
LISPでコンパイラを書くとグラフの実現でつまづく気がする
↓
Schemeの方が単純で良いと思う
↓
継続と末尾再帰最適化でハードル高くなるのでは?
』
↑ここまでは低脳の漏れにも分かる。。
インタプリタでコンパイラのコードを記述して実行すれば
所望するコンパイラが生成される。(違いますか?)
コードを記述する際、開発環境の言語の特性上、
継続と末尾再帰最適化に気を使うのも分かる。
開発環境にMiniSchemeを使えば継続と末尾再帰最適化を
GC任せに出来るので、コーディングしてる人はその辺未熟でも
許されるという意味ならこれも分かる↓
『MiniSchemeとか、継続も末尾再帰もGCまかせにする単純な方法がある』
これ↓はコンパイラを生成するコードをコンパイラで記述するってことですよね。
『まあ極力GCを避ける実装とか、
コンパイルするとかなるとそれなりに大変だけど、
自己記述できるからだいぶ小さくまとまる。
』
じゃ、これ↓はターゲットとしているコンパイラのことですか?
それとも
>>343 自体が『MiniSchemeコンパイラを作れば?』ってこと??
『下手な俺流言語でがんがるよりはマシ。』
どーか漏れの幼い書き込みで荒れないで下さい。お願いします。
オレオレ
>>334 まあ継続とかのフレームを毎回ヒープからアロケートしまくれば簡単なんだけど、
知らないと難しい類いの問題じゃないかな。
どうでもいいが、
LispよりSchemeの方が単純で良いと思う。
↓
継続と末尾再帰最適化が義務になるので却ってハードル高くなんない?
↓
下手な俺流言語でがんがるよりはマシ。
いつのまにLispが下手な俺流言語になったんだろうw
>>335 「Lispを書く」と「Lispで書く」が各人ばらばらでつよ。
繋がってるようで繋がってない。
>>339 まあ、下手な俺流 Lisp はあり得るかな。
下手かはともかく、遥か昔はみんな俺流 Lisp だったといえなくもないわけだし。
(´◕ω◕`)ばらばらか・・そっか・・
このスレ共通言語をSchemeにすれば全て解決
グラフが扱いにくい
flex,bisonについて、このスレ的な見解はありますか?
flex2.5.31
>>347 手軽に済ませたければ使うとよろし。きめ細かなエラー回復処理を
したいとか、特殊な構文山盛りの言語だと、手でパーサー書いた
方が良い。
ただ C だと文字列操作繁雑だから、個人的には C++ 処理系と
組み合わせて使えるヤツを勧めておくが。
S式で書けばflexもbisonも(゚听)イラネ
351 :
347 :04/12/01 17:23:08
どうも
Rubyの青木さんの256本を買った。 いや、これなら自分でも読めそうだったんで。
353 :
デフォルトの名無しさん :04/12/01 18:38:20
現状 flex はいいとしても、bison又はyacc に変わるものなし と思う俺は実用主義
よほどの特殊事情がないかぎりflexとbisonで済ませるね 不足を感じたことは今のところなし。
c++から使いにくいインタフェースは改善されたんだっけ? Parser ClassとかLexer Classは提供されてる?
sfにあるreentrantなflexは本家にマージされないの?
JavaCCとANTLRとSableCCとCUPとnotavaccの比較ってだれかやってくんない? notavaccのページにはJavaCCとの比較が、SableCCのページにはANTLRとの比較があるけど、ほかのも知りたい。 他力本願ですまん。識者の意見求む。
358 :
デフォルトの名無しさん :04/12/01 23:11:44
LISP に変わるもの無しと思っている俺は非実用主義
>>353 前に評価したけど yacc からの移行なら yayacc がなかなか良いよ。
過去の遺産の都合で未だに flex + bison な仕事を抱えてて、移行
できてないが>俺
javaで作るパーサの本読んだ人いる? ああいう感じで構文をクラスに落としてくれるコンパイラコンパイラってないのかな?
>>362 せっかくその本読んだんなら自作してみては?
ソースとかヴィダルサスーン並に綺麗なん?
その本わかりやすく簡潔で超おすすめだった! 自分でなんとなく興味があっても、結構手が出しにくく思える「パーサ関連」の良書だった。 コンピュータサイエンス等の基礎が全くなくても、 JAVAでオブジェクト指向をある程度なら把握できている人には、超おすすめ。 本の構成も非常に考えられていて、まったくのパーサ未経験者でも頭から読んでいけば 最後には自分でプログラミング言語を作成できるところまでたどり着けた。
作者か関係者か。いいかげんウザいから消えろ。
君、アマゾンの・・
作者←海外から青い目の2chねらーかよw
中身Javaクラスべったりで萎えた
>>366 すぐ関係者とかを疑うのって痛くないか?
横から悪いが
>>360 はその本にそんなに感銘受けてるっつーなら
それ使ってりゃいいのでは?
373 :
デフォルトの名無しさん :04/12/02 02:06:39
C#で使えるまともなBisonご存知ないですか? GCの効くJavaでもいいですが、C#の方がコーディング早いから、できるの であればいいかなぁ程度なのですが、XMLの規格の解析するだけなので速度は 気にせず、解析できればおっけーなのです。
>>372 その本は読んだことないけれど、本に載っているサンプルよりももっと「でき」がよい
ものはあるかどうか、っていうことじゃないかな?
なんか荒れてますね
>>372 ,361
javaCCとかってパースクラス本体が妙にでかいのができるんで、件の本(これはパーサを作る為の細かいパーツの集合なんでBNFから自動展開とかはしないのです)
の物みたいに粒度の細かいクラスに分解するようなコンパイラコンパイラは在りませんかって問いかけだったんです。
>>363 はBNFから自動展開出来るように君が作ればぁ〜って言ってるんだよw
>>377 作ってるよ、お前の書き込み面白くない、どっかいけよ。
>>363 ライブラリに最初から入っているxmlパーサじゃだめなん?
自家撞着?
>>373 Bisonじゃないけど、ANTLRはC++、Java、C#で使えたはず。
381 :
デフォルトの名無しさん :04/12/04 00:05:49
ANTLRは文法に癖あるってきいていたのでマークしてなかったですが、 がんばって使ってみますね。どもです。
382 :
デフォルトの名無しさん :04/12/04 03:30:01
Flexの正規表現でシフトJIS日本語文字列(""括りで\がエスケープ文字)を 定義するのはどうしたらいいのでしょうか?とりあえず \"(([\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])|\\.|[^\\"])*\" としてみたのですが、2バイト目が\の"表"とかが最後になっていると "がエスケープされてしまいそのさらに次の"までが文字列になってしまいます。 よろしくお願いします。
383 :
デフォルトの名無しさん :04/12/04 12:08:56
>>383 シフトJISの2バイト目"\"のパターンは
([\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])
で引っかかると思うのですが、
これじゃダメなんでしょうか?
>>382 は
\"(\\.|[^\\"])*\"
と同じ意味。
[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC]
は
[^\\"]*
で吸収できちゃうから。
>>385 解決できました。ありがとうございます。
387 :
デフォルトの名無しさん :04/12/05 20:42:28
(V)o\o(V)
バルタン星人かよ!
>>387 私は自力で解決しました。
あなたも自分で考えてみてください。
391 :
デフォルトの名無しさん :04/12/06 23:40:48
もともと糞化してただろ。
>>381 ANTLRの書き方って独特だよね。おれもよくわからん。
いちばんわかりやすいのはSableCCだな。BNFだけ定義すればよく、JavaコードとBNFとをごちゃまぜにする必要がない。
397 :
デフォルトの名無しさん :04/12/08 00:31:38
>>395 アフォ目、洩れがアドバイス出してやったんだがw
アンタのアドバイスはこっちのトンチンカンな方だろ。
383 名前:デフォルトの名無しさん 投稿日:04/12/04 12:08:56
>>382 2バイトめ"\"のパターンを使え
>>397 つーか知ってるなら自分で貼ったらいいじゃん。
そして張ったとたんに間違っていると判明と(藁
(\)o\o(\)
.
.
406 :
デフォルトの名無しさん :04/12/21 21:35:17
ここのスレをまとめたページはないのかい?
407 :
デフォルトの名無しさん :04/12/21 23:29:57
コンパイラを作りたいのですが、どうしたらいいんでしょう 私は、Cの入門書を読み終えた程度です。
>407 無謀
409 :
デフォルトの名無しさん :04/12/21 23:47:06
コンパイラの入門書を読め
410 :
デフォルトの名無しさん :04/12/21 23:58:53
なぁ、友達にアセンブラを知らないと作れないといわれたのだが、本当か?
ネイティブコンパイラを作ろうと思うならな
>412 そうか、アセンブラはいるのか。。。 アセンブラを勉強してから出直してくるよ。
アセンブラなんてCより覚える事少ないぞ
>414 そうなのか? Cも覚えることはほとんどなかったが。。。。 まぁ、いいや。 はじめて読む8086からはじめるよ。
言語なんてのはすぐに覚えられるが、問題はその先だな。
>>408 そうでもないよ。
言語を理解するには実際に自分で作ってみるのが手っ取り早いよ。
その先は、何を作るかによるだろう。
つーかそれ作って何するかだな 漠然と作ってもただのゴミだし 時間を有効に使う意味では言語処理系なんて手を出さないが吉
>>419 できあがった完成品が重要なのではなく、その過程でできたものがもっとも重要な
物・事である事が多いと思いますよ。
完成品なんてタダでくれてやればいいが、その過程で得たものは絶対誰にもあげない。
そう思います。
って青木淳さんの受け売り…
このスレと路線がずれてないか? そろそろ元に戻そうぜ。
953 名前:名前は開発中のものです。 [] 投稿日:04/12/21 20:13:01 ID:ZZkG0tzm
AliceSoftのSystem(開発環境)見たいなのを作りたいのですが、どうしたらいいのでしょうか?
私は、Cの入門書を読み終わったくらいLvです。
954 名前:名前は開発中のものです。 [sage] 投稿日:04/12/21 20:39:50 ID:y3o3j+dn
>>953 「コンパイラ・スクリプトエンジン」相談室4
http://pc5.2ch.net/test/read.cgi/tech/1100097050/ ゲ製板の初心者質問スレで発見。
それ、>407の書いたものだろう?
Cで書こうとすると色々と複雑になって辛くない? 先にC++覚えたほうが楽だと思う
>>422 それだったらアセンブラ知っとく必要ないじゃん。
とりあえず「yacc インタプリタ」でぐぐって好きなの読むといいんじゃない?
「私はこれで仕事をやめました。」
「私はこれで仕事をやめさせられました。」
>>410 アセンブラというものがどういう構造なのか知っておくと便利だけど、
アセンブラ言語そのものを覚える必要は無いと思う。
それよりコンピュータがどうして動いてるか理解する方が大事。
メモリから命令を拾って来る→なんかする→次の命令を処理
という流れはどっちも変わらないから。
とりあえず、>407とは別人だぞ。 なんか、一緒にされてる気がするので。 >428 え、ネイティブなら必要だと、上のレスにあるが。。。。
マジでコンパイラ作りたいと思っているのなら、最初はアセンブラから始めるのではなくて 自分の言語→C言語へのトランスレータを作って、system関数か何かを使ってCコンパイラを呼び出してコンパイルするのがいい。 C++なども最初はそのようにして作られたし、元々Cはそのための言語として開発された経緯があるから良い感じで実装できる。 Cのオプティマイザをそのまま借用できるのも便利だ。 もしアセンブラも知っていれば、自分の実装した機能を効率よく実装できる命令が見つかるかもしれない、 そのときにネィティブコンパイラを作ってみようという動機が発生する。 目的が現在の言語の性能が気に入らんから、言語はそのままでより良いオプティマイザを実装しようというなら いきなりアセンブラで行けというところで。
ドラゴンブックは今日では読む価値はほとんどない。 記述が難しい上に古い本なので初学者にも上級者にも無用。 新中田本は記述が簡素すぎるので、結局は元の論文を読むはめになる。 ってゆっか、教科書ではなくサーベイだな。 初学者なら佐々本がベストだと思う。 古い本だが、ある程度のレベルを保ちつつこれ以上わかりやすい本は 他には知らない。
434 :
デフォルトの名無しさん :04/12/23 04:21:30
吉里吉里とかコンパイルすると、シナリオファイルの中身が読めないファイルに変換されていますが、 あれはどうやっているのですか? (ここではスレちがい?)
スクリプトの実装ではなく設計の哲学などを扱った書籍はありませんか?
暗号化っちゅうか、 コンパイルってことは普通バイナリファイルにするわけで、 バイナリになったら普通人は読めないだろ。
>>432 ドラゴンブックが古い本なのは確かだが、コンパイラ理論の基礎なんて
ドラゴンブックの時代から変わってないから問題ないよ。
佐々本は読んだことないから、そっちの方が良いという意見は否定しないが。
ドラゴンブックは原書でしか読んでないが、古めかしさ的には 佐々本と大差ないと思われる(属性文法あたりの差分はあるけどね)。 日本語で読みたいなら、佐々本の方が良い。1冊にまとまっているし、 なによりドラゴンブックの日本語訳はヤバい。 中田本はちゃんと読んでいないので何とも言えないが、元の論文 読む羽目になるのは仕方ないんじゃないか? というか、中田本を勉強 しなきゃいけないやつは、どうせ元論文だけでなくもっと新しい論文を 読まなきゃ仕事にならんでしょ。
>>431 "Advanced Compiler Design and Implementation"
この本は主にどの言語で書かれていますか?
C? C++?
>>440 漏れは431ではないが、アルゴリズムの説明などで用いられている擬似言語はpascal風。
とはいっても内容は全くプログラミング言語に依存しない。というか、コンパイラの本で内容が
特定のプログラミング言語に依存するものってあまりないと思う。
ベクトル化コンパイラの本はFortran向けに書かれていることがよくあった気もするが。
442 :
デフォルトの名無しさん :04/12/23 16:36:55
>434 Javaと同じと考えていいんでない?
443 :
デフォルトの名無しさん :04/12/23 17:08:20
How to WSDL convert to SOAP?
>>443 HTML や XML は正規表現を憶えてツリー型のデータ構造を憶えれば完成だから、
正規表現のスレッドや初心者相談系のところにいったらいいよ。
446 :
デフォルトの名無しさん :04/12/23 20:22:14
コンパイラを作りたいのですが、どうしたらいいんでしょう 私は、Lispの入門書を読み終えた程度です。
じゃLISPコンパイラ作れ
>>446 lex yacc または bison flex といった所をやる
オライリーの動物本でもどうぞ
もしCができないなら先にそっちをやる。
Cが分らないとツール群の使い方が理解できない。
>448 Cでなくて、C++でもいいんでない?
>>449 Cが分らないならC++をやるのはただの遠回り、そこまでやらなくてもツールは使える。
C++で使うにはかなり詳しくC++を知る必要があるから、そんな所に迷い込んだら永久にできなくなってしまう。
大規模になってくれは必然的にC++やる事になるのだから、そのときで十分。
yaccとかbisonって、構文解析と字句解析に使うんだろ?
Lispのコンパイラを作るのにlex+yaccはいらんなあ。 バイトコードに落とすLispのコンパイラを作るのは結構簡単なわりに面白いよ。
>452 おすすめのソースとかある?
>454 ありがd Javaの復習にもいいね。 そろそろこのスレをまとめたサイトが欲しいね。
>>454 あれはS式をそのまま解釈するインタプリタなのでコンパイラは出てきませんね。
でも入門書を読み終えた程度って人なら処理系のイメージを軽くつかむにはいいかな。
Lisp/Schemeスレのテンプレに出てくる小さい処理系の中には
バイトコード仮想マシン+コンパイラという構成のものもあるのでそれがいいです。
Emacs使いならbytecomp.elがそのままコンパイラ。
ちょっと概要を掴むのに苦労するかも知れないけど。
>>420 俺と考えが違いますね
ソフトもプログラムも、頭の良い人が数人いて、いいものを作れば
終わっちゃう世界だと思うんですよ。
コピーすれば同じですし・・・
例えば、簡単なスクリプトを学生が趣味で作ってとしてそれを公開すれば
他の人は、そこまでの勉強が近道が出来ると思います。
頭の良い人はそこから更に良い物を作るって言うやり方が必要だと・・・
特許などに触れる部分や会社の売りである部分はさすがに公開できないでしょうが
その部分を省いた基本的な部分は全て公開する方が効率が良いと思いますし
アメリカやインドに比べてソフト開発力が低い?と言われてるのだから、
その部分を補う部分が欲しいと思いますね。
>>458 馬鹿で悪かったな・・・
C言語を覚えるのに、C言語の入門からマニュアルが一杯でてるだろ
おまぇはそれすら観なかったのかよ?
それからアルゴリズムも全部自分が考えたか?
データ構造とアルゴリズムを本やインターネットで覚えてないのか?
結局頭の良い人が見つけたプログラミングをお前だって恩恵受けてるだろ。
コンパイラだって頭の良い人が考えてプログラムの参考に自分の新しい
コンパイラを作るのだって在りだと思ってるんだよ
それとは別に人が作ったものを他の人がまた作るのもデジタルである
プログラムではもったいないと・・・
おまぇの考えはフリーでプログラムを提示してる人を真っ向から否定してるよな
>>458 こいつはコンパイラの本を見ずにコンパイラを自力で作れるすごい奴なのかも
しれないwww
別に凄くないと思うぞ
>>461 自力で作れる奴がここに来るのか??www
>>462 もし来ないと思っているなら、それは偏見だよ。
別にここでの書き込みに何か期待しているわけじゃない。
ただ、専門分野での雑談を楽しんでいるだけだよ。
>>436 彼はC言語のマニュアルしかみないでプログラマーやってる
スーパープログラマーだから、相手にしない方がいいな。
>>463 彼はすごいよ。
数学の数式や方程式も自分で考えたんだよ。
大学の勉強も教授に話しを聞かなかったと思うよ
何故ならスーパーだから・・・。
教授が自分の経験や頭が良い人の本や教科書を使った
授業だって彼にとっては無駄だもの
先人の発見した知識は彼には必要ないんだよ
彼は全部自分で考えて、自分で作れるんだから・・・www
俺はC言語なぞコンパイラのユーザマニュアルだけで使えるようになったけどな。
そういう人間は別に少なくないだろう。分布が偏在しているだろうとは思うが。
それはさておき
>>457 =
>>459 だろうが言ってることが滅茶苦茶だぞ。
>>457 では成果物としてしか捉えてないからバカと言われて当たり前。
公開されてるものを眺めただけで改良できるようになるわけじゃないんだよ。
結局ものの設計や開発は一種の探索問題だから、その過程を理解しなければその設計に
至る必然性やどこに改良すべき点があるかとかわからん部分もある。
>>459 でいってるアルゴリズムとかは経験(≒プロセス)から抽出された知識であって
成果物ではないのだから457の主張の論拠にはなり得ない。
457を補強するつもりでも結局459は420の補強にしかならん。
457を見て感じるのは、こいつには「頭のいい人」のものの考えは絶対理解できないだろうなということ。
自分をその範疇から外していて、そうなる意志もないだろうというのも感じる。
>>466 はぁ〜、まぁ〜いいや、プログラムだけでなく
方程式とかも自分で解いたんだろ、、全部。
おまえの言ってることは、本に書いてある知識や経験を
必要としないでやってきた人間だけが言える言葉だぞ。
例えば、英語の映画を観ただけで、英語を覚えられるとか・・・
誰かが、覚えた経験を元に英語の教科書や、専門書を
観ないで覚えたのか
授業で英語の教科書を見て英語覚えたのなら、
それは英語を覚えた経験した事を、本で覚えて
英語を覚えたことになるんだぞ。
誰かが、覚えた経験を元に書かれた英語の教科書や、専門書を 観ないで覚えたのか でした
この話題で初めて書き込むが,
>>466 アホだな…
本や論文を読まずに〜というのは, 要するにその内容を完全に理解したから,
その文献を再び参照することなく, 新規性のある事ができる, という意味だろうに…
>>466 彼はエジソンだね。学校の授業は人の経験を教科書にして覚えると言う
行為だから・・・
授業など必要とせず、自分で経験したことだけで、スーパープログラマに
なったらしいから・・・
まさに、プログラマー界にエジソンだよ。
そういうスーパーな人は、新しい言語でも作って世の中で有名でもなって
ください。
>まさに、プログラマー界にエジソンだよ。 あなたはまず日本語を勉強しましょう
>>471 それくらいスーパーなプログラマなら脳内変換できないのか?
>>457 落ち着け。
>>420 は
> 完成品なんてタダでくれてやればいい
と言ってるんだぞ。お前にソースは見せん、と言ってるんじゃない。
>>457 なんかフレーム引き起こしてますな、僕も420と同意見で
他人の作ったものをとってきて喜べるたちの人間ではないですね、
自分で何か作る事にのみ喜びを感じます、
アルゴリズムも自分で思いついてこそ楽しいのです。
作業効率なんてどうでもいいんですよ。
貴方の意見を読んでいるとプログラミングが恐ろしくつまらない作業の繰り返しに思えます。
475 :
デフォルトの名無しさん :04/12/24 17:35:18
>>474 プログラミング自体を楽しめるのなら良いが
作るという行為だけ楽しめる人もいるんですよ
プログラミングだけならアセンブラやC言語だけでいいじゃないですか
でも作る行為が楽しいと言う人がいるから、VisualBasicだってある。
問題は効率良く作業する為にはどうしたら良いかと
彼はライブラリも使わないと思うよ。
ライブラリだって人の作ったプログラムを使ってるんだから、スーパーな
プログラマは我慢できないんじゃないかな?
>ライブラリだって人の作ったプログラムを使ってるんだから、スーパーな >プログラマは我慢できないんじゃないかな? この辺りからして感覚が違う気がしますね、我慢できないのではなくて、中身が興味深そうなら自分も作ってみるのです。
結局、どこまでが基礎でどこからが応用かという問題だろ。 先人の経験を基礎に入るかってことで どんな職業だって先人の経験を真似る部分もある。 確かに真似るだけでは駄目でそれを自分のものにしなくてはならない ソースだけ開示するまでが基礎か その考え方まで書いてあげてコンパイラというものを理解できるような 形にしてあげること(本やインターネットで) までが基礎かの違い。 彼はソースだけは開示すると書いてあったのは理解できなくもない 本やインターネットでコンパイラについて書かれたことを全く 見ずに自分でコンパイラを作った人なら、他の人にもそれくらい 自分でやればと思うかもしれないから・・・ でも本やインターネットでコンパイラについて書かれた内容を理解した 人は、その本を読んで理解しろと言う場合と、もっと解りやすい本が あればもっと簡単に覚えられたと思う人もいるだろ 簡単に言えば解りやすいコンパイラの本が日本語で出るだけで、新たな 言語が出る可能性が出て面白くなると思うけどね。
ここはdjbみたいな人が沢山いるインターネットですね。
LLパーサやDDA位なら自力でたどり着いた事あるぞ。 つかそのころコンピュータ書籍は英語で書かれている物以外は論文くらいしかなかったし、しかも俺は英語を習う前だったから読むもクソも無かった。 まさか当時は電算関係が生業になるなんて考えてもみなかったけど楽しかったぞ。
まあ
>>457 みたいな人が、自分の得た知識や経験をわかりやすくまとめて公開する
ことは絶対ないんだけどね。これはコンパイラに限らず。
ここはバカの壁が如実なインターネットですね。 読んでると壁の両側に綺麗にわかれていて面白い。
>>482 コンパイラ以外でも先人の経験を元にしなかった?
アルゴリズムの本を読んだり、会社の先輩にソースを見せて貰ったとか・・・
人の経験を全く真似ないで自分だけでやってこれたと言う人が
本当にいるのなら観てみたいね。
職業のプログラマーだけでなく、他のあらゆる事が先輩の真似から
入ることが多いでしょ。
>>484 彼も、先人達の経験を全く必要としない人らしい。
自分だけでやってこれたと思ってる人って素晴らしいね
自分なんて人のおかげで、色々と覚えられたと思ってるし・・・
相談室と書いていながらここは、単に本やインターネットを みないでコンパイラを作れる人が、時々、本とかインターネットを 使って、コンパイラを作ろうとしてる人が書き込んだ人を馬鹿に しようとする為にスレということが解ったよ。
正 相談室と書いていながらここは、単に本やインターネットを 見ないでコンパイラを作れる人が、時々、本とかインターネットを 使って、コンパイラを作ろうとして書き込んだ人を馬鹿にしようとする為の スレということが解ったよ。
お前らクリスマスイブ暇だからって張り切りすぎ
クリスマスツリーにネコでも吊るして和んでください
決まりきったパターンだね。 人格攻撃に始まるって奴は負ry
>>487 スレは「ある」ものではなく「作る」ものだ。
君が親切な相談員になればいい。
そんなことより、もまいら今日の晩ごはんはカレーですよ。
>>492 俺が君ほどレベルが高くなく本と見てコンパイラを作れるレベルなんだよ
そのレベルの話で良ければ教えてもいいけどね。
ゲーム業界の話なんだが、アメリカは新しい技術を作られると それを作ったクリエータ自ら、ゲーム業界の学会?みたいな 場所で発表するらしい。 アメリカではプログラム技術は共有の知的財産と思ってるらしく それを、使って何を作るかが重視されてる。 日本は技術を自分で作ることが重視になってる。 技術を1から覚えないと、物を作る資格がないと思ってるみたいだ・・・
何度もすまないが アメリカだとゲームは平気で人が作ったエンジンを使ってゲームを作る。 日本だと、1から作ることが職人だと思ってエンジンを使う所は少ないし エンジンを提供する所も少ない。 アメリカは自分で作りたいものがどのような形で作られようが問題ないみたい 人が作ったものだろうが、それで自分が作りたいものが出来るのなら 問題なく使うけど、日本人は1から作らないと気がすまないみたいだ。
アメリカに劣等感を持つのは勝手だが 何の根拠もない妄想をここでやるなよw
>>494 それ位のレベルの人が一番わかりやすく教えられるんじゃない?
学校の先生より家庭教師の説明の方がわかりやすいのと同じで。
ここは「コンパイラ・スクリプトエンジン」相談室です。 雑談はマ板でお楽しみください。
先人の本なんかなかったよ、あったのはモトローラのMC6800マニュアル(英文)、しかも読めた(のか?)は電気回路の部分と命令表、 信号線は親に読んでもらった。 482で書いた事は自分が小学6年から中学1年に掛けての事だから本当に役に立つ書籍は無かった。 ちなみに石田晴久の「マイコン入門」が出たのが自分が中学2年か3年の時。 そういう時代なので読む物なんか図書館いっても見つからないのだ。
クリスマスだから気が立っているのか。愚かしいな。
この流れなら言える。 prologでコンパイラ作ってる人いますか? パターンマッチ最適化や、高レベル中間語→低レベル中間語→アセンブリの変換等が きれいに書けそうな気がするんですが。
>>495 共有するって感じかな?
どちらかというと自分の意見を学会にぶっつけて反応を確かめて
自分の方向性を決めるといった感じの印象を受けるのだが。
共有を目的にしている人は一部のオプソ狂信者(日本にも居るね)だけだと思うな。
>>506 きれいに書けませんよ。
嘘だと思うならやってみたら。
>>506 そういう研究はあり、確かにきれいに書ける。
ただし、prologでなく、より汎用的なlogical framework(twelfとか)を使うことが多い。
>>495 なんとなく納得。
なにげに日本の習慣って秘密主義なのかも。
511 :
デフォルトの名無しさん :04/12/25 00:55:40
>>510 チンケなプライドがあるために他人のツールを使えないだけ。
高卒のくせにな。
>>511 自分やっているプログラムが詰んなくない?
それでストレス溜まって高卒ごときにムキになってない?
まぁ、最近そな人多いね、実際自分も仕事ではまるでベントコンベアの前にいるライン工の気分だしね。
嫌な時代ではある。
世の中生産性が全てではないと思うのだが・・・
せめて趣味の世界では爆発していたい。
プログラミングは爆発だ!!
ゆんゆん
やんやん
なんだろ 年末ずっとこの調子?この人
あのねのね
そういうのは作者に問い合わせたほうが早いよ
ソースとってきてchangelogみりゃええやないの
構造化例外処理を自作言語に取り入れたいんですが、 VisualC++(というかmsvcrt.dll)の _except_list _local_unwind2 _except_handler3 この辺を扱う資料ってないですか? 下の様なことがしたいので FilterFunction() { printf("1 "); /* this is printed first */ return EXCEPTION_EXECUTE_HANDLER; } main() { __try { __try { RaiseException(1, /* exception code */ 0, /* continuable exception */ 0, NULL); /* no arguments */ } __finally { printf("2 "); /* this is printed second */ } } __except ( FilterFunction() ) { printf("3\n"); /* this is printed last */ } } 実行結果 1 2 3
正直、lexだのyaccだの使ってる奴はアホ。 一文字ずつswitchで入れ子にするのが速いし、メモリも食わないし、プログラミングも実は一番楽。
まあそれで書けちゃうぐらい単純なやつならそれでもいいでしょ。
>522 あー、つーか、単純なやつならそれで出来るかもしれんが、あまりにも世界が狭すぎ。 全てそれでいけると本気で思っているのなら、もう一度勉強し直してこい。
>>522 根拠が弱い
アホいうんなら、おまえの方法とlex、yaccを使う方法の
長所、短所ふまえてちゃんと説明してみんなを納得させろ
普通に釣りっぽい
大漁大漁w
>>521 VC++固有のライブラリの使い方なら
VC++スレ行ったほうがいいと思う。
構造化例外を使いたいだけなら、
Structured Exception Handling
でぐぐればよさげ。
真性に釣られる馬鹿ハケーンw
w真性キタ━━━━━━(゚∀゚)━━━━━━ !!!!!
\ 釣られたクマー \ 助けてクマー \∩_∩ 今助けるクマー (;(エ); )∩_∩ ∩_∩ ⊂. ⊂ |(・(エ)・; )_○ (・(エ)・; ).∩_∩ 頑張るクマー ⊂_⊂/⊂⊂___つ⊂⊂ |(・(エ)・; ).∩_∩ | ⊂⊂ |(・(エ)・ ) ∪ ̄∪| ⊂⊂ | 〜〜 ∪ ̄∪| |○ 〜〜〜 ∪ ̄∪ 〜〜
>522 >プログラミングも実は一番楽 ありえねえ 自力で遷移状態管理しろ、つうたら泣けるなあ
LL(1)なら別にいいじゃん。
俺はschemeのreader書くのにlex/yaccのお世話になろうかと 真剣に悩んだよ。 結局、手で書いたが。
main() { // var parent_frame try_except_wind( lambda() { // try // var frame = parent_frame try_finally_wind( lambda() { // try RaiseException(1,0,0,0); } ,lambda(){ // finally printf("2 "); }); } ,lambda() { // FilterFunction printf("1 "); return EXCEPTION_EXECUTE_HANDLER; } ,lambda() { // except printf("3\n"); }); } 例外ブロックを関数化してここまでは動作確認できました。 VCの__finallyや__exceptブロックは妙なトリック(ebpの持ち回り)使ってるから フレーム統合するのは難しそうです。 別の手段考えます。
馬鹿だな。複雑な文法ほどそう書くのがいいんだよ。 人間が考えてる要領でうまくかける。 yaccだのlexだのはかえって難しいんだよ。 複雑な文法になるほどな。
飽きたからもういいよ。
|
|
∩___∩ |
| ノ _, ,_ ヽ (( | プラプラ
/ ● ● | (=)
| ( _●_) ミ _ (⌒) J
>>539 彡、 |∪| ノ
⊂⌒ヽ / ヽノ ヽ /⌒つ
\ ヽ / ヽ /
\_,,ノ |、_ノ
543 :
デフォルトの名無しさん :04/12/26 23:41:12
でも、マジレスすると scanner は自主開発蟻としても parserはyaccか互換ソフト以外実用プログラムでは使われていないからなぁ お前ら、もっと現実を見ろ!
飽きたからもういいよ どうせなら新しいネタにしようぜ
マジレスすると、 Java5.0はyaccだと難しい。
Rubyも確か、yacc廃止するような話が上がってるみたいだね。 PythonやPerlはどうなの?
なんか字句解析と構文解析の話ばっかりだな。 漏れが知りたいのはその先の話なのに。
522の言うことも一理あるかと gccも最初はyaccだったが今は手書きらしいし
コード生成とか最適化の話がしたいとな?
みんな自動生成系で骨格作って手直しをしてという風ではないの?
中間言語にコンパイルする話はどの書籍に載ってるでしょうか。 googleで調べても見つからないので。
今おれが借りてる本に詳しく載ってるな。 中間言語と言っても色々レベルがあるけどな。
>>552 書籍名を教えてくださいYO!
ほとんど知識の無いままSchemeのインタプリタを書き始めたんですが
3日くらいで大体の機能が実装できました。
問題はGCと継続なんですが、CPSという中間言語を使うと継続が楽に
実装できるという噂をききまして、どんなものかなあと。
コンパイルしないと遅すぎるってことや実装が簡単すぎた(さすがScheme)
っていうのも動機なんですけど。
>>553 CPSは普通のコンパイラの教科書では余り取りあげられない。
本なら、Appelの「Compiling with Continuations」辺り。ただし、
これはMLベース。CPS自体はMLとは関係ないけど、中間言語
にコンパイルする話から知りたい人には難しすぎるかも知れない。
Schemeベースだと、Guy Steel Jr.のRabbitコンパイラとかKranz
らのORBITの論文(PLDI86)辺りを読むしかないんじゃないかな。
Rabbitコンパイラの論文が今簡単に入手できるかどうかは知らな
いが、ORBITの論文は今年出た「20 Years of PLDI 1979-1999: A
Selection」っていうACM SIGPLAN notices, volume 39, number 4,
april 2004に選択されて載っているから、これなら技術系の大学の
図書館辺りで見つけられるでしょ。
沢山の情報ありがとうございます。 CPSにこだわっている訳ではないんですけど、東大のコンパイラの授業 のページにのってたのでメジャーなのかと思ってました。 一般的に中間言語の話はどの本がいいんでしょうか。 とりあえずいろいろ調べてみます。
>>553 CPSは中間言語ではないよ。
それに直接速くなるわけでもない。
CPSというのは継続のたらいまわしで、実装が自ずと
スタックレスになり、末尾の検出が不要になることと
継続の抽出が単純(というか継続の抽出そのもの)になるというだけで。
Schemeは末尾呼び出しのフレームの縮小問題に
どう取り組むかで速度にかなり違いが出てくる。
これは仮にCPSにしても解決はできない。
それと(Schemeに限らないけど)、GCにぎりぎりまで頼らない
(ヒープに移さない)設計にするとか。
CPSについてはコンパイラの本より
むしろ関数型言語扱ってる古い本に色々載ってたけど、
そういうのは図書館で探したほうがいい。
CPSに変換する処理系もあったはず。
ちなみに借りた本は「コンパイラの構成と最適化」
CPSとはあんま関係ないね。
>>555 中間言語の話題で一般的に良い本を挙げるってのは難しい。
というか、ソースから中間言語への変換辺りの話題だと、
ドラゴンブックで充分だし、最適化の話題よりのコンパイラの
教科書だとその辺りは大抵省略されている。
AppelのModern Compiler Implementation in {ML,Java,C}辺り
だとコンパイラについてlexer、parserからcode generationまで
一通り書かれていて、GCなんかも取りあげられているから良
いかもしれない(漏れはJava版しか読んだこと無いからMLや
C版の内容は知らない)。
_| ̄|○
あのな、CPSなんてきょうび流行んねーんだよ。ボケが。 得意げな顔して何が、CPSで、だ。 お前は本当にCPS変換したいのかと問いたい。問い詰めたい。小1時間問い詰めたい。 お前、スタック使いたくない だけちゃうんかと。 中間言語通の俺から言わせてもらえば今、中間言語通の間での最新流行はやっぱり、 A normal form、これだね。 大盛り一時変数。これが通の頼み方。 A normal formってのは制御フローが明示的に入ってる。そん代わり継続は暗黙的。これ。 で、それにtail call最適化。これ最強。 しかしこれを頼むと次からAppelにマークされるという危険も伴う、諸刃の剣。 素人にはお薦め出来ない。 まあお前、1は、型付きCPS変換でもしてなさいってこった。
不勉強なオレはいまいち面白さが分からないが、 メル欄ワロタ
せっかくなので A normal form ってのについて教えて下さい。 ポインタでもいいから。
>>509 のlogical frameworkと関連した内容ですか。
コミックバンチの修論いきなり見せられてもA normal formのことサパーりでしょ。
>>553
>>567 何も新しいことは書かれていない気がす。
ドラゴンブックに出て来るレベルの最適化を実装してみました
ってやつですな。
570 :
デフォルトの名無しさん :04/12/28 21:33:47
571 :
◆MWRLp2GQ3U :04/12/28 22:02:12
初心者の疑問なんですけど、言語処理系って フリーの有名所(例gcc)や一部の超メジャー処理系(M$) でないと全くダメダメなのななんででしょう? 職場の回りの人とかも、皆同じように思っています。 言語処理系以外なら、そんなことないと思うんですよねぇ やはり、作り込みが難しいからですか???
既にフリーでいい物があるから、 わざわざ作る気も起きないってのも大きいでしょ
人生を言語処理系の作成に捧げる気があるなら >フリーの有名所(例gcc)や一部の超メジャー処理系(M$) これらにも対抗できるものが作れるんじゃねーの?(鼻くそほじりながら
>人生を言語処理系の作成に捧げる気があるなら んで、できるかどうかは兎も角そんな連中がここに居るわけだ。
まあ面白いし
>>574 売り物レベルになるかはともかくを言ったら
処理系自体はちょっと時間あれば作れるしな
HSPぐらいならなんとかなるんじゃね?
HSPみたいな頭の悪そうな処理系思い浮かぶやつには無理だろw
Nスクよりマシかな。
2ch発の言語とかってないの?
>>580 いくつか過去にもスレは立ったけど成功したもんはなさそう。
ADVRUN…はちょっと違うか
少なくともHSPはそれなりにメジャーになりはした。
HSPはあの言語仕様なのに、それなりに流行っていることを考えると、 言語の良し悪しが、決定的なんじゃないということがよくわかる
Windowsでexeが作れて配布できる。 初心者でも簡単に使える。 初心者用ドキュメントがある。 こういう、ヲタク向けの言語では軽視されがちな部分が 大きいんじゃないかな。
586 :
デフォルトの名無しさん :04/12/29 12:09:18
>>585 剥げ同。
最先端言語技術や高度な理論よりも、リアルに使えることの方が
はるかに重要と最近日々感じる…
でも楽しくないよね。
588 :
デフォルトの名無しさん :04/12/29 12:20:45
楽しいよ すぐに窓表示したり文字表示したり、コントロール作ったり、3DのDirectX画像が動かせるからね すぐに目に見えて成果が現れるところがミソ
じゃあexeが作れない言語はクソ
>>586 禿げ同
しかし初心者にはいいかもしれないけど、
プログラマとしては絶対使いたくない言語だよね。
そこんところがシームレスに使える言語があるといいのかなぁ。
初心者には取っつきやすく、高度な要求にも耐えられる言語か 難しいね
Java
組み込みHSP? 激しく嫌すぎる・・・
HSP使うぐらいなら素直にアセンブリ使うよ。
597 :
586 :04/12/29 22:00:30
念のため行っとくけど、俺はHSPは使ったこともないからなw
どこ行くんだよw
お前ら ありあまる暇があったら、 どんな言語・処理系作りたい?
600 :
535 :04/12/29 22:59:15
HSPってなに?
>>592 このスレに居るなら、そう思ったら自分で作れ。
>>600 気にする程のものではない。
ゲームを書く為だけの簡易言語だよ。
>>599 汎用の処理系って作ったことないからなあ。
特殊用途のだけ。
なんで、手始めはやっぱりLisp系かな。
SICPみながらSchemeからだろうか。
>>603 minischemeのコード見てみなよ。
たった2000行程度だから。
605 :
デフォルトの名無しさん :04/12/30 04:50:37
>>602 ゲームだけじゃない
Windowsアプリが実に簡単に出来る
こういう面も人気の理由の一つ
普段MFC使ってる俺でも昔覚えたHSP使うことがたまにある
手軽だから
ここは既存の言語や処理系について、文句たれたり、布教活動したりするところなん?
大学生ならコンパイラ作るよな
やはり実際に物が作れるということと、敷居が低いことは重要だよな。 Cより言語仕様が優れた言語は腐るほどあるのに 結局Cより流行る言語はほとんどない。 一方では、お手軽にGUIやゲームなどが作れるというだけのことで、 糞仕様のHSPがそれなりに流行ったりする。
課題で必ず出るね
>>608 言語論争したいのならどっか別の所へ行け
そうではない コンパイラを作るに当たってなにが大切かを述べてるにすぎない
なんかレベル下がったなこのスレ
今までにレベルの高いレスなんてあったか?
HSP厨が紛れ込んじゃったんだろ。
616 :
デフォルトの名無しさん :04/12/30 16:03:47
なぁ、ここにいるやつらで2ch言語でも作ってみないか?
板グループがオブジェクトで各板名がメソッドとか。 PC等.プログラマー("hoge);
あー、"閉じ忘れた。まあいいや。 エラーが出たときは 真・プロセスストッパー。。。( ̄ー ̄)ニヤリッ と。
>>611 いらねーよ、言語仕様ってのは作り手の趣味の問題だ、他人にゴチャゴチャいう筋合いのものじゃねぇ。
そんなもん、そんな作りもしない何もしないクレクレ厨房の書き込みなんざ読んでもウザイだけだ。
>>619 そりゃ言語仕様じゃなくてライブラリの仕様じゃねえか
624 :
デフォルトの名無しさん :04/12/30 17:23:05
言語仕様議論専用スレがあったほうがいいかね、建ててみるね。 「言語仕様と開発論法」でやってみてください。
626 :
デフォルトの名無しさん :04/12/30 19:33:06
http://www.rubyist.net/~matz/20041227.html#p03 こんな短いプログラムで比較するのもどうかと思うのだが、 Rubyで書いたら絶対これより短くなる。
ということは、PHPではなくRubyを使えという話なのか。どうも、そうではなさそうだ。
よくいただく反論は「PHPでもできる」ということであって、同じくらい良い(動的)言語からPHPを選ぶ理由ではないはずだ。
PHPは決して速くないし、記述力が高いわけでもないし、たくさんの欠点が残っているように見えるが、
あちこちで「そのシステムPHPで書かないの」という質問が出るところをみるとそれなりに馬鹿には使われているようだ。
もっとも、PHP陣営から出てくる数字はmod_phpのインストール数とか、mod_phpのパフォーマンスと(mod_perl抜きの)perl
CGIとの比較とか、まったくフェアでない印象があるが。
あるいは「すでにPHPを覚えているので、いまさら他の言語を覚えたくない」ということなのかもしれない。
その気持ちはまあ理解できないでもない。
もしかすると、よく分からない初心者をイメージ先行で取り込んでしまい、
「いまさら他の言語を覚えたくない」という」意識でロックインしてしまうというのは、
初心者をターゲットにした素晴らしいマーケティング戦略なのかもしれない。
もしそうだとするならば、というか実際そうだろうし、Rubyは絶対にその戦略を取りたくない。
それくらいだったらマイナーなままでいてくれた方がずっと良い。
Rubyは最高の言語なのだから。
>>626 単純にRubyはマイノリティなだけ。
使われてないなら潜在バグの洗い出し率も低いだろうし
信頼性保守性等々で考えて業務に使う必然性がない。
Ruby以上のものを作ることのできない糞どもが何を言おうが無駄。 汚らしいRubyアンチは消えろ
と、言うことは
>>629 には そ れ な り に 普 及 し た プログラミング言語以上のそれの作成経験があると言うことになる。
631 :
デフォルトの名無しさん :04/12/30 19:50:46
最高言語Rubyユーザ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> おのスレでしがない糞処理系を作ってる奴等ww
Perlでええやん。
HSP使ってる奴とRuby使ってる奴って なんか共通点が有るな。
>>633 いいよなぁ。自分の価値観が万人の常識であるとか思ってる奴。
最高言語Scheme!!!!!!!
荒れるからHSP厨とRuby厨は
>>625 のスレ逝ってよ。
やっぱ 日本発->他の言語より日本語の情報が多い->厨が増える という流れなのだろうか。
単純になぜか安置が多いというお話。 たぶん同一人物が自作自演交えてやってるんだろうけど。 正直、俳優か小説家になれば大ブレイク。 こんなところで才能を食いつぶしている彼らが不憫だ。
単純になぜか厨が多いというお話。 たぶん同一人物が自作自演交えてやってるんだろうけど。 正直、俳優か小説家になれば大ブレイク。 こんなところで才能を食いつぶしている彼らが不憫だ。
640 :
デフォルトの名無しさん :04/12/30 20:38:18
どっちも根拠を挙げてるわけでもないし どっちも典型でしょ。 専用スレが腐るほど有るんだしそっちでやってよ。
で、何かこのスレと関係あるのか?
Perlに恨み骨髄という感じだな。
Rubyはレンタル鯖でつかえねーからダメ ライブドアだけじゃん
Rubyって仕事で使えるほどフレームワークあったっけ?
コミュニティ文化の話なんてどうでもいい 技術の話をしないやつは(・∀・)カエレ! お年玉で>8買って読んでから来い
貴様らがポチポチ作った処理系なんか自分以外誰が使うんだよ。 Rubyレベルのものが貴様らに作れるのか?
先生!お店に禿げたドラゴンブックした売ってません!!
Rubyの劣化コピーでしかない貴様らが 死に物狂いでRubyを不正で苦しさ晴れたち日をしているwwwwwwww やはり劣等感である〜〜〜 くすくす^^;
国産処理系 HSP、LGP、System3.x、Ruby こうして並べるとRubyすげーのかどうか微妙だな
652 :
デフォルトの名無しさん :04/12/30 21:01:09
ドラゴンブック程度を読んで分かったつもりになった厨房が メイジャーなRubyを必死に貶すことで憂さ晴らししているスレはココですか?
ム板では NG ワードにプログラミング言語「るび」を指定することが 推奨されています。
>>643 のリンク先見たけど開発者がこれでは…
ずっとマイナーなままなのそれなりに理由があるからだろ。
matzはジョークのひとつも言ってはいけないのか……
面白ければ許可する
Rubyアンチに「じゃあ、Rubyの欠点を挙げてみろ」と言うとだんまりになってしまうのが面白くてしかないwww
マイナーすぎてレンタル鯖で使えない所が多い。
cgi.rbの 1.8 や 1.8.2 であった問題
Unicode、半角カナを含めた文字コードの扱い
Windowsでexeが作れない
自己記述ができない
開発者が >それくらいだったらマイナーなままでいてくれた方がずっと良い。 って言ってるんだからマイナーなんだろ。
今度は厨が良い所を挙げてくれ。
670 :
デフォルトの名無しさん :04/12/30 23:59:16
BNF記法の正式な書き方ってありますか? なんか検索して色々なサイト見るとそれぞれ 若干記述の方法がちがうんですよね。 あとEBNFについての書き方ってのは 調べても詳しく解説してるサイトがないんですよね。 識者の意見求む!
>>670 表記法は規格によって様々だけど、表す物は同じ
一番元になったAlgolの時点では、
<>で囲った物が非終端記号
::=が超記号
|がOR
の3つ。
EBNFになって
省略可能が[...]
0回以上の繰り返しが{...}
くくりが(...)
という書き方が可能になった
とコンパイラ構成法に書いてあります
672 :
デフォルトの名無しさん :04/12/31 00:24:06
Rubyで金取れる仕事ってできるの?(品質保証込み)わしバグとか怖くて使えんけどまじで 大丈夫なの?
おk
>>670 規格になってるのには、ISO/IEC 14977:1996 とか RFC2234 とかがあったり。
675 :
デフォルトの名無しさん :04/12/31 14:17:23
どれも憶えておけば、折衷式俺定義BNFが出てきても読める。
PerlやPythonのシンタックスはヘタレでかつ、醜悪 よく公開する気になれるものだなこんなもの しかもはっきり言って便利でも何でもないよこんなの こんなの好きだって奴はアホそのものだな、イラネ−
Rubyの汚いend end endよりはPythonのソース の方が綺麗
680 :
デフォルトの名無しさん :04/12/31 16:40:20
このスレいたたたたたたたたた 漏れ儲でもなんでねねぇーけど、ここでRuby批判してる住人は妬みにしかみえねーな 『Windowsでexeが作れない』『自己記述ができない』『マイナーすぎてレンタル鯖で使えない所が多い』・・・ メイジャーになるだけの言語を作れないもしくは作る勇気も技術もない香具師の嫉妬だな そこまでいうおまいらの作った処理系は超クオリティで馬鹿流行するんだろうなw 新言語開発ってのははじめからなんの保障もねぇーんだよ それをさもお客様ヅラして能無しどもが偉そうに素人相手にムキになって評価してやがるイタタタタタタタタ こんなところでネチネチ陰湿に文句いうくらいならさっさとRubyアンインストして忘れろよ
うかつにRubyのような画期的な言語をつくってしまうと 自意識過剰の能なし共の嫉妬を買うねぇ。
誰かが結果を出した途端 出し抜かれたというか、ズルい事でもされたような錯覚に陥るんかねぇ。 ありもしない自分の可能性を信じさせられる平等教育の犠牲者はかわいそうだなぁ。 アンチRubyの方々にはまことに同情するよ。
俺が作ったわけじゃいけどCやPerlやPythonの方が流行ってるよw もしかしたらHSPの方が流行ってね?www
LarryやGuidoのような才能の無い人間が作った言語が流行るのは、勘違いクンが増えるので良くない。 つか、悪い。もはや悪事。奴等は恥を知れ。
>>683 俺はRuby信者じゃない。
批判のフリした罵りが見苦しいだけ。
第三者が読んで含蓄のある批判をしてみたまえよ、みっともない。
少なくとも俺にはまともな批判に見えるがな メジャーじゃない これは立派な不満点だ お前の方が煽りに見える
この板もid欲しいな。
アンチも信者も評価軸は同一次元上にあるんだよ。 信者は何があろうと持ち上げるし、 アンチはなにがあろうとくさすからな。 どっちも同じくらい間抜けだし邪魔だ。 だがRubyの場合はただ煽りたいだけの馬鹿がいるのよな。 これRubyやmatzのせいか? あとメジャーじゃない点は確かに批判になりうるが、 でもそれはお前、pointy-haired bossじゃねえかよ。
まー万人に好かれる物を作るってのは無理だろな ここで叩いてる連中も自分で何か作ったら同じように叩かれるがいいさ。
別に叩かれても全然構わん。 それを見て精進するだけの話。 叩かれたからってファビョるなよな。
691 :
デフォルトの名無しさん :04/12/31 17:31:18
Ruby!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ここまで強烈なアンチを生み出したことをRubyは誇ってよいぞ。
厨も強烈なので誇っていいぞ。 680 名前:デフォルトの名無しさん 本日のレス 投稿日:04/12/31 16:40:20 このスレいたたたたたたたたた 漏れ儲でもなんでねねぇーけど、ここでRuby批判してる住人は妬みにしかみえねーな 『Windowsでexeが作れない』『自己記述ができない』『マイナーすぎてレンタル鯖で使えない所が多い』・・・ メイジャーになるだけの言語を作れないもしくは作る勇気も技術もない香具師の嫉妬だな そこまでいうおまいらの作った処理系は超クオリティで馬鹿流行するんだろうなw 新言語開発ってのははじめからなんの保障もねぇーんだよ それをさもお客様ヅラして能無しどもが偉そうに素人相手にムキになって評価してやがるイタタタタタタタタ こんなところでネチネチ陰湿に文句いうくらいならさっさとRubyアンインストして忘れろよ 681 名前:デフォルトの名無しさん 本日のレス 投稿日:04/12/31 16:41:49 うかつにRubyのような画期的な言語をつくってしまうと 自意識過剰の能なし共の嫉妬を買うねぇ。 682 名前:デフォルトの名無しさん 本日のレス 投稿日:04/12/31 16:42:26 誰かが結果を出した途端 出し抜かれたというか、ズルい事でもされたような錯覚に陥るんかねぇ。 ありもしない自分の可能性を信じさせられる平等教育の犠牲者はかわいそうだなぁ。 アンチRubyの方々にはまことに同情するよ。 684 名前:デフォルトの名無しさん 本日のレス 投稿日:04/12/31 16:50:37 LarryやGuidoのような才能の無い人間が作った言語が流行るのは、勘違いクンが増えるので良くない。 つか、悪い。もはや悪事。奴等は恥を知れ。
Rubyは嫌いじゃないんだが痛い信者が居るのがいやなんだよなぁ。
この板で「Ruby最高!Perl,Python,etcはゴミクズ」と煽っているのは同一人物だろ。 Rubyコミュニティが何か他言語に排他的であるかのように印象操作するべく アンチが自作自演を延々と続けているのは見ていて痛々しいな。 彼にとっては2chが全てなんだろう。暇なやつ。
696 :
デフォルトの名無しさん :04/12/31 17:50:07
def java_like_ruby(a) sync |sock,a| { ... } end
697 :
デフォルトの名無しさん :04/12/31 18:03:42
//JavaのsynchronizedのよなことをRubyでやりたい def sync_lock(a) yield sync(a); end
>>695 根拠も無しに都合の悪い事は全てアンチの仕業にしてるアンタも
見ていて痛々しいぞ。
,_ ,_ ___, _, __OO __ | | r―― 、 _| |_ ,i~| ;――; ,_ _l~l__ | | | | 'ー―i | l^l | | 'ー― ,! | o c!二 二'i | ⊂⊃ | ~ー; ;―○ i二 ニ!i, i"i .| | | 'ー; ;―" |_| | | i`iノノ ,|| | | _, // | 8εi ノ ! | ⊂⊃ | ノ / l~L、 く <フ,ノ i, V ,' | | ,| |_ ,_ノ ノ ノ r'´ ノ ノ | |ノ,ノ | (__ ooooフ ○ヽ 、 | ⊂⊃ | `´i"σ;‐' ノ _ヽ、 > <、| | i"σ;‐' `ー'" ー' `-'’ '-‐'" ゛ー‐' ー'くノ `・’ `――" `ー' `・´ `´ くノ^ヽ´ ー' `ー'
,_, ,_,. ,_, |~| _| |_. | | | | 、__,. iニニ ニニ! _l~l__ ___ ー―; ノ. | L._ | | ゙ー―‐' __(ゝ| |ノ)_ ー;┌―‐' __ `ー―; | _/ <、LL] ,_ | i‐-、>..| | .,、 ー; ・、―’ ,i i'ヽニフ ー- `! // ー・'| |ヽ' __;i |. | | | | ヽー‐‐; i二ノ| |\二l | i i,ー・、 -' ノ | (_ ー’ 'ー ' ´ ー' ~  ̄ ̄ ー' ‐’  ̄~  ̄ ゛ー ' ____ | ,__ _| | ̄| | ̄ ̄ ̄ ̄ ̄ ̄ ̄| | |_| | __| |__, | | ̄ ̄ ̄ ̄ ̄| | | ,__  ̄||__ __| ┌─────┐ | |_____| | | |_| | ̄ | | | ネット ヲ ::.| .:| _____ | | ,__  ̄| i’ 'i, | ナメンナ! ::| .| | :| | | |_| | ̄ i' 'i、 |_________:| :| |_____| | |___ ̄|/ /^ヽ ヽ ヽ( ゚Д゚)ノ .| _____ .| i-ii-ii-ii-i | | / ヽ ヽ ( へ) :| | | | L.iL.!L!L.! | |/ く^\ ヽ ヽ く :| |_____| | ┌――' ,| \ノ ヽ/ .|_______| └─―‐"
最早このスレを破壊したくてやっているとしか思えないな・・・
みんなスレたいを見てから書き込んでくれ
|ω・`)ソーッ 嵐が収まったようなので質問させて下さい。 boost::spiritでyaccの%left %rightに相当するような 結合・優先順位の設定は可能でしょうか? やはりBNFで表現するしかないのでしょうか
,_ ,_ ___, _, __OO __ | | r―― 、 _| |_ ,i~| ;――; ,_ _l~l__ | | | | 'ー―i | l^l | | 'ー― ,! | o c!二 二'i | ⊂⊃ | ~ー; ;―○ i二 ニ!i, i"i .| | | 'ー; ;―" |_| | | i`iノノ ,|| | | _, // | 8εi ノ ! | ⊂⊃ | ノ / l~L、 く <フ,ノ i, V ,' | | ,| |_ ,_ノ ノ ノ r'´ ノ ノ | |ノ,ノ | (__ ooooフ ○ヽ 、 | ⊂⊃ | `´i"σ;‐' ノ _ヽ、 > <、| | i"σ;‐' `ー'" ー' `-'’ '-‐'" ゛ー‐' ー'くノ `・’ `――" `ー' `・´ `´ くノ^ヽ´ ー' `ー' ,_, ,_,. ,_, |~| _| |_. | | | | 、__,. iニニ ニニ! _l~l__ ___ ー―; ノ. | L._ | | ゙ー―‐' __(ゝ| |ノ)_ ー;┌―‐' __ `ー―; | _/ <、LL] ,_ | i‐-、>..| | .,、 ー; ・、―’ ,i i'ヽニフ ー- `! // ー・'| |ヽ' __;i |. | | | | ヽー‐‐; i二ノ| |\二l | i i,ー・、 -' ノ | (_ ー’ 'ー ' ´ ー' ~  ̄ ̄ ー' ‐’  ̄~  ̄ ゛ー '
____ | ,__ _| | ̄| | ̄ ̄ ̄ ̄ ̄ ̄ ̄| | |_| | __| |__, | | ̄ ̄ ̄ ̄ ̄| | | ,__  ̄||__ __| ┌─────┐ | |_____| | | |_| | ̄ | | | ネット ヲ ::.| .:| _____ | | ,__  ̄| i’ 'i, | ナメンナ! ::| .| | :| | | |_| | ̄ i' 'i、 |_________:| :| |_____| | |___ ̄|/ /^ヽ ヽ ヽ( ゚Д゚)ノ .| _____ .| i-ii-ii-ii-i | | / ヽ ヽ ( へ) :| | | | L.iL.!L!L.! | |/ く^\ ヽ ヽ く :| |_____| | ┌――' ,| \ノ ヽ/ .|_______| └─―‐"
>>703 別にEBNFで表現しても大して難しくないんとちゃうの?
>703 マニュアルにはなかったよ。
>>706 ,707
レスdクス。
やはり無いですか…
spiritで書くと、正直な所あまり綺麗ではないし分かりづらいので、
行数節約出来るに越したことはないかな、と思ったのですが…
おとなしく構文で規定することにします。
クオリティ低い質問でスンマソン(;´Д`)
HSPが仕様がクソでそれで作る人が馬鹿でも構わないが、 どの辺がクソか?言うか、もっと良い仕様のスクリプトを作って 公開すれば?
> もっと良い仕様のスクリプトを作って 既存のもっと良いものを指摘するだけでも十分でしょ?
HSPは自作字句解析+再帰下降自作ですかね? やっぱflex+bison?
713 :
Rubyist! :05/01/01 11:07:11
他人の創造的行為に横からごちゃごちゃ口挟めば 自分も何か価値のある行為をしてると勘違い出来る 安っぽいクズが、自分の発言を権威付けしたい欲望に駆られて Ruby叩きの誇大妄想的な発言をしてるだけ。騙される奴はアホー 「じゃあお前がやってみろ」 これは創造的な行為をしてる人間やその作品に対して 足引っ張り以上の価値のないネチョネチョな難癖つけてる頭でっかちに対して、 その身の程を知らせるためにふさわしい切り返しだ。 最低最悪なのはどちらの行為なのかよく考えたらいい。 創造的な領域にまで昇華された批評も「例外的」にあるが、 すくなくともプログラミング言語へのもので 批評家の自意識過剰以外の何かが伝わる 創造的批評なんて、お目にかかったこと滅多にねぇ。
714 :
Rubyist! :05/01/01 13:48:38
今は批評に名を借りた単なる誹謗中傷にしか過ぎないシロモノが幅を利かせ過ぎな面があるって事だろうな。 批評本来の価値を貶めるようなものがね。 批評は創作に比較すれば容易に参加できるから、批評家の本質自体を問われやすい。 批評家は利害・好悪を離れたところの公正さやそれを機能させる自制心が必要だが、今の批評家には欠けてるって事だな。 本来の価値の高い批評を操れるにふさわしい批評家が増えて欲しいね。
俺が批判してやろう
∩___∩ | ノ ヽ / ● ● | | //// ( _●_) ミ 彡、 ヽ(⌒ヽ/ Ruby、プッ / __ \ ヽ (___) / `ー‐'
Ruby厨に「じゃあ、Rubyの良い所を挙げてみろ」と言うとだんまりになってしまうのが面白くてしかないwww
↑コピペつまんね。OHP見ろ。 作品として公開されたものが批評されるのは当たり前の事だが、 批評する以前の問題(サンプルを見ただけ、もしくはインストールすらしない、とか。まあ大抵のUNIXには入ってるけどなw 窓厨には敷居が高いかもしれん(pu)な奴が多すぎだ。 食わず嫌いに「批評」はできるのかと。
少しはマトモな議論に戻ろうぜ ・Rubyの(言語としての)メリット - オブジェクト指向の皮を被ったマルチパラダイム - プロトタイプベースチックなクラスベース(特異クラス・メソッド) -> 高い柔軟性を持つ - 充実したシンタックスシュガー ・デメリット - 実行パフォーマンスが悪い。スピード求めるならC&C++で。 - 作者(matz)が保守的すぎて新しいパラダイムを受け付けなくなっている。 - 構文が複雑。シンプル化も進まない。 (シンタックスシュガーが充実している反面でもあるけど) かねえ。Ruby2.0でどうなるかだけど、進退窮まっている感じがするよね。
>>719 アンタの意見も根拠の無い妄想ばかりでつまらんのだけど。
いやここでやれ
ワロタwwwwwwwww HSP厨もRuby厨も頭悪すぎwwwwwwwwww
728 :
デフォルトの名無しさん :05/01/01 21:41:57
>>727 よくこういった書き込みみるけど、具体的な内容を指摘したものは
いまだかつて1度もないw
今時あんなBASIC風の古臭い言語が流行ってるのは 日本にとってかなりマイナスだと思う。
>>729 他の国のプログラマはオブジェクト指向言語から始めてるのかい?
これで日本と海外のソフトウェア開発力の違いの原因が良く分かりましたね
733 :
デフォルトの名無しさん :05/01/02 01:07:51
初めての言語なんてその後ちゃんとオブジェクト指向を学べば関係ないだろ N88BASICから始めた俺にはかなり不愉快
このスレでくだらん論争してる奴が馬鹿なのは間違いないな。
>>733 それはそういう時代だったからだろ。
俺も最初の言語はBASICだったし。
でも今あえてBASICみたいな言語から始める理由は無いと思うが。
HSPもCも覚える労力はそんなに差はないでしょ。
736 :
デフォルトの名無しさん :05/01/02 01:34:28
最初に何を覚えようがその後覚える技術は本人次第でいくらでも覚えられる 最初がCだろうがHSPだろうが関係ない
インタプリタなC++がいいってこったね('A`)
話は変わりますがparrotってどうですか?
Perl6のランタイムのこと?
Rubyなんてプッて感じ。 ブロック扱うためにイテレータとか言って特殊構文導入しちゃって必死すぎw それでも全然自己記述出来ないのな。Lispには遠く及ばないな。 Smalltalkの統一性にも全然及ばないwww ユーザーも各スレ荒らしまくって最悪だしな。
>>739 そうです。
なんか、「他の言語からも使ってもいいよ」みたいなことが書いてあったので、
どんなもんかなと思ったんですが。
> 現在の Perl 5 の VM はスタックマシンだ(訳注:そうだったんだー) そうだったんだ…
>print "String" とか、レジスタの値を表示するためにprint I3 とか、書けるけど、 >Parrot の演算は多態(polymorphic)ではない。 >アセンブラがちょっとトリッキーなことやって対応してる。 こういう変なHack入れるとグダグダになりそうな気がするんだけどなあ…
>>744 ただオペランドの種類で命令をリダイレクトしてるだけとちゃうの?
その程度ならさほど問題にはならなそうだけど
>>745 うん、ちょっと読み進めたらまさにそう書いてあったorz
http://www.parrotcode.org/ 俺の受けた印象では、Groovyとか、違う言語からJavaバイトコードを
使おうってのとか、.NETのCLRとかも含めて、そういう
ものと似た動きに見えるんですがどうですか?
ならまじめに勉強して損はないかなと思うんですが。
最近そういう動きが盛んだな…
アプリケーションからハードは一切触らない、みたいな。それこそ 単純な加算などでさえも。
Parrot入れてみたんだが、SDLも既にバインドされてたりするのね…
C/C++で日本語プログラム作らないんだな、
、
parrotなんか糞 perl6はrubyの劣化コピー
Parser を正しく発音すると「パーサー」「パーザー」のどっち?
米語発音がパーサー。どっちも正しい
pythonの言語仕様は素晴らしいと思う。
>>747 流行ってるわけでも無いVMの勉強って
損得で言ったらどっちになるか微妙だとおもうぞ。
コンパイラ作る練習にいいかも
>>760 やっぱ、やるならjavaのVMでつか?
どういう目的でVMの勉強したいのかわからんが とりあえずJavaが無難じゃない?
いきなりJVMやるならアセンブラでも覚えたほうがいい
ここはやるスレじゃなくて作るスレなんで
作る前にやらんと意味わからん
そらそうだ
ここは作るスレじゃなくて相談室なんで
おまいら会話がエロすぎます。
作っちゃった時の相談もここ?
772 :
デフォルトの名無しさん :05/01/04 01:09:27
VBやDelphiなどの言語のコンパイラを 勝手に作ったら特許とかに引っかかりますかね?
>>772 A.言語仕様自体は特許にならないから大丈夫。
ただし、付属しているライブラリは特許・著作権で保護されるので
そっちの回避法を考えておかないと駄目。
776 :
デフォルトの名無しさん :05/01/04 01:37:27
質問です。 コンパイラ本に良く載ってる実行時環境(スタックマシンとかレジスタマシンとか)っていうのは 何のためにあるんですか?最適化をしやすくするため? 実行時環境とか用意しなくても直接構文木を記号表と照らし合わせながら 実行コードに変換していく様な事はできないんですか?
↑自己解決しました。勘違いでした。
778 :
デフォルトの名無しさん :05/01/04 02:23:09
HSPくらいの言語なら簡単に作れますか?
最適化をあまり気にしなければ。
>>776 ただ単純に説明を楽にするためじゃないの?
「勘違いでした」って何を?
>>781 仮想マシンのスタックマシンと、CとかPascalのスタックベースメモリ割り当てを勘違いしてました。
>>775 ありがとうございます。
とりあえず勉強を兼ねてVBコンパイラ作ってみます。
LSI C-86 試食版 で、コンパイラをつくってみよ〜
785 :
デフォルトの名無しさん :05/01/04 20:40:08
質問させていただきます。 bnfを使って出来ることって字句解析、構文解析までですよね? 意味解析、中間コード生成までを定義できるようなbnfにしたいのですが、 そのような拡張がされたbnfの構文というのはあるのでしょうか?
>>785 とりあえず属性文法を学ぶのが良いと思う。
なるほど属性文法ですか。 手元の本でちょっと調べてみましたが 意味解析以降は格段に難易度上がりますね。 ちょー難い!
属性文法(((( ;゚Д゚)))
普通は、構文解析以降は手書きじゃ???
何が普通なんだか…
>>791 つまり、bnfのような定義ファイルにはできないってこと?
すぐ上にあんじゃねーか
795 :
デフォルトの名無しさん :05/01/05 23:45:45
YACCに限界を感じて、そろそろというプロジェクトはいくつかあるが、 パーサ手書きというのは、実用的なソフトではほとんどナイ。
>>795 最近のgccは手書き。
次期rubyも手書きの予定。
属性文法使ってる処理系なんて聞いたことないぞ。 lexやyaccまでなら聞くけど。 構文解析以降は手書きじゃないか?
日本語の不自由な方がおらっしゃられるようです
Rieくらいは聞いたことあるんじゃないか?市販の製品に使われたって 言うのは聞かないけれども。
藻前らはコンパイラ作って市販するつもりなのか?
コンパイラ屋くらいだろうな、そんなことするの。
理恵タソ(;´Д`)ハァハァ
現場ではどうなのかわからないけれども、最適化ステージと コードジェネレータを全部手書きってのは無いんじゃないかなあ。 最適化とコードジェネレーションについては、 Muchnick: Advanced Compiler Design & Implementation, Morgan Kaufmann, 1997 が実践的で参考になった。
カウフマンつーとサイレントヒルだな 医者。仮眠明けで起きると誰も居ないでモンスターだらけと説明。
コンパイラ作る時のお勧めの中間コードは何ですか?
中間コード? 1パスにそんなもん必要ない
1パスでレジスタ割り当てとかの最適化まで出来るのですか?
どんな最適化を実装するつもりか自分でわかっているなら、
おのずと適切な中間コードもわかるはず。それが分かっていない
>>807 にはどうせ非最適化コンパイラも作れない罠。
811 :
デフォルトの名無しさん :05/01/06 22:54:47
上の張ってある書籍ですが、読む順番はあるんですか? ちなみに私は、Cをはじめてまだ1ヶ月です。
先にCを完全にマスターして下さい。 どの本も何らかのプログラミング言語をマスターしている事を前提に書かれてます。
814 :
デフォルトの名無しさん :05/01/06 23:15:09
Cマガでコンパイラの特集が組まれてたのって何年何月号だか ご存知の方いらっしゃいますか?
815 :
デフォルトの名無しさん :05/01/06 23:33:05
>812 そうです。 >813 マスターですか。。。。 K&Rがスラスラ読めるレベルでしょうか? 頑張ります。
>>814 手持ちでは…2003年8月号に
「コンパイラの仕組みを理解しよう」って特集があるけど、
そこまで突っ込んでは書いてない。
>>816 情報ありがとうございます。
私の手持ちで2003年1月号に「コンパイラの作成」
というそのものズバリの物がありました。
>>817 見事にその号が抜けてる orz
どのあたりまで書いてありますか?
Cマガの特集レベルなんてたかが知れてる 昔のインターフェース誌は濃かったなあ
インターフェースもCマガみたくバックナンバーをPDFにして売ってくれたりしないのかなぁ
>>821 うお、知らなかった…_| ̄|○
01年までですか…。90年代のやつがもう一度読みたいんだけどなぁ
>>818 字句解析、構文解析、意味解析、コード生成までが
非常に分かりやすく書かれてます。
20ページくらいでソース付きです。
ごめん、インタフェースも、か。読み間違えた。
827 :
デフォルトの名無しさん :05/01/08 03:28:16
●プログラミング言語処理系 岩波講座 ソフトウェア科学〈5〉 佐々 政孝 上記の本を買おうと思ったら、中身パスカルだったぞ。 他のコンパイラの本もパスカル+Cって内容だった。 Cのみの本はないのか?
>>827 その本俺も持ってるし、俺はCしか書けないけど、大体読めるから自分で
書き直せるっしょ。元々そういう意図があるから複数の言語で書いてないん
じゃないの?
>827 なぜCのみである必要が? パスカルのみでも読めるでしょ 逆に読めないなら問題
今の人には読めない読めない 無理も無い パシカル本は今の本屋にどこにも置いてないからね もしCより簡単だと言われても敬遠するだろう パスカルで書かれているという事は大抵古い本で、 ポインタ記法とか本ごとに違ってたりするし 構文なのか演算子なのかわからない物もある .の置き方に一貫性ないし 読んでもただ、混乱するだけである
Pascalの方が綺麗でしょ。 Cみたいにメモリ周りの汚さはなくて、純粋にアルゴリズムを記述しやすい。
綺麗・汚いの話をしてるわけではない
>>832 綺麗なら読みやすいだろう。
言語を覚えるコストよりもソースを読み解いたり書いたりするコストの方が遥かに高い。
読みやすさの話をしてるわけではない 綺麗ならSchemeの方が良い
本がないという理由なら、WEB上のリソースでも十分だけど。
なぞなぞです
>>834 関数型言語と手続き型言語では、さすがにプログラミングの定石からして
全く違うだろ。
記法が書籍毎に異なるなんてのは、良くある話。コンパイラ系の書籍だと
BNF 記法が良く出てくるが、あれも書籍毎に微妙に違ったりするし。その
あたりを自分で吸収できないようだと、専門書と取り組むのは難しい。
記法が多少違うなんてのはコンピュータに限らず、 大学で勉強すれば大抵でくわす話。
>>829 それはあんたはすでにパスカルを知っているから。
またはあんたが十分かしこいから。
よのなかの人間はあんたほど賢くないんだよ。
>>830 はげどう。
Javaが広まった理由のひとつが、「CやC++と見た目が似てるから」。
そのくらい、自分の知ってる言語に似ているかどうかは重要。かしこくない人間にとっては。
pascalライクな擬似コードくらい読めるだろ普通。 ま、おまいが読めなかったとしても CSを志すような人間は大抵おまいより賢いから心配ご無用。 少なくともそんなつまらん理由で萎縮しない程度にはな。
>>840 のように賢くない人間はコンパイラなんか書くなということだな。
大丈夫、そんな人間に自力でコンパイラなんて書けない。 時間の無駄を省けていいじゃん。 大学入試の足切りみたいなもんだと思え(入ったってついてけない奴もいるが)。
Javaの二番煎じ
JVM や CLR の系列だろうけど、ベンダーフリーでライセンスも緩いから使い易いと思う。
結構早いしな
てかParrot自体はちゃんと動くのか? 作ってもParrotのバグのせいでまともに動かなかったら悲しいぞ。
Ruby >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Parrot でかい顔するなぼけ 糞ぺrぇrはしね
850 :
デフォルトの名無しさん :05/01/09 20:42:58
字句解析でコードをトークン列にする際に、 if、forなどのキーワードは「keyword」という大きな 括りにするのと、それぞれ「keyword_if」、「keyword_for」 などのように細かく分けるのとどちらがよろしいでしょうか?
構文解析で必要な方。
>>850 作りたい言語似よるが、C や Pascal ライクな言語を作りたければ
後者の方が楽。
853 :
デフォルトの名無しさん :05/01/10 02:02:26
854 :
デフォルトの名無しさん :05/01/10 02:08:04
Win32コンソール形式の実行ファイルを作りたいのですが 参考になるページはありませんか? A := B + C GOTO(L) のような3番地文の中間コード形式の出力までは出来ています。
856 :
デフォルトの名無しさん :05/01/10 09:03:09
>854 x86ならnasmのinfoやIntelのwebサイト、 exeならPE形式、 実際の実装方法はgccのソース を見ろよ
857 :
デフォルトの名無しさん :05/01/10 23:52:39
スモールコンパイラ買って着た。 結構美人
オライリyacc本が初売り在庫処分で100円だったので買ってしまった。 かなりすすけてるよ(´・ω・`) 読んでみますか。
ほ、欲しかった
860 :
デフォルトの名無しさん :05/01/13 20:23:21
構文解析ではよく構文木を作るって言うけど、 プログラムのデータとしてはどのように持てばいいのでしょうか?
リスト(木のノードも含む)とか配列じゃないかね。 LISPの場合はコードがそのまんま構文木なんだよな。 LISPに慣れてるならLISPと同じ構造を目指すとよい。 でもLISPのセルは普通の言語だとGCないから扱いにくい。
a = (b[0] + 2) * 3; だったら、 root | assign / \ a | mul / \ | 3 add / \ | 1 | array_ref / \ b 0 LISPのS式で表現すると (assign a (mul (add (array_ref b 0) 1) 3)) S式は木のデバッグに都合がいい gccの内部表現もそうだったかと
型やシンボルの属性情報はどうしてます?
記号表で別管理
(´・∀・`)ヘー
866 :
デフォルトの名無しさん :05/01/13 23:45:42
treeなんて意識しなくても大丈夫だよ。 あれはあくまでも学問。実務はパーサがやってくれる。
>>866 構文解析して即コードに落としちゃう場合はともかく、もう一ステージ挟む場合
(最適化するとか)は、いちど明示的にツリー作る必要があるよ。
>>861-862 で
なんとなく考えが具現化してきました。
ただ今一分からないのが、字句解析で得たトークンを
構文解析でtree構造のデータとして持つとして
それを後の意味解析でどのように使うのでしょうか?
>>868 単純な最適化だと
add
/ \
2 1
ってツリーがあったら、コンパイル時に計算して 3 に置き換えちゃうとか。
データフロー解析をする時は、ツリーを3つ組表現すると楽かも
>>869 のような定数伝播ぐらいなら1パスでもできる
ただし1 + a + 2とかをa + 3にはできない
1 + aを読み終えた時点の出力を保留する様な仕組みは
もはや2パスとみなせるし、そこまでするなら木を作った方がいい
872 :
デフォルトの名無しさん :05/01/14 13:00:57
自分の自作言語でC言語の構造体のアラインメントを エミュレートしたいのですが、メンバオフセットの決め方がよくわかりません。 例えば#pragma pack(4)のとき、 typedef struct { int a; // offset 0 char b[1]; // offset 4 int c; // offset 8 } X; となるのはいいんですが、 typedef struct { int a; // offset 0 char b[1]; // offset 4 short c; // offset 6 short d; // offset 8 int e; // offset 12 } Y; shortが offset=6になる理屈がわかりません。 これは暗黙的にwordのアラインメントも働いているということでしょうか?
>>872 かなり複雑だよ
typedef struct {
char c[1];
short s;
char cc[1];
} C;
これのsizeof(C)は6。
Cのアラインメントはshortを持つので2になる。
これをメンバに持つ構造体を作るとわかる。
typedef struct {
C c[3];
}CC;
これで sizeof(CC) すると 18。
次に
typedef struct {
char c[1];
short s;
char cc[1];
int i;
} D;
これのsizeof(C)は12。
んで、アラインメントはintを含んでるので4。
typedef struct {
D d[3];
}DD;
sizeof(DD) => 36
つまり構造体はその中のメンバの基本型のサイズが関係する
例えばcharしか持たない構造体はアラインメントが1になる
874 :
デフォルトの名無しさん :05/01/14 16:10:43
>>873 仰るとおり理解するのが大変でした。
アラインメント指定された値は、あくまでもその大きさの型が出現した
ときに影響するってことで、それ以下のサイズについても
アラインメント指定された値以下であれば位置調整をしなくてはならない
ということですかね。
> 例えばcharしか持たない構造体はアラインメントが1になる
この言葉でようやくわかりました。
構造体を外から見るだけじゃなくて、その中の基本型まで遡って
把握しないと作れませんね。
お答えありがとうございました。
難しいね。 λ...... λ...... λ...... λ...... λ......
876 :
デフォルトの名無しさん :05/01/14 19:52:58
名前の分からないライブラリ関数を、動的に与えられた名前を用いて コールすることとかって出来ますか?
アドレスが分かればできるよ
ld
興味があったのでアラインメントの計算を考えてみました。 構造体が typedef struct { char a; // 1byte int b; // 4byte char c; // 1byte double d; // 8byte } C; とすると、 #define N 4 // 構造体メンバ数 int member_size[N] = { 1, 4, 1, 8, }; // 各メンバのサイズ(構造体Cの場合) int member_offset[N]; // メンバのオフセット(求める値) #define PACK 2 // #pragma pack() への指定サイズ member_offset[0] = 0; // 1個目のメンバのオフセットは0固定 int pos = 0; // 次のメンバを置くことができる位置 pos += member_size[0]; // 1個目のメンバのサイズ分すすめる for(int i = 1; i < N; ++i){ int size = member_size[i]; /* 次のメンバのオフセットをoffsetとすると、 offset >= pos; offset >= min(PACK * n, size * m); // n, mは0, 1, 2... */ int n = (pos + (PACK - 1)) / PACK; int m = (pos + (size - 1)) / size; int offset = min(PACK * n, size * m); member_offset[i] = offset; pos = offset + size; // 次のメンバを置ける位置を再計算 }
880 :
デフォルトの名無しさん :05/01/15 11:23:28
言語処理って文型向きでしょうか?理系向きでしょうか?
玄人向き
よくわからんが、構造体がネストしてたらそれを再帰的にやるんだろう。 Cの型定義をパースしてサイズやオフセットを返すだけの モジュールでも作れば需要ありそうだな。 C言語作ってるならともかく、自作言語のFFI周りの作成とかでは 誰もがやりたくない部分の1つだし。
885 :
デフォルトの名無しさん :05/01/15 13:05:54
>>882 既存のC処理系にあわせなければならないなら
offsetofやsizeofを表示するプログラムを生成して
Cコンパイラにやらせるのが楽そうだな。どうせ
どう配置されるかなんて処理系依存なんだし、
いちいち調べるのはかったるい。
構造体のアラインメントの話、結構興味深いね。 久々のヒット、トンクス。
質問ですが、言語処理系の仕事って年収どれぐらいもらえるのでしょうか? もちろん、条件によりさまざまだと思いますが、 平均的な所を知りたく思います。 お金の話は、禁句かもしれまえんが、 生活が出来ての仕事だと思います。
「『言語処理系』の仕事」って業種があるのですか? 私は寡聞にして聞かない。
俺の”コンパイラ屋” 想像図↓ ┌─┐ |コ.| |ン | │パ│ │ゐ│ │ラ .| │屋 .| │ !!.│ └─┤ ∧∧ │ ( `Д) | ̄ ̄ ̄|─□( ヽ┐U  ̄◎ ̄ ◎−>┘◎
まあ実際そんなもんだ
流しのコンパイラ屋や一匹狼のコンパイラ屋なんて聞かないから メーカーのコンパイラ開発部門の社員に過ぎないだろうよ。 サラリーマンとして給料をもらうだけ。
Digitalmarsとかは最初は一匹狼のコンパイラ屋だったに違いない
>>892 そのサラリーマンの給料が知りたい、って話じゃないの? IT 系といっても
給料はピンキリだからなぁ。
個人的には、職種よりも企業の方が効いて来るに一票だが。Microsoft なら
たぶん高いよ。
スレ本来の技術的な話題で湧いた直後なのに・・。 可哀想な俺達。
896 :
デフォルトの名無しさん :05/01/15 20:00:18
>>894 おれも、そう思うに1トークン。
ただ、システム系やら(言語を利用した)開発系よりかは
悪いと思われる。
>>892 > 流しのコンパイラ屋や一匹狼のコンパイラ屋
ワロタ
アタマワルソ
HSP作者のおにたま氏はある意味コンパイラ屋? 本とかで儲けてるんだろうな。いいなぁ。
るby>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>。hsp
HSPはインタプリタ
Rubyモナー
>>898 あなたもやってみればいいのに。
俺はコンパイラじゃないけど、チャレンジしてるよ。
matz師とおにたまでは格が違いすぎて比較にならないだろ。 ぶっちゃけ頭の出来が違う。
( ゚∀゚)・∵.ブバッ
>>887 ボクチンの場合、一般のプログラマと変わらないです。
仕事の内容が違うだけ
>>902 実は俺もコンパイラ作ってます。
って言っても字句解析までしかできてませんが・・・
つーかコンパイラ作るのって楽しすぎ。
どうしてもブギャーに見えるw OpenMCL が m4 使ってたな。
909 :
デフォルトの名無しさん :05/01/15 23:47:01
>>890 ワロタw
おれも、今の仕事やめて憧れだった
流しのコンパイラ屋でもやろうかな?
911 :
デフォルトの名無しさん :05/01/16 00:18:36
まずは、屋台を調達しろw
老後は屋台を引いて駅前で(ry
>906 あっしはプロトタイプベースのコンパイラ・インタプリタ作成中 ベースオブジェクトの設計にメドがたってきたから、ようやっと 字句解析にいけそう。 文法作るの楽しいよね。
3件の屋台が駅前で軒を連ねるのを思い浮かべてみた。 構文解析屋、字句解析屋、コード生成屋 / / / / / / / / / / / / / /`、 ヽ ./ / / / / / / / / / / / / /=== 、ヽ / /_ / / / / / / / / / / / / 、ヽ |=構 ギ_l ̄||  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|| |=文∫ =:| || || |= 解 コ..:| || || |=析 =:| || グツグツ ∧∧ ||┌──────────────── ~~~~~~~ | || ==┻== (゚Д゚;) <構文解析屋の新装開店だ、ゴラァ! | || | ̄ ̄| (|ギ ∪ || \_______________ ┌┴┸───────┴─┴┸┐ ┌┴─────────────┴┐ └─┬───────────┬─┘ | | ̄ ̄| | ̄  ̄| ....:.:::::| | | | ..:::::::| | ....::.::.:::| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
あー邪魔くせえ
ここはLISPや推薦図書のスレじゃありませんが。
ここは流しのコンパイラ屋スレです。
糞コテのほんたまって自分でアセンブラとリンカ書いたの? それともnasmとかのフロントエンド書いただけ?
”Slim de Can”のこと言ってるなら、たぶん
>>919 の勘違い
"Slim de Can"って前はE言語という名前じゃなかったっけ?
Slim de CanってPEヘッダとかセクション分けは自力で吐いてるの?
そんなん聞いてどうすんだよ。てか本人に聞け。
924 :
デフォルトの名無しさん :05/01/16 17:42:27
収入の話だけど、最近は(善し悪しは別として)成果主義が結構 浸透していて、利益につながらないorつながりにくいと判断され てしまっているところが多いみたい。
ふーん
927 :
デフォルトの名無しさん :05/01/16 22:21:21
基本的な事で申し訳ないんですが、 文(Statement)と式(Expression)の違いは何ですか? あと、2つの違いは言語に依存しますか?
式は結果の値を持つ。 文は制御構造しか持たず、結果の値はない。 Cは両方あるが、 Lispは式しかない。
・値を持つもの→式(Expression) ・値を持たないもの→文(Statement) ということですね。明確な回答ありがとうございます。 言語によっては必ずしも両方持たないものもあるようですが、 この定義が異なるようなケースor言語ってありますか? それとも、この定義は一般的なものですか? 質問ばかりですいません。 いろいろ調べてはいるのですが、明確に定義or区別しているものに出会えず、 いままでなんとなく津かって来ましたので。。。
> いろいろ調べてはいるのですが、明確に定義or区別しているものに出会えず、 その「いろいろ」に言語仕様書は入って無いのか。
>>929 一般用語としてはそうだけど、
最終的には言語仕様でどう言葉を定義するかによる。
C言語で戻り値voidの関数呼び出しなんて
式なのに値がないかも(void型の値を持ってるのかもしれんが)。
あと、昔オレがCに似た構文のスクリプト言語作ったときは
Cの文に似たものを文と呼ぶことにしたが、文は全て値を持ってた。
それは式だよ 値を返すなら文と呼ぶ意味が無いし Rubyも制御構造が式だけど用語の整理ができてないみたい
>>932 用語の統一なんて、あって無いようなものだろ?
ちょっと気になったんで、K&R(古〜)を取り出してみた。 確かに、式に含まれる式の種類や、文に含まれる文の種類は 細かく書かれてあったが、式自体の定義と文自体の定義(そ の違いを含む)は書かれてないな。
C言語の <expr> ; は式文(expression-statement)と呼ばれるから 区別はつくでしょ。 式の中にif文やfor文置けるわけじゃないし そういう拡張したならif式とかfor式と呼ぶべき
>>933 Rubyリファレンスはif式だとかif文だとか統一されてない。
あれはいくらなんでもまずい。
>式自体の定義と文自体の定義(そ の違いを含む) BNFで書かれたものじゃ不足か?
>>934 K&R日本語訳読んでるならp.277の付録A9に書いてあるぞ
>実行された文はその効果を残すが、値は持たない。
付録A7が式の定義、A8が宣言の定義、A9が文の定義 てちゃんと書かれてるだろ。 付録Aの参照マニュアルは一番お世話になる章だと思うんだが。
>>932 もちろんそのときは文は式の一種。
Cの構文解析やらのプログラムを転用するから、
そこで「文」を他に言葉に変換するのは手間。
実装で使う単語と仕様書で使う言葉を分けるという手もあるが、
内輪でしか使わないやつだから統一したほうがよろしい。
仕様書では明示的に「文という言葉を普通じゃない意味で使う」と断った。
>>937 お前の理論だと、どのような言語もマニュアルならいらんということになるな。
>>938 ん?ページあってるか?
しかもそのような行はないぞ?
>>939 A7は評価の順序やら、結合など細かく書かれてあるが、値を持つとは書かれていない。
A9も逐次実行されることぐらいしか、文全体の説明は書いてないぞ。
つ「ANSI/ISO 9899-1990: American National Standard for Programming Languages - C」
逆ギレ?
なにを式と呼ぼうが、なにを文と呼ぼうが作者の勝手。
>>944 「詭弁のガイドライン」より。
・自分に有利な将来像を予想する
・主観で決め付ける
・ありえない解決策を図る
今のあなたはこの辺が該当します。
予想しうる今後の展開は、
・レッテル貼りをする
・勝利宣言をする
・知能障害を起こす
辺りです。
詭弁のガイドライン2 ・詭弁のガイドラインを持ち出してくる
>>945 ご丁寧にありがとうございます。
かなり難解な部分もありましたが、犬の例え話はなるほどそうですね。
ふと、感じたのですが、私のような初心者にはややこしく感じるのは、
ひょっとして言葉が直観的じゃないのが原因なんでしょうか?
うまく説明できませんが、
・(Statements)→文は、値をもたない点を含めて納得しやすいのですが、
・(Expression)→式は、値を持つ点を含めて、何か直観的でないと感じます。
式と言われると、y=ax^2+bx+c のような(数学)式を連想してしまいます。
左辺&右辺にはそれぞれ値があるのですが、式自体には値は無いですよね…
(↑数学的に)
なれですかね?
ソシュールとチョムスキー読むとおもしろいです
>>948 数学の式の"="は非常に使い方が曖昧で、"="は最低でも3通りの使い方が
なされている。
1. 定義式 y := x^2 「yをx^2と定義する」
2. 恒等式 y == x^2 「yはx^2と常に等しい」
3. 代入式 y = x^2 「yにx^2を代入する」
これらが区別できているかい?
>>948 >式と言われると、y=ax^2+bx+c のような(数学)式を連想してしまいます。
>左辺&右辺にはそれぞれ値があるのですが、式自体には値は無いですよね…
値の有無は式に属するか文に属するかによる。
例えばVBの代入は文に属する。
a := b := cとは書けない。
でも右辺には式が置ける。
a := b + 1など。
しかし、C言語では代入は演算子として定義されており、
演算子は式に属する。
C言語の式a = b = cはa = (b = c)と解釈され、b = cが先に評価される。
この評価の順番を結合規則と呼び、C言語の式には
かならず結合規則が存在し、代入式は右結合と規定されている。
同じ演算子同士は結合規則によって順番が決まり、
違う演算子同士ならば優先順位によって決まる。
a = b = cの場合、式の値はcの中身になる。
>>948 y=ax^2+bx+c
は同書のP2表1.1で”文”として定義されています。
正確には「y := ax^2+bx+c」と記述します。
【注意】 P2の文中で「(4) xが変数でEが式ならば,x := E は式である」
は「文である」の誤りです。
代入”式”「 y=ax^2+bx+c」と言ったりしますが、意味的には
代入”文”「y := ax^2+bx+c」です。
代入文x:=E (←変数x,式E)については同書のP5に
「代入文は変数の値を別の値に置き換える働きをするので、
環境を別の環境に移す関数を意味する」とあります。
この説明では「関数」とあるので「式」と呼びたくなるかも知れませんが、
関数と関数との”写像”と御考え下さい。制御文ですね。
>>950 にある 2. 恒等式 y == x^2 「yはx^2と常に等しい」
は論理値が与えられるので”式”です。
また、『定義式 y := x^2 「yをx^2と定義する」』はメタ記号 ::= を用いて
「y ::= x^2」と記述したりするようです。
ちなみに同書のP6の下から5行目「この関数が式に対する意味関数である」は
「文に対する」の誤りです。
頑張ってください。
>>951-952 ここでいうy=ax^2+bx+cは、プログラムの代入ではなく、
数学の等式だと思うぞ。放物線。
>>948 数学でもax^2+bx+cは式だと思うぞ。
ってことで、漏れ的にはそれほど違和感はない。
言葉って言うのは概念につけられた単なるラベルなわけで、
極論を言うと重要なのは概念であって言葉じゃない。
「犬の尻尾を足と呼ぶことにしても足は5本にならない」
ってのはラベルを取り替えても概念は変わらないという意味だと思う。
まあ、言葉に振り回されるのもほどほどにってことで。
とは言いつつも、プログラムにおける文と式という言葉の起源はちょっと知りたい。
言葉って言うのは概念につけられた単なるラベルなわけで、 極論を言うと重要なのは概念であって言葉じゃない。 なにを式と呼ぼうが、なにを文と呼ぼうが作者の勝手。 まあ、言葉に振り回されるのもほどほどにってことで。
文は文法に束縛 SVO S=O(BASICの場合) if文 式は演算子と優先順位と結合規則に束縛 a+b*cはa+(b*c) だが、たしかにこんなことはどうでもいい 記号にも興味ない 興味があるのは動くプログラム
・勝利宣言をする
言葉って言うのは概念につけられた単なるラベルなわけで、 極論を言うと重要なのは概念であって言葉じゃない。 ってことで、皆が文と呼ぶものを、ここでは式と呼ぶことにします 漏れ的にはそれほど違和感はない。
・知能障害を起こす
>>953 がレッテルならぬラベルを貼ってくれたから、
全部集まって神龍が現れるでFA?
>>956 >>958 詭弁のガイドラインを出してくるお前も
・レッテル貼りをする
・勝利宣言をする
・知能障害を起こす
に該当する。
つうか、今時詭弁のガイドラインって
主観で決め付けるコンパイラ屋さんガンガル、の図 ┌─┐ |記| |号 | 業界での字(あざな)は”ウルフ” │に│ ↓ │興│ │味 | それほど違和感はない♪〜 │な .| │い│ / ̄ └─┤ ∧∧ <極論を言うと重要なのは概念であって言葉じゃない │ ( `Д) \_ なにを式と呼ぼうが文と呼ぼうが漏れの勝手 | ̄ ̄ ̄|─□( ヽ┐U  ̄◎ ̄ ◎−>┘◎
>>946 デバッグできないプログラマに
そのまま当てはまるな
主観で決め付けてるわけじゃなくて、言葉の定義は、仕様によって決められているわけだから、 作者(仕様策定者)の勝手というのは正しいのでは?
常識とは思わないのか
ん?荒れてる? 俺の文章になにか不満あったのかな?
>>962 そうだけど、
無意味に普通じゃない意味で使ってると誰もついてこず
ロンリーウルフになっちゃうぜという話。
つまり、詭弁でもなんでもなく、正しいと。
どうやらどっちも落ち着いた?
デタラメな
>>955 の内容ときたら…
↑
たしかにこんなのどうでもいい
('∀`)ニヤニヤ.. . .。oO(束縛?プッ
そう、ごめんね
>>962 が発明した世界で初めての概念に関しては、その字面も、その定義も
>>962 の脳内仕様書によって決められるわけだが、「式」とか「文」とかはなぁ…。
まぁ、そういう「コンパイラ屋」さんは駅前で
詭弁でも売って(売値はついても買値はつかないだろうけど)、
一人でやっていくしかないだろうねぇ。。
相変わらずの糞スレだな
みんな!うんこトークしようぜ!!!!
974 :
デフォルトの名無しさん :05/01/19 17:07:34
うんこー!
ひょっとして知能障害を起こすってやつですか
>>972
978 :
デフォルトの名無しさん :05/01/19 17:13:37
盛り上がってまいりましたw
ここは馬鹿と池沼しかいないスレでつ。
>>970 「式」とか「文」だって仕様策定者なら勝手に決められる。
仕様で「式」の意味が決められているということは、その言語では「式」がそういう意味であるということだろう。 これが違うという方こそ詭弁だろ。
982 :
デフォルトの名無しさん :05/01/19 17:21:17
詭弁ばかりのリア厨が粘着荒らしか。 死ねよ。
解析フェーズで尻尾も足と決めてみた。
オチケツ馬鹿ども。
このまえ
>>982 のうんこ食べたんです。
消化しきれなかったとうもろこしの粒があって、なんだかちょっぴり幸せでした…^^
議論の内容が低レベル過ぎ…
どうせ荒らしてんのは馬鹿なC厨だろ。 なんせ式と文だけでこれだけ盛り上がれるんだからな。
仕様で、文や式の定義が決まってるのはCだって一緒だろ。 それに文句言う奴は、言語の仕様でいろんな用語の意味が定められているのは 無効といってるのと一緒。 そういう仕様を持った言語なんて腐るほどあると思うが。
989=946
内容がデタラメでない、という前提でな。
994 :
デフォルトの名無しさん :05/01/19 17:33:36
C厨は人類の敵。
>>993 もちろんな。
ただし、値を返すものを「文」と定義しただけでは、デタラメには該当しない。
996 :
デフォルトの名無しさん :05/01/19 17:35:12
C厨はうんこ!
何がここまで
>>940 を固執させるのか?
以後は、心と身体・メンタルヘルス板でドゾ
Rubyの文は値を持つ。 それは仕様で定められてるのだから仕方がない。 作者の勝手なんだよ。 デタラメをやらない限りな。
999 :
デフォルトの名無しさん :05/01/19 17:37:26
1000ならC厨は死滅!
ぱ
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。