TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼
Visual Studio 2008 Part 22
Pythonのお勉強 Part56
大唐吐蕃回廊漢宮秋月康秀華南京都大白微宮廷記
最も美しいプログラミング言語は? Part6
Excel Python 質問スレ
生産性が低いC++で頑張るために必要な知識
P2P型の完全匿名掲示板はまだ出来ないの?その5
[特設]サマータイム対応相談室
オブジェクト指向ってクソかよPart5
スレ立てるまでもない質問はここで 153匹目

Prologでまったり Part5


1 :2017/03/24 〜 最終レス :2020/06/06
過去スレ
Prologでまったり Part4
http://pc12.2ch.sc/test/read.cgi/tech/1235561034/
Prologでまったり Part3
http://pc11.2ch.sc/test/read.cgi/tech/1193354806/
PrologでまったりPart 2
http://pc11.2ch.sc/test/read.cgi/tech/1102664221/
Prolog でまったり
http://pc5.2ch.sc/test/read.cgi/tech/976462999/

2 :
すみません。最後のPartなしは、リンクが切れていました。
一番肝心のスレッドなのに残念ですね。

3 :
人工知能がブームになりつつあり、Prologにとっては追い風と書いたところ、

ジャンプするには向かい風の方がよい

との答えをもらいました。

4 :
>>2
ググったらみみずんにあった
http://mimizun.com/log/2ch/tech/976462999/

5 :
Prologに型概念はないと言い切ってよいものだろうか。

6 :
ふと、新聞に載ってる論理パズルを解くプログラムを書きたくなって
Debian に GNU Prolog をインストールして二十数年ぶりに Prolog を楽しんでるのだが、
まだ maplist が実装されていないバージョンだということに今気付いた。
2007 年にリリースされた 1.3.0 らしい。いや、特に困るわけでもないが。
fd_domain や fd_all_different は実装されてるからね。特に不足は無いよ。
不足があるなら自分で新しいのを入れればいいし。まあ、まったりいこう。

7 :
>>888
その部分では関数型言語も手続型言語もオブジェクト指向が強調されたものでも記述はできるが、その記述の関係さ

8 :
すみません。論理Polog初心者スレと間違えて書き込んでしまいました

9 :
>>5
型はないです。型という概念が使われることもない。外からどう見えようとも。

10 :
>>9
本当は integer や float も atom という認識でよかったのではないか

11 :
人工知能といっても今流行ってるDeepLearningの世界にPrologの出番なんて無いと思うんだけどどう関係すんの?

12 :
>>11
DeepLearningを含む機械学習やニューラルネットワークによる認識は
人工知能のごく一部。知識プログラミングにこれがつながるのはそれこそ
進化論的に大変。人間の思考、判断、意志、統制は、シンボル操作がやはり
中心になる。この領域の中心付近に述語論理があり、そういう意味で、
Prologはこの人工知能の世界では今後もずっとに安泰の地位にいる。

13 :
ずっと安泰の地位にいる。 ですね。

14 :
>>12
ごく一部といっても今流行ってるのは機会学習だけでそれ以外は良くも悪くも全く変わってないよね?
だからPrologにとって追い風も何も無いと思うんだが。

15 :
>>12
Prologは記号処理に還元できる問題は得意だから今後も使われるだろう。
でも人間の曖昧な思考やそれに基づく自然言語は記号処理に還元できない。
そして自然言語処理でDeepLearningが次々と成果を出している。
FacebookのMemory Networksは述語論理抜きで質問に答える。
Prologはもう人工知能研究の中心ではないし今後もならないのでは?

ニューラル機械翻訳と記号幻想の死
http://rekken.g.hatena.ne.jp/murawaki/20161017/p1
Facebookの人工知能アルゴリズム「memory networks」について調べてみた
https://www.slideshare.net/metaps_JP/facebookmemory-networks-keo
NIP2015読み会「End-To-End Memory Networks」
http://www.slideshare.net/unnonouno/nip2015endtoend-memory-networks
>複数の文からなる事実から、質問に答えるタスクを、end-to-endで学習する手法を提案した
>単語の埋め込み、文のエンコード、各事実に対するattention、
>回答の生成までを単一のネットワークにする

