「コンパイラ・スクリ ..
[2ch|▼Menu]
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 ]

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

758:デフォルトの名無しさん
06/09/14 02:47:35
>>755ではないが、>>744の質問はスレ違いじゃないのか?
特定の実装(Lisp)の問題なんだから、Lispスレでやればいいじゃんと思った。


759:デフォルトの名無しさん
06/09/14 02:54:08
Lisper に喧嘩売ってる俺ってスゲー、みたいな奴が出てくるのは Lisp の功罪だな。
こんな事が後何回繰り返されるのだろうか。

760:デフォルトの名無しさん
06/09/14 03:23:00
Lisp スレで相手にしてもらえなかったんじゃないの?
だからって関係ないこっちに来られても困るわけではあるが。

761:デフォルトの名無しさん
06/09/14 06:04:36
>>759
相対性理論が長きにわたって物理系のトンデモさんを
無数に相手にしてきたのと、ちょっと似てるね。

762:デフォルトの名無しさん
06/09/14 06:30:52
だーから相手にすんなって…すぐにまた LISP 最強!! とか暴れはじめる気配がする

763:デフォルトの名無しさん
06/09/14 06:51:13
相対性理論、やっぱ無敵ってこと?それともダサダサってこと?
文章からどっちの意味か見えなかった。

764:デフォルトの名無しさん
06/09/14 07:05:01
相対性理論とLispはどっちが難しいんだ?

765:デフォルトの名無しさん
06/09/14 07:52:51
それ自体がどうのではなく、名の通り方の問題だろう。
「挑戦者」達は、まず何より名前に噛み付いてる。

766:デフォルトの名無しさん
06/09/14 22:03:26
Lispの話になっても、Lisperのオナニーが多少見えるぐらいで、話は何にも広がらんのな

767:デフォルトの名無しさん
06/09/14 22:09:54
Lispのマクロってどんな感じなんでせう?
文法を自分で定義してシンタックスシュガーを作れるってイメージ?

768:デフォルトの名無しさん
06/09/14 22:25:34
ググれタコ

769:デフォルトの名無しさん
06/09/14 22:28:54
レス数増えたと思ったらやっぱりこれか

770:デフォルトの名無しさん
06/09/15 01:12:03
>>767
構文抽象ってやつだね。でも粘着が暴れるから別のスレで聞いたほうがいいとおもう。


771:デフォルトの名無しさん
06/09/15 01:16:34
>>767
後はコンパイル時にデータを生成したりとか。

772:デフォルトの名無しさん
06/09/15 03:25:42
>>744
俺は、a.b.c.d().e.f.gって書けるような
S式みたいというかM式の一種というかC言語風の
データ形式を考えてるけど、なかなか、難しいです。
簡単なschemeへのトランスレータは書いてみたけど、
なんか納得がいってません。
こう、ごちゃごちゃと考えがスパゲッティになってて
どう考えを積み上げていったらいいのかわからない段階です。
とりあえず、c言語のセミコロンやカンマがどうして必要なのか?
とか考えてます。

773:772
06/09/15 03:49:02
なんか、話が長くなりそうだし、
スレ作ってしまいました。
スレリンク(tech板)


774:デフォルトの名無しさん
06/09/15 13:24:14
>>772
>とりあえず、c言語のセミコロンやカンマがどうして必要なのか?
カンマがないと、 1, -1 が 1-1 になっちゃうでしょ。

775:デフォルトの名無しさん
06/09/15 16:15:57
スペースをデリミタにすればカンマは必要ないと思うけど?

776:デフォルトの名無しさん
06/09/15 17:25:25
スペースをデリミタにするなよ

777:デフォルトの名無しさん
06/09/15 21:57:36
改行をデリミタにすればセミコロンは必要ないと思うけど?

778:デフォルトの名無しさん
06/09/15 23:19:37
>>777
EcmaScriptとかはその戦略を採用しているな。
おかげで構文解析が死ぬほどめんどい。

779:772
06/09/16 02:44:14
>>774
2項演算子あるいは後置演算子と前置演算子に使われる演算子があった場合に
何らかのデリミタ(セパレータ?)が必要である。

てことですかねぇ。

他に、

名前のない括弧が前のカッコに結合しないようにする。

f()(1+2)と f();(1+2)みたいなかんじで。

みやすくするためにも存在してますよね。


780:デフォルトの名無しさん
06/09/16 03:40:14
java で実装されたスクリプトエンジンで、コルーチンの yield に相当する機能を実装したものはありますか?
Jython がジェネレータの名称で実装していることは知っているのですが、他の実装も見てみたいのです。

