「コンパイラ・スクリ ..
[2ch|▼Menu]
511:デフォルトの名無しさん
06/07/21 22:08:03
executeだとVMのようなバイトコードエンジンのイメージがある
evalだと値の評価って感じなのでノードを扱ってるイメージかも

>>510
死刑執行人だっけ?

512:デフォルトの名無しさん
06/07/21 22:22:17
えくせきゅーしょなー

513:デフォルトの名無しさん
06/07/21 23:26:24
evaluator の方は validate 噛ましてるようなイメージない?

514:デフォルトの名無しさん
06/07/25 22:41:35
一方ロシアはawkを使った。

515:デフォルトの名無しさん
06/07/25 23:48:30
それ、元ネタなんだっけ?

516:デフォルトの名無しさん
06/07/25 23:58:22
安西先生

517:デフォルトの名無しさん
06/07/26 00:49:16
>>515
鉛筆を使ったって奴じゃろ。


518:デフォルトの名無しさん
06/07/26 22:58:00
しかし、日本はRubyを選んだ。

519:デフォルトの名無しさん
06/07/27 03:06:29
しかし島根は Ruby を選んだ



URLリンク(www.rubyist.net)

520:デフォルトの名無しさん
06/07/28 16:59:13
アンチRuby房は、竹島を韓国領土とでもいうのでしょうな。



