品尝 GNU Prolog (1)

Prolog是种逻辑编程语言。

为什么这样说呢?别的语言,C, C++, Basic, Java, ... 不也是用逻辑编程吗?

Prolog 和它们还真不一样。纯粹的、原始的 Prolog 程序体由“事实”和“规则”构成。

“规则”(rule)即 if-then-else 句组,“事实”(fact)即“无条件的规则”,可看成没有 if-else 只有 then 的断言。

Prolog 程序可执行的语句,全部放在“规则”中。程序执行的过程,就是“规则”的选择、匹配过程。

Prolog 当年火过热过,电视上常见课程讲座,书店里摆着多种书册。

Prolog 的降温冷落,主要原因是:

1、习惯了C等过程性语言后,再学Prolog会觉得别扭、不适应,学习曲线较陡;

2、Prolog 能施展发挥的现实领域不多,主要是人工智能的面向“符号”处理的领域,如专家系统;

3、Prolog 适用的人工智能领域,项目成败的关键,主要取决于专业知识的掌握和处理,编程技术所起作用不太大。

这些特点的存在,使得广大程序员不愿学习使用Prolog,用它编程成了“小众游戏”。

最适合这种小众游戏的玩家,是有专业领域知识,又想写作“符号处理类智能程序”的人。懂专业,才能给出解决实际问题所需要的知识;而 Prolog 是写作“符号处理类智能程序”的好工具,比 Lisp 好学,并且源码的可读性优于 Lisp 。

如果想参与这种小众游戏,以下的话题可作参考。

一、为什么选择 GNU Prolog

Prolog 类的系统工具(解释器、编译器等),历史上曾出现过许许多多,现在还活着有较多人用的大致5-6种吧。如:visual prolog, swi-prolog, amzi prolog 等。

现有Prolog系统工具中,Visual Prolog 是最好的。但它是商业软件,产品中加有技术限制,不能用作商业性项目。

swi-prolog 和 amzi prolog 程序的运行太慢。

GNU Prolog 值得称道的,一是它的程序可以编译成独立运行的.exe;二是它可以通过 GTK-Server 方便地构建 GUI;三是语法已经完成 ISO 标准的转型,由“方言”变成了“普通话”;四是它的copy left。

二、下载安装

GNU Prolog 下载地是 http://www.gprolog.org/。

Windows 上跑的有2个,一是 http://www.gprolog.org/setup-gprolog-1.3.0.exe,二是 http://www.gprolog.org/setup-gprolog-1.3.0-mingw.exe。前者是在 XP 下,用 MSVC 6.0 编译成的,后者是在 XP 下,用 MSys 和 MinGW gcc 编译成的。

运行下载的.exe文件,安装完成。


三、程序运行方式

GNU Prolog 程序,文件名为 *.pl,有2种运行方式。

以文件 demo.pl 为例:

1、通过解释器运行。具体有2种办法:

(1)、运行 gprolog.exe 打开解释器,键入命令

    consult("demo.pl").

注意,Prolog 的命令语句的结束符号,是英文句号(.)。

(2)、在 DOS 控制台键入命令

    gprolog.exe --init-goal consult('demo.pl')

2、编译成.exe文件,独立运行。

四、将源码编译成.exe程序

GNU Prolog 的编译器 gplc.exe 的工作过程大致是这样:

1、先把源码编译成WAM格式的字节码;

2、再把字节码编译成 C 代码;

3、最后调用 C/C++ 编译器,把 C 代码编译成.exe代码。

于是,需要专门的 C/C++ 编译器,并且它必须与编译 GNU Prolog 系统时使用的编译器相同。

如果 GNU Prolog 系统安装文件是 setup-gprolog-1.3.0.exe,则需要 VC 6.0 编译器;

如果 GNU Prolog 系统安装文件是 setup-gprolog-1.3.0-mingw.exe,则需要 MinGW gcc 编译器。

编译操作十分简单,在 DOS 控制台执行

    gplc demo1.pl

结果会生成 demo1.exe 文件。

2 种文件的运行速度,demo1.exe 比 demo1.pl 快 3 - 5 倍。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值