[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/09 22:36 / Filesize : 235 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

「コンパイラ・スクリプトエンジン」相談室9



1 名前:デフォルトの名無しさん [2005/12/20(火) 21:43:02 ]
プログラミング言語処理系の開発に興味のある人達のスレッドです。

字句解析・構文解析から,データフロー解析,ループ並列化,データ分散,SSA変換,
CPS変換,レジスタ割付,命令スケジューリング,ソフトウェアパイプライン,
SIMD命令生成,VLIW向けクラスタリング,スクラッチメモリ向け最適化,リンク時最適化,
JIT,動的バイナリ変換等の各種最適化,それにVM,GC,低消費電力化などなど。
意味論に関する話題も歓迎です。

過去スレ
1 pc.2ch.net/tech/kako/981/981672957.html
2 pc2.2ch.net/test/read.cgi/tech/1021136715/
3 pc5.2ch.net/test/read.cgi/tech/1070089173/
4 pc5.2ch.net/test/read.cgi/tech/1100097050/
5 pc8.2ch.net/test/read.cgi/tech/1106129164/
6 pc8.2ch.net/test/read.cgi/tech/1115335709/
7 pc8.2ch.net/test/read.cgi/tech/1129287390/
8 pc8.2ch.net/test/read.cgi/tech/1131273918/
関連リンクは多分 >>2-10 あたり

269 名前:デフォルトの名無しさん [2006/01/10(火) 23:40:58 ]
なんで、最適化用語って変なのばかりなんだろう?
もうちょっと、かっこいい名前つけられんのかねぇ?

270 名前:デフォルトの名無しさん mailto:sage [2006/01/10(火) 23:51:15 ]
コンパイラの用語って変なのばっかり。
還元(reduce)って言葉見つけたとき、酸化還元の還元かとおもったよ。

271 名前:デフォルトの名無しさん mailto:sage [2006/01/10(火) 23:56:40 ]
合ってるよ。reduce には酸化還元の還元という意味もある。

272 名前:デフォルトの名無しさん [2006/01/11(水) 00:05:43 ]
コンパイラ用語に使うときは意訳でよいから別の言葉を使って欲しかった。

273 名前:デフォルトの名無しさん mailto:sage [2006/01/11(水) 00:42:29 ]
もとに戻すんだから意味的にも還元で問題なかろう。
日本語力の乏しさを棚に上げて何言ってんだ。

274 名前:デフォルトの名無しさん mailto:sage [2006/01/11(水) 01:05:57 ]
>>269
例えば?

>>272
じゃ、「リデュース」で。

275 名前:デフォルトの名無しさん mailto:sage [2006/01/11(水) 01:22:05 ]
上方遷移…余計わからんな

276 名前:デフォルトの名無しさん mailto:sage [2006/01/11(水) 03:36:45 ]
>>270
コンピュータ用語自体変なの多いから気にスンナ


277 名前:デフォルトの名無しさん mailto:sage [2006/01/11(水) 05:21:22 ]
自己満足のために、lispのdefmacroのc言語風なものを実装してます。
for(i=0,i<10,i++,printf("%d\n",i));
といったかんじのことは出来るようになったのですが、
for(i=0;i<10;i++){printf("%d\n",i);}と言った外側にブロックを
持ったマクロは、どうやって実現したらいいか悩んでます。
何かいい参考資料ないでしょうか???



278 名前:デフォルトの名無しさん mailto:sage [2006/01/11(水) 06:05:07 ]
>>277
ttp://mike-austin.com/blog/2005/10/dylan-macro-system-is-badass.html

279 名前:デフォルトの名無しさん mailto:sage [2006/01/11(水) 08:25:43 ]
>>278
ありがとうございます。
Dylanですか。初めて聞きました。
結構古い言語なんですね。仕様読んでみます。
使ってみたい気がするのですが、windowsバイナリとか落ちてないのかなぁ。

280 名前:デフォルトの名無しさん mailto:sage [2006/01/11(水) 08:36:56 ]
>>279
商用の Dylan 処理系がオープンソースになったものがあるよ。
www.gwydiondylan.org/downloads/opendylan/

281 名前:デフォルトの名無しさん mailto:sage [2006/01/11(水) 12:53:41 ]
>>280
ほんとだ。ちょっと探せば見つかるじゃん。orz
ありがとうござます。

Hygieneって書いてあるので、基本的に名前の衝突が回避されていて、
BNFを書くような感じでパターン照合を行うものがDylanのマクロと考えてよいのでしょうか?
パターン照合はやったことがないのですが、
構文解析器の自動生成ができる技術力ないと作れないような気がするのですが。。。


282 名前:デフォルトの名無しさん mailto:sage [2006/01/11(水) 13:27:11 ]
>>281
Schemeのsyntax-rulesの美しさに萌えろ。S式最強。

283 名前:デフォルトの名無しさん mailto:sage [2006/01/11(水) 14:11:20 ]
>>282
Schemeのsyntax-rulesが作れれば、そりゃ、もー、うれしいんですけど。
S式だとS式でない場合に比べて、実装が簡単になるのでしょうか?
それだと、うれしいんだけどなぁ。


284 名前:デフォルトの名無しさん mailto:sage [2006/01/11(水) 15:55:15 ]
>>283
どんな文法を使おうと、結局はツリーにしてマッチや変換をかけるでしょ。
S式の場合は最初からツリーになってるから前半の(どっちかっつうとtrivialな)
ステージが省ける、ってだけじゃないかと。
言語デザイナの立場だと文法も重要なんだろうけど。


285 名前:269 mailto:sage [2006/01/11(水) 20:30:31 ]
>>274
例えば、皮剥き

286 名前:デフォルトの名無しさん mailto:sage [2006/01/11(水) 20:53:09 ]
パターンマッチマクロってどんな syntax の言語でも実装可能なの?

287 名前:デフォルトの名無しさん mailto:sage [2006/01/12(木) 00:51:45 ]
自分の欲しいsyntaxのマクロを人に書かせたいと見たw




288 名前:デフォルトの名無しさん mailto:sage [2006/01/12(木) 06:39:51 ]
>>286
可能か不可能かなら可能でしょう。
使いやすいとかわかりやすいものになるかどうかは別。

289 名前:デフォルトの名無しさん mailto:sage [2006/01/12(木) 08:35:55 ]
>>288
どうもありがとう。

>>287
Ruby や ECMAScript, Python は acceptable lisp と言われているけど、
マクロを追加すればもっと Lisp の強力さに近付くかなと。

290 名前:デフォルトの名無しさん mailto:sage [2006/01/12(木) 11:28:30 ]
>>287

自分は、schemeのsyntax-rulesを実装したいのだけど、
わからないので、簡単なソース付きで解説してほしいです。

自分のほしい言語をすべて書いてもらえたら幸せです。
schemeのスレとかで聞いたほうがいいのかなぁ?

>>287>>288>>289
PythonはDylanに似たマクロが入るとかいう噂がある(あった?)ようです。
どんな言語でも適用できそうなので、(よくわかってないのですが)
Dylanのマクロのアイディアはとにかく凄いような気がします。
C用のDylan風マクロとか、Java用のDylan風マクロとかあったら
そりゃもう、うれしいんじゃないかなぁと思います。


291 名前:デフォルトの名無しさん mailto:sage [2006/01/12(木) 11:40:09 ]
schemeのスレで質問してみました。

292 名前:トラックバック ★ mailto:sage [2006/01/12(木) 21:15:09 ]
【トラックバック来たよ】 (ver. 0.11)
[タイトル] 萌え言語を作ろう!
[発ブログ] プログラム技術@2ch掲示板
pc8.2ch.net/test/read.cgi/tech/1131442510/l50
[=要約=]
日本語で書ける言語では「ひまわり」なんてのがありますが
いまいち使いづらいというか、萌えないw

ということで、萌え萌えな言語を作ってみようと言う企画です。





293 名前:デフォルトの名無しさん mailto:sage [2006/01/12(木) 22:06:16 ]
萌言語案

ハァハァ{



の機能

while(1){
...
}

294 名前:デフォルトの名無しさん mailto:sage [2006/01/12(木) 23:04:56 ]
萌えとハァハァは別だよ派
萌えもハァハァも一緒だよ派


295 名前:デフォルトの名無しさん mailto:sage [2006/01/13(金) 00:30:47 ]
#define _ 1

とかやると、

for (;_;) 仕事;

となるわなw

萌えないが、実感はむしろこっちのほうが(泣)


296 名前:デフォルトの名無しさん mailto:sage [2006/01/13(金) 00:42:10 ]
#define T_T 1

while (T_T) 仕事;

297 名前:デフォルトの名無しさん mailto:sage [2006/01/13(金) 18:49:31 ]
#define ハァハァ 999

while(ハァハァ) 言語スレ



298 名前:デフォルトの名無しさん mailto:sage [2006/01/13(金) 23:33:15 ]
変な用語の例(その2)

・せわしない。。。
・なまけた。。。

299 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 00:03:57 ]
bool A = ture;
bool T_T = true;

for(;A;) wile(T_T) int y=-(T_T);

300 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 10:39:00 ]
assert マクロって must って名前にしたほうがよくない?

assert ( a == b ) → must( a == b )


301 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 11:31:50 ]
assert that a equals b (thatは略可)
はそのまま読めるけど、mustはどう読んだらいいんだ?

302 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 13:16:28 ]
a == b で「なければならない」
should ( a == b ) とか must( a == b )


303 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 15:18:27 ]
must(a == b) を a == b でなければならないと読むのは
英語的におかしくないか。
! 演算子みたいに must が演算子だとして a must== b ならわかるが。

304 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 15:25:59 ]
must be (a is equal to b)
なんじゃないの。

305 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 15:42:50 ]
だから、それが英語的におかしいといっている。

306 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 15:50:52 ]
じゃ、 must be a condition of (a == b) は?

307 名前:300 mailto:sage [2006/01/14(土) 16:14:15 ]
いや、まあそんなに深い意味で発言したわけじゃないけど
英語的にどうこうというか、
自分的にはこっちのほうが直感的かなと思っただけ
初心者に assert を教えたらピンとこなさそうな顔してたもんだから



308 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 16:24:42 ]
個人的には ensure が良いと思う。ちょっと意味合いが変わって来ちゃうけど。

309 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 18:15:19 ]
>>307
assertって単語になじみが無いだけだ、辞書引かせてからassertを使った例文を毎日一個5営業日続ければ覚える。


310 名前:デフォルトの名無しさん [2006/01/14(土) 18:37:19 ]
俺なら、

must.be.A.eq.B

が一番すんなりと入るかな?


311 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 19:04:13 ]
俺なら、

zettai(a == b)

が一番すんなりと入るわ。

312 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 19:05:53 ]
(a == b)じゃなきゃいやん

313 名前:300 mailto:sage [2006/01/14(土) 19:41:09 ]
assert だけだと、どっちの場合に警告するのかよくわかんなくない?
a == b 「だったら」警告するのか
a == b 「でなければ」警告するのか。
must とか(あるいは311,312 でもいいけど)だと、
明らかに後者が連想されるんじゃないかなと思った

314 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 19:57:21 ]
「ここでは(a == b)になると断言する」と日本語で言っても?

315 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 20:01:06 ]
assert に 『警告する』 って意味は無いんだよなぁ……。

316 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 20:01:45 ]
assert false の場合はどーやって解釈すりゃいい?

317 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 20:03:01 ]
『常に偽であると表明する』

prolog の fail みたいな。



318 名前:300 mailto:sage [2006/01/14(土) 20:37:49 ]
>>315
あ、ホントだ、やべえ!長いこと勘違いしとった!!
「断言する」で問題ないじゃん!
てことは、assert でも問題ナスorz

319 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 20:43:02 ]
ドンマイ

320 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 20:43:14 ]
>>316
正確には「もしここに来たら(a == b)がtrueであると断言する」と思えばいい。
assert falseは「もしここに来たらfalseがtrueであると断言する」、
つまり「ここには来ることはありえないと断言する」。

321 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 20:59:13 ]
#define assert 断言する

断言する(a == b)

322 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 21:02:32 ]
スキャナとパーザって、マルチバイト文字を通せるのですか?

323 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 21:12:13 ]
通すように作れば通る。

324 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 21:56:47 ]
シングルバイト文字の8バイトの連続だよ?
たまたま 0x80 より大きいだけ

325 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 22:15:08 ]
>>324
アフォ来た〜〜〜!!

326 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 01:00:21 ]
>>324
8バイトって何だ8バイトって。

実際には322の言うように、通るように作れば通るし、今時flexもbisonも
8bitは通す。マルチバイト文字というと、SJISだと0x5c問題が出てくる
可能性は歩けど、それはlexerのつくりの問題だよな。


327 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 23:35:26 ]
変な用語その3

マトン



328 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 23:41:00 ]
羊肉?

329 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 23:41:51 ]
自動羊肉

330 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 23:57:17 ]
オートマタ。

331 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 00:59:16 ]
オート マトン
というよりは
オー トマトン
何だが。

332 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 04:17:47 ]
Oh! Tomato! n?

333 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 05:17:47 ]
コンピュータ関係の変な用語ってのはKILLとかZOMBIEとかENTITYとかじゃねぇのか?


334 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 07:13:02 ]
デムパな単語が、そんなに嫌か?

335 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 22:02:30 ]
>>327
automate(自動)+ton(〜風)、「自動っぽいもの」くらいの意味。

336 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 23:15:29 ]
>>335
こらこら。だますんじゃない。

337 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 23:29:55 ]
自動人形



338 名前:デフォルトの名無しさん mailto:sage [2006/01/17(火) 01:33:13 ]
ギリシャ語のautomatos(自立して動くもの)が語源だっけか。
別にどうでもいいけど。

339 名前:デフォルトの名無しさん mailto:sage [2006/01/17(火) 23:22:03 ]
>>329
昔食肉工場の機械が、簡易プログラムのような物で動いていて
たまたま羊毛の盛んな時期と重なった

340 名前:デフォルトの名無しさん mailto:sage [2006/01/18(水) 00:58:17 ]
>>339
ツマンネ

しかしあれだな、Lisp叩きやRuby叩きの話が出て来ると、すぐ「実装の話をしろよ!」という
主張が出て来るが、実装の話が好きな人達は、スレが閑散としてても実装の話はしないんだよな。

341 名前:デフォルトの名無しさん mailto:sage [2006/01/18(水) 01:14:52 ]
assertやらオートマータやらの話をしている輩が何を偉そうに

342 名前:デフォルトの名無しさん mailto:sage [2006/01/18(水) 01:26:06 ]
>>341
何一つ自分からネタ振れない輩が何を偉そうに。

つか、俺はassertやオートマータの話なんかしてないし。
だいたい、ここじゃちょくちょく構文解析+αのレベルで「間違い」が書き込まれる
ことがあるんだが、自称凄い人達はその訂正もしてくれないのな。

343 名前:デフォルトの名無しさん mailto:sage [2006/01/18(水) 08:54:41 ]
まず、自称このスレの間違いをわかってる君が、具体的に間違いを指摘してみては?

344 名前:260 mailto:sage [2006/01/18(水) 23:33:35 ]
>>342
詳しい人らしいんで返答を乞うてみます。


345 名前:デフォルトの名無しさん mailto:sage [2006/01/19(木) 06:52:05 ]
342が「自分に何がわかっているのかを書かなくていい理由」を考えつくまで
もう少しお待ち下さい。

346 名前:342ではないけれど mailto:sage [2006/01/19(木) 21:35:50 ]
なぜこんな流れに。。。

俺はレベルの低い実装の質問を書き込んでいたものですが
342の人は多分質問に答えてくれた人なんじゃないかという
気がしています。

逆に意地悪な感じで初心者を馬鹿にしている人達は
初心者の質問が書かれるたびに
「このスレ〜以外は意味ない」とかそんなんばかりでしょう。
そういうのはレベルが低くはないんですか?

347 名前:デフォルトの名無しさん mailto:sage [2006/01/19(木) 22:39:30 ]
エスパー光臨



348 名前:デフォルトの名無しさん [2006/01/19(木) 22:59:51 ]
マシンのネイティブコードを吐き出すための情報(命令セットってやつ?)はどこから入手したらいいのですか?
VMや構文木直辿りのインタプリタしかやったことないのでそろそろコンパイラにチャレンジです。

349 名前:デフォルトの名無しさん mailto:sage [2006/01/19(木) 23:16:32 ]
>>348
えーと、ギャグで言ってるんだよね?


350 名前:デフォルトの名無しさん mailto:sage [2006/01/19(木) 23:23:56 ]
前からテンプラにその情報源がないのは、
ひどく片手落ちな気がしてたよ

351 名前:デフォルトの名無しさん mailto:sage [2006/01/19(木) 23:35:30 ]
>>350
どのマシンがターゲットなんだかワカランのじゃ話にもならないし、少しだけ乗せるとアンチとか出てきて喧嘩になるし
ろくな事ないからじゃないの?


352 名前:デフォルトの名無しさん mailto:sage [2006/01/19(木) 23:42:03 ]
IA32だけならば、誰も文句いわねえと思うが・・・
マカーでさえもう文句いわねえ

とおもったが、このスレの二大言語(笑)の信者は
蚊帳の外に置かれてしまうかw

353 名前:デフォルトの名無しさん mailto:sage [2006/01/19(木) 23:47:30 ]
>>352
でIA32の場合インテルに資料請求するか秋葉あたりでデータシート買うって言う選択肢な訳だけど。


354 名前:デフォルトの名無しさん mailto:sage [2006/01/19(木) 23:51:23 ]
>>352 の意味が分からん。

355 名前:デフォルトの名無しさん mailto:sage [2006/01/19(木) 23:52:08 ]
lisp原理主義者はcarをeaxに、cdrをedxに。

>>353
例のpdfじゃ不足?

356 名前:デフォルトの名無しさん mailto:sage [2006/01/20(金) 02:46:07 ]
ttp://wiki.osdev.info/index.php?Pentium
でどうでしょう

357 名前:デフォルトの名無しさん mailto:sage [2006/01/20(金) 02:53:46 ]
PowerPC
opensolaris.org/os/community/power_pc/powerpc_doc_library/



358 名前:デフォルトの名無しさん mailto:sage [2006/01/20(金) 05:00:59 ]
> でIA32の場合インテルに資料請求するか秋葉あたりでデータシート買うって言う選
> 択肢な訳だけど。

それ、いつの時代の話?
ほとんどのCPUの命令セットはWebから落せる。
しかも IA32 の場合、日本語に訳されてる。

www.intel.com/jp/developer/download/
にある
IA-32 インテル アーキテクチャ・ソフトウェア・デベロッパーズ・マニュアル
からどうぞ。

359 名前:デフォルトの名無しさん mailto:sage [2006/01/20(金) 05:29:13 ]
>>358
紙のマニュアルの方が扱いが楽だからなぁ。
プリントすると紙質の関係でつらいからね。


360 名前:デフォルトの名無しさん mailto:sage [2006/01/20(金) 07:49:40 ]
そんなの選択肢からはずす理由にはならんだろ。
知らなかっただけなのに、言い訳苦しすぎですよ先輩。

361 名前:デフォルトの名無しさん [2006/01/22(日) 12:39:02 ]
新しい言語本がでてるな。
リンゴに続けるか?




362 名前:デフォルトの名無しさん mailto:sage [2006/01/22(日) 13:30:05 ]
>>361
どれ?

363 名前:デフォルトの名無しさん mailto:sage [2006/01/22(日) 14:24:41 ]
>>361
KWSK

364 名前:デフォルトの名無しさん mailto:sage [2006/01/22(日) 14:25:30 ]
っていうかリンゴってどれだw
スモールコンパイラの制作で学ぶプログラムのしくみ?

365 名前:デフォルトの名無しさん mailto:sage [2006/01/22(日) 19:48:58 ]
>>364
リンゴ本はその通り。
別名綾タソ本


366 名前:デフォルトの名無しさん mailto:sage [2006/01/22(日) 23:16:51 ]
手続き呼び出し/呼び出されの制御はどうするのが一番簡単だと思います?
一時変数・局所データとか考えると色々と面倒……

一時変数については呼び出し側にスタック作っといて、呼び出され側が
勝手に取り出すようにするのが簡単かな?スタックマシンにすると構文木
を解釈するのが面倒臭そうだし……


367 名前:デフォルトの名無しさん mailto:sage [2006/01/24(火) 00:04:05 ]
>>366
作ろうとしているのが機械語吐くコンパイラなのか、バイトコード吐くのか、
Rubyみたいに解析木を実行するタイプなのかもわからんでは何も言えんわな。

>一時変数については呼び出し側にスタック作っといて、呼び出され側が
>勝手に取り出すようにするのが簡単かな?

呼び出し側と呼び出され側でスタックが違うの?

>スタックマシンにすると構文木を解釈するのが面倒臭そうだし……

意味わかんねえっす。どっちみち構文木は解釈しなきゃいけないのでは。



368 名前:366 mailto:sage [2006/01/24(火) 00:46:10 ]
>367
おお、すみませぬ。インタープリタ作ろうとしています。
まずの目標はRubyみたいな解析木を実行するタイプですね。

>呼び出し側と呼び出され側でスタックが違うの?
一時変数の管理責任と、手続呼び出しの動作主体をどのように割り振ろうかな……
と思いまして。前述の例だと
 一時変数の管理責任:呼出側 -> スタック作って管理
 動作主体:呼び出され側 -> 駆動はこちら
とかを考えています。

>意味わかんねえっす。どっちみち構文木は解釈しなきゃいけないのでは。
確かにそうですな……知恵が回らなかった……


結局、
今日一日考えた結果、スタックマシンの連鎖みたいなのを作ってみることにしました。

369 名前:デフォルトの名無しさん mailto:sage [2006/01/24(火) 01:29:56 ]
>>368
実行環境フレームとか言う奴の事さしてんの?>>スタックマシンの連鎖


