Prolog小程序

本文通过一个逻辑谜题展示了Prolog编程的直观性和自动寻找答案的能力。Baker、Cooper、Fletcher、Miller和Smith住在不同楼层的公寓中,每个角色都有特定的居住条件。通过编写和执行Prolog程序,可以找到符合所有条件的解决方案。读者可以使用SWI-Prolog进行尝试,通过成员关系查询和amb.pl文件了解Prolog如何逐步匹配和搜索答案。
摘要由CSDN通过智能技术生成

坚决鄙视一介绍Prolog就用家谱树做例子的帖子/教材/指南。跟我八辈子不搭界的某银的家谱关我P事啊?就算自己的家谱。我爷爷的姑姑的侄儿的表姐的大舅子关我P事啊?

和朋友聊到用Prolog实现 上次借助amb解决的谜题。Prolog内置了搜索和裁剪。写出的代码近乎琐碎,根本不需要amb。想想看,用amb时,那些描述约束的语句(调用must()函数的那几行)在选择语句 之后执行,但竟然能左右之前被执行的语句的执行结果。而所有的细节都被封装在一个平淡的callcc里面。程序员可以专注于描述问题,而不用考虑代码执行的细节(在某种程度上),甚至不用考虑代码执行的顺序,这是何等强大的抽象和表达能力。而Prolog把这种抽象能力在语言级别实现,更进一步。只不过上次用和伪代码无异的Ruby代码都让很多老大望而却步,用句法和语义与流行编程语言迥异的Prolog不是更费力不讨好?再说代码本身也不出奇,不能给已经知道Prolog的老大们带来快感,用作简介恐怕又不够周详。不过既然写出来了,就忍不住手痒想贴出来。典型的egoblogging。先鄙视一下自己。
 
Prolog也是门“古老”的语言。Prolog是PROgramming in LOgic的缩写。它不是最早的逻辑编程语言(最早的逻辑编程语言1964年左右就做出来了),不过大概是最有名的。1971年, 29岁的法国人Alain Colmerauer在加拿大出名的花花城市蒙特利尔亲切会见了刚拿到教职的比利时人Robert Pasero和Phlippe Roussel。Alain是个法国愤青,热衷于搞一个当时看来颇为激进的研究项目:探索用自然语言进行逻辑推理。而选择的自然语言便是是——还用猜么——自然是法语。法国银就好这一口。为了推进项目,他们决定实现一套系统,帮助他们理解自动定理证明和自然语言处理,于是花了大量精力研究怎么编写自动定理证明机和自然语言处理程序。结果无心插柳,1972年,Prolog的雏形问世。同年,一个叫Dennis Ritche的大胡子推出了一门叫C的语言。一个叫Alan Kay的小胡子也推出一门叫Smalltalk-72的语言。三年后,MIT两个没留胡子的巫师推出了一门叫Scheme的语言。后面的东西已是历史。不鸟C语言的计算机科学家们郁闷地看着C席卷世界每一个角落。不鸟其他一切语言的Smalltalker们郁闷地看着Java借Smalltalk的东风也席卷世界每一个角落。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值