トップページ > プログラム > 2014年10月08日 > Df1+rkDp

書き込み順位&時間帯一覧

15 位/165 ID中時間01234567891011121314151617181920212223Total
書き込み数1000000000000000000001013



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
357
プログラミング雑談スレ♯+++
【Python】スクリプト バトルロワイヤル46【pl,rb,php,js】

書き込みレス一覧

プログラミング雑談スレ♯+++
357 :デフォルトの名無しさん[sage]:2014/10/08(水) 00:16:14.63 ID:Df1+rkDp
>>354
>そうでない場合は、、、全然ダメ…例えば Prolog は今でも解らないし
>書けない

もしデータベース設計の経験があれば、Prolog の便利さは直感できると思う
たとえば従業員データベースなら、以下のように書ける:

従業員(1, 山田). 従業員(2, 鈴木). 従業員(3, 田中). 従業員(4, 松下). 従業員(5, 本田).
部門(1, 総務). 部門(2, 営業). 部門(3, 開発).
所属(1, 1). 所属(2, 2). 所属(3, 3). 所属(4, 2). 所属(4, 3). 所属(5, 3).

これが事実(ファクト)になり、ビューやストアドに相当するのが以下の規則(ルール)になる:

従業員の所属(_従業員名, _部門名) :-
  従業員(_従業員ID, _従業員名),
  部門(_部門ID, _部門名),
  所属(_従業員ID, _部門ID).

SELECT文に相当する問い合わせとその実行結果は以下のようになる
ここでは「田中さんの所属している部門名」と「開発部に所属している全従業員名」を問い合わせている:

?- findall(_部門名, 従業員の所属(田中, _部門名), _部門名リスト).
_部門名リスト = ['開発'].

?- findall(_従業員名, 従業員の所属(_従業員名, 開発), _従業員名リスト).
_従業員名リスト = ['田中', '松下', '本田'].

要するに、最初は「Prolog とはデータモデリング言語である」と考えれば、直感で理解できるのではないかと
プログラミング雑談スレ♯+++
371 :357[sage]:2014/10/08(水) 21:50:28.49 ID:Df1+rkDp
>>358
その理解でいいよ

ただし、同様な事はデータベースでもルールをビューとして定義(CREATE VIEW)すれば実現できる
Prolog がデータベースと決定的に違うのは、ルールを再帰的に定義できること
これによって、ツリーやグラフといった複雑なデータ構造上での問い合わせを実現できる
この再帰的なルール適用のことを Prolog では「演繹的推論」もしくは短く「推論」と呼ぶ

Prolog にはデータベースの他にも特徴的な利点があるし、もちろん欠点だってある
もし興味を持ったなら、自分なりに学習した上で不明点があれば Prolog スレで質問すればいい
Prolog は単なるパズル解き専用言語などではなく、一般的問題解決の武器でありビジネスツールだと考える
【Python】スクリプト バトルロワイヤル46【pl,rb,php,js】
611 :デフォルトの名無しさん[sage]:2014/10/08(水) 23:34:47.55 ID:Df1+rkDp
>>609
>結局Rubyの後方互換問題は解決してないってことでOK?

Ruby の後方互換性問題は拡張ライブラリの実装仕様くらいしか思いつかないけど、他に何かあったかな?

ああ、スクリプトのエンコーディング指定にマジックコメントを強制するという糞仕様のことかな?
たしかに 1.9 との後方互換性を保証するには、糞仕様を取り除いた 2.x でもマジックコメントを
書かざるをえないから、後方互換問題が解決していないのは事実かもしれないねえ....(棒

え、いまだにマジックコメントを強制していて、しかもそれを自慢する奴隷がいるって?
まあ奴隷には奴隷なりの哲学があるんだろうし、奴隷はどこまでも奴隷だからしかたないんじゃないかなあ...(棒


>みんなそれでも対応しているのって、凄いね

少なくとも某手続き型言語のように、print文が関数になるという構文レベルの仕様変更や、除算という
基本演算子の意味が変更されてしまうといった、後方互換性を致命的に喪失するような仕様変更は記憶に無い
まあ、バージョン 3.0 の登場が2008年なのに6年を経過した今でも旧 2.7 からの移行問題でネットで議論が
大きく盛り上がれるほど、Ruby には後方互換性の話題が乏しいから、うらやましいなあ....(棒


>1.9.3 を使い続けるという選択肢はありなんだろうか

もともと 1.9 は YARV 実装の実証試験という大きな目的があった訳で、
2.x 系が登場した今、1.9.3 の果たした役目は終わったと考えていいのではないのかと思われ
まあ、2.0 にしても言語仕様に大きな変更は無くて内部の実装を整理することに主眼が置かれていて、
しかも Matz も今後言語仕様が大きく変更されることはないと語っている訳で、
今後も後方互換性の乏しい状況が続くことが容易に予測できるから、退屈でつまらないよねえ....(棒

それにひきかえ某手続き型言語は今頃になって後方互換性を失うような根幹的な仕様変更が為された訳で、
次の 3.5 や 4.0 でも新しいちゃぶ台返しが待っているだろうから後方互換性ネタに事欠くことはなさそうだ
いやあ、議論が盛り上がれるネタの充実している言語が、まったくもってうらやましいよなあ....(棒


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。