370 名前:366 mailto:sage [2006/01/24(火) 02:47:12 ]
どっちかっていうと、駆動レコード+スタックマシンといった感じですかね。
(実装の手を抜くために)駆動ごとにスタックマシンを付けた感じ。

371 名前:デフォルトの名無しさん mailto:sage [2006/01/24(火) 20:35:38 ]
お手本がRubyだと、この擦れ的には受けが悪いかもw
おれは第三世

372 名前:デフォルトの名無しさん [2006/01/25(水) 01:20:34 ]
LISP最高!

373 名前:デフォルトの名無しさん mailto:sage [2006/01/25(水) 01:42:38 ]
>>372
なんでそこでLupinと言ってぼけないだよ

374 名前:366 mailto:sage [2006/01/25(水) 22:18:52 ]
そういや、単純なスタックマシンだと(いくつ実引数を渡すかは関数側で決まるから)
オーバーロードでひどい目に会いそうですな……

取りあえずはスタックのリストを作って回避しようかと考えていますが、他にどんな
アイディアがあります?


375 名前:デフォルトの名無しさん mailto:sage [2006/01/25(水) 22:24:52 ]
オーバーロードを何時解決するかによる。コンパイル時に全部解決するなら問題あるまい。

376 名前:デフォルトの名無しさん mailto:sage [2006/01/25(水) 23:18:18 ]
>>375
メソッド名とシグニチャが結びついてれば実行時解釈でも問題ないしね。


377 名前:366 mailto:sage [2006/01/25(水) 23:20:36 ]
そういやそうですな。

でも、折角だから多値戻しを実装してみたい気もするんですよね……
Rubyみたいに配列を戻す手もありますが。




378 名前:デフォルトの名無しさん mailto:sage [2006/01/25(水) 23:37:20 ]
あまり欲張らない方がいいよ。複雑にしすぎると作ってて嫌になる。

379 名前:366 mailto:sage [2006/01/26(木) 00:06:21 ]
ははは、ご心配なく。かれこれ1年以上弄んでいますので、嫌んなるのは慣れっこです。
仕事だったら素直にC++使いますし。

まあ、未だに駆動が回んなくて鬱ですが…… “1+1”ができるのはいつになることやら……


380 名前:デフォルトの名無しさん mailto:sage [2006/01/26(木) 18:25:17 ]
ルビーに学べ

381 名前:(ぱ) mailto:sage [2006/01/26(木) 21:14:22 ]
どうもです。上のほうで出ていた「ライターのM」です(たぶん)。

Rubyのような解析木実行タイプの言語を作ろうとしていて、かつ、独自スタックも
使うつもりなら、うちのcrowbarなんかは参考になりませんか?

kmaebashi.com/programmer/devlang/

>>368
>一時変数の管理責任:呼出側 -> スタック作って管理
>動作主体:呼び出され側 -> 駆動はこちら

ここで言っている「一時変数」がローカル変数のことであれば、管理責任は
呼び出され側にあるのでは。呼び出し側は呼び出され側のローカル変数を
知らないからです。

引数についてであれば、呼び出し側で領域を確保するにしても、別段それを
スタックに積む必要はないように思います。
crowbarの場合、駆動レコードごとに、変数名と値の対応表を持っています
(ver.0.3以降は、クロージャの実現のためにスコープチェーンを持っているので
ちょっとややこしいですが)。関数呼び出しでは、呼び出し時に、呼び出され側の
駆動レコード(CRB_LocalEnvironment)を作成し、その中に、ローカル変数として、
実引数の値を突っ込んでいるだけです。

引数やローカル変数の領域をスタックに確保するという実装ももちろん考えられますが
(crowbarでは代入により実行時にローカル変数が作られるのでそれはできなかった)、
その場合、引数は呼び出し側で積むことになるのでは。

いずれにしても、関数呼出しごとにスタックを持つ必要なないと思うのですが、
どうでしょうか。crowbarは演算用の独自スタックを持っていますが、スタックは1本です。
まあ、crowbarのスタックは足りなくなるとrealloc()するので、そのへんの効率低下を
嫌って関数呼び出しごとに持つ、というのならわかりますけど。

382 名前:(ぱ) mailto:sage [2006/01/26(木) 21:22:58 ]
ついでに上の方の質問に。

>>91
>ライターのM氏のページで、Cでの実装だと型そのものはUNIONにまとめてる感じでした。
>やっぱり処理系が扱う変数型をまとめてUNIONにしてしまってフラグ変数で型を見分けて扱うというのが一般的なんでしょうか?

一般的かどうかは知りませんが、crowbarでは値を保持するために2箇所で共用体を使っています。
変数の値を直接保持するCRB_Valueと、変数から指された先のヒープ中にある、
CRB_Objectです。

>そのときに、たとえばWinapiに対する拡張とか、製作時点で未知のオブジェクトに対応する場合はどういう方向になるんでしょうか?

Winapiに対する拡張とかを狙って、ネイティブポインタ型というのを導入しています。
luaのユーザデータ型も同じようなもののように見えます。

>>96
>C言語的構造体指向OO風味だと、メモリの配置さえあってれば問題なく下位の構造体にアクセスできるから、
>なんとか構造体EXとかは可能だと思う。関数ポインタつければ仮想関数もどきとかもできますぜ。

これは、crowbarで言うところのCRB_Objectについては可能でも、CRB_Valueについては
不可能ですよね。

383 名前:366 mailto:sage [2006/01/27(金) 00:10:43 ]
>381
情報サンクスです。考え方のところとか色々と参考になります。

ただ、自分の目指しているのは型なし&プロトタイプ指向ですので、やっぱりちょっと
ポイントが違うようですね。まあ、その違いを見るのも楽しいですが。

>ここで言っている「一時変数」がローカル変数のことであれば、
いえ、関数の戻り値ですね。最初は関数の戻り値を次の継続に直接渡そうかと
考えていたのですが、そうすると今の自分のアイディアだと(継続のずっと先にある)
ブロックのローカル変数から実引数を取ってくるのが面倒にだったので、少し悩んでました。
スコープチェーン作って管理するのもいいのですが、もっと簡単な方法が無いかな……と
いうことで、取りあえずはスタックマシンを利用する方法でトライすることにします。

>いずれにしても、関数呼出しごとにスタックを持つ必要なないと思うのですが、
call/ccを実装したいと思っているのですが、その都度スタックを保存するのも面倒だし
いっそのこと全部の継続にスタック持たせちまえ、という乱暴なアイディアから来ています。
……まだ実装できていないので、本当にうまくいくのか不明ですが……


384 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 00:27:50 ]
アイデアだけではなぁ、
なぜ既にあるものを使わん?
アフォ?

385 名前:366 mailto:sage [2006/01/27(金) 00:37:09 ]
>384

既にある言語では無いから作っているんだけど……Schemeは近いものを感じるけどね。

あと、勉強という意味では車輪の再発明も重要だよ。


386 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 02:00:33 ]
一年以上やって1+1も出来ないんだろ?
勉強になってるか疑問だな。

>ただ、自分の目指しているのは型なし&プロトタイプ指向ですので、やっぱりちょっと
>ポイントが違うようですね。まあ、その違いを見るのも楽しいですが。

形無し&プロトタイプ指向だからポイント違う?
何言ってんだお前。

387 名前:366 mailto:sage [2006/01/27(金) 02:45:51 ]
> 一年以上やって1+1も出来ないんだろ?
> 勉強になってるか疑問だな。

あら、そう? 1+1てけっこう大変だよ?
まあ、継続とか移譲とかグラフとかオートマトンとか、回り道が多いちゃ多いがね。
それもまた勉強。


>形無し&プロトタイプ指向だからポイント違う?
>何言ってんだお前。

どういう意味?




388 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 09:10:54 ]
もういいから来るな。
一年以上で未だ1+1もできないほど頭悪いんだろ?
これから先何年もアホ質問書き込まれるかと思ったらゾッとする。

389 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 12:24:31 ]
継続でスタック保存するのが面倒ってんなら、駆動レコードを全部
ヒープに置くって手もあるが。それだとcall/ccは駆動レコード
チェインの頭の掴んでおくだけだよ。
性能を気にしてるわけでもなさそうだし、駆動レコードごとに
スタックなんて面倒なことをなぜするのかよくわからない。


390 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 13:54:36 ]
Lisp使いはリストを見ると車とかCD-Rとかを使い出す

391 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 13:58:48 ]
>>390
どうして車とCDRに発想が結びつくの?

392 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 14:28:07 ]
なにこの変なマジレス

393 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 14:39:34 ]
Lisp使いはCD-Rのことを「クダー」と読むんだな

394 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 17:54:48 ]
久多良木信者はLisp使いか否か?

395 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 18:21:20 ]
>>391
しらないけどcarとcdrだからじゃない?

396 名前:(ぱ) mailto:sage [2006/01/27(金) 20:21:31 ]
>>383
>ただ、自分の目指しているのは型なし&プロトタイプ指向ですので、やっぱりちょっと
>ポイントが違うようですね。まあ、その違いを見るのも楽しいですが。

crowbarは思いっきり型なし&プロトタイプベースのつもりですが。

>いえ、関数の戻り値ですね。最初は関数の戻り値を次の継続に直接渡そうかと
>考えていたのですが、そうすると今の自分のアイディアだと(継続のずっと先にある)
>ブロックのローカル変数から実引数を取ってくるのが面倒にだったので、少し悩んでました。

継続をやりたいということ自体初耳なわけですが。

継続は詳しくないので以下見当外れならすみませんですが、
「Rubyみたいな解析木を実行するタイプ」で、解析木を再帰で辿っているとすれば、
「Cのスタックどうするの?」という疑問が出てきます。
「関数の戻り値を次の継続に直接渡そう」ということだから、CPS変換を前提にしている?
だとすればそれはもう「Rubyみたいな解析木を実行するタイプ」とは言えないのでは。

>>389
関数内での、計算途中の値を積んでおくスタックのことなんじゃないでしょうか。


397 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 22:07:07 ]
1+1ねぇ、マジレスするけど、
yacc触りはじめてその日でできたよw



398 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 22:27:40 ]
コンパイラ構成法の一番最初の項目が電卓だからな。

399 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 22:43:00 ]
1+1が一年以上できないとか言ってるなら、いったんScheme作ればいいのに。
コアな部分に限れば仮想マシンとコンパイラそれぞれ一日で書けるよ。
そしたら作りたい俺様言語で何をどうするかも少しは見えてくるんじゃね?


400 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 22:45:01 ]
>>398
うちの大学は字句解析だったよ…。

401 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 23:53:04 ]
>>398
漏れが最初にやったのは逆ポーランド式の理解だった・・・懐かしいな


402 名前:デフォルトの名無しさん mailto:sage [2006/01/28(土) 00:42:37 ]
きっかけを大別すると、
・yacc/lexまたはbison/flexで独学
・大学や専学でコンパイラ/インタプリタの講義
って感じなのかな?

403 名前:デフォルトの名無しさん mailto:sage [2006/01/28(土) 00:43:46 ]
授業でちょっとやったけど、あまりに講義資料・内容がヘボかったから独学に切り替えたなぁ。

404 名前:デフォルトの名無しさん mailto:sage [2006/01/28(土) 00:58:28 ]
情報処理の講師の説明よりも、数学の講師の説明の方が、実は分かりやすかったりするんだよな。w


405 名前:デフォルトの名無しさん mailto:sage [2006/01/28(土) 01:02:41 ]
アルゴリズムの大半は、数学の勉強だからな

406 名前:366 mailto:sage [2006/01/28(土) 04:22:49 ]
しまった……中途半端な情報で混乱させていますね。すみません

>389
今作っている実装だと、駆動レコードチェイン+駆動レコード内のスタックといった
感じにしています。>396の指摘通りですね……と言っても詳しく説明していないから
わかんないよね。ごめん

>396
>crowbarは思いっきり型なし&プロトタイプベースのつもりですが。
失礼しました。まだ読み込んでいないので……

>「Rubyみたいな解析木を実行するタイプ」で、解析木を再帰で辿っているとすれば、
>「Cのスタックどうするの?」という疑問が出てきます。

今のところ、Cの関数処理プロセスに頼らない(再帰を使わない)で、
・解析木から継続の連鎖を作る
・継続を駆動する
という駆動を外部からループで回そうとしています。

>399
そうなんだけど、作りたいのはSchemeじゃないし、Schemeからちょっと離れているし。
……とはいっても、練習に作ってみるのもいい勉強かな……

>388
はあ。

407 名前:デフォルトの名無しさん mailto:sage [2006/01/28(土) 04:27:43 ]
1年で1+1が作れない、最低限の理解力すら無い人間が406を書いたと思うと
その恐ろしい知ったかぶりに愕然とする



408 名前:デフォルトの名無しさん mailto:sage [2006/01/28(土) 04:45:28 ]
しばらく放っとけないのか?

409 名前:デフォルトの名無しさん mailto:sage [2006/01/28(土) 06:12:16 ]
俺は407の方の噛みつき具合いの方が愕然とする。


410 名前:デフォルトの名無しさん mailto:sage [2006/01/28(土) 08:15:29 ]
>>409
そう? このスレの伝統だと思ってた。

411 名前:デフォルトの名無しさん mailto:sage [2006/01/28(土) 10:56:44 ]
1+1 って、意外と難しいよ。特に数値オブジェクトを + メソッドで加算する場合……とか。
経験ない人が独学でやるには、1年はちょっとキツ過ぎじゃないか? とか擁護してみる。

412 名前:デフォルトの名無しさん mailto:sage [2006/01/28(土) 11:08:31 ]
まあそういうのは人による部分が大きいよ。
CSのバックグラウンドあってOOにドップリつかった人がやり始めれば理解するのに1日かからないだろうし、逆にこれからプログラミングを始めますって人には1年じゃ無理だろうし。
極端に言えばね。
一口に何日で理解したとか何年かかっても理解できないとかから能力を量ってしまうのはナンセンスだとは思う。

413 名前:デフォルトの名無しさん [2006/01/28(土) 11:18:12 ]
10秒デデキマツタ!

if(strcmp(str,"1+1"))
printf("2\n");


414 名前:デフォルトの名無しさん mailto:sage [2006/01/28(土) 11:38:52 ]
>>413
情報サンクスです。考え方のところとか色々と参考になります。

ただ、自分の目指しているのは型なし&プロトタイプ指向ですので、やっぱりちょっと
ポイントが違うようですね。まあ、その違いを見るのも楽しいですが。


415 名前:デフォルトの名無しさん mailto:389 [2006/01/28(土) 12:32:42 ]
>>406
> 今のところ、Cの関数処理プロセスに頼らない(再帰を使わない)で、
> ・解析木から継続の連鎖を作る

それをCPS変換というんじゃ…
でも素直にCPS変換したらスタックなんて出てこないと思うんだけど
(「計算途中の値」も全て継続への引数になる)。
それとも複数の引数を渡す際に、既に計算した引数の値を一時保存
しておくエリアってことかな。それを「スタック」と呼ぶのはどうかと
思うが (FILOである必要がないから)。

スタックは、普通の関数呼び出し→リターンに特化した一種の最適化
なんだよ。>>406 が何か特別な最適化のアイディアを試したいなら
別だが、原理を理解するために書いているなら、まず基本的な
CPS変換→実行系を動かしてみることをお薦めする。判断に迷うところは
とりあえず簡単に実装できるほうで書いてみる。書いてみないとわからない
ことってたくさんあるからね。とにかく動かしてから、別のアイディアを
試してみればいい。



416 名前:デフォルトの名無しさん mailto:sage [2006/01/28(土) 12:58:32 ]
>411
そうだよね……自分の場合は駆動に引っ掛かっています。オブジェクトとメソッドを
等価に扱おうとして、『どうやって駆動すりゃいいの?』というところで散々悩んでいます。
あとは名前解決とか変数呼び出しとか……

>412
OOにはけっこうドップリ漬かっているんですけどね。
ここまで彷っているのは『当たり前と思っていた駆動とか関数呼び出しが、いざ
やってみると全然当たり前じゃなかった』というのが大きいですかね。


>407, 413, 414
へえ?

417 名前:デフォルトの名無しさん mailto:sage 366 [2006/01/28(土) 13:16:19 ]
>415
>それをCPS変換というんじゃ…
……そうだった。

> でも素直にCPS変換したらスタックなんて出てこないと思うんだけど
最初は素直にCPS変換していたんですけど、レキシカルスコープやろうとしたときに
(オレ言語のアイディアが邪魔して)うまくアクセスリンクが処理できなかったので、
スタック……というか単なるリストも併用する形を検討しています。

> まず基本的なCPS変換→実行系を動かしてみることをお薦めする
やっぱりそっちの方が近道かな……もうちょっと悩んでみます。



418 名前:366 mailto:sage [2006/01/28(土) 13:38:37 ]
>>415
情報サンクスです。CPS変換のところとか色々と参考になります。

ただ、自分の目指しているのはCの関数処理プロセスに頼らない(再帰を使わない)ですので、やっぱりちょっと
ポイントが違うようですね。まあ、その違いを見るのも楽しいですが。

419 名前:デフォルトの名無しさん mailto:sage 366 [2006/01/28(土) 13:41:57 ]
ありゃ、騙りも出て来たか……これだからIDの無い板は駄目だよな。
そろそろ名無しに戻るか。

>418
ふうん?

420 名前:デフォルトの名無しさん mailto:sage [2006/01/28(土) 13:42:19 ]
>>419
ふうん?

421 名前:デフォルトの名無しさん mailto:sage [2006/01/28(土) 13:48:08 ]
彼は型無し&プロトタイプ指向の言語に対して

>ただ、自分の目指しているのは型なし&プロトタイプ指向ですので、やっぱりちょっと
>ポイントが違うようですね。まあ、その違いを見るのも楽しいですが。

とか言ったのが一番面白かった。最高にバカ丸出しで。


何か言われたら、はあ?とかへえ?とかふうん?とか、
何か言い返さないと気がすまないってのもポイント高し。

422 名前:デフォルトの名無しさん mailto:sage 366 [2006/01/28(土) 13:50:38 ]
>>421
で?

423 名前:デフォルトの名無しさん mailto:sage [2006/01/28(土) 13:58:54 ]
>>422
10ポイントアップ

