トップページ⇒tech
983コメント289KB

Prolog でまったり

■ このスレッドは過去ログ倉庫に格納されています
0001人工無能NGNG
Cなどの言語とは全く得意分野も構造もちがうProlog。
そんなPrologについてまったり話しましょう
0511デフォルトの名無しさんNGNG
結局、自称レベル高いとか言うカス研究者はどうなったんだろう(pw
0512デフォルトの名無しさんNGNG
おいおい、zipで圧縮もできない厨房かよw
0513490NGNG
名前
E-mail
題名
内容
URL
添付
ってなってるから
添付のところにウプしたいファイルを指定するだけだですよ。
0514デフォルトの名無しさんNGNG
インタプリタ書くのさえ難しいと思ってて
書いた人を神とあがめるアフォが集まるスレはここですか?
0515490NGNG
>>514
俺にはできないけどなぁ
Lispもあまりよくわかっていなかったりする。
0516デフォルトの名無しさんNGNG
>>514
おめーもできないだろ、カス
メタインタプリタ作ってインタプリタ作ったつもりになってるバカですか?
0517デフォルトの名無しさんNGNG
>>516
まだメタインタプリタとメタサーキュラーの区別がついてない厨房がいる(w
0518デフォルトの名無しさんNGNG
>>516
でも、遊びならともかく、PrologインタプリタはPrologで書くのが
実際的だし、SchemeインタプリタはSchemeで書くのが有利だろ。
あらゆる意味で。
0519482NGNG
>>505
ありゃ、こんなこと書かれてる。よけい火に油を注いだ形になりそうな予感。
しかし、もし挙げたら神になれるのかしら。迷うな。

正直なところ、あまり見せたくないんだわ。
こんなに重宝な感じでいわれると、もう少し、立派なところで公開したくなりました。もしかして、これって凄いのとかいう勝手な妄想。
コピー公開とかされたらムカつくので、ライセンスとってから公開します。
お騒がせごめんなさい。

0520デフォルトの名無しさんNGNG
>>510
インデントがないから激しく読みにくい(笑
0521デフォルトの名無しさんNGNG
>>519
見せなくて良いよ。
自分でインタプリタも書けないような厨房ども、どうせ見ても理解できない。

だいいちスレ違いだし(w
0522デフォルトの名無しさんNGNG
>コピー公開とかされたらムカつくので、ライセンスとってから公開します。
ライセンス取るってお前アホ?
ライセンスってのはソースの片隅に
著作権アリって書くって意味だろうが。

作れる能力は確かにすごいだろうけど
作った物自体はたいした事ないでしょ。
同じ機能なら俺も1日あればできるよ。

その部分的なコードを見るとすごくネタなきがするんだけど・・・

心配ならsourceforge使え
0523522NGNG
まあ、個人的にはテンプレートをどう使ったのか
くらいにしか興味ないから別にウプしなくてもいいけど。

この流れでやめたら釣り師だよな(笑)
0524デフォルトの名無しさんNGNG
>ライセンスってのはソースの片隅に
>著作権アリって書くって意味だろうが。

うわ、すげーアフォだ(藁
0525522NGNG
>>518
prologなんかはバックトラックなどを実装する事に意味があると思うけど。
ふと思った、あれを幅優先で実装するとどうなるんだ?
カットを除けば、結果はかわらないだろうけど
なんか意味があるのだろうか。

0526デフォルトの名無しさんNGNG
>>525
もちろん結果は同じ。
空間計算量が異なる。
0527522NGNG
>>524
あれ、違うの?
スマン、説明お願い。
0528482NGNG
>>522
GNUライセンスなら結局そんな感じになりますがね。
でもコードに色々著作埋め込んだり、形式を一応整えたりと手間はあるんです。

ちなみにtemplateはclassをatomとして扱えるようにしてます。
結局的にatomの演算をatom自身に持たせたというところ。
簡単には足し算はatomの概念によってかわるから、うんたらみたいに。
そこをtemplateとabstruct virtual classでよいこら(ここが味噌だからさ)とね。
微妙にboostのpreprocessをつかってね。

釣り師です。以上です。
0529デフォルトの名無しさんNGNG
abstractだろ(ヤレヤレ
0530490NGNG
なんか残念ですね。
気分的には
「だったら言うなよ・・・」
ってとこですが、
見せてもらう側なので文句は言えませんが。
0531デフォルトの名無しさんNGNG
著作権って「あり」って書かなくてもありに決まってるだろ。
0532デフォルトの名無しさんNGNG
なんか臆病な奴が多いようで
0533デフォルトの名無しさんNGNG
>>531
主張しなきゃねーよ
0534522NGNG
>そこをtemplateとabstruct virtual classでよいこら(ここが味噌だからさ)とね。
具体性が全然ないんだけど。
無駄にtemplate使ってるだけなきがしてきたよ。
0535デフォルトの名無しさんNGNG
>>533
おいおい。ヴェルヌ条約加盟以前のアメリカならともかく、
日本やヨーロッパや今のアメリカは無方式主義だよ。
主張は不要。著作権は手続き無しで自動的に生じる。
0536デフォルトの名無しさんNGNG
>>533 ネタだろ?
0537482NGNG
>>534
よくわかってらっしゃることで。もしかして、あなたも作ろうとしたのかな?

正味、インタプリタとして用いるならtemplateは使わない方が簡潔に書ける
と思われます。ただし書く効率は別として。

ただ、別のプログラムの内部処理に組み込むことを考えていますので、
そのためのtemplateの意味もあります。
0538デフォルトの名無しさんNGNG
>>533は未だにパブリックドメイソとか言っていると思われ。
0539デフォルトの名無しさんNGNG
>主張は不要。著作権は手続き無しで自動的に生じる
そんな事ないでしょ。
ソースコードは著作物だけど
権利を主張しない限りは、勝手にコピーされても
文句は言えない
0540デフォルトの名無しさんNGNG
>>539
おいおい…
Copyright (C) ....
が法律的に何の意味ももたないことを本当に知らないのか?

「無方式主義」でぐぐってみろや。
0541482NGNG
ネタでしたごめんなさい。
本当はインタープリターなんて作れないんです。
もう何も言わないでください。
0542482NGNG
>>541
せめてインタプリタとかいてほしかった。
ネタでしたごめんなさい。
0543482NGNG
英語のカタカナ化はどっちでもいいぽ
0544デフォルトの名無しさんNGNG
>>518
>でも、遊びならともかく、PrologインタプリタはPrologで書くのが
>実際的だし、SchemeインタプリタはSchemeで書くのが有利だろ。
>あらゆる意味で。

実際的って何?何が有利?
作り方のお勉強程度の意味しかないじゃん。
0545デフォルトの名無しさんNGNG
482は普通にウザイ
スレ違いもいいところ。
0546デフォルトの名無しさんNGNG
>>539
本当にそう思ってたのか????
そこまで遅れているやつがこの世にいたとは…
0547482NGNG
>>543
いや本人がインタプリタと書いてるから(一貫してる)
そうかかなきゃ、本当っぽくみえないと思ったといってみる。
0548デフォルトの名無しさんNGNG
インタープリタだっけ?
俺はインタープリンタだと思ってた。プリンタの一種(w
0549デフォルトの名無しさんNGNG
そんな>>545が一番うざがられているワナ。
鏡みろよ、かがみ。
0550デフォルトの名無しさんNGNG
>>544
いや実際、製品ではそうしてるけど。
そのほうが生産性ははるかにいいし、速度もそんなに変わらんし、
だいいちインタプリタの速度を気にしてもしょうがないし。
0551デフォルトの名無しさんNGNG
>>544
他にどうやって書くの?
0552通りすがりNGNG
>>540
意味がないことはない。
例えば、著作権が侵害された場合なんかは、
侵害側がその著作権の所属につき善意を主張した場合、
その抗弁として使用できる。
0553デフォルトの名無しさんNGNG
>>552
そういう意味はあるかもね。
でも「著作権を生じさせる手続き」としては無意味だろ。
0554デフォルトの名無しさんNGNG
>>550
それどういう意味?
>速度もそんなに変わらんし
インタプリタをインタプリタで駆動すんだから、
むちゃくちゃ遅くなるんじゃないの?
コンパイルするってオチですか?
0555デフォルトの名無しさんNGNG
>>552
2周年おめ。
0556デフォルトの名無しさんNGNG
>>554
オチもなにも…
まともな処理系なら*当然*コンパイラがあるだろ。
0557デフォルトの名無しさんNGNG
C言語でprolog作れる人なら
prologでprologを作れる可能性が高いけど

prologでprologが作れても
C言語でprologを作れる気がしないので、

prologでprologを作れると自慢してる奴はアフォ。
0558デフォルトの名無しさんNGNG
>>554
あのなあ、
インタプリタがすでにあるんならインタプリタ書く必要ねーじゃねえか。
コンパイラにきまっとるだろヴォケ。
0559デフォルトの名無しさんNGNG
突然ですが。ぜんぜんまったりしていません。
0560デフォルトの名無しさんNGNG
>>557
自慢も何も、ふつうそうしてるし…
なぜC言語でPrologコンパイラ書けると偉いのかにゃ?
ただ余計な回り道してるだけに思えるが。
0561デフォルトの名無しさんNGNG
>>556 >>558
え?
>>518にインタプリタを*書く*って書いてあるけど?
0562デフォルトの名無しさんNGNG
PrologをC言語に落とすコンパイラならあるよ。
SchemeをCに落とすコンパイラはたくさんある。

そんなのをCで書いてたらアフォだがナー
0563デフォルトの名無しさんNGNG
>>561
だから、CなりPrologなりのコンパイラがまずあって、
Prologインタプリタがまだ無いときの話だろ?
頭があればそれくらい分かる。
0564デフォルトの名無しさんNGNG
>>562
C言語に落とすやつだと制限あるんじゃないの?
同じ動作しなかったり。
0565デフォルトの名無しさんNGNG
VMを想定したアルゴリズムを使うインタプリタは
バイナリーにしても速度はほとんど変わらないよ。

メタインタプリタを実装してバイナリーにすると
速度がどうなるかは実際やった事ないけど、
VMと同じ様な動きになる気がするので・・・
という事は遅いとも限らないのか。
頭がこんがらがった。
0566デフォルトの名無しさんNGNG
>>561
まあ、黙って本格的な処理系のソース読んでみろや。
インタプリタは無かったり、コンパイラ使って書いてあったりするから。
0567デフォルトの名無しさんNGNG
つーか>>550が話の流れを追ってないバカって事だろ。
0568デフォルトの名無しさんNGNG
>>564
制限は機能よりむしろ性能だろうな。
アセンブリ言語に落とすのに比べて、どうしてもペナルティがある。
インタプリタとコンパイラの動作の違いは、
SchemeやCommon Lispなら問題にならないと思う。
Prologは知らん。ISO Prologなら大丈夫じゃないの?

>>565
なんでVMが出てくるの?
0569デフォルトの名無しさんNGNG
>>567
なんで?
アフォはどうみても>>544だろ。
0570デフォルトの名無しさんNGNG
>>567
お前がな(w
0571デフォルトの名無しさんNGNG
インタプリタだ、つってんのに、
なんでいきなりコンパイラの話になるんだろうね?
0572デフォルトの名無しさんNGNG
>>571
なぜか、インタプリタをインタプリタで書くなんていう
とんでもない想像をしたアフォがいるからだろうね。
0573デフォルトの名無しさんNGNG
>なぜC言語でPrologコンパイラ書けると偉いのかにゃ?
そりゃ、STLがあるから線形リスト作れなくてもいいって
言ってるのと同じだな。
いい悪いじゃなくて、
能力的に、線形リストを作れる/作れない
の違いがあるだけ。

gccがあるからCコンパイラなんて作れなくても
いいというのは正論だけれど、
Cコンパイラが作れるという理由で
雇ってくれる会社はあるのでは?

要するに
PrologでPrologが作れる事は
100歩譲ってちょっとすごいと表現すれば、
CでPrologが作れる事は
かなりすごいのでは?

君が面接官で
二人の志願者からの情報が
1人がPrologでPrologつくれます。
もう一人がCでPrologつくれます。
どっちが優秀かの判定は簡単だよね?
0574デフォルトの名無しさんNGNG
>>572
>>518のことかな?
0575デフォルトの名無しさんNGNG
>>573
ああ、つまりお勉強って事ね。
既に能力のあるプログラマには関係ない話だな。

ChezやSicstusは、わざわざおべんきょのために、
Cでインタプリタ書くような無駄なことをして
能力を実証する必要など無い。
0576デフォルトの名無しさんNGNG
>いや実際、製品ではそうしてるけど。
なんで誰も具体的な商品名と、
ベースにした処理系を聞かないんだ?
0577デフォルトの名無しさんNGNG
>>572
>インタプリタをインタプリタで書く
意味がわからんのだが。
0578デフォルトの名無しさんNGNG
PrologでPrologつくれます の方だろう。ま、センスの問題になるんだが。
0579デフォルトの名無しさんNGNG
>>574
いや、>>554のこと。
0580デフォルトの名無しさんNGNG
PrologでProlog作るのと、
LISPでProlog作るのと、
CでProlog作るのと、
どれが一番良い?
0581デフォルトの名無しさんNGNG
>>576
「ベースにした処理系」ってどういう意味?
0582デフォルトの名無しさんNGNG
>>575
そうそう、勉強というか
実力を測る基準にはなるでしょ?
明らかに必要となる知識が違うしさ。
ただ時間がかかるだけじゃないよ。

あとは、やっぱり高速化って仕事もあるだろうから
C++で書いて自分で高速化したり
他の処理系が使ってる高速化アルゴリズムを知るのも
有益かもね。

>能力を実証する必要など無い。
関係ないけど、
実証しないと誰も認めてくれないよ。
0583デフォルトの名無しさんNGNG
>>579
もっとさかのぼって話の流れを追えよバカ。
0584デフォルトの名無しさんNGNG
>>582
いや、ChezやSicstusは、そんなアフォなことしないでも
みんな能力を認めてると思うんだけど(w
0585デフォルトの名無しさんNGNG
つーか、70年代ごろから、LispはLispで書いてあるっつーに。
MacLispもLisp Machine LispもZetaLispも、その時点で最高速
だった製品は皆そうだったYo。
0586デフォルトの名無しさんNGNG
>>584
二人とも俺は知らないけど
(前がlispで後ろがprolog?)
他に業績があれば認めてもらえるのでは?

0587デフォルトの名無しさんNGNG
まあ、オベンキョにアセンブラやCでインタプリタを
書いてみるのは良いと思うよ。
コンパイラ書いたほうが勉強になると思うけど。

実用的な処理系を(低レベルルーチンだけならともかく全体を)
Cでわざわざ書いたらちょっと…
と思うけど。
0588デフォルトの名無しさんNGNG
>>585
>つーか、70年代ごろから、LispはLispで書いてあるっつーに。
これって、インタプリタを書くわけじゃないよね?
この辺を勘違いしてる人がいるみたいなので。
0589デフォルトの名無しさんNGNG
>>585
単純なLispの上に複雑なLispを載せるという意味?
0590デフォルトの名無しさんNGNG
つまり、>>585の言う、「LispはLispで書いてある」というのは、
SICPの教科書の第4章みたいな*インタプリタではない*
ということ?
その辺ぼかして書かれると、知らんやつは誤解するぞ。
0591デフォルトの名無しさんNGNG
>>586
Chez SchemeはCadence ResearchのScheme製品。
Sicstus Prologはスゥェーデンコンピュータサイエンス研究所のProlog製品。
どっちもその性能で超有名。シェアもトップ。

…これらを知らないのに偉そうなこと言ってるの???
0592デフォルトの名無しさんNGNG
>実用的な処理系を(低レベルルーチンだけならともかく全体を)
>Cでわざわざ書いたらちょっと…
処理系をインプリする事が目的なら、高速化とか拡張は不要なのでは?
実際に使うために作るのか、処理系を作って勉強してみるのかでは
ずいぶん違うと思うよ。
0593デフォルトの名無しさんNGNG
インタプリタ上でインタプリタを書くのはもっと研究目的だと思うんだが。
研究目的なら手早く書けるほうがいいのでprologはprolog、schemeはschemeで書く。
c/c++やjavaでも性能に目をつぶれば書くのはそんなに難しくはないけどさ。
部分評価器、コンパイラコンパイラあたりで調べてみてください。
0594デフォルトの名無しさんNGNG
>>588
>>588
コンパイラもインタプリタも。

ちょっと想像してみろよ。
Cコンパイラと、デバッグ用のCインタプリタをセットにした製品を売るとする。
これらを両方ともCで書いてバイナリを売るのが、そんなに不思議か?

LispやPrologでも同じ事じゃないか。いったい何を不思議がっているのか…
0595デフォルトの名無しさんNGNG
>>591
別に俺は処理系マニアじゃないんで。
そんな事知らなくても良くない?
ダメ?

sicstus Prologは聞いたことあるけど
あれは作った人の名前なんだ。
日本の会社は日本産の有名なprologを買ってると思うんだけど
そんな事も知らない?
学生かな?
0596デフォルトの名無しさんNGNG
>>592
処理系作成者にとって、高速化や拡張性は重要だと思うけどなー。
0597デフォルトの名無しさんNGNG
Lispをバイナリに落とすのもPrologをバイナリに落とすのも
ソースとインタプリタを一つのファイルに
まとめるだけじゃなかったっけ?
違ったらスマン
0598デフォルトの名無しさんNGNG
>>595
いや、SICSはSweden Institute of Computer Science。研究所の名前。
最初はQuintus互換の高速フリー処理系として広まったが、その後Quintusを
しのぐ製品となった。QuintusはSICSに買収された。
0599デフォルトの名無しさんNGNG
>>597
んなバカな。
0600デフォルトの名無しさんNGNG
>>597
LispやSchemeのコンパイラで関数呼び出しのベンチマーク
(例えばAckerman)とかやると、Cより速いよ。
0601デフォルトの名無しさんNGNG
まとめると結論は2つ
1
Cでインタプリタを作るには
メタインタプリタを作る以上に技術が必要。

2
メタインタプリタも実用的に使える。
0602デフォルトの名無しさんNGNG
日本産の有名なPrologってなによ。まさかKABAとか(w
で、それはCで書いてあるのかい?
0603デフォルトの名無しさんNGNG
>>601
君の顔と同じくらい歪んでるな。
0604デフォルトの名無しさんNGNG
Cよりどれくらい速いの?
データを教えて
0605デフォルトの名無しさんNGNG
>>602
ググレばすぐわかるよ
0606デフォルトの名無しさんNGNG
>>600
つーかそのベンチ試した処理系何?
0607デフォルトの名無しさんNGNG
結論はこうだろ。

1. Cの実用処理系はたいていCで書いてある。Lispの実用処理系はLispで、
 Prologの実用処理系はPrologで書いてある。
2. お勉強のためにLispでCインタプリタを書いたり、CでLispインタプリタを
 書いたりする人もいる。他人が感心してくれるかどうかは疑問。
0608デフォルトの名無しさんNGNG
Scheme→Cトランスレーターを使って
SchemeメタインタプリタをCに変換すると
何ができるの?
0609デフォルトの名無しさんNGNG
http://www.bagley.org/~doug/shootout/bench/ackermann/
http://www.bagley.org/~doug/shootout/bench/fibo/
0610デフォルトの名無しさんNGNG
>>608
Schemeインタプリタだろ?
■ このスレッドは過去ログ倉庫に格納されています