16 :
>>15
>でも人間の曖昧な思考やそれに基づく自然言語は記号処理に還元できない。
こう言い切る根拠がわからない

17 :
>>16
数学の命題のように100%正しい命題なら記号処理に還元できる。
でも風が吹けば桶屋が儲かるのような確率的命題を扱うには
離散値ではなく連続値で推論する仕組みが要る。
ベイジアンネットワークやニューラルネットワークなら確率的命題を扱える。

18 :
swi-prologをEmacsで書く環境つくってるんだけど
run-prologで質問にセミコロンで答えてもリターンキーおすまで反応なくて
リターンおすとそこで終りになってしまうんだけどいい対策ないですか?
ターミナルならちゃんと次の答えの候補までだしてくれるんだけど

19 :
ありがとう。そういうことが起こるということには気付いてたけど
shell-mode を使ってるからだということがやっと分かった。
shell-mode では ; を単独で送れるようなキーバインディンディングにはなっていない。
しかし、run-prolog にも同じ問題があるとしたらいささか奇妙なことだと思うのだけど。
とりあえず、; にちゃんと応えてほしいなら ansi-term を使えばいいかも。
もちろん run-prolog を使いたいだろうとは思うけど。
; は諦めて失敗駆動ループで全部出力するという手もあるよ。

20 :
解ったぞ! ; の後に M-x (comint-send-input t) だ!
やってみた!

| ?- member(X,[a,b,c,d]).
member(X,[a,b,c,d]).

X = a ? ;;

X = b ?
Action (; for next solution, a for all solutions, RET to stop) ? ;;

X = c ?
Action (; for next solution, a for all solutions, RET to stop) ? ;;

X = d ?
Action (; for next solution, a for all solutions, RET to stop) ? ;;

(4 ms) no
| ?-


どうだ、うまくいったぞ! ……って、やってられっかー!
やっぱり run-prolog の方で対処してくれないと。

21 :
ごめん、M-x じゃなくて M-: だった。

22 :
単に Prolog インタプリタを対話的に使いたいだけなら Emacs の外でやる方が快適なんだけど
それでは不便だからやっぱり Emacs の shell でやりたい。だからこんなことをしてみた。

(defun comint-send-input-without-nl ()
(interactive)
(comint-send-input t)
)

これを C-c C-j にバインドして使う。どうやら期待通りに動いているようだ。
まあ、; はよく使うからこんなのを使ってもいいかな。

(defun prolog-other-answer ()
(interactive)
(insert ";")
(comint-send-input t)
)

こっちは C-; にしてみた。

23 :
よくわからないけどM-;で%が入力されて
全部の回答がでてきた

24 :
>>10
50数冊Prologの本は出版されていますが
型についての言及はほとんどないですね。

25 :
データ型という意味なら項(term)が該当するのだろうけど
C/C++の型の意味だとPrologは型無し言語にあたるかと・・

26 :
>>25
型とかクラスということを考えると、述語で定義される全体が、それにもっとも近い
ような気がします。変数も単一化の道具のようなもので、事実上ないと言うに近い
ですし。

27 :
>>26
Prologの変数って、
長い長い ======================== 等号のように見えますね。

28 :
>>27
その理解で正しいのでは

29 :
Prologの変数では、setof/3やfindall/3の中の変数ですね。
外側の変数を受け継いだ場合です。

?- length(L,2),setof(A,A ^ member(A,L),X),L = [1,2].
L = X, X = [1, 2].

?- length(L,2),findall(A,member(A,L),X),L = [1,2].
L = [1, 2],
X = [_G711, _G708].

?- setof/3は受け継いていますが、findallでは切れています。

30 :
自由変数なんていう概念が通用することが分かります。

