お気楽 Prolog プログラミング入門のフォントを Web フォント (Noto Sans JP, Noto Sans Mono) に変更し、印刷用の CSS を追加しました。Web ブラウザの印刷機能を使って PDF に変換することもできます。表示が崩れるときはフォント Noto Sans Mono CJK JP をインストールしてください。
Prolog (プロログ : PROgramming in LOGic) はプログラミング言語です。C言語や Java などが手続き型言語、Lisp / Scheme や Haskell などが関数型言語と呼ばれているのに対し、Prolog は論理型言語と呼ばれています。これは Prolog の計算の仕組みが論理学を基礎に成り立っているからです。論理学というと難しいのではないかと思われるかもしれません。ですが、論理学はさっぱりわからない M.Hiroi でも、Prolog でプログラムを作ることができました。難しく考えることはありません。
Prolog は、物事の間に成り立つ関係を定義していくことでプログラミングしていきます。そして、もっとも基本的な関係を表したものを「事実 (fact)」といいます。Prolog のプログラムは事実関係を問い合わせることで動作します。すなわち、Prolog は「定義された事実を参照して質問の答えを導き出す言語」といってもいいでしょう。
たとえば、「太郎はコーヒーが好きである」という事実があるとします。すると、次のような質問に答えることができます。
だれがコーヒーを好きか? => 太郎 太郎はなにが好きか? => コーヒー
Prolog は日本語でプログラミングすることはできませんが、手続き型言語のようにコンピュータに処理させる内容を順番に書いていく方法とは違い、事実を定義していくことでプログラミングすることができます。他のプログラミング言語を知っている人にとって、なんでこれでプログラムが組めるのか不思議に思われることでしょう。C言語や Java などのことはきれいさっぱり忘れて、実際に使ってみてください。Prolog の面白さが実感できると思います。
本ページ (Prolog Programming) では、SWI-Prolog という処理系を使って Prolog の学習を進めることにします。SWI-Prolog は下記 Web サイトからダウンロードすることができます。
Windows の場合、インストーラーが用意されているので、それをダウンロードしてダブルクリックすれば、SWI-Prolog を簡単にセットアップすることができます。
Unix 系 OS の場合、たとえば Ubuntu 22.04 LTS であれば次のコマンドでインストールすることができます。
sudo apt install swi-prolog
なお、本ページでは GUI を使用しないので、X Window System のサポートがないパッケージ (swi-prolog-nox) をインストールしてもかまいません。
シェル上でコマンド prolog または swipl を入力すると、SWI-Prolog が対話モードで起動されます。
$ swipl Welcome to SWI-Prolog (threaded, 64 bits, version 8.4.2) SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software. Please run ?- license. for legal details. For online help and background, visit https://www.swi-prolog.org For built-in help, use ?- help(Topic). or ?- apropos(Word). ?- ^D % halt $
Prolog を終了する場合は CTRL-D または halt. を入力します。halt. で終了する場合、最後のピリオドを忘れないように注意してください。
『お気楽 Prolog プログラミング入門』の著作権は筆者「広井誠 (Makoto Hiroi)」が保持します。無断使用や無断転載は禁止いたします。『お気楽 Prolog プログラミング入門』で作成したプログラムはフリーソフトウェアとします。ご自由にお使いください。プログラムの改造や配布もご自由にどうぞ。その際は、出典を明記してくださるようお願いいたします。
ただし、これらのプログラムは無保証であり、使用したことにより生じた損害について、作者「広井誠 (Makoto Hiroi)」は一切の責任を負いません。また、これらのプログラムを販売することで利益を得るといった商行為は禁止いたします。