781:デフォルトの名無しさん
06/09/16 15:48:29
>>776
forth


782:デフォルトの名無しさん
06/09/16 20:02:26
FORTHって絶対メジャーになれない言語の筆頭だよな。

783:デフォルトの名無しさん
06/09/16 20:10:41
>>782
PostScriptはメジャーじゃない、とおっしゃる?

784:デフォルトの名無しさん
06/09/16 20:21:13
>>782
となると、LISPもだな。

785:デフォルトの名無しさん
06/09/16 22:58:15
java仮想マシンもたしかFORTHだよな?


786:デフォルトの名無しさん
06/09/16 23:54:15
はい、違いますよ

787:デフォルトの名無しさん
06/09/16 23:56:54
>>785 誰に聞いたのよw

788:デフォルトの名無しさん
06/09/17 00:01:31
スタックマシンがすべてFORTHだというのであれば

789:デフォルトの名無しさん
06/09/17 00:15:31
PDFを書く言語ってあったか?
それ。

790:デフォルトの名無しさん
06/09/17 03:22:01
FORTHをアーキテクチャとか言語分類とかのことだと思ってる奴がいるのか?

791:デフォルトの名無しさん
06/09/17 03:49:48
OpenFirmware も Forth だよ。

792:デフォルトの名無しさん
06/09/18 01:35:09
FORTHを信じても意味がなかった

793:デフォルトの名無しさん
06/09/18 02:08:16
>>792
そりゃFORCEじゃないのか?ルーク


794:デフォルトの名無しさん
06/09/18 02:09:45
Use the Force, 792.
>>792, trust me.
Remember, the Force will be with you always.

795:デフォルトの名無しさん
06/09/18 12:37:38
Lisp最強!!!!!!

796:デフォルトの名無しさん
06/09/18 14:30:56
はいはい。
LISPは面白いもんを沢山残してったけど、
FORTHは言葉遊びが出てくる程度だったな。



797:デフォルトの名無しさん
06/09/18 14:33:37
FORTHって、普通に使われてる言語やん。

798:デフォルトの名無しさん
06/09/18 14:34:32
Lispは今では遊びと教育用の言語でしかなくて、実際に使われているのは知らない。

799:デフォルトの名無しさん
06/09/18 14:53:41
スタックが複数本必要な言語はロクなのがないね。

800:デフォルトの名無しさん
06/09/18 21:56:30
>>798
emacs 知らんの?
珍しいやっちゃな。

801:デフォルトの名無しさん
06/09/18 22:05:13
emacsが実際に使われていないということなんだろうけどな

802:デフォルトの名無しさん
06/09/19 01:53:34
PCLの2章より:

An even more impressive instance of remote debugging occurred on NASA's
1998 Deep Space 1 mission. A half year after the space craft launched, a
bit of Lisp code was going to control the spacecraft for two days while
conducting a sequence of experiments. Unfortunately, a subtle race
condition in the code had escaped detection during ground testing and
was already in space. When the bug manifested in the wild--100 million
miles away from Earth--the team was able to diagnose and fix the running
code, allowing the experiments to complete.14 One of the programmers
described it as follows:

    Debugging a program running on a $100M piece of hardware that is 100
    million miles away is an interesting experience. Having a
    read-eval-print loop running on the spacecraft proved invaluable in
    finding and fixing the problem.

ドキドキもんだろうけど、楽しそうな体験ではある。

803:デフォルトの名無しさん
06/09/19 04:03:57
>>801
何が?

804:デフォルトの名無しさん
06/09/19 07:49:42
この程度の流れも読めない馬鹿は書き込まないで下さい :-P

805:デフォルトの名無しさん
06/09/19 10:01:17
>>802
さらに衝撃的な遠隔デバッグが行われたのは、NASAが98年に打ち上げた、ディープ・スペース1号機におけるミッションでのことだった。
ロケットの打ち上げから半年、Lispの短いコードにロケットの制御を2日間委ねることになった時、ある一連の実験が進行中だった。
不運にも、わずかな競合状態がコードの中に含まれていたためで、地上での検査時に見つからないまま、宇宙空間に放たれてしまっていたのだ。
バグ発見の過酷な状況は、地球から1億マイルも離れた場所であったが、担当チームは稼動中のプログラムにメスを入れ、問題の修復に成功したことで、今回の実験は完遂されることになった。

担当したプログラマの一人が、当時の様子を次のように語った。
「あの時デバッグしたプログラムは、1億ドルのハードウェア上で、1億マイルも離れた場所で稼動していたんだけど、おもしろい経験になったよ。
read-eval-printループがあれば、ロケットの中で問題が起きても、発見したり修復するのに、量り知れないほど役立つことが証明されたってわけさ。」