31 :
>>18
問題は解決した? 原因が判ったよ。
; には prolog-inferior-self-insert-command というコマンドが割り当てられていて、
これが期待される動作だと思うんだけど、新しいバージョンではなぜか
この prolog-inferior-self-insert-command が無くなっている。
Emacs 24.4 に含まれている 1.22 にはまだあるけど 1.25 には無い。
理由は判らない。少なくとも prolog.el の Changelog にはそれらしい記述が無い。
とりあえず、prolog-inferior-self-insert-command があるバージョンを
使えばいいと思うよ。

32 :
>>29
どれが自由変数なんですか

33 :
>>32
findall/3の方のAです

34 :
ファイルから行ならびを得る(_ファイル,_行ならび) :-
open(_ファイル,read,_入力),
findall(_項,(
repeat,(at_end_of_stream(_入力),close(_入力),!,fail;
行入力(_入力,_行))),_行ならび).

行入力(_入力,_行) :-
read_line_to_codes(_入力,_文字コードならび),
atom_codes(_行,_文字コードならび).

35 :
The Art of Prolog が PDF で公開されてるのはいいんだけど、テキストデータは無いのかな……
tesseract-ocr でテキスト化してるけど結構大変だ。

36 :
メモリ128GBの環境で述語 foo/1 引数にユニークなアトムを生成して5億節を定義する。

?- between(1,500000000,N),
atom_number(A,N),
assertz(foo(A)),
N = 500000000.

これで110GBを費やした。一節の追加あたり実に220byteということになり、
想像以上に大きくなった。

37 :
処理系は SWI-Prologインタプリタ (64bit版)

アトムテーブルがハッシュで管理されているとして、こんなにメモリを消費
するものだろうか。

38 :
SWI-Prologインタプリタ

一方、atomの生成をやめて、グローバルスタックにリストして整数を積む。

?- findall(N,between(1,500000000,N),L).

これだと1リスト要素ごとに24バイト消費する。

39 :
Microsolft Azure の一時間あたりの料金

G5: 32 コア, 448 GB RAM,6144GB ディスク, \1,044.276/時間

消費税込みで月間81万円くらい。

40 :
448GBメモリを使うことができれば、
Prologのオンメモリデータベースで大企業でもかなりの部分がカバーできる。
ディスクストレージへのバックアップ時間など、課題もあるだろうが。

41 :
% swipl -G445000M

?- findall(N,between(1,18000000000,N),L).

が可能だということ。

42 :
>>41
近い将来には1TBメモリ 100万/月になるだろう
そうなると、プログラム言語の中で最もその恩恵を受けるのはPrologということか

43 :
>>36
% GNU Prolog 1.4.4 でやってみたよ。コードはこんなんでいい?

ps :- shell('ps p $PPID -O sz',_).

eat_memory( Start,End) :-
\+(( between( Start,End,N), number_atom( N,A), assertz( foo( A)), fail)).

main :-
os_version( OS), write( OS), nl,
ps,
eat_memory( 1,10000),
ps,
eat_memory( 10001,20000),
ps,
true.

44 :
% 実行結果

| ?- main.
main.
Linux 3.16.0-4-amd64
PID SZ S TTY TIME COMMAND
2993 32177 S pts/3 00:00:00 /home/i/Downloads/gprolog-1.4.4/bin/gprolog
PID SZ S TTY TIME COMMAND
2993 32807 S pts/3 00:00:00 /home/i/Downloads/gprolog-1.4.4/bin/gprolog
PID SZ S TTY TIME COMMAND
2993 33466 S pts/3 00:00:01 /home/i/Downloads/gprolog-1.4.4/bin/gprolog

(1728 ms) yes
| ?-

% 65 くらいだね。SWI の実装は知らないが 3.5 倍くらいなら驚くほどではないと思う。

45 :
>>39
>>40
>>42
クラウドだとコストかかりすぎだけど
オンメモリデータベースとしての用途は
将来的に今よりもっと出てきそうだね