424 名前:デフォルトの名無しさん mailto:sage [2006/01/28(土) 17:51:31 ]
プライドだけ高そうだね。技術は(ry

425 名前:デフォルトの名無しさん [2006/01/28(土) 17:55:29 ]
ここの住人はプライド高いからナァ
ただし、技術は(ry


426 名前:デフォルトの名無しさん mailto:sage [2006/01/28(土) 18:08:16 ]
お前の事か?

427 名前:デフォルトの名無しさん mailto:sage [2006/01/28(土) 18:52:11 ]
プライドが高くなるのは仕方が無いのでは?
PGの四大欲求の一つである、言語の作成をやってるわけだし
OSと言語とファイルシステムとAIで良かったんだっけ?




428 名前:デフォルトの名無しさん mailto:sage [2006/01/28(土) 19:03:38 ]
OS と言語と AI は分かるけど、ファイルシステムってのは何で?
4 番目に来るのは、Emacs とか Smalltalk みたいな「環境」じゃないかな。

429 名前:デフォルトの名無しさん mailto:sage [2006/01/28(土) 23:43:42 ]
OSと言語は分かるけど、AIってのは何で?
アフォ?

430 名前:デフォルトの名無しさん mailto:sage [2006/01/28(土) 23:48:46 ]
ちょwww「四大欲求」てwww

431 名前:デフォルトの名無しさん mailto:sage [2006/01/28(土) 23:58:48 ]
ファイルシステムってOSの一部じゃないの?

432 名前:デフォルトの名無しさん mailto:sage [2006/01/29(日) 00:06:41 ]
DOS

433 名前:デフォルトの名無しさん mailto:sage [2006/01/29(日) 00:50:20 ]
どっちかってーと、OS・言語・マイクロコード(CPUの)・BIOS(とかEFI)
とかの方が

434 名前:デフォルトの名無しさん mailto:sage [2006/01/29(日) 01:50:22 ]
それはただLow Levelな方をかき集めただけじゃん

435 名前:デフォルトの名無しさん mailto:sage [2006/01/29(日) 01:55:09 ]
OS、言語、データーベース、ゲームじゃね?w

436 名前:デフォルトの名無しさん mailto:sage [2006/01/29(日) 01:58:33 ]
AIは、作れなさそうだから実際に作ろうとまでは思わないが、
願望を持つ奴は多いと思う。
ゲーム、言語、OS、AIだろう。

437 名前:デフォルトの名無しさん mailto:sage [2006/01/29(日) 06:09:51 ]
この人、数学者としてはいまいちなのかもしれないけど、
計算機科学の実情についてはよく分かってるね。
www.ritsumei.ac.jp/se/~takayama/MathEssays/essays.html

>>428
どうでもいい話だけど、現代においてはOSこそ「環境」ではないのかな。



438 名前:デフォルトの名無しさん mailto:sage [2006/01/29(日) 06:23:47 ]
>>437
この人は自分が高いレベルにいすぎて、考え方の基準が高すぎるね。
確かに数学者を目指すレベルからすれば、計算機科学はおちこぼれが
流れる分野なのかもしれないが、一般の高校生から見れば
やっぱり、数学が必要な学科だよ。
単位とるにも数学的なものの考え方が必要な科目ばかりだしね。
一般の高校生の99%は大学でどちらかと言えば数学嫌い
になるだろうし。
一般の高校生のレベルと数学者のレベルを混同してるように見える。

439 名前:デフォルトの名無しさん mailto:sage [2006/01/29(日) 06:30:44 ]
そりゃ、京都大学理学部出身から、立命館大学情報工学科みりゃ
レベル低くも見えるだろ。
それでもそこにいる学生は相対的に数学が得意で好きだった学生
なんだということが理解できないんだろうな。

440 名前:デフォルトの名無しさん mailto:sage [2006/01/29(日) 09:23:25 ]
理学と工学は似て非なるものだしな。

441 名前:デフォルトの名無しさん mailto:sage [2006/01/29(日) 15:33:57 ]
工学で一度数学の必要性を身に沁みるとまじめに勉強する気にもなるもんだが。
一度数学の講義を受けないとそもそも数学の必要性に気付けない罠。


442 名前:デフォルトの名無しさん mailto:sage [2006/01/29(日) 15:41:09 ]
>>436
ああなるほど、ようやく分かった
人工無能の事ではなく、ホントの人格の事だったのか

人間の場合は四つの判断力を持ってるからな。
直感と理性の再現だけならどうにかなるかもしれないが、
感情と欲求の再現となると、なかなか難しいだろな


443 名前:デフォルトの名無しさん [2006/01/29(日) 16:30:38 ]

PGの3第欲求

(1)OS
(2)言語
(3)ハーレム

この辺りが本当の所だろう。


444 名前:デフォルトの名無しさん mailto:sage [2006/01/29(日) 16:34:41 ]
で、エロゲで代用するわけか

445 名前:デフォルトの名無しさん mailto:sage [2006/01/29(日) 19:55:35 ]
プログラマをPGと略す奴にろくな奴がいない

446 名前:デフォルトの名無しさん mailto:sage [2006/01/29(日) 20:06:05 ]
>>443
OSも言語も興味ないやつはいくらでもいそうだけどな。

447 名前:デフォルトの名無しさん [2006/01/29(日) 20:15:58 ]
(1)金
(2)酒
(3)ハーレム



448 名前:初心者 [2006/01/29(日) 21:13:56 ]
質問です。
Yaccとかで論理式の短絡評価を行う常套手段はどのようなものでしょうか?
例えば、if(a==b||c==d) でa==bが確定するとc==dの評価はスキップ可能ですが、
Yaccとかだと、先にa==bとc==dが認識されてしまうと思うのです。

449 名前:デフォルトの名無しさん mailto:sage [2006/01/29(日) 21:53:31 ]
>>448
yaccが生成するのは構文解析器。
意味解析は通常は構文解析で構文木を作った後のステップであって、yaccはやってくれません。

[文字列]→字句解析→[トークン列]→構文解析→[構文木]→意味解析→[一時コード]→最適化→[ましなコード]→コード生成→[出力コード]
というように道のりは長い。
yaccがやってくれるのは構文解析だけ(でも構文解析は最適化の次に面倒くさい部分なので大助かり)。

450 名前:デフォルトの名無しさん mailto:sage [2006/01/29(日) 23:39:37 ]
>>447
それだ

451 名前:デフォルトの名無しさん mailto:sage [2006/01/31(火) 00:42:32 ]
まあ、たいていの入門書ではyaccの最初のサンプルは電卓で、
そのプログラムではアクションの中で計算もやっちゃってることが多いから
>>448 のように思ってしまうのも無理はないのかも。

制御構造を持つちゃんとしたプログラミング言語を作ろうと思ったら、
yaccのアクションでは解析木を作るだけにしておいて、評価は後で行います。


452 名前:448(初心者) [2006/01/31(火) 02:22:55 ]
>>449,451
そうでしたか。奥が深いですね。
一瞬、言語の仕組みが分かったような錯覚をしましたが、
本格的なものと電卓的なものとでは、ずいぶんとギャップがあるということが
わかりました。

ありがとうございました。

453 名前:デフォルトの名無しさん mailto:sage [2006/01/31(火) 02:33:12 ]
C# コード出力するコンパイラコンパイラって、もしかして未だ無い?

454 名前:デフォルトの名無しさん mailto:sage [2006/01/31(火) 02:36:00 ]
>>452
その錯覚はあながち間違いじゃないよ。
449で道のりは長いとか書いちゃったけど、実際には構文木まで作れれば終わったようなもんだし。
あとはその周辺の理論的な考察とか最適化の手法は好きなように学んだらいいだけ。

455 名前:デフォルトの名無しさん mailto:sage [2006/01/31(火) 07:15:12 ]
>>453
多分ある。というかC#でコンパイラ作るみたいな本がなかったっけか。


456 名前:デフォルトの名無しさん mailto:sage [2006/01/31(火) 12:20:28 ]
>>453
たしかANTLRが対応してたような気が

457 名前:448(初心者) [2006/01/31(火) 23:15:15 ]
>>454
どうもです。すこしづつ勉強して行きたいと思います。
(老後の趣味です。ハハハ)

ところで、Yaccってコンパイラコンパイラ等と呼ばれたりもしますが、
結構誇張された言い方とも受け取ったのですが、言語専門家の方は
どのように感じますか?

(技術的な話でなくてすいません。)



458 名前:デフォルトの名無しさん mailto:sage [2006/01/31(火) 23:30:38 ]
そんなことを聞いてどうする

459 名前:デフォルトの名無しさん mailto:sage [2006/02/01(水) 01:12:13 ]
コンパイラコンパイラは言い過ぎ
パーサジェネレータの方がしっくり来る

460 名前:デフォルトの名無しさん mailto:sage [2006/02/01(水) 02:09:03 ]
なんで2chの回答者って偉そうなのばっかりなんですか?

461 名前:デフォルトの名無しさん mailto:sage [2006/02/01(水) 02:16:09 ]
Copying でも Generational でも、オブジェクトを移動させる GC で、
移動不可なデータ(ロックとか)ってどう扱ってるのでしょうか。
何かおいしい資料(論文とか)ありましたら教えて下さい。

462 名前:デフォルトの名無しさん mailto:sage [2006/02/01(水) 06:49:40 ]
移動不可なデータのみを別に扱っておけば良いのでは?
例えば、移動不可データ専用の予備領域を取っておくとか


463 名前:デフォルトの名無しさん mailto:sage [2006/02/01(水) 10:08:04 ]
>>460
質問者にとっては初めての質問でも、答える方は3度目、4度目というのが当たり前。
日常では温厚な人間でも切れ気味になる。顔が見えりゃいいんだけどね。
おれは一度目にした質問にはレスしないことにしている。

464 名前:デフォルトの名無しさん mailto:sage [2006/02/01(水) 11:48:51 ]
members.at.infoseek.co.jp/zzyyb/gc/incremental-collector.html
のインクリメンタルガベコレの説明ですが、
GCが処理しているカレントオブジェクトをプログラムが変更しちゃう場合が
言及されていないのですがまさにその場合が問題である気がします。
カレントオブジェクトが保持する別オブジェクトへの参照のうち、既に処理
した参照が書き換えられるとおかしくなると思うんですが。


465 名前:デフォルトの名無しさん mailto:sage [2006/02/01(水) 20:10:10 ]
>>462
どうもありがとう。後で思いついたんですが、世代別なら一番古い世代に置くというのも手ですね。

466 名前:デフォルトの名無しさん mailto:sage [2006/02/01(水) 21:42:14 ]
>>460
ヒント:ルサンチマン


467 名前:デフォルトの名無しさん [2006/02/01(水) 22:19:13 ]
>>463
ハツモノでもあんたのレスはいらんよw



468 名前:デフォルトの名無しさん mailto:sage [2006/02/01(水) 23:38:35 ]
>>461
俺もちゃんと読んでないけどひとまず貼っとく。
www.nminoru.jp/~nminoru/java/cms/concurrent_mark_sweep.html#45


469 名前:デフォルトの名無しさん mailto:sage [2006/02/02(木) 00:59:19 ]
www.shos.info/develop/oo/dscsnptn.html#chapter4

>464
GCが処理しているカレントオブジェクト
 灰色

カレントオブジェクトが保持する別オブジェクトへの参照のうち、既に処理した参照
 灰色 -> 黒 または
 灰色 -> 灰色

灰色 -> 灰色については言及されていないけど、どちらの種類のリンクともうまく処理されます。


470 名前:デフォルトの名無しさん mailto:sage [2006/02/02(木) 01:46:04 ]
灰色→白は?

カレントオブジェクトに参照A,B,Cがあってこの順で処理するとして、
Aをキューに追加して灰色にした後、Bを処理しようとしているときに
別プログラムがAを白への参照に書き換えてしまったら?


471 名前:デフォルトの名無しさん mailto:sage [2006/02/02(木) 23:59:03 ]
>470
ごめん、ちょっと勘違いしていたみたい。

・カレントオブジェクトの処理(参照先の灰色化 & 参照元の黒化)はアトミックに処理する
・カレントオブジェクトが参照された場合、処理を中断してキューの最後に持ってくる
・カレントオブジェクトは黒と同様に処理する
あたりはどう?


472 名前:デフォルトの名無しさん mailto:sage [2006/02/03(金) 00:49:26 ]
>>471
最後でしょうか。つまりこの条件においては黒→白取り付けと同様に考える
(のでその後に書いてある各手法のようなバリアを張る)と。
前二者はオーバーヘッドが重すぎますよね。

このページ、過渡状態を無視せずにもうちょっと厳密に書いてくれていれば
よかったんですけどねえ。


473 名前:デフォルトの名無しさん mailto:sage [2006/02/04(土) 01:50:29 ]
まずカレントオブジェクトを黒にしてから参照先を灰色にすれば、カレントオブジェクトを
特別扱いしなくて済むかな?


474 名前:デフォルトの名無しさん mailto:sage [2006/02/04(土) 02:13:51 ]
ちょっと考えたら分かることだろ。

475 名前:デフォルトの名無しさん mailto:sage [2006/02/04(土) 02:48:08 ]
>>473
処理中のカレントオブジェクトが
「それが参照している先は必ず灰色か黒」という黒の定義に反することになるのが
気持ち悪い。


476 名前:デフォルトの名無しさん mailto:sage [2006/02/04(土) 10:51:06 ]
>>472
そのページはマルチスレッドは考えてないでしょ。
シングルスレッドなら普通 >>471 の 1 にするかと。

477 名前:デフォルトの名無しさん mailto:sage [2006/02/04(土) 13:02:40 ]
>>475
アホかお前



478 名前:デフォルトの名無しさん mailto:sage 情報の無い発言には付き合いません [2006/02/04(土) 17:24:37 ]
>475
黒の定義を変えるヨロシ
「GCから『それが参照している先は灰色か黒しか存在しない』と認識されるオブジェクト」
かな?


479 名前:デフォルトの名無しさん mailto:sage [2006/02/07(火) 00:59:07 ]
スタックアロケーションには定数時間が必要なのに対し、
生きているオブジェクトの数だけに比例する時間がかかるGCは
メモリを大きく取ることでいくらでも1セルあたりのGCコストを減らせますよね。
だからGCはスタックアロケーションよりも速いっていうのは間違ってますか?

480 名前:デフォルトの名無しさん mailto:sage [2006/02/07(火) 01:39:53 ]
全体的にどういう計算、それ?

481 名前:デフォルトの名無しさん mailto:sage [2006/02/07(火) 10:54:53 ]
>>480
例えばコピーGCでメモリのサイズをM、GCで生き残ったオブジェクトのサイズをA
とすると、GCにかかる時間は定数Cを使ってCAになります。
回収されたオブジェクトのサイズはM-Aなので、これで割るとCA/M-Aになります。
スタックのポップだと一般にサイズ当たりにかかる時間は定数です。
コピーGCではMを大きくすることで、いくらでもコストが減るので
"Garbage Collection Can Be Faster Than Stack Allocation" Andrew W. Appel
ということらしいです。

482 名前:デフォルトの名無しさん mailto:sage [2006/02/07(火) 12:22:38 ]
よくわかんないけど
その理論だとスタックの最大サイズM(仮想メモリ使えば∞と思ってよい)
に対して同じ式が出てくるんじゃないか?
スタックのポップのコストがサイズ当たりってことは、
ポップのコストはサイズに比例って意味だよね?

483 名前:デフォルトの名無しさん mailto:sage [2006/02/07(火) 12:44:12 ]
>>482
スタックのポップは引き算すればいいだけなので、ほんとは比例しないんですが
使い終わる度にポップするのでサイズに比例するってことです。

スタックのポップのコストにスタックの最大サイズは関係ありません。

484 名前:デフォルトの名無しさん mailto:sage [2006/02/07(火) 13:01:35 ]
>479
それって、前提条件が 1スタック=1オブジェクト になっていない?
ただ単に「GCによるオーバーヘッド > まとめてメモリ回収する時間節約」つうてる
だけのような気がする

485 名前:デフォルトの名無しさん mailto:sage [2006/02/07(火) 13:28:06 ]
>>484
すいませんがよく意味が分からないです...

VMのスタックをポップせずに一杯になったときにGCを起動した方が
性能がいいんじゃないかって話です。
環境をヒープにコピーしたり末尾再帰を最適化したりしなくてすみます。
ただコンパクションしないと断片化するのでGCは結構重そうです。

>>482 のようにメモリが無限にあるのなら GC自体必要ないのでコストは0です。
で、現実問題としてどんなもんなのかなあと。Chickenで実装されているらしいのですが...

486 名前:デフォルトの名無しさん mailto:sage [2006/02/07(火) 13:35:44 ]
元論文をつまみ読みして想像するに
・Mはメモリのサイズというよりは、今までアロケートしたセルのサイズ
・「スタックアロケーション」といっているのはヒープに確保したセルを明示的に開放する話。スタックは関係ない。
・「スタック〜」では開放するセルの個数に比例したコストがかかるが、
 コピーGCでは生き残ったセルの個数に比例したコストがかかる。
・コピーGCでは開放するセルあたりのコストはCA/M-A なので、
 開放するセルあたり1インストラクションより小さくなることすらある。

487 名前:デフォルトの名無しさん mailto:sage [2006/02/07(火) 13:57:28 ]
>>486
> ・Mはメモリのサイズというよりは、今までアロケートしたセルのサイズ
MはコピーGCで使われるメモリ領域です。つまり 2Mのメモリが必要です。

> ・「スタックアロケーション」といっているのはヒープに確保したセルを明示的に開放する話。スタックは関係ない。
どちらにしても explicit freeingはセルの個数(開放する回数)に比例したコストがかかります。
この論文でも特にヒープかスタックか特定していないような気がします
5章でもスタックとヒープを比較しているので、どちらかといえばスタックかなあと
間違ってたらすいません。

>・「スタック〜」では開放するセルの個数に比例したコストがかかるが、
> コピーGCでは生き残ったセルの個数に比例したコストがかかる。
>・コピーGCでは開放するセルあたりのコストはCA/M-A なので、
> 開放するセルあたり1インストラクションより小さくなることすらある。
その通りです。
他の論文にも StackGCの性能がよいと書いてあったのですが
Chicken くらいしか実装例を知らないのでどうなのかと思ったんです。
飯喰ってきます。



488 名前:484 mailto:sage [2006/02/07(火) 14:49:37 ]
ごめん。
意図しているのは >486 の通りね。

GCによるオーバーヘッド => GCでの生き残ったセルの個数に比例したコスト
まとめてメモリ回収する時間節約
=> スタックでの開放するセルあたりのコスト - GCでの生き残ったセルの個数に比例したコスト

といった感じかな?

489 名前:デフォルトの名無しさん mailto:sage [2006/02/08(水) 14:42:58 ]
>>481
>これで割るとCA/M-Aになります。

うんうん。なるほど・・・

ところで、その割った「値」っていうのは、
一体何を意味している数なのかな?


490 名前:デフォルトの名無しさん mailto:sage [2006/02/08(水) 17:20:13 ]
>>489
そのまんま「回収したサイズ当たりの計算量」です。

一般的なコピーイングでは 2Mのメモリが必要ですが、explicit freeing
と効率が同じになるサイズNを超す生存オブジェクトを許さないのならば M + Nで済みます。
(コピーGCでは生存オブジェクトのサイズに比例したコストがかかるので、
Nを超えると explicit freeingの方が効率的になるということです。)
生存オブジェクトのサイズがNを超えたらスタックオーバーフローにします。
で、この論文の例の場合 M = 7Nなので 8Nのメモリが必要となります。
これは コンスセル一つ 3ワードという前提の上での計算です。
VMスタックにこの GCを使った場合、環境フレームの大きさは固定では
ありませんがほとんどの場合 3ワードよりも大きいので、M/Nはもっと大きいです。

という訳で生存オブジェクトに対して十分大きなメモリが確保されないと
GCの優位性は保たれないので、現実問題としてどうなのかと思ったのです。
20年前の論文なのでもっと流行っててもよさそうなものですし
(停止時間が長いという欠点はありますが)。

491 名前:デフォルトの名無しさん mailto:sage [2006/02/08(水) 19:20:52 ]
コピーGCでは1回のGCのコストがヒープ領域の大きさに依存しないので、
ヒープ領域が大きいほどGC回数が減ってGCのオーバヘッドが小さくなる

ということ自体は別に直感に反してないし、流行る流行らないの話ではない
と思うな。他の要因がなければヒープ領域は大きいに越したことはないに
決まってるし。

492 名前:デフォルトの名無しさん mailto:sage [2006/02/08(水) 19:34:11 ]
>>490
>現実問題としてどうなのか
が知りたいなら、>>479の時点でそう書け。
学生がゼミの宿題で悩んでるのかと思って
時間割いちまったじゃねぇか。

493 名前:デフォルトの名無しさん mailto:sage [2006/02/08(水) 20:30:01 ]
知ってる人には当たり前の内容で
知らない人には何を言ってるかわからない説明力。

494 名前:デフォルトの名無しさん mailto:sage [2006/02/08(水) 20:42:14 ]
>>491
その通りなんですが、スタックをヒープとみなしてポップせずにGCで回収してしまおう
って話なんです。何度も書きますが。
VMのスタックをGCで回収させる処理系って何があるでしょうか。

>>492
ごめんなさい。2chにこんな優しい人がいるなんて。

495 名前:デフォルトの名無しさん mailto:sage [2006/02/08(水) 21:00:24 ]
さあどんどん後出し設定が出てきますよ。

496 名前:デフォルトの名無しさん mailto:sage [2006/02/08(水) 22:22:51 ]
>>485
>VMのスタックをポップせずに一杯になったときにGCを起動
>>494
>スタックをヒープとみなしてポップせずにGCで回収

それって普通はスタック上で確保するフレームを
ヒープ上に確保するのと一緒だから
パフォーマンスが悪くなることはあっても良くなる事はないんじゃない?

497 名前:デフォルトの名無しさん mailto:sage [2006/02/09(木) 06:21:45 ]
>>496
494はたぶんHenry BakerのCheney on the M.T.A.みたいな話を
してるんだと想像するが。この話のキモは、多くのオブジェクトは
短命で、GCが走る頃にはごみになってるからヒープにさえ移らな
いってこと。スタックを世代別GCの第0世代とみなしてると考えても良い。

で、Chickenがそれを実装してるわけだが。Scheme処理系としての
性能はそこそこ良いらしいが、処理系の性能はGC以外の部分にも
依存するからねえ。Cheney on the MTA自体がどのくらいの性能かを
測るには、GC部分だけを取り替えて比べるしかないんじゃない。





498 名前:デフォルトの名無しさん mailto:sage [2006/02/09(木) 07:35:56 ]
>>497
言語の構造にも依存するんだよね、ヒープ上につくるオブジェクトの種類。
もし比較するならそのあたりの事も考慮しないといけないし、その場合の
試験プログラムの内容も影響受けるだろうし面倒臭そうだね。




499 名前:デフォルトの名無しさん mailto:sage [2006/02/09(木) 11:11:46 ]
そだね。特に第一級の継続が無い言語ではアクティベーションフレームの
エクステントは関数を抜けるまでに決まってるから、popしてしまう方が
良さそうだ。継続がある場合はどうせ捕捉時にスタックを何とかしなくちゃ
ならないからCheney on the MTAと相性が良さそうなんだが。







500 名前:デフォルトの名無しさん mailto:sage [2006/02/09(木) 11:22:34 ]
>>499
環境に関してはどうですか?
一般的にはクロージャが生成されたときにスタックからヒープにコピーすると
思うんですが、それが必要なくなりますよね。
どちみちGCのときにはコピーするので微妙ですが。

501 名前:デフォルトの名無しさん [2006/02/12(日) 14:59:24 ]
yaccを使ってるんですが、トークンの数字を文字列に変換することはできますか?
NUMBER => "NUMBER", STRING=>"STRING", '+' => "+" みたいなかんじです。


502 名前:デフォルトの名無しさん [2006/02/12(日) 23:09:56 ]
アフォ?

503 名前:デフォルトの名無しさん mailto:sage [2006/02/13(月) 13:11:20 ]
>>501
yaccはそんなことするためのものではないので、ご自分でどうぞ。

504 名前:デフォルトの名無しさん mailto:sage [2006/02/13(月) 20:24:30 ]
>>501
yaccの仕事じゃない。
もしどうしても今組んでいるコードがそれを要求するのであればlex側で処理しておくべし(トークンの持ち方で2つの意味づけしとけ)


505 名前:デフォルトの名無しさん [2006/02/14(火) 23:32:01 ]
>>501
kmyaccならできる。起動時に-tオプションをつけてみて。

506 名前:デフォルトの名無しさん [2006/02/16(木) 20:56:42 ]
kimyacc ?
キムチ!


507 名前:デフォルトの名無しさん mailto:sage [2006/02/17(金) 00:34:11 ]
>>506 うまい!!!!!!!!1



508 名前:デフォルトの名無しさん mailto:sage [2006/02/17(金) 00:39:37 ]
sage

509 名前:デフォルトの名無しさん mailto:sage [2006/02/17(金) 01:10:02 ]
>>506
ワロwwwwwwwwwwwwwwwwwww

510 名前:デフォルトの名無しさん mailto:sage [2006/02/18(土) 04:59:51 ]
そういや、少し前にGUI型言語の話が出ていたけれども、
それってオーサリングツールとどう違うの?


511 名前:デフォルトの名無しさん mailto:sage [2006/02/18(土) 08:53:21 ]
スクリプトや言語の支援ツールとしてのモデリングツールなら、
たま〜に見る。

で思った事なんだが、言語の一部としてモデリングツールがあり、
モデリングツールの細かい調整用にスクリプトを用いたツールを
作ろうと思ってるのだが、このツールは何と呼べば良い?


512 名前:デフォルトの名無しさん mailto:sage [2006/02/18(土) 08:56:15 ]
>>511
コンパイラでは?

513 名前:デフォルトの名無しさん mailto:sage [2006/02/18(土) 09:06:47 ]
>>510
オーサリングツール自体が、広義ではコンパイラだと考えられる。

514 名前:デフォルトの名無しさん mailto:sage [2006/02/18(土) 09:28:22 ]
>>512
どちらかといえばスクリプトエンジンの方かと

515 名前:デフォルトの名無しさん mailto:sage [2006/02/18(土) 09:38:07 ]
「細かい調整」の内容による?

516 名前:デフォルトの名無しさん mailto:sage [2006/02/18(土) 11:08:33 ]
大昔のPlusの時代のMacにブロックダイアグラムをGUI上で用いて機能設計
(というよりモジュールプログラムって感じ)して、バイナリを出すシステム
があったけど、そういう奴のこと?>>510

それともIBMのVisualAgeシリーズみたいな奴かな?

517 名前:デフォルトの名無しさん mailto:sage [2006/02/18(土) 11:33:02 ]
>>516
前スレの最後の方で出てたネタなんだが・・・見れないな。
CAD/CAMとか、UMLとか、電子回路みたいな奴の事。

DVDの編集ツールとか、アニメーション製作ツールといったオーサリングツールと、どうも似てるなと。




518 名前:デフォルトの名無しさん mailto:sage [2006/02/18(土) 11:34:53 ]
前々スレだったかもしれんし、はっきりとは覚えて無いが。

519 名前:デフォルトの名無しさん mailto:sage [2006/02/18(土) 11:59:53 ]
『コンパイラ入門 C#で学ぶ理論と実践』
って、本はどうなのでしょう?
初心者向け?


520 名前:デフォルトの名無しさん mailto:sage [2006/02/19(日) 02:11:30 ]
>519

だれか答えてやれよ。


521 名前:デフォルトの名無しさん mailto:sage [2006/02/19(日) 03:03:09 ]
amazonの書評にも誰も書いてねーよーな
1000部も出てないだろう本の内容なんか知るかボケ。

自分で買うなり立ち読みするなりして調べろバーカ。

522 名前:デフォルトの名無しさん mailto:sage [2006/02/19(日) 05:37:26 ]
無理してレスつけなくてもいいんだよ

523 名前:デフォルトの名無しさん mailto:sage [2006/02/19(日) 07:32:33 ]
omaemona

524 名前:デフォルトの名無しさん mailto:sage [2006/02/19(日) 12:09:03 ]
521は無理矢理感ありまくりだけど
522はそうでもない

525 名前:デフォルトの名無しさん mailto:sage [2006/02/19(日) 14:22:05 ]
と、522が寂しそうにつぶやいた。

526 名前:デフォルトの名無しさん [2006/02/19(日) 20:07:33 ]
やっぱりこのスレLispやRubyがネタに絡まないと寂れる一方ですね。


Lisp最高!!!
と言ってみるtest

527 名前:デフォルトの名無しさん mailto:sage [2006/02/19(日) 20:15:00 ]
↓Lispnおなにが良いか答えなさい



528 名前:デフォルトの名無しさん [2006/02/19(日) 20:42:23 ]
ば〜かw
Rubyがいいに決まってるだろ?
新しい時代には新しい言語が必要だ

Lisp?はぁ〜?
コボルジジイと一緒にオナ●ーでもしてる!


529 名前:デフォルトの名無しさん [2006/02/19(日) 20:46:14 ]
はぁあ……Lisp……カッコいいのぉ……
S式……すごい興奮します……
あふっ、いぐのぉおおおっ、インデントすごいぃいいい!
いくっ、いきます、いっちゃう!いぐぅぅぅぅぅぅぅぅぅぅぅぅぅぅぅぅぅ!!!

530 名前:デフォルトの名無しさん mailto:sage [2006/02/19(日) 21:07:07 ]
よし、いいだろう!

531 名前:デフォルトの名無しさん mailto:sage [2006/02/19(日) 21:12:10 ]
燃料投下の自作自演イラネ


532 名前:デフォルトの名無しさん [2006/02/20(月) 00:27:06 ]
最強はJRubyだろ
Javaの機能も使える超絶的多機能Ruby

533 名前:デフォルトの名無しさん mailto:sage [2006/02/20(月) 00:29:24 ]
AspJ

534 名前:デフォルトの名無しさん [2006/02/20(月) 00:56:14 ]
lispy


535 名前:デフォルトの名無しさん mailto:sage [2006/02/20(月) 03:19:33 ]
ようやく俺Lispにクロージャが加わった記念にカキコ

536 名前:デフォルトの名無しさん [2006/02/21(火) 20:42:51 ]
Lispって存在意義あるの?
ゴボルと一緒で保守用?

537 名前:デフォルトの名無しさん mailto:sage [2006/02/21(火) 21:02:06 ]
そろそろ釣り餌の変え時では?
信者の多そうなHaskellとかSmalltalkがお勧め



538 名前:デフォルトの名無しさん mailto:sage [2006/02/21(火) 21:23:40 ]
信者率は高いだろうが、絶対数がな

539 名前:デフォルトの名無しさん [2006/02/21(火) 23:40:07 ]
釣り餌じゃなく本当に lisp の存在意義が疑問なんだが
(除く、研究用)

540 名前:デフォルトの名無しさん mailto:sage [2006/02/21(火) 23:46:27 ]
>>539自分で答え言ってるじゃ

541 名前:デフォルトの名無しさん mailto:sage [2006/02/21(火) 23:47:50 ]
疑問に思う >>529 に尋ねる。
なぜ「研究用」が除かれるんだ?


542 名前:デフォルトの名無しさん mailto:sage [2006/02/21(火) 23:50:05 ]
手軽に自分用のスクリプトを組み込むという用途としては
最適であるのは間違いないと思うがな。


543 名前:デフォルトの名無しさん mailto:sage [2006/02/22(水) 00:37:49 ]
>>539 には Python の存在意義を問うてみたいな。

544 名前:デフォルトの名無しさん mailto:sage [2006/02/22(水) 00:46:40 ]
Java用のスクリプト言語にHaskellが加わったらしいね
Javaのスクリプトコレクションがどんどん増えていって楽しい

545 名前:539 [2006/02/22(水) 21:51:56 ]
釣り餌じゃなく本当に python の存在意義が疑問なんだが
(除く、実用)

546 名前:デフォルトの名無しさん mailto:sage [2006/02/22(水) 21:53:16 ]
> Lispの存在意義
新しい言語を手軽に実装できる、に尽きるような。
(で、この言葉がまた誤解されると。)

547 名前:デフォルトの名無しさん mailto:sage [2006/02/23(木) 00:44:35 ]
釣り餌じゃなく本当に ruby の存在意義が疑問なんだが
(除く、他の言語を見下して優越感に浸る)





548 名前:デフォルトの名無しさん mailto:sage [2006/02/23(木) 00:49:39 ]
Pythonは教育用言語がはじまりだよ
だれが書いても同じようなソースになるのは意図したこと
汚くないソースを書く癖を付けさせるためにインデントを強制している

549 名前:デフォルトの名無しさん mailto:sage [2006/02/23(木) 01:11:55 ]
>>548
Pythonって使ったことないんだけどtabの扱いってどうなるの?


550 名前:デフォルトの名無しさん mailto:sage [2006/02/23(木) 02:35:36 ]
>>542
>手軽に自分用のスクリプトを組み込むという用途としては
>最適であるのは間違いないと思うがな。

なんで?

パーサ書くのが簡単だから、というのはよく聞くけど、パーサなんて
パーサジェネレータ使えば簡単に生成できるから、メリットにならんと思う。
LL(1)文法なら再帰下降パーサでもそんなに大変じゃないし。
# だからよく聞く「言語処理系を作りたければまずLispから」ってのは
# おかしいと思う。みんな、自分が普段使ってるCとかJavaみたいなのから
# 処理系に興味を持つんだから、そういうのを作ってみたいんじゃなかろうか。

それとも他の理由?

551 名前:デフォルトの名無しさん mailto:sage [2006/02/23(木) 03:01:37 ]
>>549
www.python.jp/doc/nightly/ref/indentation.html
>まず、タブは (左から右の方向に) 1 つから 8 つのスペースで置き換えられ、
>置き換え後の文字列の終わりの位置までの文字数が 8 の倍数になるように調整されます
>(Unixで使われている規則と同じになるよう意図されています)。

で、下がったインデントが上がるときには以前のどっかのインデントレベルと
合ってなければいけないけれど、1回のインデントでどれだけ下げるかは
決められてなくて、2文字インデントと4文字インデントと8文字インデントが
混在していてもいいってことか。

>>548
>だれが書いても同じようなソースになるのは意図したこと
>汚くないソースを書く癖を付けさせるためにインデントを強制している

中途半端だよなあ。

www.artima.com/weblogs/viewpost.jsp?thread=101968
>All code indented with four spaces. This will also get rid of the tabs problem!

やっぱこれだこれ。


552 名前:デフォルトの名無しさん mailto:sage [2006/02/23(木) 07:19:59 ]
>>550
他の理由。

飽きれるぐらい繰り返し出てる話だけど、
新しい言語を追加できるんだよ。


553 名前:デフォルトの名無しさん mailto:sage [2006/02/23(木) 09:40:18 ]
 

554 名前:デフォルトの名無しさん [2006/02/23(木) 21:26:25 ]
>>547
それ程までに、優越感を感じる言語って
一体…?


555 名前:デフォルトの名無しさん mailto:sage [2006/02/23(木) 22:27:38 ]
習得が難しい言語でなければ
ユーザーが優越感を感じたりはしないだろうな

556 名前:デフォルトの名無しさん mailto:sage [2006/02/23(木) 22:29:43 ]
>>555
よい言語ではある、でも偉いのは作ったmatzで優越感を感じてる厨房は単なる馬鹿

557 名前:デフォルトの名無しさん mailto:sage [2006/02/24(金) 00:35:12 ]
>>552
>新しい言語を追加できるんだよ。

新しい言語を「何に」追加するのさ。
542は、AutoCADがAutoLispを組み込んでいるように、アプリケーションにLispを
組み込む話をしてるのかと思ったから550を書いたんだけど、違ってたのかね。

Lispでプログラムをばりばり書きながら、そのなかのある特定の領域について
DSLが欲しいと思ったときにLispだと楽に作れるって話?

だとすれば、それはどんな言語をどんな形態で組み込むことを想定しているの?

(1)Lispでスキャナやパーサを書いて、Lispとはまったく似ていない言語を組み込む。
(2)Lispのリーダを使ってS式を読み込み、自力で評価する。
(3)Lispのマクロで俺言語っぽいものを作る。

どれ?

(2), (3)だと、作れる言語は所詮S式になるな。




558 名前:デフォルトの名無しさん mailto:sage [2006/02/24(金) 01:16:46 ]
>>557
もちろんLispを使うということはS式ありきだよ。
552じゃないけどLisperの思考なら(1)も結果をS式に変換して、
Lispにそのまま食わせたり(これが(2)や(3)に繋がったり)すると思うよ。
適当に俺言語っぽいものを作ってみたとして、仮にS式で不満に
なったらフロントエンドに俺言語スキャナを追加したりという、
色んな箇所で入出力できるのがLispの使い勝手の良さに繋がってる
のではないかと。

アプリの組み込みについては、とりあえずS式読めるように
Lispコアを埋め込んでおくと便利という意味じゃないかな。


559 名前:デフォルトの名無しさん [2006/02/24(金) 09:22:51 ]
括弧が深くならないLISPってないですか?

560 名前:デフォルトの名無しさん mailto:sage [2006/02/24(金) 09:29:13 ]
>>559
( ´Д`) キサマ・・・見た目に惑わされているな

561 名前:デフォルトの名無しさん mailto:sage [2006/02/24(金) 10:53:43 ]
>>559
XML

562 名前:デフォルトの名無しさん mailto:sage [2006/02/24(金) 20:46:42 ]
括弧開くと括弧閉じるの書き方が違うだけでは

563 名前:デフォルトの名無しさん [2006/02/24(金) 23:13:29 ]
結局は括弧ばかりのカッコウ言語w

564 名前:デフォルトの名無しさん mailto:sage [2006/02/24(金) 23:46:35 ]
なにその昭和な親父ギャグ


565 名前:デフォルトの名無しさん [2006/02/25(土) 01:44:26 ]
ワンライナーならPythonのPLY。
アプリ組むならC++Boostのspritがデフォなんだけどどうなんだろう。

開発業務における調査・解析の仕事って結構あるのよね。
最終的にはgrep一覧と確認結果をレポートするんだけど、当たりを付ける時は
自前のスクリプト使ってる。
抽象的な入力を対話式に行って解析出来るツールが欲しいなぁと思うこの頃。
誰か作ってません?

566 名前:デフォルトの名無しさん mailto:sage [2006/02/25(土) 02:25:16 ]
prolog?

567 名前:565 mailto:sage [2006/02/25(土) 02:35:29 ]
>>566
あー、そういうアプローチもあるねw
自分が考えているのは、もっとバカチョンなやつ。
理想は自然言語をINPUTとして扱えるとか。

チームで使うのに、Prolog覚えるのは敷居を上げてしまうので
普及しない希ガス。



568 名前:デフォルトの名無しさん mailto:sage [2006/02/25(土) 02:40:22 ]
Eliza?

569 名前:565 mailto:sage [2006/02/25(土) 02:53:28 ]
>>568
それやりすぎだしw
つか、相当マニアックだなおい。

文章は命令形式で良いと思うんだ。
list param CFoo::m_bar1 when CFoo::m_bar2 == 0
見たいな感じ。全然自然言語じゃないな。やっぱ形式言語がいいかw
SQLみたいだと良いかも。

すまんな、求めているものが変わってきたw

570 名前:デフォルトの名無しさん mailto:sage [2006/02/25(土) 10:19:44 ]
死ねよ

571 名前:デフォルトの名無しさん [2006/02/25(土) 11:59:25 ]
こうして、またひとり Ruby ユーザが増えました。
めでたしめでたし。

572 名前:デフォルトの名無しさん [2006/02/25(土) 13:34:49 ]
>>569
こんな感じだろ


もしお金が10億あれ場合
 会社を辞める
それ以外の場合
 銀行を襲う
以上

573 名前:デフォルトの名無しさん mailto:sage [2006/02/25(土) 15:00:20 ]
>>572
ElizaよりMedicが必要な希ガス

574 名前:デフォルトの名無しさん mailto:sage [2006/02/26(日) 19:01:55 ]
上のほうにあった
コンパイラ入門 C#で学ぶ理論と実践 ソフトウェア実践講座
冨沢 高明 (著)

www.amazon.co.jp/exec/obidos/ASIN/4797331690/qid=1140946035/sr=1-1/ref=sr_1_10_1/250-3599959-2832238

マクロアセンブラのコードを吐く「ジェネレータ」の説明に60ページほど費やしてました。
このコードをインラインに展開するツールも添付されてます。

現在MS社の上級社員?である著者がアメリカの大学で行っていた講義の中身を再編集した本らしいです。

MS製品の開発環境の使い方から書かれてあるので
手元にC#があれば便利ですが、C++が使える人には多分問題でないでしょう。

Javaのバイトコードを吐く「スモールコンパイラ」本と同程度の内容ですが、
類書でマクロアセンブラのコードジェネレータまで扱う本はあまり無かったのではないでしょうか?

やる気のあるアメリカ人大学生相手の講義が元ネタなので内容はずっと真面目で、
著者は特に情報工学部の実習本・TAのためのガイド本を意識されておられるようです。

ただ、アセンブラ「ジェネレータ」部分ですが、複雑なテクニックは使っていないはず
なので、「俺はCのソースを見るだけでアセンブラのコードが頭に浮かんでくる、
これまでにコンパイラはいくつも書いてきた」、という方やRuby厨は買う必要ないと思います。

インタプリタやスクリプト言語の作成から、コンパイラの作成へとステップアップしたいが
アセンブラの勉強がどーにも…、という方には喜ばれる内容だと思いました。

575 名前:デフォルトの名無しさん mailto:sage [2006/02/26(日) 19:04:44 ]
上のほうにあった
コンパイラ入門 C#で学ぶ理論と実践 ソフトウェア実践講座
冨沢 高明 (著)

www.amazon.co.jp/exec/obidos/ASIN/4797331690/qid=1140946035/sr=1-1/ref=sr_1_10_1/250-3599959-2832238

マクロアセンブラのコードを吐く「ジェネレータ」の説明に60ページほど費やしてました。
このコードをインラインに展開するツールも添付されてます。

現在MS社の上級社員?である著者がアメリカの大学で行っていた講義の中身を再編集した本らしいです。

MS製品の開発環境の使い方から書かれてあるので
手元にC#があれば便利ですが、C++が使える人には多分問題でないでしょう。

Javaのバイトコードを吐く「スモールコンパイラ」本と同程度の内容ですが、
類書でマクロアセンブラのコードジェネレータまで扱う本はあまり無かったのではないでしょうか?

やる気のあるアメリカ人大学生相手の講義が元ネタなので内容はずっと真面目で、
著者は特に情報工学部の実習本・TAのためのガイド本を意識されておられるようです。

ただ、アセンブラ「ジェネレータ」部分ですが、複雑なテクニックは使っていないはず
なので、「俺はCのソースを見るだけでアセンブラのコードが頭に浮かんでくる、
これまでにコンパイラはいくつも(心の中に)書いてきた」、という方は勿論買う必要ないと思います。

インタプリタやスクリプト言語の作成から、コンパイラの作成へとステップアップしたいが
アセンブラの勉強がどーにも…、という方には喜ばれる内容だと思いました。

576 名前:デフォルトの名無しさん [2006/02/26(日) 22:27:19 ]
上のほうにあった
コンパイラ入門 C#で学ぶ理論と実践 ソフトウェア実践講座
冨沢 高明 (著)

www.amazon.co.jp/exec/obidos/ASIN/4797331690/qid=1140946035/sr=1-1/ref=sr_1_10_1/250-3599959-2832238

マクロアセンブラのコードを吐く「ジェネレータ」の説明に60ページほど費やしてました。
このコードをインラインに展開するツールも添付されてます。

現在MS社の上級社員?である著者がアメリカの大学で行っていた講義の中身を再編集した本らしいです。

MS製品の開発環境の使い方から書かれてあるので
手元にC#があれば便利ですが、C++が使える人には多分問題でないでしょう。

Javaのバイトコードを吐く「スモールコンパイラ」本と同程度の内容ですが、
類書でマクロアセンブラのコードジェネレータまで扱う本はあまり無かったのではないでしょうか?

やる気のあるアメリカ人大学生相手の講義が元ネタなので内容はずっと真面目で、
著者は特に情報工学部の実習本・TAのためのガイド本を意識されておられるようです。

ただ、アセンブラ「ジェネレータ」部分ですが、複雑なテクニックは使っていないはず
なので、「俺はCのソースを見るだけでアセンブラのコードが頭に浮かんでくる、
これまでにコンパイラはいくつも書いてきた」、という方やLisp厨は買う必要ないと思います。

インタプリタやスクリプト言語の作成から、コンパイラの作成へとステップアップしたいが
アセンブラの勉強がどーにも…、という方には喜ばれる内容だと思いました。

577 名前:デフォルトの名無しさん [2006/02/26(日) 22:56:34 ]
上のほうにあった
コンパイラ入門 C#で学ぶ理論と実践 ソフトウェア実践講座
冨沢 高明 (著)

www.amazon.co.jp/exec/obidos/ASIN/4797331690/qid=1140946035/sr=1-1/ref=sr_1_10_1/250-3599959-2832238

マクロアセンブラのコードを吐く「ジェネレータ」の説明に60ページほど費やしてました。
このコードをインラインに展開するツールも添付されてます。

現在MS社の上級社員?である著者がアメリカの大学で行っていた講義の中身を再編集した本らしいです。

MS製品の開発環境の使い方から書かれてあるので
手元にC#があれば便利ですが、C++が使える人には多分問題でないでしょう。

Javaのバイトコードを吐く「スモールコンパイラ」本と同程度の内容ですが、
類書でマクロアセンブラのコードジェネレータまで扱う本はあまり無かったのではないでしょうか?

やる気のあるアメリカ人大学生相手の講義が元ネタなので内容はずっと真面目で、
著者は特に情報工学部の実習本・TAのためのガイド本を意識されておられるようです。

ただ、アセンブラ「ジェネレータ」部分ですが、複雑なテクニックは使っていないはず
なので、「俺はCのソースを見るだけでアセンブラのコードが頭に浮かんでくる、
これまでにコンパイラはいくつも書いてきた」、という方やLisp厨は買う必要ないと思います。

インタプリタやスクリプト言語の作成から、コンパイラの作成へとステップアップしたいが
アセンブラの勉強がどーにも…、という方には喜ばれる内容だと思いました。




578 名前:デフォルトの名無しさん mailto:sage [2006/02/26(日) 23:57:26 ]
どうした?
どうした?
どうした?
どうした?

579 名前:デフォルトの名無しさん mailto:sage [2006/02/27(月) 02:52:17 ]
>>574-577
おまえら長文で微妙に書き換える位なら差分だけあげろや惚け


580 名前:デフォルトの名無しさん mailto:sage [2006/02/27(月) 21:37:29 ]
同じファイル内のdiffを取るツールって時々欲しくなるよね。
エディタ組み込みのスクリプトで書くのも面倒だし。

581 名前:デフォルトの名無しさん [2006/02/27(月) 22:05:37 ]
>>580
perl : Algorithm::Diff
Python : difflib

582 名前:デフォルトの名無しさん mailto:sage [2006/02/27(月) 22:52:22 ]
>>579
コンパイラ屋なら差分くらい自分で抽出せい

583 名前:デフォルトの名無しさん mailto:sage [2006/02/27(月) 23:15:05 ]
上の本、買っていいんじゃない?

584 名前:デフォルトの名無しさん mailto:sage [2006/02/27(月) 23:15:29 ]
>>582
プログラマは無駄を嫌うので、
出来る・出来ないに関わらずやりたくない。
とりあえず最後の577だけ読んだ。

585 名前:デフォルトの名無しさん mailto:sage [2006/02/27(月) 23:33:55 ]
そんなレスも考えたら凄い無駄だな

そして>>585も…

586 名前:デフォルトの名無しさん mailto:sage [2006/02/28(火) 03:17:49 ]
「いまどきのプログラム言語の作り方」って本を読んでるんだけど、サンプルコードがJavaで
書かれているにもかかわらず、インターフェースがまったく使われてない。

そういうもの?

587 名前:デフォルトの名無しさん mailto:sage [2006/02/28(火) 09:59:13 ]
インタフェースは仕様を記述するものだからな
作者は仕様を考えたりできなかったんだろう



588 名前:デフォルトの名無しさん [2006/02/28(火) 11:20:56 ]
名に要ってんだコイツ

589 名前:デフォルトの名無しさん mailto:sage [2006/02/28(火) 11:47:26 ]
>>588が低脳をさらけ出したw

590 名前:デフォルトの名無しさん [2006/02/28(火) 12:47:34 ]
↑意味不明もここまで来ると病気だろう

591 名前:デフォルトの名無しさん [2006/02/28(火) 14:00:13 ]
2つ上をさす時は
矢印使わないほうが紛れが無くて良いと思うよ。

592 名前:デフォルトの名無しさん mailto:sage [2006/02/28(火) 14:07:00 ]
そうだな。こういう風にな。

>>591はバカでアホすぎ。死んだ方がいいよ。

593 名前:デフォルトの名無しさん mailto:sage [2006/02/28(火) 14:47:08 ]
おまえらいい加減にしろ

594 名前:591 [2006/02/28(火) 15:39:26 ]
まぁ相当悔しかったんだろうな。

595 名前:デフォルトの名無しさん mailto:sage [2006/02/28(火) 16:14:38 ]
お前だろwww悔しかったのww

596 名前:デフォルトの名無しさん mailto:sage [2006/02/28(火) 16:28:38 ]
wはいい火病メーターだなホント

597 名前:デフォルトの名無しさん mailto:sage [2006/02/28(火) 17:09:39 ]
ほらww悔しかったから反応しちゃってるwww



598 名前:デフォルトの名無しさん mailto:sage [2006/02/28(火) 17:39:02 ]
ListやConnectionの仕様をみると、確かにこりゃインタフェースだと思った。
ClonableやAppendableとかはなんかインタフェースとは違う気がする。(使うないう意味じゃなくてね)

599 名前:デフォルトの名無しさん mailto:sage [2006/02/28(火) 17:54:15 ]
と、過剰反応する>>597の姿
ttp://www.dumpalink.com/media/1140251493/Most_Patient_Guy_In_The_World

600 名前:デフォルトの名無しさん mailto:sage [2006/02/28(火) 17:58:58 ]
>>599
うざいから火病くんは消えてね

601 名前:デフォルトの名無しさん mailto:sage [2006/02/28(火) 18:06:28 ]
という悔しさいっぱいの反応でした

602 名前:デフォルトの名無しさん mailto:sage [2006/02/28(火) 18:08:23 ]
自作自演で荒らしてるのか?



603 名前:デフォルトの名無しさん mailto:sage [2006/02/28(火) 18:10:59 ]
>>601
うざいから火病くんは消えてね

604 名前:デフォルトの名無しさん mailto:sage [2006/02/28(火) 18:12:07 ]
自演じゃないならある意味チキンレースだな
相手に放置されちゃった方の負け

反応が無くて俺のこのレスが最後になったらどうしよう、と
ハラハラしながら送信してるんだろうな、どっちも

605 名前:デフォルトの名無しさん mailto:sage [2006/02/28(火) 18:49:08 ]
見当違いな意見だ。
逆だ逆。自分が最後じゃないと悔しいんだよ。こういう手合いは。

606 名前:デフォルトの名無しさん [2006/02/28(火) 23:42:26 ]
また、rubier と lisper かw
まったくお前らって(ry

607 名前:デフォルトの名無しさん mailto:sage [2006/02/28(火) 23:50:10 ]
>>606
もう Ruby や Lisp じゃ釣れない事を学習しろ。



608 名前:デフォルトの名無しさん mailto:sage [2006/02/28(火) 23:52:22 ]
(・∀・)ニヤニヤ

609 名前:デフォルトの名無しさん mailto:sage [2006/03/01(水) 04:44:59 ]
以前Flex/Bison使うと生書きするより実行速度が遅くなるって誰か言ってたけどいったいなぜ?
それともデマ?

610 名前:デフォルトの名無しさん mailto:sage [2006/03/01(水) 05:08:00 ]
そりゃターゲット言語に特化すれば速くなるでしょ。何でデマ?

611 名前:デフォルトの名無しさん [2006/03/01(水) 07:17:46 ]
>>606
> rubier

612 名前:デフォルトの名無しさん mailto:sage [2006/03/01(水) 07:20:32 ]
もうだれかVIPとか言う言語つくるしか


613 名前:デフォルトの名無しさん mailto:sage [2006/03/01(水) 08:48:37 ]
>>610
よーわからんけどFlex/Bisonに勝てそうな気がしない。
なんかすごい効率的にやってそうじゃん。

614 名前:デフォルトの名無しさん mailto:sage [2006/03/01(水) 14:02:45 ]
『プログラミング言語を作る』
kmaebashi.com/programmer/devlang/index.html

615 名前:デフォルトの名無しさん mailto:sage [2006/03/02(木) 01:01:49 ]
>614
>381

616 名前:デフォルトの名無しさん mailto:sage [2006/03/02(木) 02:13:51 ]
がいしゅつでしたか (><)

617 名前:デフォルトの名無しさん [2006/03/02(木) 19:41:51 ]
俺言語でなく姫言語というのはないのか?



618 名前:デフォルトの名無しさん [2006/03/02(木) 22:32:39 ]
プログラミング言語 姫

619 名前:デフォルトの名無しさん mailto:sage [2006/03/03(金) 12:52:34 ]
彼女に捧げるプログラミング言語 Love
そんな彼氏に捧げるプログラミング言語 氏ね

620 名前:デフォルトの名無しさん [2006/03/03(金) 19:52:46 ]
love か、いいネーミングだ。


プログラミング言語 ORZ


621 名前:デフォルトの名無しさん mailto:sage [2006/03/04(土) 07:42:53 ]
>>620
むしろ OTL?

622 名前:デフォルトの名無しさん mailto:sage [2006/03/04(土) 11:04:14 ]
>>619
ウィザードしか使えないくせによく言う(都市伝説ですか?)

623 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 11:54:43 ]
>>618
>プログラミング言語 姫

これの勉強を始めるのは「姫はじめ」か。


624 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 13:26:21 ]
入門書「はじめての姫」


625 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 15:40:34 ]
参照カウンタやマークスイープ型より効率のいい方法のGC考えた。

循環参照でも問題ないし、スループット、レスポンスともにほとんど
アプリの動作を邪魔しないし、効率は参照カウンタ方式の99%は
出る見込み(Cで普通にmalloc,freeする程度の負荷以上はかから
ない)

626 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 18:26:21 ]
同じことをやってるヤシはいると思うが、まあガンガレ

627 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 19:12:42 ]
Cのようにポインタをビット操作できてしまう言語ではGCの実装は無理でOK?



628 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 19:19:56 ]
コンサバなものならいくらでもあるわけだが…

629 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 19:20:29 ]
↑C「で」実装するではなく、Cのような言語にGCを搭載する、の意

630 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 19:42:43 ]
C/C++ 用の GC があるの知らんの?

現状だってプロセスのメモリ空間の中はスタックとか読み込んだライブラリを置く所とか
色々細分化されている訳で、そういう所は好き勝手弄っちゃダメでしょ。同じように GC
ヒープ領域を用意してあげれば良いんじゃないの。

631 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 19:49:14 ]
>C/C++ 用の GC があるの知らんの?
通常のmallocやnewに対応した完全に汎用的なGCがあるの?
原理的に絶対無理だと思うんだが。

やっぱGC専用のポインタが必要ってことだよね。

632 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 20:01:52 ]
>>628 >>630
ポインタのアライメントを利用して下位1ビットに情報を…
とか、その手の事をやられるとお手上げ。


633 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 20:03:38 ]
はいはい、C++/CLIでもやってなさいボウヤ

634 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 20:05:07 ]
>>632
>ポインタのアライメントを利用して下位1ビットに情報を…

もともとこういうことをするのは、C言語でも未定義なのでする奴が悪い、でオワリ

635 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 20:31:54 ]
JavaでできていることがCで出来ないはずはないだろ。
アセンブラに落とす時にJavaのVMみたいに複雑なメモリ管理を織り込めばいいんだから。

お前ら、言語仕様とABIを混同してないか?


636 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 20:34:41 ]
この話は仕舞いだな。

637 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 20:45:38 ]
>>635
>JavaでできていることがCで出来ないはずはない
JavaがGCできるのはCよりも操作の制約が強いからだ

char *a = malloc(100);
int b = (int)a; // これの善悪は別問題として
a = 0;

ってやってaからの参照がなくなった時点でGCが掃除しちゃったら
まずいだろ。プログラムとしてはbから復元して利用することもあり
えるから。

よってこういうことが出来る素のCには、「触らないでねポインタ」を
新たに導入しないとGCは装備できないんじゃねーか?



638 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 20:53:07 ]
だからコンサバ。

639 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 20:57:37 ]
わかんないおれのためにもっとくわしく。コンサ何とか型のGCって名前は
聞いたことあるけど、そんなにすごいもんなのか?

640 名前:632 mailto:sage [2006/03/05(日) 21:00:00 ]
>>634
その突っ込みは>>627に対して?
何で俺?


641 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 21:03:26 ]
>>639
homepage2.nifty.com/aito/gc/gc.html
www.donguri.sakura.ne.jp/~shock8/wisper/gc1.html

642 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 21:18:35 ]
>>641
リンク先見たけど(情報どうも)結局>>637をやられると吹き飛ぶじゃん。
回収し損ねは許容するとして、ポインタを隠蔽して分解して
持っておくようなことはやったら駄目ってことだね。

よって「触らないでねポインタ」を導入しないことには回収しそこねや
ハングアップを防止することは出来ないというのがオレの結論。

643 名前:デフォルトの名無しさん [2006/03/05(日) 21:18:53 ]
まぁ、ばかはどの刷れにもいるけどなw


644 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 21:21:01 ]
>>637でGCがおかしくなるって言ってる奴は機械語レベルの表現を
全然理解できないんだろうなあ。


645 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 21:22:43 ]
うむ。

646 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 21:26:39 ]
まあ、マジックリストに対応できるようなGCは
それなりに大変だろうね

647 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 21:29:25 ]
たしかCからJavaを呼べるはずだから
JavaはCのManagedコードライブラリと見ることも出来る



648 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 21:29:34 ]
>>644-646
というかGC使いたかったら泥臭いことはあきらめろってしかいえない。


649 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 21:30:56 ]
はあ?


650 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 21:30:59 ]
>>642
スマソ。>>641 の下のリンク先は読まない方が良いや。
適当にググって貼っつけただけだから。何じゃこりゃ。

651 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 21:41:52 ]
>>644
もうちょっと詳しく。当方アセンブラプログラマだ。

int b = (int)a;
a = 0;

とやったあとでb をビットレベルで分解したらどうにもならんと思うが、
コンサバ型だとそうならない魔法があるのか?

bを再構成してポインタに戻してアクセスしたら開放されてるって
いう状況は起こりうると思うが。

652 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 21:44:21 ]
だんだん条件が増えていく件。

653 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 21:52:27 ]
そりゃさすがにどうにもならない。

とはいえ、ビットレベルで分解→後で計算によって得た値が
セマンティクスの面で有効なポインタかどうかは疑問ではある。

>>652
つか、「原理的に無理」で思考停止してるから。


654 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 21:59:47 ]
>>652
議論に勝つために、徐々に条件を変えていくんだよなー。
2chはこういう奴ばかり。

655 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:09:08 ]
議論に勝った所で何があるわけじゃないんだけどね

俺の知らないところで何かあるのかな?w

656 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:13:50 ]
>>654
議論に勝つためというより、物知らずというか
ものの評価基準が幼稚なだけだと思われる。


657 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:21:31 ]
えーと、どこで笑えばいいのかな?



658 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:24:05 ]
>>657の頭の弱さ。


659 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:25:21 ]
ふーん。

660 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:25:56 ]
>>656
コンサバティブ GC を初めて知ったレベルなら仕方が無いんじゃないの。
まだ当たりが付けられないだけだと思う。

661 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:26:56 ]
あのー
>>642の時点で分解って書いてるんですけど

662 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:30:00 ]
>>652
651じゃないが、わざわざポインタを整数として扱おうとするなら、
その後なんらかの演算を行うんじゃないかってのは
容易に想像つきそうなものだが。

ま、演算は演算させておいて、ポインタはポインタのまま
別に持っておくとか手はありそうだけど。

663 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:30:14 ]
元々の命題は >>637 だろ。

664 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:33:40 ]
重箱の済みつつき過ぎ、話も出来やしないよ。
>>662はまともな人だね

665 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:35:08 ]
いや、>>631なんじゃないの。
631を無視して637だけなら対応したGCを書けばいいだけの話。

666 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:35:43 ]
>>662
演算をするかどうかじゃなくて、再代入するかどうかが問題でしょ。
コード辺だけでそこまでケアしろと?

667 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:42:04 ]
再代入というか、計算で合成した任意の値をアドレスとして
アクセスできるかどうかだね。
GCはプログラム中のデータからトレースできるものを残して
それ以外を回収するってことだから、
可能な演算の集合を定義してルートとなる即値だけでなく
その集合に含まれる演算で計算可能な値もアドレスとして
コンサバティブに扱うことをトレースとすればいいだけの話。
だから、むしろ「原理的には」GCは設計可能。「原理的には」だけど。




668 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:48:20 ]
ちょっと修正
ルートとなる→アドレスとなる
「原理的には」GCは設計可能→「原理的には」完全に汎用なGCは設計可能



669 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 23:35:17 ]
そのGC、何一つヒープを開放してくれなさそう

670 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 23:42:56 ]
>>666
想像しろよ。書いてるもんが100%だと決めなきゃ話できないようじゃ
CPUと一緒じゃないか。人間だろ? >>662は十分想像可能な範囲。

現に出来てる者が居る以上、それが出来なかった奴は気がまわら
ないということ。

なんで整数に持ってきたいのか用途は色々あるだろ。まあ想像でき
ないかもしれないがな。

671 名前:デフォルトの名無しさん [2006/03/05(日) 23:47:32 ]
まぁなんらかのお約束は必要だよ


672 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 23:48:31 ]
>>669
コンサバだからねw
演算の集合は全域で同一である必要はないわけで、
適当にヒントを与えて限定してもいいし、GCがコードを解析してもいい。
普通はそこまでやってらんないから演算は値をそのまま使う
という一択だと考えるだけで。


673 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 00:34:34 ]
>>670
幾らでも拡大解釈しようはあると思うけど、GC の仕組みを知っていれば
そちらには振れないんじゃないかというのが俺の解釈だっただけだよ。
ま、GC の仕組みを知っていれば、最初からこんな質問も出なかった
だろうけど。

674 名前:デフォルトの名無しさん [2006/03/06(月) 00:36:57 ]
なんか理論の飛躍が Ruby vs Lisp の時と似ているなぁ

675 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 01:06:36 ]
同じ面子でグルグル回してるだけだから

676 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 07:47:45 ]
>〜俺の解釈だっただけだよ
後から言うなよ

677 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 08:30:12 ]
後から想像しろとか言ってきたのアンタじゃん。俺にどうしろと??
もうこの話は終わったんだから絡んで来るなよ。



678 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 10:17:54 ]
>>677
> 俺にどうしろと??
恐らく謝罪を要求してるのでしょう :-)
あなたをやり込めたい一心であらゆる論理を適時付け替えて頑張っているのですから、
彼のプライドを満たすためにも謝ってあげてはどうかと思います。

679 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 10:40:02 ]
>>678
>>657

680 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 10:47:47 ]
>>679
笑えない現実に対する対処の話ですから、笑う箇所などありませんよ。
そんなことも読み取れないのですね :-)

681 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 10:54:51 ]
>>680
ふーん?

682 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 13:07:06 ]
>>680
よし、じゃ俺のプライドを満たすためにおまいが謝れ。

683 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 13:28:21 ]
>>682
ごめんください。

684 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 13:52:59 ]
エェェェェェェ(;´Д`)ェェェェェェェエ

685 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 14:23:03 ]
>>684
ごめんくさい。

686 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 15:32:11 ]
  /\___/\