521:デフォルトの名無しさん
06/07/28 22:35:19
>>520
言おうものなら自分の立脚している大地をぶちこわすだけだよ(笑

#国民は総統の(元台湾のw)声を聞く!
#元ネタわかる人は原語で書いてみよう

522:デフォルトの名無しさん
06/07/28 22:37:02
台湾の総統って4人しかいないんか

523:デフォルトの名無しさん
06/07/29 13:28:59
>>520
そんなアンチ「Ruby房」は君の妄想の中にしかいないから安心しろ。

Rubyの実装が腐ってるのは事実だし、これは作者も認めるだろう。
言語仕様は結局好みの問題だろうが。


524:デフォルトの名無しさん
06/07/29 15:47:47
実装が腐っているとか、作者も認めているとか
言いたい放題言いやがって、

脳内玄子お宅馬鹿は、すっこんでろ!


525:デフォルトの名無しさん
06/07/29 18:19:21
とまぁこんな風にRuby信者は頭が悪いわけです

526:デフォルトの名無しさん
06/07/29 18:34:14
こういうのって安置rubyが意図的に書き込んでるじゃなかったの?w

527:デフォルトの名無しさん
06/07/29 19:52:43
使う側にとっては実装が腐ってても別にかまわんわけで
でもbeginとendで囲むのはめんど(ry

528:デフォルトの名無しさん
06/07/29 21:36:44
beginとendで囲むと言ってる時点でruby使って無いのがバレている訳で

529:デフォルトの名無しさん
06/07/29 21:38:59
python使いです

530:デフォルトの名無しさん
06/07/29 23:15:18
{}でも大丈夫です


531:デフォルトの名無しさん
06/07/29 23:36:34
> Rubyの実装が腐ってるのは事実だし、これは作者も認めるだろう。

おい、ソース出してみろよw
ふざけたこと書き込むなよな。馬鹿が信じるだろw

532:デフォルトの名無しさん
06/07/29 23:47:43
>>531
URLリンク(www.rubyist.net)
>まあ、自分のことを言語実装者としてよりも言語設計者と考えている私としては

URLリンク(www.rubyist.net)
>これでRiteの実行系は任せることができるかもしれない。楽できる。
>というか、モノをつくり出す能力が減退しているので、笹田くんのような若い力はありがたい


ぱっと思い出せるフレーズとしてはこんな感じ。
まあ、これは自虐じゃなくて謙遜だろうけど。

533:デフォルトの名無しさん
06/07/30 00:06:49
それだけの情報で「腐ってる」とは・・・

534:デフォルトの名無しさん
06/07/30 00:21:07
どの行間読んだら、作者が認めていることになるんだw

535:532
06/07/30 00:25:53
>>534
あ、俺 >>523 じゃないから注意ね。言っても信じてもらえんとは思うが。

536:デフォルトの名無しさん
06/07/30 01:03:43
どうにもこうにも、Rubyの実装が腐っていることは事実なんだけどな。

いまどきVMでもない、再帰で構文木を下降するような実装で、
本質的に速度を追求できない構造であるにもかかわらず、
いらんところでCの低レベルな機能に頼りすぎ。
breakごときでlongjmp()するし、GCはスタックの構造に依存してるし、
Fixnumの持ち方なんかなんだありゃ。
スレッドがアレなのは、時代からするとしょうがないのかもしれないけれど。

それ以前に、ソース自体グローバル変数使いすぎだし。

ちなみにPerlの実装はもっと腐ってるが。つかあれのソースは読めない。


537:デフォルトの名無しさん
06/07/30 03:33:11
Fixnumはオブジェクトとして扱いながら即値としても扱えるというメリットがあって好きだけど

538:デフォルトの名無しさん
06/07/30 04:41:31
最近VMベースのruby実装もできてきてるがな。

539:デフォルトの名無しさん
06/07/30 11:23:35
>>537
タグつきで数値とポインタを切り分けること自体は
Lispとかじゃあたり前にやってることで
別におかしくない

Ruby自体知らんから、Fixnumの何処が悪いかは知らんが

540:デフォルトの名無しさん
06/07/30 11:33:59
>本質的に速度を追求できない構造であるにもかかわらず、
>いらんところでCの低レベルな機能に頼りすぎ。

これ一行目と二行目で言ってること矛盾してるんだよね。

本質的に速度を追求できない構造であるからこそ
いらんところでCの低レベルな機能に頼ってるんだよ。


541:デフォルトの名無しさん
06/07/30 11:35:18

あ、漏れ一応 >540 だけど

Fixnum は良いと思うよ


542:デフォルトの名無しさん
06/07/30 15:10:07
>>539
Lispどころか、コンパイルするのが前提のMLなんかでも普通に
タグつけてる。

543:デフォルトの名無しさん
06/07/30 18:22:30
だんだんと、Ruby 擁護スレになりつつありま(ry


544:デフォルトの名無しさん
06/07/30 19:46:53
>>568
お前はよくこのスレの流れを変えれたよな
すごい尊敬するよ

545:デフォルトの名無しさん
06/07/30 19:57:41
さすがだよな>>568

546:デフォルトの名無しさん
06/07/30 19:58:14
すげーや>>568

547:デフォルトの名無しさん
06/07/30 20:07:01
オレも>>568はやってくれると思っていたよ。

548:デフォルトの名無しさん
06/07/30 20:21:42
>>568に嫉妬


549:デフォルトの名無しさん
06/07/30 20:26:16
また厨房大好き未来安価か

550:デフォルトの名無しさん
06/07/30 20:36:58
>>551
また「もう夏休みか」って聞き飽きたよ!

551:デフォルトの名無しさん
06/07/30 20:44:45
>>540
>本質的に速度を追求できない構造であるからこそ
>いらんところでCの低レベルな機能に頼ってるんだよ。

rubyの実装の詳細を全く知らないあたしには、
一行目と二行目が全くつながりません

速度的に絶望な上に、プログラム的にも汚くて
どうしようもない実装には、なんとなく聞こえますが

552:デフォルトの名無しさん
06/07/30 20:57:53
「知らないからわかりません」
そりゃそうでしょうな。

次の方どうぞ。

553:デフォルトの名無しさん
06/07/30 21:42:23
そりゃ、おまいもしらんもんなw

554:デフォルトの名無しさん
06/07/30 21:47:13
よくわかんないけどさ、

 ruby は (perlよりも) 純粋なオブジェクト指向言語だ

ってあたりでみんな同意して次いかないか?

555:デフォルトの名無しさん
06/07/30 21:52:34
話題なんかねーんだからムリして話流そうとしてもムダだよ

556:デフォルトの名無しさん
06/07/31 10:48:07
lispは主にリスト処理だけど、リストは線形探索とかで効率悪い。
配列を主に処理する言語としてarraypというのはどうだろう。
arraypでは語呂悪いのでrayp。




そこのあなた、
レイプじゃなくてレイピーと読みます。

557:デフォルトの名無しさん
06/07/31 16:51:41
XMLなんてlispがあれば必要ない、って言ってた馬鹿はまだいますかね?

558:デフォルトの名無しさん
06/07/31 17:18:22


559:あばよ
06/07/31 18:10:54
明日コンパイラの試験があるんだが
無理

560:デフォルトの名無しさん
06/07/31 22:17:22
配列も探索は線形だろアホ

561:デフォルトの名無しさん
06/07/31 23:54:09
いや、ハッシュとか使えるじゃん
リストは苦しいっしょw

562:デフォルトの名無しさん
06/08/01 00:04:12
lispでもhash使えることも知らんからアホ扱いされるんだよ

563:デフォルトの名無しさん
06/08/01 00:06:44
>>561
わけわかめ。
配列はメモリ上に連続するデータ構造で、リストはポインタでつなげて順番を保つデータ構造って感じのイメージなんだが、違うんか?
ハッシュとか言い出したら、ハッシュ表からそれぞれの要素へのポインタ張れば、配列にでもリストにでも組み込めるじゃん。

564:デフォルトの名無しさん
06/08/01 00:24:51
>リストはポインタでつなげて
厳密には、それは 『線形連結リスト』 だと思う。

565:デフォルトの名無しさん
06/08/01 00:39:02
ArrayListとかあるしな

566:デフォルトの名無しさん
06/08/01 00:57:51
つうかリストは悪者にされすぎだと思うんだ
使い方間違えなければ配列よりも適した場面だって多々ある

567:デフォルトの名無しさん
06/08/01 01:03:56
>>562
Lispで配列もハッシュも使えること知ってて
わざとぼけたの
ネタにマジレスすんな

568:デフォルトの名無しさん
06/08/01 01:07:13
>>567
文字列も使えるよ

569:デフォルトの名無しさん
06/08/01 01:10:01
>>563
配列しかデータ構造がない場合でも
配列があれば、配列を使ってハッシュ表を実装することができる
そうすれば、線形探索以外の探索ができる

リストしかデータ構造がない場合は、
ちょっと思いつかねえや
まあ、苦しいでしょ

570:デフォルトの名無しさん
06/08/01 01:31:22
>>567
はいはい、いつものネタでした宣言ですね。
まいどありー。もう来ないでくださいねー。

571:デフォルトの名無しさん
06/08/01 01:59:19
だからそのリストしかデータ構造がないってのはどこ系の思い込みなのかと

572:デフォルトの名無しさん
06/08/01 16:52:33
もうネタはいいよw
Lisp は List Processor だろ。もう来るな!


573:デフォルトの名無しさん
06/08/01 17:29:47
luaはテーブル操作主体の言語だけど、どうだろうか。

574:デフォルトの名無しさん
06/08/01 17:40:54
配列厨はAPL使ってろ

575:デフォルトの名無しさん
06/08/01 20:47:10
>>571
556がそれっぽいこといってるから
適当にそういう状況を想定して書いただけだけだ
殆どのヤツが、ついて来れなかったみたいだな

576:デフォルトの名無しさん
06/08/01 21:50:27
はいはい。お子様はよそで遊んでおいで



577:デフォルトの名無しさん
06/08/01 22:57:11
ネタとしては非常に分かり難かったから仕方が無いでしょう。

578:デフォルトの名無しさん
06/08/02 07:11:13
リスト構造を使わない速いschemeを作ろう
スレリンク(tech板)


579:デフォルトの名無しさん
06/08/03 10:02:43
パーサってテキストをパースしてアクションを起こすものだと思うんですが、
オブジェクトの状態をパースしてアクションを起こしたいと思ったら、
オブジェクトをテキスト表現に変換して、そのテキストをパーサに食わせる

って考え方でいいんでしょうか?

rubyでたとえると「p obj」で得られたテキスト表現を
raccで書いたパーサに食わせるとか、p()じゃなくて
YAML形式にしてYAMLのサブセットのパーサを書いて食わせるとか

580:デフォルトの名無しさん
06/08/03 14:19:25
オブジェクトのままじゃダメなの?

581:デフォルトの名無しさん
06/08/03 15:54:59
テキストである必然性はないので、dump/loadとか


582:579
06/08/03 17:49:21
>>580
オブジェクトのままでいいんです。
でもオブジェクトをパースしてアクション起こすものって、
結局rubyでゴリゴリプログラムを書かないとダメじゃないですか。
raccなら文法を専用の記法で書けるし、メンテ楽だし。
raccの入力がテキストである以上、いちどオブジェクトを
テキスト表現にしないといけないのかな、と。

583:デフォルトの名無しさん
06/08/04 02:15:26
Rubyでゴリゴリってのと
専用の記法というのの違いがわからない。

Rubyじゃなくて他の記法でparserを書きたい、
けどparseする対象はRubyのオブジェクトですよ、ってこと?


584:デフォルトの名無しさん
06/08/04 03:04:59
なんとなく有限状態マシン的なコードを楽に書ける方法ない?ってだけな希ガス

585:デフォルトの名無しさん
06/08/04 03:42:13
オブジェクトをパース
っていう意味がわからない
説明よろ

586:デフォルトの名無しさん
06/08/05 00:44:41
普通にEnumとかのデータ読み込んで次のオブジェクト作ったり
読んだりするだけじゃね?

587:デフォルトの名無しさん
06/08/05 01:16:30
だけじゃね?厨はスルーでよろ

588:デフォルトの名無しさん
06/08/05 10:50:40
オブジェクト脳で無い奴にはあまりピンとこないかもしれないが、
オブジェクト思考はこれからの言語の基本となることは確か。


589:デフォルトの名無しさん
06/08/05 10:56:42
お前らが言ってることがさっぱり分からない。
具体的に語れ。

590:デフォルトの名無しさん
06/08/05 12:31:14
10年前からタイムスリップしてきた奴が見受けられるな・・・
具体的に語ると>>588とか

591:デフォルトの名無しさん
06/08/05 12:35:26
時代はMQだしなMQサイコーMQは素晴らしい

592:デフォルトの名無しさん
06/08/06 08:40:24
「すべてがオブジェクト」って、意訳すると「手抜きしました」
ってことだよね?

593:デフォルトの名無しさん
06/08/06 11:08:43
O(log n) であくせすできるリスト構造
URLリンク(www.informatik.uni-bonn.de)

594:デフォルトの名無しさん
06/08/06 14:06:21
>>593
ざっと読んでみようと思ったけどさっぱりわからんかったorz
ハッシュ表作ればO(1)でアクセスできるけど、それ以上のメリットって何なの?

595:デフォルトの名無しさん
06/08/06 14:23:09
>>594

ゴキブリみたいなデータ構造になって気持ち悪くなるってメリットあると思う

596:デフォルトの名無しさん
06/08/06 16:00:12
>>594 abstractも読んでないのかよ。



597:デフォルトの名無しさん
06/08/06 16:27:48
>>594
いいハッシュ関数がないときはどうするの。

598:デフォルトの名無しさん
06/08/06 16:41:18
そこそこいいハッシュ関数を探す

599:デフォルトの名無しさん
06/08/06 17:24:04
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| 先輩。ハッシュならいいのがありますよ

   ̄ ̄ ̄|/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ∧_∧       / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ( ・∀・)  ∧ ∧ <  MD5とかいうなよ
 (  ⊃ )  ( ゚Д゚)  \____________
 ̄ ̄ ̄ ̄ ̄ (つ_つ__
 ̄ ̄ ̄日∇ ̄\| DELL |\
       ̄   =======  \


600:デフォルトの名無しさん
06/08/06 17:28:04
配列のが速いよ絶対

601:デフォルトの名無しさん
06/08/06 17:51:31
関数型言語でリスト的にアクセスできるってのが目的じゃない?

602:デフォルトの名無しさん
06/08/06 20:04:44
2-3木っつーから平衡木の話かと思ったらそうじゃなかったのか。
誰か日本語に翻訳してくれ。
リストに対するアドバンテージは何なのかな。

603:デフォルトの名無しさん
06/08/06 20:33:18
いやだからゴキブリみたいな構造がキモイだけって
だけのはなしなんだが

604:デフォルトの名無しさん
06/08/07 15:09:34
私は英語苦手なんだけど、皆さんはどうやって訳してます?
PDF→テキスト→辞書を英次郎で引く→テキストに1個書くってやってるんだけど。
機械翻訳は補助には使うけど。結局使えないし。

605:デフォルトの名無しさん
06/08/07 15:45:53
普通に読んでるけど。量をこなせば日本語と同じように読めると思う

606:デフォルトの名無しさん
06/08/07 16:06:55
>>604
俺も大学のときはそんな感じでやってた。
先輩風吹かすと、
技術書の場合、予備知識なしに英文だけ読んでも分からない場合があるので、
その技術に関する日本語の本も並行して読むといい。
一言一句を表面的に和文に置き換える能力は基礎の基礎で、
こなれた訳文を作る能力をみがきたい(文章の内容を理解して、それを表現する能力)。
辞書は英英も使いたい。英英なら言葉の意味が文章で説明されているが、
英和は(項目によっては?)あたらずとも遠からずな日本語の単語が羅列されてるだけ。
お勧めはOALD。(ホントは英英を和訳した辞書があればいいのにと思う)
余裕があれば、将来英文を書くときのために、使えそうな言い回しをメモっておくとよい。

607:デフォルトの名無しさん
06/08/07 16:17:06
ある程度、自己解決しました。
最近はブラウザでピロっと出てくれるけど、
すぐ忘れるので頭に残ってくれない。
出たテキストがブラウザに貼り付いててくれるといいんだがと思って、
TrEditっての見つけて、辞書引く効率UPしました。
VBで作られてて良く落ちるんだけどまぁいいや。
今までに比べはるかに、スピードUPしました。ありがとうございました。
勝手に嬉しくなって読んで見てます。

とりあえず内容は遅延評価前提だけど、
今までは一般的に速いリストの操作はあったけど、複雑だったのが
簡潔に一般的に書けるようになったってことでしょうか?

前提となる知識として、モノイドとRight and left reductions 右と左還元があるとか。

モノイド自体よくわからないけど、、、書いてある式はこれだけ。
class Monoid a where
0 :: a
(c) :: a → a → a

このモノイドの+と○を合体させたような演算子は結合演算子?
++のこと?
aは0か、++の2項演算子があるってだけなのでしょうか???


608:デフォルトの名無しさん
06/08/07 16:31:21
超基本的な質問なんだけど、プログラミング言語の処理系で使うハッシュ表ってエントリーがどんどん増えていく場合も考慮して、動的にテーブルを大きくする必要あるじゃん。
そのコストを踏まえてもO(1)なの?

609:デフォルトの名無しさん
06/08/07 17:50:01
コスト的にもO(1)
hashでコリジョン多いならTrieの方が速いかも
ただし、単なるTrieは遅く、Ternary Search Trieというのが速いらしい
スレリンク(tech板:121-番)

610:デフォルトの名無しさん
06/08/07 18:43:59
>>609
お前、2chのどこのダレかもわかんない、どんな実装を使ったのかもわからない
そんなベンチマークを盲目的に信じてるのかよ。馬鹿すぎだ。

611:デフォルトの名無しさん
06/08/07 18:55:43
「盲目的に信じてる」というほど断定してるようにも見えんが・・・。
暑いからってめちゃくちゃな八つ当たりするのはどんなもんかね。

612:デフォルトの名無しさん
06/08/07 19:50:46
>>609
>O(1)
テーブル拡大のポリシーによると思うが、
どういうポリシーならO(1)になるか教えてちょ。

613:デフォルトの名無しさん
06/08/07 20:24:01
最大nビットのデータに対して2n-1ビットのハッシュ値を使う

614:デフォルトの名無しさん
06/08/07 21:55:19
>>611
暑いからって、根拠の乏しいレスを信じる馬鹿よりマシかと

615:デフォルトの名無しさん
06/08/07 22:10:07
なんで素直に 2ch の外で裏を取らないのだろう...

616:609
06/08/07 23:16:29
>>610
すんません
そのスレの121、実は俺なのですよ・・・
あれから色々試したけど、tstが検索においては
hashよりだいぶ速いのは検証済みです
ただしデータ構造上メモリを結構食います
TrieはO(1)に加えてインクリメンタルなので、
途中の結果も無駄にならなかったりするメリットもあります
ちなみにうちのコンパイラはtst使ってます

617:610
06/08/08 01:12:48
2chのベンチマークなんて信じる奴は馬鹿。
俺は住所氏名年齢電話番号までわかってる奴じゃなきゃ
一切信用しない。

618:デフォルトの名無しさん
06/08/08 01:22:43
>>606
英英辞書ですか。人生長いし買ってみようかな。CD付いてるらしいし。


619:デフォルトの名無しさん
06/08/08 03:44:18
>>606

>(ホントは英英を和訳した辞書があればいいのにと思う)


それだ!



620:デフォルトの名無しさん
06/08/08 08:40:39
>>617
当然の話だな

621:デフォルトの名無しさん
06/08/08 12:22:17
>>617
そんなんで信用できるのか?

俺はソースコードと追試手順があって自分で追試できて追試したものしか信用しない.
住所氏名年齢電話番号がわかってても意味ないだろ…

622:デフォルトの名無しさん
06/08/08 14:32:30
あからさまな釣りにひっかかっといて
慎重な姿勢とか見せても笑えるだけw

623:デフォルトの名無しさん
06/08/08 16:21:53
>>606
URLリンク(www.zkai.co.jp)
ワードパワー英英和辞書とケンブリッジ英英和がありました。


624:デフォルトの名無しさん
06/08/08 16:39:23
>>623
あるんかい!
けどサンプル見た感じジーニアスとか例文豊富な英和辞書とあんま変わらなくね?

625:デフォルトの名無しさん
06/08/08 19:14:56
>622
単に真面目な性格なだけじゃないの?

626:デフォルトの名無しさん
06/08/08 23:25:35
ここはLinux板みたいに嫌な雰囲気ですね

627:デフォルトの名無しさん
06/08/08 23:54:56
ハッシュ表やSTL vectorの拡張のコストについては
amortized complexity analysis (償却計算量解析)について勉強すれば納得がいく

628:デフォルトの名無しさん
06/08/09 23:25:34
やべ、Ternary Search Trieすごい速いねw

629:デフォルトの名無しさん
06/08/10 13:28:06
Linuxみたいな嫌な雰囲気ってどんな感じ?


630:デフォルトの名無しさん
06/08/11 01:30:06
世界の宗教の原理主義派を集めたようなギスギスした
息の詰まる雰囲気だと思うよ。
Windowsを目の敵にしないと生きていけない。そうゆうゴミの集まり

631:デフォルトの名無しさん
06/08/11 07:52:05
それは何?
もっと構って欲しいのにって事?

632:デフォルトの名無しさん
06/08/11 10:36:08
意味不明です。

633:デフォルトの名無しさん
06/08/14 19:10:55
flexでCのコードを出力すると、yy_acceptやyy_ecといったテーブルが作成されますが、
このテーブルの作成アルゴリズムみたいなものはあるのでしょうか?


634:デフォルトの名無しさん
06/08/14 19:28:24
あります

635:633
06/08/14 20:35:45
それは、何というものでしょうか?よかったら教えてください。

636:デフォルトの名無しさん
06/08/15 00:34:08
非決定性有限オートマトン (NFA) → 決定性有限オートマトン (DFA) 、
だったかな?

637:デフォルトの名無しさん
06/08/15 00:48:43
flexが実際どうやってるか知らないけど、NFA→DFAの変換は大学でやったな。
subset constructionだっけ?
実際の手順をノートに手書きでいっぱい書いた記憶があるw

638:デフォルトの名無しさん
06/08/15 01:36:45
>>637
この前取材に行った某高校のクラブ活動でやっていた事を自慢げに語られてもw

639:デフォルトの名無しさん
06/08/15 01:41:09
やったな。
だっけ?
w     ←どこ笑う所?


何が楽しいの?

640:デフォルトの名無しさん
06/08/15 02:20:46
>>639
昔を懐かしんでるんじゃないのか?

電車で思い出し笑いしてる人とかいるぢゃん


641:デフォルトの名無しさん
06/08/16 00:12:21
Coins はどうなったんかな…

642:デフォルトの名無しさん
06/08/18 19:15:55
なんだか、子難しい話して、話せないようにされてるような希ガス。
NFA→DFAの変換とかすごいじゃん。

643:デフォルトの名無しさん
06/08/18 21:49:40
そーでもない
大学で情報科学取った人なら大体やったんじゃまいか

644:デフォルトの名無しさん
06/08/18 22:25:39
講義の内容的には、序の口もいいところ。


645:デフォルトの名無しさん
06/08/19 01:13:32
オートマトン最小化とポンピング補題は中間試験の必出問題ですな。

646:Flex
06/08/19 21:27:44
初めまして、宜しくお願いします。50の手習いでFlexを勉
強しています。早速の質問ですが、お手柔らかにお願いしま
す。

Flexではinputの再定義は、#undefと#defineで出来ます。
unputの再定義はどうすれば良いでしょうか?

最初から、いきなりの質問で迷惑をかけるかと思いますが、
宜しくお願いします。

647:デフォルトの名無しさん
06/08/20 09:29:13
flexには詳しくないですが、unputの再定義は不可能のよう。
(The `unput()' routine is not redefinable.
This restriction is in accordance with POSIX. )

自前のunputを利用したければ、%option unputを指定して、
最初からunputが生成されないようにすれば良いのかも。

648:デフォルトの名無しさん
06/08/22 12:02:27
LLやLRの構文解析表なんかも大学の講義などでは手書きでたくさん書くことになる。
flex/bisonをいじれるだけで満足な奴は知らないんだろうけど、コンパイラコンパイラで楽してる背景にはけっこう面白いアルゴリズムがいくつも使われてて、理解するには手書きでこつこつやるのが近道だったりする。

649:デフォルトの名無しさん
06/08/22 13:18:32
LL(k)とLALRの違いについて調べてます。
文法的にLL(k)だと不可能になるもの。エラー処理の煩雑さなどで違いを教えてもらえませんか。

650:デフォルトの名無しさん
06/08/22 13:53:43
A -> ( B
B -> A ) | ) A | )

括弧の対応を取るだけの文法だが、任意のkについてLL(k)でない。

651:デフォルトの名無しさん
06/08/22 21:48:04
おまいらJavaのパーサー作るとしたらどのぐらい時間かかるんですか?

652:デフォルトの名無しさん
06/08/22 21:55:21
>>651
ざっと走査するだけなら楽

653:デフォルトの名無しさん
06/08/22 22:07:36
うそつけw
ホントなら書いてみろ

654:652
06/08/22 22:16:08
分かった。嘘だから書かない。

655:デフォルトの名無しさん
06/08/22 23:33:28
>>653
Generics無しの頃(swing無かった頃だが)に一度書いた。
Generics使えばもっと楽に書けるだろうがGenerics自体の文法は入れたくない(w




656:デフォルトの名無しさん
06/08/22 23:33:41
口だけ君はこれだから困る

657:デフォルトの名無しさん
06/08/23 00:09:38
○だけ君はこれだから困る

658:デフォルトの名無しさん
06/08/23 00:21:23
△だけ君はこれだから困る

659:デフォルトの名無しさん
06/08/23 03:20:08
656 :デフォルトの名無しさん :sage :2006/08/22(火) 23:33:41
口だけ君はこれだから困る

657 :デフォルトの名無しさん :sage :2006/08/23(水) 00:09:38
○だけ君はこれだから困る

658 :デフォルトの名無しさん :sage :2006/08/23(水) 00:21:23
△だけ君はこれだから困る

659 :デフォルトの名無しさん :sage :2006/08/23(水) 03:20:15
|だけ君はこれだから困る

660:デフォルトの名無しさん
06/08/23 07:48:57
>>655
yaccとか使う場合だと、
specificationの内容を全部BNF文法に直す。
うまくあわないところ少し小細工する
意味解析ルーチンつける
て感じですか?
・・・・なんか気の遠くなりそうな作業だな・・・・
・・・・Genericsとかやりたくないな・・・・

661:デフォルトの名無しさん
06/08/23 08:16:39
>>651
パーサだから意味解析は置いといていいのね?
>>3の¬<><∪∪なら、
言語仕様書からシンタックス部分をまる写しするだけだから簡単。
というかサンプルについてるけど。
>>3ではLALR(1)になってるけどLALR(∞)。

662:デフォルトの名無しさん
06/08/23 23:09:21

URLリンク(www.quut.com)
URLリンク(www.quut.com)



663:デフォルトの名無しさん
06/08/23 23:50:56
ついにJavaにもクロージャ? - James Gosling氏らJDK7へ導入提案
URLリンク(journal.mycom.co.jp)

Javaもなんでもかんでも取り込むようになったもんだ

664:デフォルトの名無しさん
06/08/24 01:44:02
その記事、単に匿名ローカル関数のことをクロージャと呼んでるようだが
カリー化しなくてもそう呼んでいいものなのか?

665:デフォルトの名無しさん
06/08/24 02:36:45
>>664
クロージャは語の通り囲い込みしか指さないので(ry

666:デフォルトの名無しさん
06/08/24 04:36:54
関数型言語の本で封入って訳を見たことあるな

667:デフォルトの名無しさん
06/08/24 06:06:41
ふみゅ〜ん

668:デフォルトの名無しさん
06/08/24 10:37:04
>>664
>>665も書いてるが
カリー化とクロージャは、全く無関係な概念
関数からその関数を囲む環境にアクセスできればクロージャと言ってよい

669:デフォルトの名無しさん
06/08/24 21:10:06
じゃあ、単に匿名ローカル関数のことをクロージャと呼ぶのは間違いでよろしいか?
記事、ろくに読んでないが、ラムダ式のことをクロージャと呼んでるように見えたモナ

670:デフォルトの名無しさん
06/08/24 21:40:35
>>669
ラムダ式はクロージャを持つけど、クロージャはラムダ式じゃない

671:デフォルトの名無しさん
06/08/24 21:43:14
チョットワカッテキタ...

672:デフォルトの名無しさん
06/08/24 22:37:34
C#の匿名メソッドはクロージャとは別物ですか?


673:デフォルトの名無しさん
06/08/24 22:44:38
「匿名メソッド is-a クロージャ」 あるいは 「匿名メソッド has-a クロージャ」 な関係

674:デフォルトの名無しさん
06/08/24 23:20:30
記事、も一回読んでみたけど
Cの関数へのポインタ程度のものを、導入するぐらいにしか見えん
そしてそのCの関数へのポインタのようなものを、クロージャといってるような
カリー化とかできそうに見えない、高階クロージャ(?)すらあやしい

675:デフォルトの名無しさん
06/08/24 23:30:18
まぁ糞JAVA言語がそろそろ行き詰まってきたってことだろうなw


676:デフォルトの名無しさん
06/08/24 23:41:03
>>674
int func int(int x) {
    return (int y) { x + y; };
};
int result = func(2)(3);

こういうのならできるんじゃね?
実際の java で動くかどうかはしらないけど、一応カリー化できてるはず。

677:デフォルトの名無しさん
06/08/24 23:47:51
>>674
おまえはカリー化とクロージャの意味をわかってるのかと
今回提案された仕様のローカル関数及び匿名ローカル関数は
れっきとしたクロージャだし、関数型も導入されるので、
カリー化するのも容易なはず

>>676

ホワイトペーパーの例からだと、たぶんこんな感じではないかと

int(int) add(int x){
 return (int y) : x + y;
}
int result = add(2)(3); // => 5

678:デフォルトの名無しさん
06/08/24 23:52:34
>>677
いや、その例からだと add は有名関数だから、宣言は int(int) じゃなくて int では?
4ページ目の一番上。

さすがに、OCaml ばりの厳密で容易なカリー化は期待できないっすよ。
let add fun x y -> x + y;
で宣言して add 1 2 で 3、add 1 で fun y -> 2 + y みたいなのは java では無理でしょ。

679:デフォルトの名無しさん
06/08/24 23:53:13
あ、間違えた。まあ良いや。

680:デフォルトの名無しさん
06/08/25 00:17:56
>>678
addはカリー化された加算関数で、型はint(int) (int)なので
これでOKなはず。4ページ目の一番上の例は、int (int)な関数だよね

> さすがに、OCaml?ばりの厳密で容易なカリー化は期待できないっすよ。

そりゃOCamlほど容易ではないけど、厳密かどうかで言えば同程度には厳密でしょ

681:デフォルトの名無しさん
06/08/25 00:25:58
>>680 上段
ほんとだー。すまねー orz

>>下段
あ、すいません。『厳密』 ってのは 『制約』 ってのと同じような意味で使いました。
OCaml ではカリー化された関数しか扱えないみたいっスから。

int add(int x, iny y) { return x + y; }

「こんな感じに定義して add(1) ってしても 1 + y が帰ってこないじゃないかー」
って >>674 は想像しているのでは? って思いましたんで (^-^;;

682:デフォルトの名無しさん
06/08/25 00:27:23
オーバーロードとカリー化の共存は難しい。

683:デフォルトの名無しさん
06/08/25 00:39:23
すみません。某スレから誘導されてきました。
yaccやlexで生成したソースはどうやって使ったらいいのでしょうか?

684:デフォルトの名無しさん
06/08/25 01:00:40
>>683
きっとお前も質問だけして居なくなるんだろうな…>646みたいに。

685:デフォルトの名無しさん
06/08/25 01:23:18
>>684
いえ、ホント基本的な動作からわかってないので藁にもすがる思いですよ。
yyparseやyylexなんかがどういう動作をしてるのか?とかそっからわかっていません。
とりあえず、まず、大まかな流れが知りたいのですが、日本語でいいサイトないでしょうか?
なんかyacc lexが独自に吐き出す関数とか変数とかわかってないです。

やりたいことはプログラムである文字列をパーサに渡して解析結果を取得することなんですが
yacc lexの吐き出したソースが何をどこまでやってくれるのかってそこからいってわかってないです。

686:デフォルトの名無しさん
06/08/25 05:18:48
そうですか

687:デフォルトの名無しさん
06/08/25 05:55:38
>>683
main() {
  yyparse();
}

yylexはyyparseのなかで勝手に呼ばれる

688:デフォルトの名無しさん
06/08/25 09:38:52
>>677
どうも、そういうことが出来そうに見えなかったんだよね
Javaにクロージャ導入なんて記事を書くんなら
俺なら絶対カリー化の例をあげる
でも、カリー化どころか高階関数の例もないので、どうもな
まあ、ライターのレベルが低いだけかもしれんが

689:デフォルトの名無しさん
06/08/25 15:34:59
>>688
匿名関数も関数型変数も導入されるらしいのに、
なんで高階関数がないと予想したの?

690:デフォルトの名無しさん
06/08/25 21:09:50
読解力のない阿呆 (>>688) のつまらん言い訳だよ

691:デフォルトの名無しさん
06/08/25 22:16:14
ライターのレベル以上に、リーダーのレベルが低すぎた悲劇だな。

692:デフォルトの名無しさん
06/08/26 01:30:04
つまりLISP最強ってことか。

693:デフォルトの名無しさん
06/08/26 02:07:02
なんでじゃ

694:デフォルトの名無しさん
06/08/26 04:25:26
Lisp触ってれば間違いようがないものな。

695:デフォルトの名無しさん
06/08/26 06:02:16
Lispの処理系をLispで書くのって無謀?

696:デフォルトの名無しさん
06/08/26 06:27:23
>>695
ものすごく簡単(数行しかない)なやつから、
きちんと機能を実装して、自分で自分を実行できるやつ、
もっと凄いやつ、と様々なので、答えようがない。

697:デフォルトの名無しさん
06/08/26 06:48:53
>>696
> ものすごく簡単(数行しかない)なやつから、

数行はないだろw

698:デフォルトの名無しさん
06/08/26 06:52:06
スーパー手抜きlisp
( loop (eval (read)) )


699:デフォルトの名無しさん
06/08/26 10:50:14
LISPってライブラリたくさんあるの?

700:デフォルトの名無しさん
06/08/26 12:31:04
>>699
君のレスは見ていて痛々しい。

701:デフォルトの名無しさん
06/08/26 12:48:32
しらねーなら書き込むなこの池沼が

702:デフォルトの名無しさん
06/08/26 13:08:21
ちょこっとLisp調べてみたけど、本当にこの言語で自己記述できるの?
字句解析とか構文解析のコード大体どんな感じになるのか情報orソースきぼんぬ

703:デフォルトの名無しさん
06/08/26 14:14:21
>>702
大昔の論文や書籍くらい読め


#とか思ったら良書は絶版かYo!


704:デフォルトの名無しさん
06/08/26 14:57:32
>>701
聞けば答えてもらえると思うな、厨房。

705:デフォルトの名無しさん
06/08/26 16:47:29
けちくせーやつだな。だったらスレみてんじゃないよ。
Take,TakeでGiveはなしか。

706:デフォルトの名無しさん
06/08/26 16:53:24
言いたがりが勝手に口を滑らせるだけだよ。
そんなものでも、最新の情報なら役に立つ。

707:デフォルトの名無しさん
06/08/26 17:12:04
>>689
出来ると書いてないから
それにつきますな

708:デフォルトの名無しさん
06/08/26 20:46:44
>>702
っSICP
後ろのほうに自己記述に1章裂いてるお

709:デフォルトの名無しさん
06/08/27 01:19:54
Schemeを最初からCで書くより、一通りSchemeで書いてから必要な部分だけ
Cにする方が楽だよね。

710:デフォルトの名無しさん
06/08/27 07:43:17
今、M$のVisualStudio2005いじってるんだが、GC付きで64bitポインタ、メモリ管理サポートの
ランタイム上で、C#、C++、VisualBasicが走るなんて、Lisp系言語を載せてくださいと言ってる
ようなもんだな、と思った。Javaは過去にやろうとして16MBでギブアップしやがったので、
M$のCLIには少し期待している。

711:デフォルトの名無しさん
06/08/27 13:02:07
>>710
HotSpot以降のJVMならパラメータでメモリ量の調整きくよ。

web上のappletが廃れかけた頃にはいろんな言語のコンパイラがjvm用のクラス吐くようになったけど
今ははやらないのかねぇ。



712:デフォルトの名無しさん
06/08/27 14:01:08
>>711
むしろ最近になって流行ってきてると思うのだが
JDK6でJava VM用のスクリプト言語をJavaから呼び出すための
APIが標準化されるのも、Java VM用のスクリプト言語が流行ってきたからだろうし
ちなみに先に言っておくと、GroovyもJava VM用のJavaScript処理系であるRhinoも
Pnutsも単なるインタプリタではなく、JVM用のクラスファイルを内部で生成して、実行してる

713:デフォルトの名無しさん
06/08/27 16:15:07
>>712
スクリプト処理系が実行時にclassファイル吐いてるのはしらなかったな。
外部ファイルコンパイル実行する時にclassローダ的にはどういう扱いするんだろう?



714:デフォルトの名無しさん
06/08/27 18:10:57
今のJVMならメモリの調整効くとかいってるが
そんなことねーよただ確保してるだけでなんも有効には使ってない。
そのへんM$のは賢い。

715:デフォルトの名無しさん
06/08/27 20:13:16
>>713
いくつかのスクリプト処理系のソース読んだ限りでは、基本的に、
java.lang.ClassLoaderをサブクラス化して、スクリプトをコンパイルしたクラスは
それに読み込ませるようにしてる
ちなみに、自作のJVM上で動作するJavaライクなスクリプト言語でも、同じような手法で
実装してる

716:デフォルトの名無しさん
06/08/27 20:15:58
>>713
あと、わかっているかもしれないけど、念のため追記しておくと、クラスファイルを
生成するといっても、スクリプトを直接実行するときは、別に実際にファイルが
生成されるわけではなく、オンメモリにbyte配列としてクラスファイルを生成して、
それをClassLoaderで読み込むようになってる

717:デフォルトの名無しさん
06/08/28 08:56:44
>j ava.lang.ClassLoaderをサブクラス化して

これが必要ってことはclassfileの仕様を拡張してるってこと?

718:デフォルトの名無しさん
06/08/28 12:32:30
>>717
いや、そういうわけじゃない
java.lang.ClassLoaderのAPI見ればわかるんだが、
byte配列からClassオブジェクトを構築するためのメソッドなどはprotected
になってるので、プログラムからこのメソッドを呼び出したいなら、サブクラス化
しなければいけないということ

719:デフォルトの名無しさん
06/08/31 03:43:18
>>714
>そんなことねーよただ確保してるだけでなんも有効には使ってない。

そんなわけねーだろw

720:デフォルトの名無しさん
06/09/07 15:26:38
ちょっと質問。
スタックを使って実装する言語についてです。
JavaのようにGCを持っていて、オブジェクトへの参照とプリミティブの
両方をスタックに積むことが出来る場合に、
スタック上のプリミティブはGCの邪魔になりました。
オブジェクトはクラス情報を持っていますが、プリミティブには持たせていません。
なぜなら高速性を期待してプリミティブはオブジェクトと区別したからです。
そこでどうしたらいいかと考え、オブジェクト用とプリミティブ用の
個別のスタックを用意したらどうだろうと考えたのですが、
何か考えられる問題点はありますか?
また、ほかにいい方法はありますか?
よろしく。

721:デフォルトの名無しさん
06/09/07 19:57:05
>>720
ここはお前専用の相談室だ。
よろしく。

722:デフォルトの名無しさん
06/09/07 20:25:02
>>720
GCの実装は?

723:デフォルトの名無しさん
06/09/07 20:53:31
つーか>>720の言ってることよくわからんな。
スタックって何に使うスタックのこと言ってるのかわからないし、なんでそのスタックに積んであるものがGCされるのかもさっぱり。
プリミティブ値が邪魔になるってのも意味がわからん。

724:デフォルトの名無しさん
06/09/07 21:09:47
>>723
……(;´Д`)アチャー

725:デフォルトの名無しさん
06/09/07 21:16:00
>>723
( ゚д゚ )

726:デフォルトの名無しさん
06/09/07 22:52:51
>>723
(笑)

727:デフォルトの名無しさん
06/09/07 23:06:54
>>720
型システムが堅いなら系列分けたスタック持っても良いかもしれないが
もし引数がバリアントみたいに使える言語処理なら徒労におわると思う



728:デフォルトの名無しさん
06/09/07 23:20:08
>>727
スタック上のプリミティブとオブジェクトを区別できないことから考えて、
構文として静的に区別できるような言語なんじゃないだろうか。
だったら分けても良いかも知れない。

729:デフォルトの名無しさん
06/09/07 23:27:16
>>728
ボクシングとかほしくなったら困るんじゃなかろうか(関数呼び出しフレーム作る時ね)


730:デフォルトの名無しさん
06/09/07 23:29:51
ボクシングしたものは全てオブジェクト扱いでイイような気がする。
箱に入れてさ。

731:デフォルトの名無しさん
06/09/08 06:09:40
素直にプリミティブにタグ付けした方が良い希ガス。

732:デフォルトの名無しさん
06/09/08 07:46:50
オブジェクトのメンバの、ポインタと即値はどうやって区別してんだ?

733:デフォルトの名無しさん
06/09/08 12:00:11
>>732
型のある言語ならコンパイル時にGC対象を列挙できるので問題はないでしょ?


734:デフォルトの名無しさん
06/09/09 02:18:41
>>720がもどってこなくてショボーン(´・ω・`)
どんな言語なのか聞きたかったのに

735:デフォルトの名無しさん
06/09/09 02:31:01
>>734
ねー

736:デフォルトの名無しさん
06/09/09 09:46:37
質問のレベルから察するとだな

737:デフォルトの名無しさん
06/09/09 19:25:02
チン子もえもえどぴゅーってレベルだな

738:デフォルトの名無しさん
06/09/09 20:27:29
スタックに積む量次第だけど、スタックに積むときだけプリミティブにタグ付けるのが
実装的には一番楽な気がする。


739:デフォルトの名無しさん
06/09/09 20:34:15
で、もうちょい話が進むと、プリミティブは常にタグつきがいいという話になる
ちなみに、L(ry も R(ry も、そうなってたような

740:デフォルトの名無しさん
06/09/09 20:47:24
もう手抜きして保守的GCにしちまおうぜ

741:デフォルトの名無しさん
06/09/09 21:20:50
可算無限個のメモリを用意するのが最近のトレンド。


742:デフォルトの名無しさん
06/09/09 23:20:12
>>739
LispとRuby?

Rubyのprimitiveは最下位ビットが1になっているので
保守的GCに引っかからない、というものだったと思う。

Lispの実装は山ほどあるんでわからん。

743:デフォルトの名無しさん
06/09/09 23:42:47
>>741
黙れニート

744:デフォルトの名無しさん
06/09/13 20:20:23
LISPは今風の書き方ができない。
やっぱa.b.c.d().e.f.gとかしたいわけよ。

LISPで同じことしようとするとオペレータ毎いちいち括弧でくくらないとな。
(dot(dot(dot(call(dot(dot a b)c)d)e)f)g)
もうなんだかわからん。
おっと、マクロにすりゃいいとか言い出すなよ。
俺はLISPを長年研究してきたから嘘は通じんぞ。


745:デフォルトの名無しさん
06/09/13 20:39:58
CLOSみたいにaccessorで触る仕組みにすると
(g (f (e (d (c (b a)))))) のような感じになるかな。

746:デフォルトの名無しさん
06/09/13 21:07:10
(chain
 (a obj)
 (b it)
 (c it)
 (d it)
 (e it arg1 arg2))

みたいに書けるようにするのはマクロでできるよ。
Rubyでselectやらmapやらを繋げて配列を引き回していたりなんかすると、
ブロック+ドットよりもこっちの方がむしろ見易い気がする。

747:デフォルトの名無しさん
06/09/13 21:14:01
>>744
そういう風に華麗にかけるのはいいんだけど、デバッグするときにめんどくさくなんね?
gの呼び出しで値がおかしくなってるんだけどどこで値がおかしくなってるのかわかんないみたいな。

748:デフォルトの名無しさん
06/09/13 21:28:46
>>746
で、誰がそんなアホなマクロ使うの?
プロジェクト全体でそのマクロ使うように、
ルール決めしたりできる?www

749:デフォルトの名無しさん
06/09/13 21:55:53
>>744
引数を沢山とれるようにして
(dot (call (dot a 'b 'c 'd)) 'e 'f 'g) でいいじゃん。

750:デフォルトの名無しさん
06/09/13 22:01:13
だから、んな誰も使うはずのないゴミを書いてみても
自己満足以外の意味ないだろ

751:デフォルトの名無しさん
06/09/13 23:26:44
vimのマクロはなにに影響されてできたもんなの?


752:デフォルトの名無しさん
06/09/14 00:00:43
>>744
| LISPは今風の書き方ができない。
| やっぱa.b.c.d().e.f.gとかしたいわけよ。

いや。そんな書き方したいと思ったことは一度もないんだが。

753:744
06/09/14 00:03:24
ふむ、ふむ。
予想通りのレスだな。

おれは結局フロントエンドを書いた。
しかし、それはもはやLISPではなく、
>>750の言う通りでもあった。
LISPはリスト処理が得意なはずなのに、
こういった階層表現のオペレートが苦手なのは意外だった。

素直にLISPとして表現するならば、
(defvar a '(b (c (d (e (f (g value)))))))
というタグ付きリスト階層を作り、
(cdadadadadadadar a) => value
という操作を行う事だろうか。


754:デフォルトの名無しさん
06/09/14 00:34:25
>>744-753
マクロにする必要すらないんじゃ?
ドットで繋ぐんだから実装はハッシュか何かだよね?
Schemeで申し訳ないが

(define (pp obj r)
 (if (null? r)
    obj
    (pp (ref obj (car r)) (cdr r))))
(define (p obj . r) (pp obj r))


 (p a 'b 'c 'd)
と書けるよ。

あとはgauche限定?になるけど
(define-method object-apply ((b <hash-table>) . c) (pp b c))

 (a 'b 'c 'd)
と書ける。

755:デフォルトの名無しさん
06/09/14 01:45:33
だから、ゴミの実装の詳細なんぞ、
興味ねえから、チラシの裏にでも書いてろ

756:デフォルトの名無しさん
06/09/14 01:57:39
744=750=755 ?

757:デフォルトの名無しさん
06/09/14 02:06:28
Lisp に絡んでいた奴がまた粘着してるのかねぇ?
↓のようなマクロじゃ気にくわないわけ?

例1: #{ a.b.c.d().e.f.g }
例2: #[ a b c #[ d ] e f g ]

どっちでも好きなほうを選べ.


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5371日前に更新/217 KB
担当:undef