46 :
>>44
ありがとうございます。3.5倍だとして、ハッシュテーブル等の構築の仕方の
差でしょうか。

47 :
それにしても一億節になると一節の追加時間が二万分の一秒と極端に遅い。
ハッシュの重なりが1万通りくらい出てきて平均5000回リンクを辿ると
いうことか。

48 :
Prologもインメモリデータベースとしてさらに進化するべき時期。
http://www.publickey1.jp/blog/17/intel_persistent_memory2018xeoncascade_lake.html

49 :
そこはHPEのThe Machineじゃないの?

50 :
これは凄いね
https://www.hpe.com/jp/ja/japan/newsroom/press-release/2017/051901.html

51 :
制約論理プログラミングってのでPrologの色んな弱点緩和されてるっぽい。
SWI-Prologにもclpfdなるライブラリで提供されてるらしいけど使ってる?

52 :
>>51
全く使っていない

53 :
GNU Prolog で制約論理プログラミングしてるよ。
ゼブラパズルに置き換えられる問題は世の中に結構ある。

54 :
Prologがメジャーに復帰するためにはもう少し生きたプログラムが
表面に出てこないと

55 :
それに尽きる

56 :
>>48
これって、第四の受動素子「メモリスタ」を使った奴だね。
いずれはこれに置き換わっていくのかな・・・

57 :
Prologのサンプルみたいんだけど、これって他のOOP言語とかでもライブラリとして実装可能じゃない?

58 :
可能だよ

59 :
じゃあprologを使うメリットって何?
いや、別にprologをdisりたい訳じゃないけどどういう言語なのかなと思って

60 :
Prolog Programming for Artificial Intelligence (4th Edition)ってどうですか?
いい本なら買うつもりです

61 :
>>59
Prolog専用の言語環境を使うメリットの話?
そりゃ他言語のライブラリより
餅は餅屋で機能が豊富だから

62 :
>>3
関数型の次は論理型がくる

63 :
中核派のほうに細々と生き残ってるよなあ

64 :
中核派がPrologを使っていたとは。
革マル派はLispですか?

65 :
赤軍は?

66 :
>65

>赤軍は?

赤軍というのは、通常は旧ソ連の軍隊のこと。
赤軍合唱団というのもありますが、
あなたの言いたいのは、日本の「連合赤軍」のこと
でしょう?

67 :
>>66
連合赤軍ではなく日本赤軍のことかもしれないぞ
テルアビブ空港で乱射後自爆した

68 :
だから赤軍派?って言ったじゃねーか!

69 :
>68

>65では、
>赤軍は?

と書いてあって、

赤軍派?

とは、書いてありませんが。
実は「派」の字は書いてあったのだが、
私が老眼の為に見えなかったのでしょうか。


70 :
嫌味なマジレスw

71 :
Prologおじさん改めPrologおじいさんですね

72 :
これくらい誤解されている言語は他にないだろうな。
これ以上はないと言っていいくらい、単純な言語なんだが。

73 :
ラズパイ上で動くPrologが既にあるのだが、どんなアプリが面白いだろうか

74 :
兎にも角にもアレクサ君と連携

75 :
Prologって型定義をしないけど型が全くないという訳ではない
アトム、アトミック、整数、浮動小数点数、リスト
だけどそれ以上に区別する気はない

76 :
ラバパイではそういうわけにはいかないが最近の速いパソコンだとPrologの一つの単一化も
3ナノ秒以下で実行されるらしい
Prologは遅いからとかの言い訳は利かないのかも

77 :
ラバパイじゃ遅そうだな
ラバだからな

78 :
☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆

79 :
・電通、企業の顧客対応を自動化・高度化する日本語AIサービス「Kiku-Hana」を開発
http://tech.nikkeibp.co.jp/it/atclact/activer/nkpr/RSP474948_22032018/

Prologの採用事例がまた一つ

80 :
自然言語処理はPrologの得意分野だからな