/ /    ヽ ::: \
| (●), 、(●)、 |    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|  ,,ノ(、_, )ヽ、,,   |  < まーた始まって、終わった。
|   ,;‐=‐ヽ   .:::::|    \___________
\  `ニニ´  .:::/
/`ー‐--‐‐―´´\


687 名前:デフォルトの名無しさん mailto:sage [2006/03/07(火) 00:21:33 ]
まけず嫌いで粘着なキチガイが暴れているスレはここですか



688 名前:デフォルトの名無しさん mailto:sage [2006/03/07(火) 00:31:35 ]
ぶるんぶるん体操

ぶるんぶるんと僕は言う
ぷるんぷるんとあなたは笑う
そんな2人は、フォーエバー
世界の端から今日は
そんなあなたはお毎度さん
今日もぶるんぶるん体操始まるよ

ぶるんぶるん、ぷるんぷるん
ぷるんぶるん ぶぷぷぷぷぷ

*四谷街道繰り返し

689 名前:デフォルトの名無しさん mailto:sage [2006/03/07(火) 23:02:33 ]
このスレでオリジナル言語作って公開してる人って何人ぐらいいるの?

690 名前:デフォルトの名無しさん mailto:sage [2006/03/07(火) 23:22:00 ]
俺的には、スクリプトはあくまで手段。目的は別にある。
だからスクリプトだけを公開する事は、俺にはありえん。


