ねぎ嫌い

始業前に学んだことを小出しに。最近はHacker Newsの人気記事をまとめてみたり。

2017-12-05 Introduction to logic programming with Prolog

原文:Introduction to logic programming with Prolog

Prologと言う論理型言語についてのお話。

筆者は大学時代に言語とパラダイムについて研究をしていて、
その中で多くの言語に触れ、良し悪しを把握してきた。
そのなかで、論理型言語であるPrologを計量言語学とAIに多く用いていた。

この記事ではPrologの軽い紹介と不可欠な機能について述べられている。

そもそも、なぜPrologやその他の言語を学ぶモチベーションがあるのかというと、
「達人プログラマー」でも以下に述べられているように、多くの言語を学ぶことで多くの解決策を仕入れることが出来るからである。

毎年少なくとも1つの言語を学ぶ。
異なる言語は同じ問題を異なる方法で解決している。
異なるアプローチを学ぶことは、考え方を広げ、同じ轍を踏まないように積み上げられる。
付け加えると、インターネット上で自由に使える豊富なソフトウェアのおかげで、現在では多くの言語を学ぶことははるかに簡単になっている。

例えば数独パズルをJavaやC、Prologで解くなど。

まず、論理型言語が何かについて述べる。

どのように完了するか、ではなく何がしたいかを述べる

論理型言語は数学の論理を基礎に持つプログラミングのパラダイムの1つである。
JavaやCと比べると、論理型言語で書かれたプログラムは連続した説明書のように構成されているわけではなく、公理の集合やオブジェクト間の関係の規則で成り立っている。
同様に命令型ではなく、宣言型のアプローチを採用している。

Prologはホーン節(第一階述語論理の部分集合)を基にしていて、多くの論理型言語と同様である。
Prologは1972年に初めて登場したが、現在では定理証明やエキスパートシステム自然言語処理あるいはAIにの領域で非常によく使われている。
また、Erlangの開発にも大きく影響を与えている。

他に、以下についても触れている

  • 言語構造
  • 基本的な「事実」とクエリ
  • ユニフィケーション
  • リスト表記
  • Prolog シェル
  • 回帰処理
  • 四色定理