81 :
自然言語処理が確率的な手法で進めば進むほど、Prologの出番が出てくる。

82 :
法律の条文解釈をHaskellでやってるのは見た事あるけど、Prologって、そういうのも可能なんだろうか?

83 :
日本の法律は厳密に定義されていない部分がわりにあってうまくいかないという話をどこかで読んだことあるな
実際の基準や閾値は判例見ないとわからなかったりとか
そういうあいまいなところを実情に合わせて柔軟に解釈して運用することで時代の変化にある程度追従していけるようにしてあるのかも

84 :
憲法解釈でやりたい放題なんだから今さら

85 :
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

E5JQH

86 :
Z7K

87 :
WikipediaのPrologの記載にある種の執念を感じた(笑)

88 :
>87
あれはまだまだ序文にすぎないよ
プロローグだけに

89 :
>88
座布団一枚!

90 :
http://r2.upup.be/wV2qsULdHm

91 :
NGゆき

92 :
TwitterでPrologがちょっと燃えててワラタ

93 :
yarnに採用!おめでとう!
https://jser.info/2019/02/26/yarn-v2berryfastify-v2tslint/
また、ワークスペースの改善としてConstraintsというProlog(実際にはtau-prolog)を使った制約を扱うプラグインが追加されています。ワークスペース間の依存などのルールをPrologを使って記述して、より効率的に扱えるようにするのが目的のようです。

>>92
くやしく。

94 :
パッケージ管理やビルドツールにPrologを使うというのは(Prologを使える人が少ないという点を除けば)極めて良いアイデアだと思う

95 :
なんで今まで誰もやらなかったのかね

96 :
makeで足りてるから

97 :
Prologでリストを使わない人はいないと思うのだけれど、
引数の部分にリスト以外の複合項を全く書かない人もいる。一方、引数に終始、複合項や式が
出続ける書き手もいる。
もちろん、対象領域が違うからという理由が大きいのだけれど、そのことは少し軽く見て、
そういう視点で観察してプログラマを分類してみるのも面白い。

98 :
Prologの本はいっぱいあるけど、GHC系言語の解説書ってないのかなぁ。
あれでどんなプログラミングができるのかいまいちイメージがつかめない。

99 :
>>98
結局、これはいい、という適用分野が見つからなかった

100 :
>>98
30年以上前のしか知らない
https://www.amazon.co.jp/dp/4320022661
読んだことないし

101 :
そうなんだ?
Prologを踏まえて作られたものだから少なくともそれよりは利点があるものと思ったけど。

102 :
>>100
あ、あるんだね。ありがとう。

103 :
並行論理プログラミング言語 GHC / KL1 - Kazunori Ueda - 早稲田大学
http://www.ueda.info.waseda.ac.jp/~ueda/readings/GHC-intro.pdf

GHCの考案者による解説

104 :
>>40
SSDだと遅い?

105 :
>>97
私は アトム+リスト 派だな。RDBの影響からか構造体は書かない。

106 :
'1文字ずつ交互に1つの文字配列に格納し'(_文字列_1,_文字列_2,_文字数,_文字ならび) :-
findall(_文字,一文字ずつ交互に(_文字列_1,_文字列_2,_文字数,_文字),_文字ならび).

一文字ずつ交互に(_文字列_1,_文字列_2,_文字数,_文字) :-
between(0,_文字数,N),
交互に(_文字列_1,_文字列_2,N,_文字).

交互に(_文字列_1,_文字列_2,N,_文字) :-
sub_atom(_文字列_1,N,1,_,_文字).
交互に(_文字列_1,_文字列_2,N,_文字) :-
sub_atom(_文字列_2,N,1,_,_文字).

107 :
% 今日書いたプログラム

solve( _,0,New,New) :-
!.

solve( [],_,_,_) :-
!, fail.

solve( [_|T],R,B,New) :-
solve( T,R,B,New).

solve( [H|_],R,_,_) :-
R < H,
% write( R-H),nl,
!, fail.

solve( [H|T],R,B,New) :-
RN is R - H,
% write( RN-[H|B]),nl,
solve( T,RN,[H|B],New).

main :-
Elem = [9729,8895,8572,7627,6576,6460,5842,5496,5467,2921,1685,511],
solve( Elem,31178,[],New),
write( New),nl,
true.

108 :
>>87
あれメチャクチャ詳しくて助かるわ!
自治厨に消されるかもしれないから
ページをローカルに保存してあるぞ

109 :
Prologこんなところでも実用されてたのね
https://robotstart.info/2020/05/19/heart-conditioner-top.html

110 :
朝日新聞x電通=0

111 :
AZ-Prologですね

112 :
>>106
これ間違っていますね。_文字数の意味が今ひとつ不明ですが多分、

'1文字ずつ交互に1つの文字配列に格納し'(_文字列_1,_文字列_2,_文字数,_文字ならび) :-
_文字数_1 is _文字数 - 1,
findall(_文字,一文字ずつ交互に(_文字列_1,_文字列_2,_文字数_1,_文字),_文字ならび).

でないといけません。

113 :
Prologで文脈自由文法が出来ると聞いてやってきた
情報求む
簡単にオートマトン書けるし良い言語だな

114 :
W. F. Clocksin/C.S. Mellish著、中村克彦訳
『Prologプログラミング』(日本コンピュータ協会刊行)

「第9章 文法規則の使用」
には、文脈自由文法をPrologで実現する方法が解説されて
いますl

115 :2020/06/06
>>114
情報サンクス!
Prologって知れば知るほど面白い言語だな
オートマトンもコンパイラも簡潔に書ける
乗り換え案内的なヤツもすぐ作れそうなのに配列の最大値を求めるとかは他の言語の方が楽に書けそうだな
特定のジャンルのアルゴリズム特化型言語か
独自のアレンジ加えたくて、今、swi-prolog本体のソース読み始めて分かったことは、
visibility("hidden")のattributeが設定されてるからソース書き換えないとinstrument-functionsを使った関数トレースが出来ない
C言語で15万行(ステップ数)ぐらい
qlfとかいう超高速読み込み可能な中間コードを生成してる
PL_next_solution()からVMの処理が始まるかも(違ったらスマン)
ぐらいかな

くだすれPython(超初心者用) その44【Ruby禁止】
プログラミング言語 Scala 11冊目
人工知能ディープラーニング機械学習の数学 ★2
Visual Studio 2010 Part21
2 part forth
Visual Studio 2017 Part5
Kotlin 4
次世代が造った言語 blawn
☆★ Java の宿題ここで答えます Part 74 ★★
なぜ「staticおじさん」は叩かれたのか?
--------------------
【新】SMAP雑談スレpart796【木村批判OK】
坂崎幸之助のももいろフォーク村NEXT☆10
LINEクリエイターズスタンプ分配金1万円達成者スレ
■あーみん劇場・第52幕 ねぇ■
【韓国】 “日本語狩り” が始まった
悲しいしりとり 100巡目
【中国ドラマ】秀麗伝【チャンネル銀河】
Youtubeのネトウヨ動画を報告しまくって潰そうぜ61
韓国、229人感染で計433人
【PFAOS】pixivファンタジアAOSヲチスレpart3
帰ってきたウルトラマン 38話目
製造両数356両 京急旧1000形
月桃【ゲットウ】2
【Kawasaki】VERSYS-X 250/300 Part.5
アニメキャラ白人に見える問題について語るスレ
関ジャム完全燃SHOW10曲目
一人暮らしの喪女いる?110部屋目
真・リアリティ・トランサーフィン エピソードZERO
【バーチャルYouTuber】upd8(アップデート)アンチスレ21【みんな忘れた初期型アイの声】
【バーチャルYoutuber】姫森ルーナ#17 hololive/ホロライブ【ナイツオブラウンドそれはルーナの騎士】
TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