691 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 09:09:50 ]
現在の人数=0

>>690
ところで、目的って何ですか?

692 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 09:15:09 ]
現在の人数=1 ←どういうカウントだこれは?

>>690
ぼくちんも知りたい。その手の業界ってけっこうあるのかな?

693 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 10:22:21 ]
>>692
>>689


694 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 10:29:08 ]
>>693
あーそういう意味だったのか。
じゃリセット。

現在の人数=0

695 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 12:58:30 ]
現在の人数=1
でもどこだかは教えない(w

696 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 13:19:30 ]
現在の人数=2
……まあ、趣味の領域ですが。

697 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 19:53:28 ]
>>691-692
単に自分の作りたいソフトを作るために、
下ごしらえでスクリプトを作ってるだけだよ。




698 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 20:06:51 ]
現在の人数=3
……自分専用ツールとしてはじめたのがきっかけです。
私も、どこかは内緒w

699 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 20:17:47 ]
>>697
マクロみたいなの搭載してるって意味だよね。
それとも何か目的のソフトを作るための言語を作ってるって意味?

700 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 21:05:27 ]
>>699
後者。

701 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 21:19:45 ]
>>700
マジで?言語作ってる間に既存の言語でソフト作っちゃったほうが早いんじゃないの?

702 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 22:16:53 ]
>>701
プログラマの癖に手段と目的を取り違えたことがないの?

703 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 22:33:03 ]
>>702
くせにとは何だ!くせにとは!
お前こそ●●のくせに、いい気になるなよ。

704 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 22:54:10 ]
>>702
●2つも使ってるのか?なんて贅沢な。


705 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 23:05:44 ]
>>703
なんだとこの●●●!
お前だって●●●の●●●だろうに!●●●●!

706 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 23:22:18 ]
>>705
うるさい、この●●のろ!

707 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 23:41:49 ]
の●●の