806:デフォルトの名無しさん
06/09/19 12:44:29
むしろLispなんかで制御したから地上での検査時に
見つからなかったという恥ずべき歴史だな。

807:デフォルトの名無しさん
06/09/19 12:47:00
「みんながLispに近づいているんじゃない!
 みんながLispを不必要にしているんだ!!」



808:デフォルトの名無しさん
06/09/19 13:16:59
PHPでいいです

809:デフォルトの名無しさん
06/09/19 16:07:51
いくない

810:デフォルトの名無しさん
06/09/19 16:09:57
>>806
本当にそう思うなら、匿名掲示板以外でも声高に言ってみろよ。
誰も相手にしてくれないけどな。

811:デフォルトの名無しさん
06/09/19 16:11:36
JavaScriptでいいです><

812:デフォルトの名無しさん
06/09/19 16:15:37
>>810
確かに、Lispなんていう死んだ言語の話をする相手が見つかるのは
夢想に責任をまったく持たなくていい匿名掲示板くらいでしょうね。

813:デフォルトの名無しさん
06/09/19 16:22:13
>>810
静的型付けのないLispが今でも一番だと思っている奴がいたら
それこそお笑いだ。
スクリプティング言語の主流はいわゆるP言語だし、大学での
教育に使われる言語もMLやHaskellなど静的型付け&型推論の
ある言語に移っている。

814:デフォルトの名無しさん
06/09/19 17:19:40
>>813
SICPを教科書に使う学科は多いだろうし、今でもLispは教育用言語として使われることが多い。
ラムダ計算のお勉強でも型なし→型ありという風に遷移・比較して教えられる事もあるだろうし、
教育用という意味では今でもLispは利用価値がある。

815:デフォルトの名無しさん
06/09/19 17:55:27
>>814
それが最近はSICPの評価は昔ほど高くない。
SICPの内容を最初からMLなどで教えているところもある。
つまるところ静的型付けがない言語をわざわざ大学で教える
必要性が薄らいでいるのさ。
にも関わらず
Lisp is nice, so we are nice.
な方の多いこと。(Rubyスレで見たレスのもじりだが。)


816:デフォルトの名無しさん
06/09/19 18:14:29
いい加減スレ違いだと思うんだけどな。

817:デフォルトの名無しさん
06/09/19 18:19:12
>>815
Lispはともかく、
型なしラムダ計算については?

818:デフォルトの名無しさん
06/09/19 18:33:09
>>817
形無しラムダ計算を教えるためにはLispが必要と考える理由が
むしろ知りたい。

819:デフォルトの名無しさん
06/09/19 20:39:42
形無しラムダ計算の本質はLispでないと表せない

820:デフォルトの名無しさん
06/09/19 21:36:04
>>818
型なしの関数型言語の代表格だからだよ。

821:デフォルトの名無しさん
06/09/19 21:37:13
別に言語は何だっていいけど、Lispは勉強するのに必要な資料が一番多いんじゃないかな。

822:デフォルトの名無しさん
06/09/19 21:38:40
紙と鉛筆で十分だが

823:デフォルトの名無しさん
06/09/19 21:41:26
Lisperの一部は鼻持ちならない選民思想の持ち主だが、
そうでない者も多い。
「Lisp一番!!」なレスはスルーでヨロ。

824:デフォルトの名無しさん
06/09/19 22:04:01
カステラ一番、Lispは二番!!

825:デフォルトの名無しさん
06/09/19 22:26:08
>>819
んじゃあ、形無しラムダ計算は発明から何十年もの間、
その本質は表現されなかったんだw

826:デフォルトの名無しさん
06/09/19 22:51:12
実際Lispがなかったら埋まったままだったろうなあ

827:デフォルトの名無しさん
06/09/20 00:51:30
>>825
ここプログラム技術板だから。
(と、この説明で恥ずかしくならないようなら問題外 :-) )

828:デフォルトの名無しさん
06/09/20 02:00:59
>>825
Lisp はクソだが見当違いの叩きを展開するアホはもっとクソだ。
ここは叩くスレじゃねーんだ。バカは↓でも抱いて海に消えろ。
文句は直接開発者にでもメールしてろ。

強い型付き LISP: URLリンク(www.lambdassociates.org)

829:デフォルトの名無しさん
06/09/20 06:28:07
言語ネタは叩き厨がファビョって荒れるんで Code Generation でも語ろうぜ
JIT なんだけど GNU Liblightning ってどうなん?使ってるプロジェクトって
qu 以外にある?


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

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