↑鼻と目に見えた orz 以下、何事も無かったかのように再開。・゚・(ノД`)・゚・。↓



708 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 23:53:37 ]
>>702
こいつは、真性の●●●●。
つまり、●●w
あるいみ、●●●●●● ruby ● lisp ●●w

709 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 00:08:50 ]
>>701
理想が高すぎる事と、自分自身の能力不足が原因なんだよ。
オブジェクトが多くなりすぎると、内容を追い切れなくなる。
つか、状態変位やイベントトリブンは、漏れには理解しづらい‥‥orz
で、主に、個々の処理を独立させて、別個にまとめて見られる
ようにするためにスクリプトを使ってる。


710 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 00:40:15 ]
>>709
一言で言い表すと、
「グローバルオブジェクトなんて嫌いだぁ・・・
 全部ローカライズ化してやるぅ・・・・」
ってな感じでつ。orz


711 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 01:50:58 ]
ローカライズ化?

頭痛が痛いだな。

712 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 02:16:15 ]
英語は嫌いだぁ・・・w

713 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 11:44:40 ]
>>709
>つか、状態変位やイベントトリブンは、漏れには理解しづらい‥‥orz
>で、主に、個々の処理を独立させて、別個にまとめて見られる
>ようにするためにスクリプトを使ってる。

ちなみに、エミュレータのレジューム機能が元ネタ。
つ〜か、スレッドの場合は同期の管理が面倒なんだよな。


714 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 12:44:30 ]
OSとエミュレータと、エミュレートされるソフトの動作を、
全部一つの実装で実現させたい、ってな所。

715 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 14:07:36 ]
ネタが特許級に見えるのは気のせいか?
出願前に公開すると無効なはずだが・・・

716 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 14:54:39 ]
レジューム機能付きのエミュレータが出る前なら、可能だったかもね。

717 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 20:09:47 ]
>>714-715
似たようなネタのスクリプトなら実在するから探して味噌。

扱いやすいかどうかは別だが。w




718 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 20:50:04 ]
構文規則で、よくこんな表記つかってるけど
A → B,C
矢印逆じゃないの?

なんか、すげ〜違和感あり。

719 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 21:07:28 ]
なにゆえ

720 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 22:33:32 ]
「生成」規則だからね。もともとのオートマトン理論では
規則によりどういった文章が生成されるかを考えていたから。
構文解析は、逆に与えられた文章がどういう生成規則を
たどって作られたかを求める問題だ。その過程で生成規則を
逆向きに使って還元を行う。
だから構文解析だけを考えていたら、矢印が逆だと思うかも
しれんね。


721 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 22:36:21 ]
>>718
別に逆でもいいけど、たぶんおまいは逆にすると今度はそっちに違和感を感じるんだろ。
A → BC | DE
ってのは
A is defined as BC or DE
A expands to BC or DE
A generates BC or DE
A is rewritten as BC or DE
逆方向には
BC or DE can constitute A
BC or DE can be reduced to be A
などなど、色々な読み方ができる。

722 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 22:39:38 ]
A ← BC | DE

A is defined as BC or DE
と読んじゃいけないのかよ。

723 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 22:42:22 ]
>>722
いいよ別に。咎めはしないけど真似してくれる人は少なそうだね。

724 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 22:43:50 ]
>>722
それを流行らせてくれ!!

725 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 22:50:30 ]
っていうか矢印の向きなんてどーでもいいし。
矢印以外の記号だって使われるわけだし、勝手にしろとしかいいようがない。

726 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 23:04:18 ]
そんなに揉めるくらいならこっちを指せばいい

A m9(^Д^) BC | DE

727 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 23:11:11 ]
>>726
ワロタw

でも、確かに代入文とかも A=B+C は A->B+C とは書かんな
どうみても A<-B+C だな。



728 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 23:12:03 ]
A ブギャー BC or DE と読むのか。勢いがあって好いな。

729 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 00:23:11 ]
A pgr BC or DE

なんかよく分からんが格好良いぞ

730 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 12:21:57 ]
yaccやbisonでは、演算子の順位を指定することができますが、これもLALR(1)で必要なのでしょうか。
コンパイラの本を読むと、LALR(1)の説明では生成規則しか使わず、演算子の順位を含めたaction表やgoto表の作り方は特に書いてないように思います。
もしかして、yaccやbisonではLALR(1)と演算子順位解析法との併用なのかなと思ったりするんですけど、どうなんでしょうか?

なお、やりたいことは自前で簡単なパーサジェネレータを作ることです。LALR(1)のアルゴリズムを勉強しているんですが、演算子の順位がまるででてこないので、どうやるんだろうと疑問に思ってます。

731 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 12:30:17 ]
>>730
コンフリクト時にシフト/還元のどれを選択するかでうまいことやっている。
ドラゴンブックに説明があったかもしれない。

732 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 20:02:39 ]
>>730
> もしかして、yaccやbisonではLALR(1)と演算子順位解析法との併用なのかなと思ったりするんですけど、どうなんでしょうか?

そうです。
expr → expr + expr | expr * expr
っていう生成規則はLALR文法ではないけど使えた方が便利でしょ。

733 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 23:20:04 ]
>>726

734 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 23:52:42 ]
bisonってGLRにならなかったっけ?

735 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 09:18:24 ]
bisonの入力になりえる文法はGLRだろうけど(自信なし)、あいまいさを解決するアルゴリズムが違うからパースした結果が変わっちゃうんじゃないの?
GLRはshift/reduceコンフリクトでreduceを優先するから、あいまいなぶらさがりelseが遠い方のifにくっついちゃう。

736 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 10:42:50 ]
>GLRはshift/reduceコンフリクトでreduceを優先
ちがうよー。
コンフリクトでshiftとreduceの両方追いかけるのがGLR。

>>734
GLRもできるけど>>732をGLRで扱うと
+の優先度が高い場合の構文木と*の優先度が高い場合の構文木の
両方を解析結果として得る話になるから、
演算子の順位指定の話とはからまないと思われ。

737 名前:730 mailto:sage [2006/03/11(土) 22:13:54 ]
>>731,732
どうもありがとうございます。
けっこう複雑なことやってるんですね。
作るの自信なくなってきたな。。。



738 名前:デフォルトの名無しさん mailto:sage [2006/03/12(日) 01:08:18 ]
がんがってくれい
なせばなるよ

739 名前:デフォルトの名無しさん mailto:sage [2006/03/12(日) 23:28:26 ]
既に慣れてしまってる方ばかりだろうが、
還元ということばに違和感を感じる自分。

どうせなら、還元よりも換言だとおもう。

740 名前:デフォルトの名無しさん mailto:sage [2006/03/13(月) 02:55:26 ]
それだと向きを含意しないから、reduceの語感が出ないなあ。


741 名前:デフォルトの名無しさん mailto:sage [2006/03/13(月) 03:37:22 ]
これはなかなか面白い (厭味じゃなくて)
>>739 は明治時代辺りに生れてればよかったのに

742 名前:デフォルトの名無しさん mailto:sage [2006/03/13(月) 03:58:25 ]
コンサバって何?

743 名前:デフォルトの名無しさん mailto:sage [2006/03/13(月) 04:00:45 ]
松平健が歌ってるヤツだろ。

744 名前:  mailto:sage [2006/03/13(月) 08:44:18 ]
しってる言語はJavaなんでJavaのバイトコードに変換する本当に簡単なコンパイラ?つくりたいんですが、古い本でも大丈夫ですか?
Programming for the Java(TM) Virtual Machineって本見つけたんですが1999年出版なんです。バーチャルマシンの仕様とかは変わってないのですか?

745 名前:デフォルトの名無しさん mailto:sage [2006/03/13(月) 09:32:08 ]
検索すれ。

The JavaTM Virtual Machine Specification, Second Edition
java.sun.com/docs/books/vmspec/

同 Maintenance Page
java.sun.com/docs/books/vmspec/2nd-edition/jvms-maintenance.html





746 名前:  mailto:sage [2006/03/13(月) 22:17:19 ]
>>745
どうもありがとう。

747 名前:デフォルトの名無しさん [2006/03/17(金) 23:50:51 ]
>>726
1から見てみたが、お前のレスが一番ワロタw



748 名前:730 mailto:sage [2006/03/18(土) 08:20:23 ]
C言語とかで、'*' や '&' がポインタ演算だったり四則演算だったりビット演算だったりするけど、
このように1つの記号が複数の意味を持つ場合、字句解析で別のトークンを返さないといけないのでしょうか。
それとも構文解析時に判断できるものなのでしょうか。

例えば仮引数に *p とあれば、これはポインタを意味するための * であり、四則演算ではないとすぐにわかります。
しかし、*p1 * *p2 などとあった場合、ひとつの式の中でポインタを表す * と四則演算を表す * とが混じってるんですけど、こういったものはどうやって別物であると判断しているのか不思議です。

749 名前:デフォルトの名無しさん mailto:sage [2006/03/18(土) 11:05:59 ]
>>748
字句解析では区別せず、構文解析で判定する。
教科書で、-1 - -2 のような式を扱う例を探してみて。

750 名前:デフォルトの名無しさん mailto:sage [2006/03/18(土) 13:14:58 ]
前置子やね

751 名前:デフォルトの名無しさん mailto:sage [2006/03/18(土) 13:27:13 ]
そういうやり方をするから、vector<vector<int>>がコンパイルできなかったりするw

752 名前:http://www.vector.co.jp/soft/win95/util/se072729.html [2006/03/18(土) 19:03:18 ]
TextSS のWindowsXP(Professional)64bit化おながいします

もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?

753 名前:デフォルトの名無しさん [2006/03/18(土) 19:50:35 ]
なぜ、関係演算子は結合を持たない例が多いんだろうか?
単純に 3<=x<99 とか書けてもいいとは思うんだが、

754 名前:デフォルトの名無しさん mailto:sage [2006/03/18(土) 19:58:12 ]
C がそうやってるから右に習えだと思う


755 名前:デフォルトの名無しさん mailto:sage [2006/03/18(土) 20:00:44 ]
10 < x >= y < 20 <= z > 0
とかあったら何なんだか困るじゃん
Lispだと (< 10 x 20) とか書けるけどね

756 名前:デフォルトの名無しさん mailto:sage [2006/03/18(土) 20:02:06 ]
演算子で思い出したけど
おれは perl の =~ を代入演算子だとばっかり思ってたから
$a =~ s///; はいいけど
$b =~ m//; の意味がわかんなくなって混乱してた…

757 名前:デフォルトの名無しさん mailto:sage [2006/03/18(土) 21:14:54 ]
>>754
とりあえず、C で 3<=x<99 はコンパイル通るぞ。




758 名前:デフォルトの名無しさん mailto:sage [2006/03/18(土) 21:18:53 ]
コンパイル通るから何?

759 名前:デフォルトの名無しさん mailto:sage [2006/03/18(土) 23:30:10 ]
>>752
いっぺん死ねって書いてもよまねぇだろうな(w

760 名前:デフォルトの名無しさん mailto:sage [2006/03/18(土) 23:51:40 ]
>>753
確かに
Mathematicaは書ける、って言うか書けないと数学ソフトだし不便すぎる。

761 名前:デフォルトの名無しさん mailto:sage [2006/03/19(日) 02:21:26 ]
スタックマシンでスタックが溢れそうな時、スタックを reallocするのと
別に領域を確保するのとではどっちが一般的ですか?

前者はスタックが一つの領域でないといけないのと reallocのコストが欠点で、
後者はフレームの削除などを絶対アドレスで指定しないといけないので
継続を作る時にちょっとめんどくさいのが欠点だと思います。

762 名前:デフォルトの名無しさん [2006/03/19(日) 20:27:31 ]
>>760
へぇ、書ける言語あるんだね。しらなんだわ


763 名前:デフォルトの名無しさん [2006/03/19(日) 21:19:10 ]
おそらく専用でない一般高級言語だと、Rubyあたりが実装しそうな木ガス

764 名前:デフォルトの名無しさん mailto:sage [2006/03/19(日) 21:19:29 ]
Pythonがそうだった記憶がかすかに

765 名前:デフォルトの名無しさん mailto:sage [2006/03/19(日) 21:21:33 ]
>>761
おれなんかは自家製超高速malocを作ってダブルリンクリストでスタック作ってます。
スタックに無茶な要求するにはこれが一番かなとか思ってたりします。

>>762
おれは、例外を作ってもこの表現ができるべきだと思うのですが、みんなどう思っているのだろうか?
絶対見通しいいとおもうんだけどな・・・

766 名前:デフォルトの名無しさん mailto:sage [2006/03/19(日) 21:27:41 ]
ダブルリンクリストだと継続が困らないか? (スタックがツリーになるから)
継続使わないならシングルリンクリストでも良さそうだが。


767 名前:デフォルトの名無しさん mailto:sage [2006/03/19(日) 21:28:42 ]
>>766
ダブルでないと削除がややっこしいです。



768 名前:デフォルトの名無しさん mailto:sage [2006/03/19(日) 22:30:25 ]
単なる好奇心だけど、途中のスタックフレームを削除したいってどういう場合ですか?


769 名前:761 mailto:sage [2006/03/19(日) 23:11:42 ]
セグメント、オフセットを使えば相対アドレスでもスタックを分割できることに
気づきました。

>>765
セグメントテーブルをリストにするってことでしょうか?
最初からセグメントテーブルのサイズを決め打ちして配列にしても良い気がします。
リストだとアクセスにコストがかかりますし。
確かに途中を削除するっていうのならリストの方がいいですが、どういう状況なんでしょうか。

770 名前:デフォルトの名無しさん mailto:sage [2006/03/20(月) 13:38:41 ]
>>765
ヒープへの参照をスタックに積んでスタックそのものは小容量ですまそうって方向じゃないんだ?


771 名前:デフォルトの名無しさん mailto:sage [2006/03/20(月) 19:01:49 ]
無知な俺が、話ぶった切って恐縮ですが
リフレクションってどんな構造で作るの?
javaぐらいみっちり仕込まないと不可能?

772 名前:デフォルトの名無しさん mailto:sage [2006/03/20(月) 19:54:37 ]
>>771
例だけど、
scheme(L)でscheme(L')インタプリタを書いて、L'からLを操作したり、L'自身の環境情報などを
取得できるように作る。このときL'からLをいじったことによってL'の動作に影響が及ぶことを
causal connectionという。

言語、用途により様々だけど、メタレベルに何を求めるのかで、実装や仕様が変わると思う。


773 名前:デフォルトの名無しさん mailto:sage [2006/03/21(火) 20:59:46 ]
>>771
どんな構造っつーか、単にオブジェクトやクラスに関する情報を、実行時に取り出せる(アクセスできる)仕組みを用意するだけ。
ただそれだけだから、あんまり構造がどうとか悩まなくていいよ。

リフレクションの仕組みや構造について考えるなら、まずは言語の仕組みについて知らないと。
それがわかれば、リフレクションの仕組みはおのずとわかる。

774 名前:デフォルトの名無しさん [2006/03/23(木) 14:28:00 ]
dl2.n1e.jp/DATA/MOVIE/1140722907/1140722907.jpg

775 名前:デフォルトの名無しさん [2006/03/26(日) 10:03:01 ]
助けてください。
↓こんな文章があって要はfortran90でない場合一番下のfcに何か入力しろという意味だと思うのですが、
なんと打ちこんだらよいのですか?fortran77なので打ち込まないといけないのはわかっているのですが、
全くこのあたりの知識がないのでわかりません。
--------------------------------------------------------------------
#if your machine's fortran compiler command is not "f90", need to set #
# the following macro to adjust. #
---------------------------------------------------------------------

FC=

776 名前:デフォルトの名無しさん mailto:sage [2006/03/26(日) 10:23:11 ]
>>775

Format C:

777 名前:デフォルトの名無しさん mailto:sage [2006/03/26(日) 10:53:15 ]
FORTRAN より C



778 名前:775 [2006/03/26(日) 13:29:06 ]
ありがとうございます。
ですが入力してもだめでした。
そこで方向転換してfortran90のコンパイラをインストしたいのですが、
どこに転がっているのですか?
windowsです。


779 名前:デフォルトの名無しさん mailto:sage [2006/03/26(日) 17:44:13 ]
書いてあるとおりのことすればいいじゃねぇかよ。
それともネタですか?>>775

780 名前:デフォルトの名無しさん [2006/03/26(日) 17:47:03 ]
FC=f77

じゃあかんの?


781 名前:デフォルトの名無しさん mailto:sage [2006/03/27(月) 07:31:07 ]
ポインタ操作のできるスクリプト言語作りたい
そゆーの既にある?

782 名前:デフォルトの名無しさん mailto:sage [2006/03/27(月) 07:40:26 ]
CINT?

783 名前:デフォルトの名無しさん mailto:sage [2006/03/27(月) 08:23:08 ]
すごい久々にCINTスレのぞいてみたら、まだ落ちてなかったw

C/C++インタプリタ CINT
pc8.2ch.net/test/read.cgi/tech/1114397934/

CINTの需要自体はちと薄そうな印象。
もしもありとあらゆるCのライブラリが元のC言語の文法と比べて違和感なく全て呼び出せたらはやりそうなもんだけどな。

784 名前:デフォルトの名無しさん mailto:sage [2006/03/27(月) 12:53:33 ]
>>775
訳してみた。

-------------------------------------
#手持ちのマシンにおいて、Fortranコンパイラのコマンドが "f90" でない場合は、
#次のマクロを設定する必要があります。
-------------------------------------
FC=


つまりだな、Fortranコンパイラのコマンドが例えばf77とかだったら、
FC=f77
と設定すればよい。

これ以上はスレ違いだから質問はやめたほうがよい。

785 名前:デフォルトの名無しさん mailto:sage [2006/03/28(火) 03:57:44 ]
とある対話型計算ソフトの入力行を横取りして先に字句構文解析したいんだけど
perlだとParse::RecDescentがメジャーなの?

代入と()のネストくらいを1行ずつ処理できればいいので手で書いてもいいけど
昔yacc+bisonで遊んでたときみたいにまたBNF触りたくなった
割鶏焉用牛刀だが

786 名前:デフォルトの名無しさん mailto:sage [2006/03/28(火) 12:29:49 ]
>>785
yacc+bisonの経験あるなら、kmyaccはどう?
yaccの書き方そのままで、perlやjavaやjavascriptが使える。

787 名前:デフォルトの名無しさん mailto:sage [2006/03/28(火) 14:31:40 ]
ひとつ聞きたいんだけど、
2型言語の任意の位置に [] の組を挿入できるようにした文法って1型言語?

例えば 1+2 を変化させた 1[+2] とか [1+]2 とかを許容する文法なんだけど……



788 名前:デフォルトの名無しさん mailto:sage [2006/03/29(水) 02:59:38 ]
>>785
入力が小さい場合は Parse::RecDescent が手軽だね。外部ツールにくらべると
手軽さが違う。


789 名前:デフォルトの名無しさん mailto:sage [2006/03/29(水) 07:51:32 ]
>>786
>>788
情報ありがと。しかし構文解析久しぶりで大分忘れてるわ。

790 名前:デフォルトの名無しさん [2006/03/31(金) 18:10:09 ]
よく、他言語のライブラリとか呼べる言語があるけど、
あれって事前に呼ぶ関数名を全て列挙して組み込んでるのですか?

791 名前:デフォルトの名無しさん mailto:sage [2006/03/31(金) 18:19:49 ]
普通マーシャリングしてるだけじゃないか

792 名前:デフォルトの名無しさん mailto:sage [2006/03/31(金) 21:28:55 ]
それは結局の所、「事前に呼ぶ関数名を全て列挙して組み込んでる」のでしょうか?

793 名前:デフォルトの名無しさん mailto:sage [2006/03/31(金) 21:31:42 ]
事前にわかんない場合はどうしてるんだとか思わないのか

794 名前:デフォルトの名無しさん mailto:sage [2006/03/31(金) 21:32:21 ]
違う

795 名前:デフォルトの名無しさん mailto:sage [2006/03/31(金) 21:34:54 ]
そういうのもあるし、そうじゃないのもある。

796 名前:デフォルトの名無しさん mailto:sage [2006/03/31(金) 22:29:35 ]
LALR(1)の文法をLL(k)に変えることって可能ですか?

797 名前:デフォルトの名無しさん mailto:sage [2006/03/31(金) 22:51:20 ]
>>793
事前にわからない場合でも呼べる方法ってありますか?




798 名前:デフォルトの名無しさん mailto:sage [2006/03/31(金) 23:00:22 ]
>>797
cvs.sourceforge.net/viewcvs.py/sbcl/sbcl/src/runtime/x86-assem.S?rev=1.32&view=auto

call_into_c の部分とか。C なら引数とか戻りアドレスとか用意して call すれば良い。
あとは dlsym() とかを調べる。

799 名前:デフォルトの名無しさん mailto:sage [2006/03/31(金) 23:42:34 ]
むむ、アセンブラですか!



















orz

800 名前:デフォルトの名無しさん mailto:sage [2006/03/32(土) 00:22:44 ]
いや、単なる例として出しただけだから...

801 名前:デフォルトの名無しさん mailto:sage [2006/03/32(土) 02:40:22 ]
引数の積み上げ方と呼出し後の処置さえ合ってればいんだから
簡単だろ


802 名前:デフォルトの名無しさん mailto:3/32 [2006/03/32(土) 06:02:31 ]
>>796
規則を増やして左再帰を消去して左括り出しするとか地道な方法しかなさそう(自動化するツールもあるのかな?)。
それで衝突が起こるならその文法がそもそもLLじゃない可能性もあるので、文法自体を修正する。

ちなみにLL文法ってLALR文法のサブセットだっけ?
LL(∞)⊂LR(1)は確かだったと思うけど、LR(0)は微妙だったような気が。
誰か教えて。

803 名前:デフォルトの名無しさん mailto:sage [2006/03/32(土) 14:03:32 ]
>>790,799
その言語のソースを読んでみようとは思わないのかな。
xyzzyのdefine-dll-entryとかRubyのdlモジュールはC++/Cだった。

804 名前:デフォルトの名無しさん [2006/04/03(月) 21:46:49 ]
コンパイラを書くのにオススメな言語を教えてください。
最近は、海外では関数型言語で書くのがはやっているみたいですが・・・
OCamlとか。

自分の一番慣れている言語!というのはなしの方向で。

805 名前:デフォルトの名無しさん mailto:sage [2006/04/03(月) 23:54:21 ]
>>804
yaccがあるからC! とか、JavaCCがあるからJava! ってのもなしの方向で?

806 名前:デフォルトの名無しさん mailto:sage [2006/04/03(月) 23:57:15 ]
ある程度以上メヂャーな言語なら、hogeCCの類いは存在するからねえ。

807 名前:デフォルトの名無しさん mailto:sage [2006/04/03(月) 23:58:13 ]
>>804
自分で作った言語でコンパイラ書くのがおすすめ



808 名前:デフォルトの名無しさん mailto:sage [2006/04/04(火) 00:26:28 ]
誰も使わないけどな。

809 名前:デフォルトの名無しさん mailto:sage [2006/04/04(火) 00:46:06 ]
elisp みたいな組み込み言語にすればオケ
emacs 程の神アプリじゃなくても、ちょっと気の利いたツールの拡張言語にすれば
それなりにユーザを獲得出来るんじゃない。

810 名前:デフォルトの名無しさん mailto:sage [2006/04/04(火) 00:59:31 ]
そういえば、情報処理学会の会誌でコンパイラの連載始まるみたいね。
COINS使うらしい。

811 名前:デフォルトの名無しさん mailto:sage [2006/04/04(火) 01:17:00 ]
>>809
設計思想による

812 名前:デフォルトの名無しさん [2006/04/04(火) 01:28:00 ]
>>807
そこまでいければ苦労しないw
と思ったけど、それもいいな。

GCCみたいに、最初はどこでもコンパイルできるミニマムなCでコンパイラを生成して、
そのコンパイラで自分自身をまたコンパイルして・・・と。


そういえば、マルチプラットフォームなコンパイラつくりたいと思ったら、
やっぱり、GCCのフロントエンド作るのが正解なんかね。
最初見たとき、中間言語がわけわかめだった。
他に方法ないすか?

813 名前:デフォルトの名無しさん mailto:sage [2006/04/04(火) 08:29:54 ]
>>812
>他に方法ないすか?

お前の知能じゃドレもムリ。

大人しくHSP使ってろ

814 名前:デフォルトの名無しさん mailto:sage [2006/04/04(火) 11:20:41 ]
HSPならできるんですか?

815 名前:デフォルトの名無しさん mailto:sage [2006/04/04(火) 15:35:54 ]
つまり、HSP最強

816 名前:デフォルトの名無しさん mailto:sage [2006/04/04(火) 17:24:17 ]
はいはいわろすわろす

817 名前:デフォルトの名無しさん mailto:sage [2006/04/04(火) 18:56:18 ]
>810
COINSはいつJavaに対応するのでしょうか?
図には書かれているのに…



818 名前:デフォルトの名無しさん mailto:sage [2006/04/05(水) 13:09:14 ]
>>817
一応あるみたい。
www.coins-project.org/COINSdoc/frontend/index.html#i-5-1-3

これ以上まともにJavaに対応することには、
苦労に見合うだけの学術的な意味がないからなあ。

819 名前:デフォルトの名無しさん mailto:sage [2006/04/05(水) 18:50:53 ]
>818
> Javaのフロントエンドは以下の方針で開発しているが、デバッグ中であるので、
> リリース版にはまだ入っていない。

だから公開はされてないんですね。いつからデバッグしてるのかちょっと不安…

820 名前:デフォルトの名無しさん [2006/04/11(火) 18:25:41 ]
>>818
参考になります。
ただ、自分の目指しているのは型なし&プロトタイプ指向ですので、やっぱりちょっと
ポイントが違うようですね。まあ、その違いを見るのも楽しいですが。

821 名前:デフォルトの名無しさん mailto:sage [2006/04/11(火) 18:54:36 ]
なぜ>383

822 名前:デフォルトの名無しさん mailto:sage [2006/04/16(日) 21:51:35 ]
どこかにJavaでかかれたCの処理系とかない?
自分で作ろうかと思ってるんだけど、結構大変そうだし。
自作するならSableCCあたりで作ろうと思ってる。
ASTを作るまでは楽だろうけど、その後が...。

823 名前:デフォルトの名無しさん mailto:sage [2006/04/17(月) 01:13:49 ]
www.coins-project.org/

824 名前:デフォルトの名無しさん mailto:sage [2006/04/17(月) 12:07:17 ]
>>823
どうもありがとう。学習支援用にインタープリタでも作ろうかと思って。

825 名前:デフォルトの名無しさん mailto:sage [2006/04/17(月) 20:22:45 ]
>>823
情報処理学会誌、今日家に届いたよ。

826 名前:デフォルトの名無しさん mailto:sage [2006/04/17(月) 21:48:30 ]
>>825
家にも来た。
情処会員相手ということで
初心者本や教科書なら必要な噛み砕いた説明がないから
読むほうとしては面白いことだけさらっと読めていいね。

3月までの連載は
www.ipsj.or.jp/07editj/promenade/index.html
で見れるから、コンパイラの連載も誰でもダウンロードできるようになるかもね。

827 名前:デフォルトの名無しさん mailto:sage [2006/04/17(月) 22:43:38 ]
学会誌見るまでCOINSなんて知らなかった。



828 名前:デフォルトの名無しさん mailto:sage [2006/04/18(火) 12:14:03 ]
>>822
構文解析だけなら、JavaCCやANTLRなら有志によってCの文法定義ファイルが用意されている。
Cだけじゃなくて、JavaやXMLも用意されている。
JavaCCやANTLRのサイトをのぞいてみて。

829 名前:デフォルトの名無しさん mailto:sage [2006/04/18(火) 12:26:48 ]
どんなに遅くてもいいから、実装まで作った処理系のサンプルがほしい

830 名前:デフォルトの名無しさん mailto:sage [2006/04/18(火) 14:23:00 ]
>>828
感謝。実はSableCC用のgrammarを発見しました。
あとはASTを上からなめるようなものを書けばいいと思う。
あとプリプロセッサがないから手で書くか、IPAのを借りようかと思う。

>>829
完成したらソース公開するから期待しないで待ってて。
Javaで作るつもり。ライブラリはアドオン形式で。

C89も結構複雑だよねぇ。これがC99になったらと思うと・・・。

831 名前:デフォルトの名無しさん mailto:sage [2006/04/18(火) 14:31:21 ]
今公式サイト見たけどCOINSって錚々たるメンバー参加してるんだね。
国内のコンパイラの書籍で見かける人ばっかり・・・。

832 名前:デフォルトの名無しさん mailto:sage [2006/04/18(火) 15:45:54 ]
>>830
それを言うならC++0xになったらと思うと…

833 名前:デフォルトの名無しさん mailto:sage [2006/04/18(火) 16:07:22 ]
>>832
仰る通り。言語が複雑化すると処理系作る人は大変だね。
LL(1)で解析できる言語(Pascalとか)は素晴らしいなあ。
もっともそのせいで":="あたりで賛否両論になるわけだが...。

834 名前:デフォルトの名無しさん mailto:sage [2006/04/18(火) 16:08:48 ]
> もっともそのせいで":="あたりで賛否両論になるわけだが...。
どういうことですか?kwsk
代入演算子が = で、比較演算子が ==なら済む話?

835 名前:デフォルトの名無しさん mailto:sage [2006/04/18(火) 16:59:55 ]
>>834
ごめんごめん、深い意味はないのよ。個人的な感想。
個人的には":="が"="で、"<>"が"!="で、"="が"=="だったら
もっと好きになってたかもってことで。
#自分が最初に使った言語にもよるんだろうけど

836 名前:デフォルトの名無しさん mailto:sage [2006/04/18(火) 18:09:40 ]
>>835
それは、ホントに個人によるな。
俺の場合、= が代入なのはキモく感じる。
今は慣れたが、最初に言語を習うときに、既存の教育(数学)の常識と違うから。
代入は、:= とか <- とかの方がしっくりくる。

837 名前:デフォルトの名無しさん mailto:sage [2006/04/18(火) 20:23:17 ]
>>836
確かに。a = a + 1 なんて絶対成立しないもんね。
そういう意味では := や <- が支持されるのはわかるなぁ。
ただ、<> が等しくないというのはちょっと違和感?
後輩で「<>って大なりでも小なりでもないから等しいってことですか」って
マジで言ってる奴がいた(w
...なるほど深読みするとそうとも取れるのかと思ったよ。



838 名前:デフォルトの名無しさん mailto:sage [2006/04/18(火) 21:06:01 ]
<>と!=は好みがでそう。
個人的には!=という記号の対称性のなさが少し嫌かも。
それだったらprologのように=\=の方が好きだ。

839 名前:デフォルトの名無しさん mailto:sage [2006/04/18(火) 21:16:39 ]
<and>か<or>か、確かにどっちにも取れるよなぁ。

840 名前:デフォルトの名無しさん mailto:sage [2006/04/18(火) 21:26:26 ]
昔は"#"が不等号って時代もチョロットだけあったよね。


841 名前:デフォルトの名無しさん mailto:sage [2006/04/18(火) 21:38:37 ]
a := 3 は a: int = 3 の略だったりするのはちょっと萌え。

842 名前:デフォルトの名無しさん mailto:sage [2006/04/18(火) 22:28:55 ]
俺の知人がアドレスバーにあった
://www.com/?1=1+2
なよーなURL見て、
このサイト足し算もできないとんでもねー馬鹿だなって言ってたの思い出した

この業界はとりあえず普通じゃないよね

843 名前:デフォルトの名無しさん mailto:sage [2006/04/18(火) 22:31:35 ]
>>842
というかURLの意味がわからないんだけど。

俺のプログラマでない友人も、x=x/3というのを見て、x==0と思い込んでた

844 名前:デフォルトの名無しさん [2006/04/18(火) 23:17:02 ]
洩れは if .. elsif を見て英語音痴だとおもたよw

845 名前:デフォルトの名無しさん mailto:sage [2006/04/18(火) 23:19:15 ]
"=="を定義の意味にすべきだと思う。

846 名前:デフォルトの名無しさん mailto:sage [2006/04/19(水) 01:05:41 ]
ウゼー、言語初心者が2,3人迷い込んでガタガタ騒いでやがる

847 名前:デフォルトの名無しさん mailto:sage [2006/04/19(水) 01:14:13 ]
自称熟練者さんは理論にもさぞお詳しいのでしょう。



848 名前:デフォルトの名無しさん mailto:sage [2006/04/19(水) 01:25:27 ]
演算子の記号の意味なんか言語の仕様書読めば済む話
スレ違い

849 名前:デフォルトの名無しさん mailto:sage [2006/04/19(水) 01:29:00 ]
自称熟練者さんは「演算子の記号の意味」が理論だと思っていらっしゃるようです。

850 名前:デフォルトの名無しさん mailto:sage [2006/04/19(水) 01:44:17 ]
つーか何で = が代入なんだよ

851 名前:デフォルトの名無しさん mailto:sage [2006/04/19(水) 01:50:13 ]
代入要らない。

852 名前:デフォルトの名無しさん mailto:sage [2006/04/19(水) 02:31:05 ]
>>851
関数型言語?

853 名前:デフォルトの名無しさん mailto:sage [2006/04/19(水) 02:38:57 ]
代入って古いんだよね ダサい きもい

854 名前:デフォルトの名無しさん mailto:sage [2006/04/19(水) 02:47:10 ]
そっか。

855 名前:デフォルトの名無しさん mailto:sage [2006/04/19(水) 08:55:35 ]
>>850
BASICの頃に作られた定石でつね

856 名前:デフォルトの名無しさん mailto:sage [2006/04/19(水) 09:04:53 ]
知り合いに「Pascalの代入演算子が:=なのは文法をLL(1)にするためだ」って
力説してるヤツがいたなぁ。
つーか、トークンの切り出しは字句解析の仕事で、
LL(1)は構文解析の話だと思うのだが。

857 名前:デフォルトの名無しさん mailto:sage [2006/04/19(水) 20:48:54 ]
本によるとLALR(1)文法は手書きには向かないって書いてあるんだけど
Rubyとかの言語がコンパイラコンパイラで作られてるのはその為?



858 名前:デフォルトの名無しさん mailto:sage [2006/04/19(水) 20:53:30 ]
>>857
その本によるとなんで手書きに向いていないか書いてある?

859 名前:デフォルトの名無しさん mailto:sage [2006/04/20(木) 02:33:51 ]
>>855
FORTRANの頃だろう。

860 名前:デフォルトの名無しさん mailto:sage [2006/04/20(木) 17:53:43 ]
>>857
LALR(1)を手で書こうとすると地獄を見るよ。
再帰下降の文法がどれだけ簡単か感謝するようになる(w

861 名前:デフォルトの名無しさん mailto:sage [2006/04/20(木) 20:15:23 ]
LL(1)は適用範囲が狭いけど書きやすい。
LALR(1)は適用範囲が広いけど書きにくい。
すげージレンマです!

862 名前:デフォルトの名無しさん [2006/04/20(木) 21:58:00 ]
flex 使ってると、このようなメッセージが出るんだけど、
この関数を定義しないようにするにはどうすればいいでしょうか?

lex.yy.c: warning: 'yy_flex_realloc' defined but not used


863 名前:デフォルトの名無しさん mailto:sage [2006/04/21(金) 00:40:11 ]
#undef yy_flex_realloc

864 名前:デフォルトの名無しさん mailto:sage [2006/04/22(土) 10:06:33 ]
一般教養としての Garbage Collection
ttp://www.logos.t.u-tokyo.ac.jp/~endo/gc/gc.pdf

865 名前:デフォルトの名無しさん [2006/04/22(土) 10:56:10 ]
>>863
違うだろ?

866 名前:デフォルトの名無しさん mailto:sage [2006/04/22(土) 22:41:57 ]
hiraikenji@t.vodafone.ne.jp

867 名前:デフォルトの名無しさん mailto:sage [2006/04/25(火) 21:58:09 ]
HSPもyaccとか使ってんのかね?



868 名前:デフォルトの名無しさん mailto:sage [2006/04/27(木) 11:58:47 ]
>>867
どうでしょう。HSPって文法は何?LALR(1)?

869 名前:デフォルトの名無しさん mailto:sage [2006/04/27(木) 23:41:05 ]
HSPは字句解析とか構文解析みたいな、まともな理論使ってなさそうな雰囲気
例えるなら紙芝居エロゲのシナリオスクリプト

870 名前:デフォルトの名無しさん mailto:sage [2006/04/29(土) 18:18:30 ]
エロゲスクリプタもbisonで書いてるの多いと思うが

871 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 13:00:49 ]
コンパイラを書くのに最も適した言語って何ですかね?

872 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 13:08:48 ]
最初の立ち上げの言語のことか?
それともツール込みの事か?

おいらは最後には自己記述するから自分自身とかって事になるもんだと思ってるんだけど。


873 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 14:31:34 ]
コンパイラの仕事ってのは、大半がツリーからツリーへの変換だから、
ツリーを弄りやすく、静的な強い型検査をし、メモリ管理がらくちんな
言語が向く。ML系かHaskellでどうぞ。

874 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 15:34:17 ]
コンパイラの仕事ってのは、大半がツリーからツリーへの変換だから、
ツリーを弄りやすく、強力なマクロを持ち、メモリ管理がらくちんな
言語が向く。LispかSchemeでどうぞ。

875 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 15:52:58 ]
コンパイラの仕事ってのは、大半がツリーからツリーへの変換だから、
ツリーを弄りやすく、すべてがオブジェクトで、メモリ管理がらくちんな
言語が向く。Ruby でどうぞ。


876 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 16:01:31 ]
コンパイラの仕事ってのは、大半がツリーからツリーへの変換だから、 
ツリーを弄りにくく、貧弱なマクロを持ち、メモリ管理がたいへんな 
言語は向かない。CかC++はやめとけ。 

877 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 16:10:52 ]
>>876

 ・・・orz





878 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 16:24:16 ]
でも結局yaccとc使うんでしょ

879 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 16:25:33 ]
yaccとCをつかうと何が有利なのでしょう?

880 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 16:28:07 ]
なにも。

881 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 16:30:19 ]
あれを使えばいい、とか、これを使えばいい、とか言ってるだけのやつはいなくなってもいいよ。

882 名前:デフォルトの名無しさん [2006/04/30(日) 16:31:29 ]
そもそも、ここで具体的なことを質問に来るやつなんていないじゃない?
スレもここで終了してもいいんじゃないかな?
というわけで



======= 終 了 =========




883 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 18:27:01 ]
久しぶりに終了厨を見たな

884 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 19:54:42 ]
時代的にはHaskellですかね?
でも習得が簡単なのはLisp?
うーん迷う。

885 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 19:59:03 ]
>>884
お前が言いたいのはLispじゃなくてSchemeだろ?

886 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 22:30:19 ]
>>875
では、何故Rubyは、Rubyで書かれていないのですか?

887 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 23:22:40 ]
コンパイラはブートストラップできるけど、スクリプタは出来ない希ガス



888 名前:名無しさん@Linuxザウルス mailto:sage [2006/05/01(月) 07:38:23 ]
ほとんどの速いLISP/Schemeはそれ自身で書かれてるけど
コア部分はCだったりする。
移植考えた場合gccでミニ言語構築してからブートストラップかな。
開発者はELFとかPEまで面倒見たくないのが本音。

889 名前:デフォルトの名無しさん [2006/05/01(月) 08:26:55 ]
>>886
こういう馬鹿がたまに湧いてでてくるようだが、
おっとそろそろ連休かぁw

言語にはそれぞれの目的があるのも分からんの?
アセンブラからベン教しなおしたら?


890 名前:デフォルトの名無しさん mailto:sage [2006/05/01(月) 09:22:19 ]
.o0(下らない煽りを入れるだけなら、書き込まなきゃ良いのに・・・)

891 名前:デフォルトの名無しさん mailto:sage [2006/05/01(月) 09:45:36 ]
886じゃないけど、ブートストラップする目的の一つには言語の記述力の高さを証明するって意味合いもあるんじゃまいか。
rubyのことはよく知らないけど、もしパフォーマンスに関して考慮しないとしたら、rubyは自己記述できるだけの記述力はあるの?

892 名前:デフォルトの名無しさん mailto:sage [2006/05/01(月) 10:53:53 ]
ruby で ruby を記述することはできるっしょ。

893 名前:デフォルトの名無しさん [2006/05/01(月) 19:54:21 ]
ruby を用いれば(理論上は)なんでも記述できる。
ただ、パフォーマンスが問題なだけ。


894 名前:デフォルトの名無しさん mailto:sage [2006/05/01(月) 19:58:44 ]
>>893
>ruby を用いれば(理論上は)なんでも記述できる。
証明は?

895 名前:デフォルトの名無しさん mailto:sage [2006/05/01(月) 20:07:02 ]
遅いってのは、それだけで罪だと思う

896 名前:デフォルトの名無しさん [2006/05/01(月) 20:09:17 ]
早漏よりはましだと思うけどね

897 名前:デフォルトの名無しさん mailto:sage [2006/05/01(月) 22:55:01 ]
>>893
あまり良い例じゃないかもしれないけど、GC は Ruby で書けないんじゃない?



898 名前:デフォルトの名無しさん mailto:sage [2006/05/01(月) 23:46:15 ]
GCも書けないんじゃチューリング完全といえるのか?

899 名前:デフォルトの名無しさん mailto:sage [2006/05/01(月) 23:49:02 ]
書けるよ^^;

900 名前:897 mailto:sage [2006/05/02(火) 00:07:17 ]
>>898
まぁ、そういう意味では書けそうかな。
仮想的なメモリの様な物を定義して、GC のアルゴリズムを実装したり、
malloc/free/etc. をラップしてゴリゴリ書いたりは出来るだろうね。

901 名前:デフォルトの名無しさん mailto:sage [2006/05/02(火) 00:15:59 ]
>>898
チューリング完全関係ない^^;

902 名前:デフォルトの名無しさん mailto:sage [2006/05/02(火) 01:29:53 ]
つーか実装可能かどうかよりも、実装しやすいかどうかが問題なんじゃないの?

903 名前:デフォルトの名無しさん mailto:sage [2006/05/02(火) 01:38:25 ]
コンパイラ作る側のことは問題じゃない^^;

904 名前:デフォルトの名無しさん mailto:sage [2006/05/02(火) 01:44:50 ]
ユーザーにコンパイラ作らせるって意味じゃなくて言語の記述力の話だったような気が

905 名前:デフォルトの名無しさん mailto:sage [2006/05/02(火) 07:01:58 ]
マジレスすると Ruby の記述力はほぼ最強クラス
Ruby と Haskell を学べば他のウンコ言語は不要


906 名前:デフォルトの名無しさん mailto:sage [2006/05/02(火) 10:12:40 ]
Rubyは型なしライトウェイト言語。Haskellは強い型あり言語。ぜんぜん用途も違うから住み分けが必要だね。

907 名前:デフォルトの名無しさん mailto:sage [2006/05/02(火) 18:16:08 ]
>>905
いやしかし、ごく普通のPCで
「720x480ピクセルのインターレースの画像データを
デインターレース処理してね。当然60fpsでよろしく」
「ビットレート10MBpsのMPEGデータを・・・」
とか、そういうごく有りがちな応用とかでは C/C++ は捨てがたい。



908 名前:デフォルトの名無しさん mailto:sage [2006/05/02(火) 22:20:30 ]
この板もID制になればなぁ。
一日中一人で荒らしてるが丸分かりでおもしろいのになぁ

909 名前:デフォルトの名無しさん [2006/05/02(火) 22:57:40 ]
>>907
そろそろrubyでも届く処理になっていると思われ。

910 名前:デフォルトの名無しさん mailto:sage [2006/05/02(火) 23:04:47 ]
>>909は世間知らず

911 名前:デフォルトの名無しさん mailto:sage [2006/05/02(火) 23:05:59 ]
Rubyの売りは手軽に書けるということでしょ?
C/C++はシビアな処理が必要なところとか、大規模開発向き。
言語は住み分けが大切なんだって言ってるでしょ。

912 名前:デフォルトの名無しさん mailto:sage [2006/05/02(火) 23:09:57 ]
Rubyはなんだかうんこくさいんです。

913 名前:デフォルトの名無しさん mailto:sage [2006/05/03(水) 01:05:19 ]
清濁併せのむって事がわからない馬鹿は死ね


914 名前:デフォルトの名無しさん mailto:sage [2006/05/03(水) 01:46:15 ]
>>909
またまたご冗談を

>>911
激しく同意

915 名前:デフォルトの名無しさん mailto:sage [2006/05/03(水) 01:50:51 ]
scheme みたいにミニマム指向で、型付きで、オブジェクト指向をサポートしていて、
repl があって、文法が奇麗な言語って無いですかねぇ。仕様がある程度かっちり
していると嬉しいのですが。

JavaScript に型が付いた様なの、あるいは言語仕様がきちっと決まっている Pike
みたいな感じのキボンヌ。

916 名前:デフォルトの名無しさん mailto:sage [2006/05/03(水) 01:59:06 ]
>>915
オブジェクト指向はラムダ式の包含的なアプローチなわけだが・・
とりあえずOCamlあたりのことを言っているのかな・・

917 名前:デフォルトの名無しさん mailto:sage [2006/05/03(水) 02:27:23 ]
ラムダでオブジェクトを作れると言う意味では、syntax sugar としての OO をサポートしている
-- object.method() の様な感じで記述出来る -- 言語が無いかなと思いまして。

OCaml はミニマム指向なのでしょうか?
ML97 みたいな規格があると嬉しいです。



918 名前:デフォルトの名無しさん mailto:sage [2006/05/03(水) 04:11:54 ]
>>915
Ruby。動的型だけど。


919 名前:デフォルトの名無しさん mailto:sage [2006/05/03(水) 06:38:26 ]
もうRubyはいいってw

920 名前:デフォルトの名無しさん mailto:sage [2006/05/03(水) 06:42:15 ]
動的型まで含めたらだめだろ

921 名前:デフォルトの名無しさん mailto:sage [2006/05/03(水) 06:52:13 ]
>>915
JavaScript 2.0では随所に型情報をつけられるよ。
つーか「型が付いた」ってどういう意味で言ってるの?
静的型付けってこと?

922 名前:デフォルトの名無しさん mailto:sage [2006/05/03(水) 07:25:26 ]
>>921
JavaScript 2.0 は以前ちょっとだけ見て忘れてました。
もう一度調べてみます。どうもありがとう。

923 名前:デフォルトの名無しさん mailto:sage [2006/05/03(水) 07:33:02 ]
JavaScript 2.0って昔からドラフトだけは出てたけど、
今はもう実装されてんの?

924 名前:デフォルトの名無しさん mailto:sage [2006/05/03(水) 07:50:29 ]
誰も実装しないね。草案が固まらないのかな?

925 名前:デフォルトの名無しさん mailto:sage [2006/05/03(水) 07:54:42 ]
ActionScript3.0は

926 名前:デフォルトの名無しさん mailto:sage [2006/05/03(水) 08:45:35 ]
>>919
Ruby コンプレックスかよダセw
どうせオブジェクト指向が使いこなせなかった低能だろ?
氏んでくださーい。あっ HSP 厨房?

927 名前:デフォルトの名無しさん mailto:sage [2006/05/03(水) 10:27:54 ]
926みたいな奴を見るたびに、Ruby使う気が失せていくんだよな。



928 名前:デフォルトの名無しさん mailto:sage [2006/05/03(水) 13:26:48 ]
レベルの低下が著しいスレですね

929 名前:デフォルトの名無しさん mailto:sage [2006/05/03(水) 15:30:01 ]
このスレは前からこんなもんだ。

930 名前:デフォルトの名無しさん mailto:sage [2006/05/03(水) 15:30:40 ]
           j} _ ..∠ ≧=≠ー≒=辷z、_      _メ    }}
          ≠´              `く≠≦´_     〃
.         , '                  〈、⌒ヽ`ヽ=≠"
        /, ,   / ,               キヽ.     ヽ
         ///〃 / / /     }}川 i|!  i  } ハ   ト、 キ
.         jハl|‖{ { {  {     ノノ川 jj|  j / / j}_,メ ヾリ
.        l{八 ヽヽヽ \   //ノノノノノ}  /〃//  `二ニ=- 、
         八 、ヽ、 x≦ミヽ、{ { ≧=ミ.ノ/ノ_厶斗-‐== 二 」
        /  ゝ≧ミyィ゙j:i}  `  ´{゙j:;;!ii}ゞ≧=彡ヘ-‐=≡ ‐= ニコ
.    /  /{ミ辷彡}oー ' ,     ーo' {ミ辷__彡}二ニ=-  jノ
    {  / , ゝー=人""  cっ   "" °{ミ辷__彡}-‐==≡ミ〉
      \{ / /{辷彡}>  .. __    イj从ミ辷_彡ノ==≡ニ≦、
      `{ { f´≧=彡'´ ̄`ヽ_」    jァァ' ゞ=个辷ニニ=-テ′
       `ーァ `≠ x==く(´   /,≠=キテノハミ辷=≦
          ヤ/ 〈く   `'ァfj彡'゙     》/   ヽ_弓
          `{   ヾx、__,≠ハミヽ、    〃   丿 リノ
.             \/´   ̄_/,≠= 、 `'≡彡゙ '⌒'く  ´
             /   _/´~ニ{ニ   Y´   -‐- 、丿
             { /i{   ニ{-    ハr┬- 、   }
              ノイ|  キ  ノ゙T ¬i ! } }   ヽ {
          / {l|  キf´‖{|  j }ノノ    } }
           ‖ ミ{   キ!、リ キ  ///    ′ハ
            人  ヾ、 ヾツ キー' 〃   _ .. イ   ヽ
.        /  `アアア丁! ! `T¨丁 ̄i i |    \
.        /    / / / Ui i U |  U i  i     \


うう・・・・・・・グス・・・・・・・ひっく・・・・・・・・ごめんなさいなのぉ・・・

931 名前:デフォルトの名無しさん [2006/05/03(水) 22:14:41 ]
オブジェクト指向言語って全体のどれぐらいを占めるのでしょうね?
最近流行ってる見たいですが…

932 名前:デフォルトの名無しさん mailto:sage [2006/05/03(水) 22:23:22 ]
オブジェクト指向言語というのは、オブジェクト指向でプログラミングすることを念頭に置いた言語という意味だって知ってる?

933 名前:デフォルトの名無しさん mailto:sage [2006/05/03(水) 23:33:12 ]
いまどきアセンブラの仕事している俺っていったい・・・
さすがに紙に穴あけたことはないけど。

934 名前:デフォルトの名無しさん mailto:sage [2006/05/04(木) 00:48:06 ]
>>933
> いまどきアセンブラの仕事している俺っていったい・・・
1チップ組込用マイコン設計屋で、アセンブラでテストパタン作っていますが、何か?

935 名前:デフォルトの名無しさん mailto:sage [2006/05/04(木) 00:58:01 ]
アセンブラがかっこいいとか思ってるの?

936 名前:デフォルトの名無しさん mailto:sage [2006/05/04(木) 01:12:31 ]
>>934
カコイイ!!

937 名前:デフォルトの名無しさん mailto:sage [2006/05/04(木) 04:32:36 ]
オブジェクト指向が主流の現代にアセンブラかよ。プゲラ



938 名前:デフォルトの名無しさん mailto:sage [2006/05/04(木) 04:53:01 ]
>>937
disassemble や decompile した事無いの?

939 名前:デフォルトの名無しさん mailto:sage [2006/05/04(木) 07:20:30 ]
>>934
スゲー!!!

940 名前:デフォルトの名無しさん mailto:sage [2006/05/04(木) 08:53:20 ]
>>934
FPGA とか CPLD でゴニョゴニョ出来る人はちょっと憧れる。
↓こんなのとか。

crystal.freespace.jp/pgate1/nes/index.html

941 名前:デフォルトの名無しさん mailto:sage [2006/05/04(木) 09:00:37 ]
>>934
お嫁さんにして下さい。

942 名前:デフォルトの名無しさん mailto:sage [2006/05/04(木) 10:15:22 ]
>>934
カコイイ

943 名前:デフォルトの名無しさん mailto:sage [2006/05/04(木) 13:03:21 ]
>>934
m9(^Д^)プギャー!!

944 名前:デフォルトの名無しさん mailto:sage [2006/05/04(木) 13:18:00 ]
アセンブラに対する評価って、色々なんやね。
そういや、アセンブラやってからCをやると、
ポインタが分かりやすいという話があったな。


945 名前:デフォルトの名無しさん mailto:sage [2006/05/04(木) 19:21:03 ]
>>944
それ、逆というか本末転倒。
ポインタの概念を理解できないと、そもそもアセンブラを理解できない。
従って、アセンブラをやった者にはポインタは空気のような存在。
使えない事の方が理解しがたい。

946 名前:デフォルトの名無しさん mailto:sage [2006/05/04(木) 19:33:46 ]
>>945
アセンブラの次にcやった人だと、ポインタに対する
インクリメント(++)で、型によって値が+2されたり+4
されたりするのが理解しづらいとオモ

つ〜か、漏れが昔はそうだった

947 名前:デフォルトの名無しさん mailto:sage [2006/05/04(木) 19:54:50 ]
へー頭悪かったんだね。



948 名前:デフォルトの名無しさん mailto:sage [2006/05/04(木) 20:22:54 ]
煽り乙

949 名前:デフォルトの名無しさん mailto:sage [2006/05/04(木) 20:35:34 ]
スレの本題を忘れるなよ。まぁ今後オブジェクト指向が主流となる事は間違いない

950 名前:デフォルトの名無しさん mailto:sage [2006/05/04(木) 21:05:25 ]
OO つかクラス指向は 90's 中頃からずっと主流だったし、最早、水や空気と変わらんね。
1チップマイコンは地味に流行ってて面白そう。ARM 基板とか安く手に入るし。

951 名前:デフォルトの名無しさん [2006/05/04(木) 23:18:48 ]
オブジェクト指向はruby以外まともなものは知らない。
みな中途半端

952 名前:デフォルトの名無しさん mailto:sage [2006/05/04(木) 23:25:02 ]
Ruby 以外の言語を知らないんじゃないの?

953 名前:デフォルトの名無しさん mailto:sage [2006/05/04(木) 23:56:18 ]
YARV の話しようぜー
今んとこ最強だよね

954 名前:デフォルトの名無しさん mailto:sage [2006/05/05(金) 04:45:55 ]
大昔 Smalltalk-80 とか Smalltalk/V とかつかってて、
それほど中途半端な感じはしなかったけど・・・

955 名前:デフォルトの名無しさん mailto:sage [2006/05/05(金) 04:47:52 ]
>>951
rubyも中途半端

956 名前:デフォルトの名無しさん mailto:sage [2006/05/05(金) 06:04:08 ]
つか、rubyは手続き型の記述が「可能」な時点でオブジェクト指向ぽい言語なのでわ?

957 名前:デフォルトの名無しさん mailto:sage [2006/05/05(金) 06:50:44 ]
>>956
それを言っちゃうとメジャーな言語でオブジェクト指向を謳ったものはほとんど残らないじゃないか。



958 名前:デフォルトの名無しさん mailto:sage [2006/05/05(金) 10:24:17 ]
>>954
また古い話だな。でも Ruby は Smalltalk の良い所を継承しつつ、その制限や
不便な部分を改善しているよ。今迄実行環境については構文木を Eval という
Smalltalk に大きく見劣りする形式だったけど YARV によって GC 回りを含め
て大きく改善された。


959 名前:デフォルトの名無しさん mailto:sage [2006/05/05(金) 10:28:29 ]
一番最後に出来た VM だな。

YARV の詳細は知らんけど、世代別 GC と JIT くらい備えないと
10 年前の Smalltalk にすら追い付いてないのでは。

960 名前:デフォルトの名無しさん mailto:sage [2006/05/05(金) 11:52:13 ]
>>359
YARV 世代別 GC になるよ。JIT も計画されてるみたいだけど
最初は搭載されないだろうなー

961 名前:デフォルトの名無しさん mailto:sage [2006/05/05(金) 16:48:22 ]
Ruby関係はIPA採択されやすいのかな
YARVてなんか未踏でもなんでもない気がくぁwせdrftgyふじこ

962 名前:デフォルトの名無しさん mailto:sage [2006/05/05(金) 16:49:14 ]
国産ですので。

963 名前:デフォルトの名無しさん mailto:sage [2006/05/05(金) 16:49:49 ]
早っww

964 名前:デフォルトの名無しさん mailto:sage [2006/05/05(金) 18:47:40 ]
やっぱり「純粋な〜」が好きな国民性ゆえ Ruby と Haskell がブームとなるん
だろう。
純粋な関数型: Haskell
純粋なオブジェクト指向: Ruby
このスレもこの二つメインで良くね?ぶっちゃけのこりの雑種共はいずれ死滅
するだろ。


965 名前:デフォルトの名無しさん mailto:sage [2006/05/05(金) 18:54:52 ]
YARVって速いの?

966 名前:デフォルトの名無しさん mailto:sage [2006/05/05(金) 20:15:27 ]
Rubyが純粋なオブジェクト指向て。

孤高の言語 Lisp Prolog > 新しいパラダイム Smalltalk Haskell > 面白いモデル ML Forth
て感じだろ。

Java Perl Ruby Python なんかはカスみたいなもんだ。

967 名前:デフォルトの名無しさん mailto:sage [2006/05/05(金) 20:21:22 ]
今日はじめて彼女とHしました。記念sage



968 名前:デフォルトの名無しさん mailto:sage [2006/05/05(金) 20:25:44 ]
>>966
実用言語が一つもない件w

969 名前:デフォルトの名無しさん mailto:sage [2006/05/05(金) 20:30:53 ]
>>986
まじめな話Forthは実用言語だぞ。

今はあまり使われないがリソースが少なかった頃の組み込み分野じゃ一斉を風靡したもんだ。
(ちなみにforthラブラブな本があったんだけどタイトル失念した)


970 名前:デフォルトの名無しさん mailto:sage [2006/05/05(金) 20:35:11 ]
でも再帰下降が普及してからforthでなくともスクリプト組み込みは容易になったからなあ

971 名前:デフォルトの名無しさん mailto:sage [2006/05/05(金) 20:40:43 ]
完全に純粋であることに意味なんか無いしなぁ。

つうか、あるパラダイムに本当に完全に純粋な言語なんて無いよなぁ。

972 名前:デフォルトの名無しさん mailto:sage [2006/05/05(金) 20:48:04 ]
Microsoft パラダイムに
純粋な言語は幾らでもあるけれど?


973 名前:デフォルトの名無しさん mailto:sage [2006/05/05(金) 21:09:50 ]
>>972
政治的な話はなしにしないとemacsとviみたいに不毛な話しかでてこなくなる。


#つーか原理主義だけはやめようよ〜

974 名前:デフォルトの名無しさん mailto:sage [2006/05/05(金) 22:01:34 ]
純粋な言語って使い物にならないよ。
実用的なソフトが作れない

>>969
おお、それは失礼した。
組み込みで使われてたか。知らん分野だった

>>972
どこどこ?

975 名前:デフォルトの名無しさん mailto:sage [2006/05/05(金) 22:09:58 ]
つVB
つC$

976 名前:デフォルトの名無しさん mailto:sage [2006/05/05(金) 22:31:03 ]
言語が「純粋」ってどういう意味?

977 名前:デフォルトの名無しさん [2006/05/05(金) 23:07:39 ]
>>976
Vi を使って Ruby スクリプトを書くようなイメージ



978 名前:デフォルトの名無しさん mailto:sage [2006/05/05(金) 23:12:09 ]
だーかーら Rubyは「純粋」じゃないのっ
もっとお勉強しましょうねー

979 名前:デフォルトの名無しさん mailto:sage [2006/05/05(金) 23:12:40 ]
「実用的」なソフトってどんなの?

980 名前:デフォルトの名無しさん mailto:sage [2006/05/05(金) 23:31:46 ]
>>978
お前の言う「純粋」な言語は存在しない。お前がもっと勉強してね。

981 名前:デフォルトの名無しさん mailto:sage [2006/05/05(金) 23:34:05 ]
>>974
あと印刷関連の言語 PostScript もほぼ純粋 Forth だよ。

982 名前:デフォルトの名無しさん mailto:sage [2006/05/05(金) 23:51:09 ]
>>980
SchemeとSmalltalkはRubyよりは「純粋」だと思うよ
Rubyのアイデンティティってなんなの?

983 名前:デフォルトの名無しさん mailto:sage [2006/05/05(金) 23:54:45 ]
>>982
SchemeとSmalltalkが「純粋」?

ブハッツww バカだコイツww

984 名前:デフォルトの名無しさん mailto:sage [2006/05/05(金) 23:58:11 ]
>>983
Smalltalk のどのへんが OO 言語として純粋でない部分?
ちょっと通りすがりだけど興味あるんで聞いてみたい。

985 名前:デフォルトの名無しさん mailto:sage [2006/05/05(金) 23:58:15 ]
だーかーら SchemeとSmalltalkは「純粋」じゃないのっ
もっとお勉強しましょうねー

986 名前:デフォルトの名無しさん mailto:sage [2006/05/06(土) 00:05:59 ]
ruby はブロックの扱いが Smalltalk に比べて純粋でないというか、
後付っぽい感じがただよいまくり。

987 名前:デフォルトの名無しさん mailto:sage [2006/05/06(土) 00:07:11 ]
クラスの概念はOOとして純粋じゃない。
実用の為に導入されている。



988 名前:デフォルトの名無しさん mailto:sage [2006/05/06(土) 00:11:10 ]
>>987
OO の本質が何であるかは人によって様々。
勿論クラス指向でも問題無し。

989 名前:デフォルトの名無しさん mailto:sage [2006/05/06(土) 00:11:31 ]
Scheme は最小構文、クロージャ、プログラムがデータ
Smalltalk は全てオブジェクト

Ruby は 、、、 えっ 文字列を evalするの?
ブロックなにそれ?
そんな Rubyのアイデンティは? 、 ないよねー

990 名前:デフォルトの名無しさん mailto:sage [2006/05/06(土) 00:14:03 ]
>>988
つまり、人によって純粋の定義は異なる。

よって、純粋かどうかに拘って、アイデンティティがどうとか言ってる982はバカだってことで

991 名前:デフォルトの名無しさん mailto:sage [2006/05/06(土) 00:18:15 ]
や、>>977 の発言を見て Rubyを純粋だと信じてやまないピュアな若者を
いじってみたくなっただけなんだ。
正直純粋とかアイデンティティとかどうでもいい。いまは反省している。

992 名前:デフォルトの名無しさん mailto:sage [2006/05/06(土) 00:18:35 ]
>>990
>つまり、人によって純粋の定義は異なる。

これはそのとおりだし、「純粋」議論には意味がないと思うが。
で、「純粋なOO言語だっ」と言いたがるのはたいていRuby信者だが、それはさておき。

Rubyが、いろんな言語からつぎはぎした統一感のない言語だってのは事実なんじゃね?
それを「いいとこ取り」と言う奴もいるだろうが、「ぐちゃぐちゃ」とか「アイデンティティがない」とか
思う奴もいてよかろう。


993 名前:デフォルトの名無しさん mailto:sage [2006/05/06(土) 00:18:36 ]
>>990
純粋の定義は変わらんよ。どっちの方向に純粋かが変わるだけ。
純粋である事にはそれ程意味がある訳じゃないけどね。

>>989
Ruby のアイデンティティは ad-hoc さとごちゃ混ぜ感じゃないの。
yet another perl だから。

994 名前:デフォルトの名無しさん mailto:sage [2006/05/06(土) 00:22:21 ]
そういや、次スレ立てにゃいかんな。
今回は特にテンプレ貼らず、Wikiのまとめページへのリンクだけでもいい気がする。

www6.atwiki.jp/compilerandscriptengine/

995 名前:デフォルトの名無しさん mailto:sage [2006/05/06(土) 00:31:26 ]
>Rubyが、いろんな言語からつぎはぎした統一感のない言語だってのは事実なんじゃね?

他の言語のよいところをつぎはぎしない言語は、死んで使われてない言語だけだろ。


>それを「いいとこ取り」と言う奴もいるだろうが、「ぐちゃぐちゃ」とか「アイデンティティがない」とか
>思う奴もいてよかろう。

それは無知だからだろ。  というと怒るか?

では、Rubyも全てオブジェクトだし、純粋だと言うヤツがいてよかろう。
それを否定して、無知だからだと言ってるヤツは何だ?

996 名前:デフォルトの名無しさん mailto:sage [2006/05/06(土) 00:39:47 ]
>>995
その話はもう終わり。無駄レスで残り少ないレスを消費するなよ。

997 名前:デフォルトの名無しさん mailto:sage [2006/05/06(土) 00:43:12 ]
お前のそのレスがムダだし、その所為でこうしてまたムダレスが書かれる。
浅はかなんだよ。お前は。



998 名前:デフォルトの名無しさん mailto:sage [2006/05/06(土) 00:51:28 ]
>>993
アイデンティティがないのがアイデンティティって? まあ否定はしないけど。

>>995
ブロックはオブジェクトじゃないよ。RubyはSchemeに似すぎている。だからこそ中途半端に感じる。
もっと Schemeっぽくして callを applyにしてオブジェクトを evalするようにするのは簡単
だろうけど、それって嬉しいの? ってなる。Schemeでいいじゃんみたいな。
使ってる人もいっぱいいるし、身動きとれなくなって結局 Perlみたくなるんだよ。

999 名前:デフォルトの名無しさん mailto:sage [2006/05/06(土) 00:59:00 ]
ブロックはオブジェクトとして扱えばオブジェクトになる。

>RubyはSchemeに似すぎている。だからこそ中途半端に感じる。
最近のLL言語はそらLisp系に似てるだろうけど、それで中途半端に感じる?意味不明すぎ。

>もっと Schemeっぽくして callを applyにしてオブジェクトを evalするようにするのは簡単
>だろうけど、それって嬉しいの? ってなる。Schemeでいいじゃんみたいな。
なんでSchemeっぽくする話にしてんの?しないよ。
Schemeでいいじゃんみたいなって、意味不明な論理からその結論かよ。アホか。

>使ってる人もいっぱいいるし、身動きとれなくなって結局 Perlみたくなるんだよ。
だからなんだってんだ?

1000 名前:デフォルトの名無しさん mailto:sage [2006/05/06(土) 01:00:07 ]
1:00ちょうどに 1000!

1001 名前:1001 [Over 1000 Thread]
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<235KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef