谓词编程语言
Ⅰ z语言和C语言谁比较好
C语言比较好点。
C语言的运算符包含的范围很广泛,共有34种运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C语言的运算类型极其丰富,表达式类型多样化。灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。
Z语言是一种以一阶谓词演算为主要理论基础的规约语言,是一种功能性语言。Z语言是将事物的状态和行为用数学符号形式化表达的语言,为编写计算机程序和验证计算机程序的正确性提供依据,是软件工程中编码之前的规格说明语言。
Ⅱ 逻辑学 到底是研究什么的
英文中它被称作:A Course In Logic。而逻辑一词最早可以追溯到一个希腊词,即“逻各斯”。此词含义一般有二:客观事物的规律及其规律性;某种特别的理论、观点(含贬义)。狭义的逻辑学被称作是研究推理形式的科学,而广义则指研究思维形式及其规律以及逻辑方法的科学。它研究的主要对象是思维的形式,即思维逻辑形式。我们的思维因为有了逻辑而变得清晰无比;所谓的“无头案”在严密的逻辑面前不得不低下罪恶而高傲的头,公理得以永存人间。我们的生活得以有条不紊,我们也就有了现在学习逻辑学的机会,由逻辑而学习思维。
西方传统逻辑学包括了概念理论、词项逻辑等主要内容;其中心内容是三段论;古典命题逻辑;古代归纳逻辑等。
逻辑学,仅仅考虑推理的逻辑学的发展似乎已经很完善了。尽管作为应用的逻辑并不是想象的那么好,比如我们要建立基于逻辑的编程语言,一方面,已经建立的语言(如Prolog)只是使用了一阶谓词逻辑的很特殊得一部分,一阶系统显得足够丰富;另一方面,只是一阶系统或者其扩展都会有许多不能在现有非逻辑编程语言中表达的语句,即是说,逻辑是不够用的。但就逻辑学本身而言,我们要对它进行改进或者在其中有什么创造性的工作,是非常难的。特别对于象我们这样刚进入逻辑学领域的新手来说(其创造主要源于直觉和对已有系统的纰漏的分析),要在逻辑学中有所创造几乎是不可能的。
这种状况的原因何在呢?如果象皮尔士说的那样,逻辑是哲学中最具歧义的概念,那么,它应该有很多的方向(并且各方向不会导致非议),以供我们的理智去探索。而事实是,我们被限制在已有系统之中。“你看,那就是逻辑学,你能做什么,试试看吧!”我们只能选择一种观点,然后继承它,这是现在仅有的工作,这样的工作会有什么创造性呢。有一点很明显,我们绞尽脑汁想到的东西往往是前人也想过了的。千万别指望有什么激动人心的,因为你会为后来发现自己在重复别人的工作而失望的。
也许,我们应该换一个角度来思考这个问题,为什么一定要限制在“推理形式的有效性”或者“语句结构和演绎推理”上。要知道,逻辑学研究思维的形式结构和规律,这一点在国内是被普遍接受的,而且我们有足够的理由为这一观点进行辩护。
第一,对思维的形式进行研究的逻辑可以保持足够的客观性。
自弗雷格以来,人们尽可能放弃有心理主义嫌疑的用语,不再提及逻辑是研究思维之类的观点。因为心理的东西,如弗雷格所说,有远离客观性的特点。逻辑推理规则和规律是带有客观性的东西。心理的东西有着随个体主观意志的任意性。如果,我们的逻辑是任意的心理结构,那么,就不会有共同的逻辑存在。在这里我们要强调的是:广义来说,逻辑的东西也可以成为心理学的对象。尽管大部分心理学家对逻辑不感兴趣,在心理学书籍中,只有很少一部分提及思维形式的问题,比如1999年张世富主编的《心理学》就研究了概念,命题和推理,但也只是提及了而已。而逻辑学根本不会提及有关情感、意志过程,个性倾向性之类的东西,他们理所当然地是心理学研究的对象。因此两门学科的区别是很清晰的。
当然,心理学和逻辑学的区别不足以使逻辑偏离心理主义倾向。一个习惯于从心理角度分析问题的人也许容易导向对逻辑的心理分析。而这也并非完全不可取的。P.萨伽德的这样一段话也许可以提供见解:“……, 尽管形式化的逻辑并非通向心理表征最具影响力的心理学途径,但我们仍有足够的理由从它展开我们对心理表征探讨。”心理学提供心理表征也同样可以为逻辑学家提供一种研究思维形式的参考。
至于强心理主义关于将逻辑解释为一种心理过程是不可取的。理由不是说逻辑是和心理没有关系的,而是心理过程的复杂性是逻辑无法着手的,逻辑对思维的研究有其限制:思维形式结构和规律。它的客观性体现在它是研究蕴藏在语言中的实际思维结构,而不是一种随机心理现象。这一点即使不是显而易见的,也不会导致逻辑的和心里的混淆起来。
第二,逻辑对思维形式的研究的选择是合乎学科要求的。
任何一门科学,当它确定自己的对象后,肯定不是在其对象中面面俱到去研究,而是有选择性的。这种现象一方面是由于概念是有理想性的,即,人们有一种愿望要达到的目标,往往比实际能做的大。比如物理学是研究空间、时间、物质运动的普遍形态,物质基本结构的科学。但是物理学不是任何时空形式、任何运动都加以研究,也不是每种物质结构都研究,而是有其自己的选择。物理学家总是对有规律的现象和可能找得到规律的现象感兴趣。它所提倡对运动和物质形态的研究是一种理想,它试图掌握所有的物理规律和了解物质的任何可能形态,但那只是一个努力的方向。逻辑学把思维的形式结构和规律作为自己的研究对象,也是有选择性,它不是任何思维形式和规律都研究。当然,你可以在其定义范围之内作任何研究,并且有兴趣引导比墨守成规好百倍,至于你的兴趣能否激发别人的共鸣则是另外一回事。一般而言,每一学科都有某种共同的研究方向,这样集中许多人的智慧是取得成果所必需的。思维形式是一个宽泛的概念,正因为如此,逻辑学应该比它现有的状况有生机。
第三,研究方向是人为引导的。
既然,任何一门学科其选择的对象都含有理想成分,那么,在某个特定的时期其实际对象与该学科的的对象要求存在差别就不足为怪的。我们可以看到,现在的逻辑主流方向是研究推理和推理有效性等方面问题。即以一阶谓词逻辑和它的扩展为典型的现代逻辑。
传统逻辑是建立在亚里士多德的贡献之上,现代逻辑是起始于十九世纪,它是伴随着哲学兴趣的转移、公理化方法吸引而建立的。一个明显的特点是,它是随着人们的兴趣而转移的。这和其它科学有着共同的特征,又如物理学,每个时代都有其特别热的方向、方法。从早期的宇宙学,到近代的机械力学,当代物理学门类甚多,但是如果我说量子力学和相对论力学是现代物理的典范应该不会遭到过多的反对。因而,逻辑学也是在现时代有其自己的兴趣的。但是,各种时代的逻辑学都是视思维形式结构和其规律为对象的,同时,其它的逻辑学分支不该因为不像现代逻辑而被驱逐出逻辑学对象之外。
因此,对于一门学科而言,逻辑学将思维形式结构和其规律作为对象是很恰当的,至少,我们可以看到,对这一点进行限制,会让我们限制所有科学的研究范围。
第四,逻辑学规范性特征并不和其将思维的形式结构和规律作为对象矛盾。
我们可以完全同意逻辑学不是一门纯粹描述性的科学,没有谁能在思维中找出超过上万步的形式推理;或者,一定要遵守排中律才能得出正确的结论,我们对于现实的思考是多种多样的,随机猜测也可能得出正确的答案。马丁.布莱恩说形式逻辑在神经学上的合理性还一无所知。这是很好理解的,即使我们完全排除生理性的要求,只关注语言本身,也无法找到逻辑的确切对应点(心不是机器)。因此,逻辑不是完全描述性的,而带有规范的特征,而逻辑的规范不是一种绝对自由的规则,因为绝对自由的规则带有任意性,主观性。逻辑的客观特点不允许逻辑是随意的游戏规则,而是带有指向性的。这样的状况是由于“人们有具有类似于谓词逻辑里语句的心理表征。人们具有在这些语句上进行操作的演绎和归纳的程序。演绎和归纳运用到语句上产生推理。”
从两个角度上看,逻辑学规律是有其客观对象基础的,首先是心智本身有类似结构,其次,心智有限制推理和思考的能力,即心智有一种审判力,迫使人们不去接受视任何推测都有效的做法。这样,逻辑便不是任意的了。但是它又不是完全描述的,因为一方面没有完全对应的思维过程,另一方面思维的广度大于逻辑的研究范围。
预设逻辑学带有规范和描述双重特征。而即使它是为如何思考制定规则的科学,定义其对象为思维形式结构和规律也显得逻辑有正确的指向,尚且有的在现在看来是不好的思维形式将来可以据其制定逻辑规则,而这正是逻辑的创造源之一。
我们要进一步分析的是思维的形式结构和其规律。
一般认为语言是思维的表征,没有语言就没有显化的思维,思维就成了无法探究的神秘事物。语言和思维因该说是有着密切的关系,但是他们并不具有一种完全对应的关系,当我们使用语言时,我们在试图激活某种内部活动,这种活动是思维活动——它有着神经生理的基础。有时,我们说我们的思维跟不上语言活动,有时相反。这说明他们有着区别。语言是人类活动的一种,这种活动是人的思维的外显形式,语言是思维的工具,而且是工具的一种,其工具价值在于激活思维、引导思维和记录思考的成果。而它本身并不是思维的表征。一个很明显的证据是,语言活动是线性的,而思维是一种整体结构性质的,在其处理非言语信号时,使用的是并行的或者其它方式。这就是为什么人的计算能力(语言上的一种能力)这么差,却在处理许多问题时比计算机快。
所以思维不仅仅是语言活动,也不仅仅只是使用语言在活动,语言是思维的部分主观呈现,我们在用语言表达给自己或者别人。列夫.谢苗诺维奇.维果茨基在他的一本书中将思维和语言看作两种平行发展的过程。(参看[7])
那么以思维形式为对象的逻辑因该不局限在对语言的线性结构规律的研究上,而应该以广义的思维形式结构为对象,那是一个广泛的空间。比如,Turing机在两种意义上是逻辑的对象:从可能的思维形式上和思维所允许的表达形式上。我们可以做这样的工作,用现有逻辑语言表达Turing机或用某种方便的语言表达,在其中加上逻辑规范。鉴于对编程语言的逻辑化的难度,我们不一定要把C改造成为逻辑语言,比如扩大一阶谓词语言以使用于改造C。我们可以还原C到一种规则上,然后结构化这个规则成为一个可推理的系统。
在这样宽泛的逻辑概念上——我们的形式逻辑书实际使用的,我们怎么会有时间玩“星际”和“帝国”?
Ⅲ 简述你知道的5种程序设计语言的特点
Fortran:由一个主程序或一个主程序与若干个子程序组成。
ALGOL:巴乎斯范式BNF来描述言的语法。还提供动态数组和过程的递归调用。
COBOL(COmmon Business-Oriented Language)是一种面向事务处理的高级语言。目前COBOL语言主要应用于情报检索,商业数据处理等管理领域。
Pascal语言是一种结构化程序设计语言,过程可以是嵌套和递归的。
C语言:兼顾了高级语言和汇编语言的特点,简洁,丰富,可移植。直接访问操作系统和底层硬件,C在系统应用和实时处理应用的开发中成为主要语言。
C++:是在C的基础上增加了类机制,使其成为一种面向对象的程序设计语言。
java,目的是用于开发网络浏览器的小应用程序.
分类:
1.命令式程序设计语言是基于动作的语言,Fortran,Pascal,C
2.面向对象的程序设计语言,模拟领域发展起来的Simula,C++,Java,smaltalk,
对象,类,继承,是面向对象的三大特点。
3.函数式程序设计语言是一类似λ-演算为基础的语言,基本要领来自于LISP(1958年为了人工智能应用而设计的语言).函数是一种对应规则(映射),它使定义域中每个元素和值域中唯一的元素相对应。 LISP程序和数据等价.数据结构可以作为程序执行,程序可以作为数据修改.
4.逻辑型程序设计语言,以形式逻辑为基础的语言,其代表是建立在关系理论和一阶谓词理论基础上的PROLOG(Programming in Logic).关键操作是模式匹配。有很强的推理功能,适用于书写自动定理证明,专家系统,自然语言理解等问题的程序。
http://blog.csdn.net/mShopping/archive/2008/10/14/3073176.aspx
Ⅳ 什么是程序逻辑
程序逻辑是描述和论证程序行为的逻辑,又称霍尔逻辑。程序和逻辑有着本质的联系。如果把程序看成一个执行过程,程序逻辑的基本方法是先给出建立程序和逻辑间联系的形式化方法,然后建立程序逻辑系统,并在此系统中研究程序的各种性质。
简介:
Hoare 逻辑(也叫做Floyd–Hoare 逻辑)是英国计算机科学家C. A. R. Hoare开发的形式系统,随后为 Hoare 和其他研究者所精制。它发表于 Hoare 1969年的论文"计算机程序的公理基础"中。这个系统的用途是为了使用严格的数理逻辑推理计算机程序的正确性提供一组逻辑规则。
Hoare 认可 Robert Floyd的早期贡献,他为流程图提供了类似的系统。
Hoare 逻辑的中心特征是Hoare 三元组。这种三元组描述一段代码的执行如何改变计算的状态。Hoare 三元组有如下形式
{P}C{Q}这里的 P 和 Q 是断言而 C 是命令。P 叫做前条件而 Q 叫做后条件。断言是谓词逻辑的公式。这个三元组在直觉上读做: 只要 P 在 C 执行前的状态下成立,则在执行之后 Q 也成立。注意如果 C 不终止,也就没有"之后"了,所以 Q 在根本上可以是任何语句。实际上,你可以选择 Q 为假来表达 C 不终止。
这叫做"部分正确"的。如果 C 终止并且在终止时 Q 是真,则表达式就是"全部正确"的。终止必须被单独证明。
Hoare 逻辑为简单的命令式编程语言的所有构造提供了公理和推理规则。除了给 Hoare 论文中的简单语言的规则,其他语言构造的规则也已经被 Hoare 和很多其他研究者开发出来了。包括并发、过程、goto语句,和指针。
Ⅳ 下列各类计算机程序语言中,( )不是高级程序设计语言。
这是离散数学
谓词的概念来表示的性质,对象,属性,等等。
例如:
贝克汉姆的母星
“明星”是一个谓词,贝克羡慕的对象
Ⅵ 世界编程语言排行榜的2009年排行
TIOBE 世界编程语言排行榜2009年2月榜单。 2011年12月5日Tiobe发布了2011年12月的编程语言排行榜。新一期排行榜Objective-C持续给力跃居第五位,而上一期关注的谷歌Dart语言也上升到第68名,但PHP由第四位跌到第6名。从2001年Tiobe编程语言排行榜开始发布至今,C++几乎一直占据着第三名。虽然Perl,Visual Basic和PHP曾经也排到第3名,但和C++相比,他们就显得不值一提了,因为他们最多只能保持几个月而已。然而相比C++,微软的编程语言C#却更被看好,甚至有人认为C#势必会取代C++,C++是垃圾语言。因为微软的大力推广,使用C#的人越来越多,而老将C++却正在被人遗忘。不甘寂寞,2011年C++再次亮剑,13年来第一个重大修订版,C++11横空出世!
下面是前20名的编程语言排行
掀起C++ 11的神秘面纱
C++标准在1998年获得通过后,有两位委员会委员预言,下一代C++标准将“肯定”包括内置的垃圾回收器(GC),但可能不会支持多线程,因为定义一个可移植的线程模型涉及到的技术太复杂了,13年后,新的C++标准C++11也接近完成,你猜怎么着?让那两位委员没想到的是,本次更新还是没有包括GC,但却包括了一个先进的线程库。C++之父Bjame Stroustrup说C++11就像一个新语言,的确,C++11核心已经发生了巨大的变化,它支持Lambda表达式,对象类型自动推断,统一的初始化语法,委托构造函数,deleted和defaulted函数声明nullptr,以及最重要的右值引用。
C++11中值得关注的几大变化
◆Lambda表达式
◆自动类型推断和decltype
◆统一初始化语法
◆Deleted和Defaulted函数
◆nullptr
◆委托构造函数
◆右值引用
C++11标准库
C++于2003年以库技术报告1(TR1)的形式经历了重大改版,TR1包括新的容器类(unordered_set,unordered_map,unordered_multiset和unordered_multimap)和多个支撑正则表达式、元组和函数对象封装器等的新库。随着C++11标准获得通过,TR1和自它首次发布以来新增的库被正式纳入标准的C++标准,下面是C++11标准库的一些特性:
线程库
站在程序员的角度来看,C++11最重要的新功能毫无疑问是并行操作,C++11拥有一个代表执行线程的线程类,在并行环境中用于同步,async()函数模板启动并行任务,为线程独特的数据声明thread_local存储类型。如果你想找C++11线程库的快速教程,请阅读Anthony William的“C++0x中更简单的多线程”。
新的智能指针类
C++98只定义了一个智能指针类auto_ptr,它现在已经被废弃了,C++11引入了新的智能指针类shared_ptr和最近添加的unique_ptr,两者都兼容其它标准库组件,因此你可以在标准容器内安全保存这些智能指针,并使用标准算法操作它们。
新的算法
C++11标准库定义了新的算法模仿all_of(),any_of()和none_of()操作,下面列出适用于ispositive()到(first, first+n)范围,且使用all_of(), any_of() and none_of() 检查范围的属性的谓词:
#include<algorithm>//C++11 code //are all of the elements positive? all_of(first, first+n, ispositive()); //false //is there at least one positive element? any_of(first, first+n, ispositive());//true // are none of the elements positive?
none_of(first, first+n, ispositive()); //false
一种新型_n算法也可用了,使用_n()函数,复制一个包含5个元素的数组到另一个数组的代码如下:
#include
int source[5]={0,12,34,50,80};
int target[5];
// 5 elements from source to target
_n(source,5,target);
算法iota()创建了一个值顺序递增的范围,好像分配一个初始值给*first,然后使用前缀++使值递增,在下面的代码中,iota()分配连续值{10,11,12,13,14}给数组arr,并将{‘a’,’b’,’c’}分配给char数组c。
include<numeric>
int a[5]={0};
char c[3]={0};
iota(a, a+5, 10); //changes a to {10,11,12,13,14}
iota(c, c+3, 'a'); //{'a','b','c'}
C++11仍然缺乏一些有用的库,如XML API,套接字,GUI,反射以及前面提到的一个合适的自动垃圾回收器,但C++11的确也带来了许多新特性,让C++变得更加安全,高效,易学易用。
如果C++11的变化对你来说太大的话,也不要惊慌,多花些时间逐渐消化这一切,当你完全吸收了C++11的变化后,你可能就会同意Stroustrup的说法:C++11感觉就像一个新语言,一个更好的新语言。
Ⅶ java编程,人工智能:怎么编写“谓词演算”程序呢
能够使用计算机表达的算法,就是可以转换为数学语言来描述。谓词演算其实就是将事物归类,具体的说就是将A和B两个事物的共同点进行归纳,并下一个数学定义来描述这个共同点。如果下一个输入的事物如C,就对C进行判断,看C是否符合A和B的共同点,如果是则C与A和B同属于这一类。
如一个简单的一元谓词:
定义1:树都有树叶。
定义2:A是树;
定义3:B与A是同一类植物;
则可知B是树并且有树叶。
其实谓词演算就是对于数学包含关系的判断。
如果体现在编程中,就是变量的对比,转换,替换和传递等。
Ⅷ 什么是逻辑语言
Prolog(Programming in logic)是一种面向演绎推理的逻辑型程序设计语言,最早于1972年由柯尔麦伦纳(Colmeraner)及其研究小组在法国马赛大学提出。[1]
高济,何钦铭着,人工智能基础 (第二版),高等教育出版社,2008.10,第67页
中文名
逻辑编程语言
外文名
Programming in logic
简称
Prolog
定义
面向演绎推理的逻辑型语言
提出时间
1972年
关于逻辑编程语言
Prolog以处理一阶谓词演算为背景,由于其简单的文法、丰富的表达力和独特的非过程语言的特点,很适合用来表示人类的思维和推理规则,从而一问世就赢得了人工智能研究和应用开发者的广泛兴趣。尤其在西欧和日本,Prolog语言已推广应用于许多应用领域,如关系数据库、数理逻辑、抽象问题求解、自然语言理解和专家系统等。日本还在其于1979年提出的第五代计算机研究计划中把Prolog列为核心语言。
Prolog实际上就是一种基于逆向规则的演绎推理技术,只不过对规则和目标的表示有严格的限制.再加上演绎推理控制机制自身的简单性,难以适用于复杂的应用域。[1]
Prolog语言的基本概念
Prolog语言的基本成分是Horn子句,表示为如下形式:
∧
∧
∧
p;
Prolog语言中,Horn子句以3种形式去分别表示逆向演绎推理中问题求解描述的3个部分:目标、规则和事实。
目标
表示为只有左部的Horn子句:
∧
∧
∧
;
即在Prolog语言中,目标公式只限于表示为原子公式的合取,而不能是任意的文字与或形。
规则
表示为典型的Horn子句:
∧
∧
∧
p
这就是逆向演绎推理所使用的规范化B规则,只是规则左部限定为原子公式的合取,而非任意文字与或形。
事实
事实表示为事实元素的集合,每个事实元素表示为只有右部的Horn子句,即单一原子公式P。事实元素间隐含合取关系。
只要用Prolog语言表示问题描述的这3个部分,支持Prolog语句的推理机制就会自动执行基于规则的逆向演绎推理,并最终给出。
Ⅸ 研制polog(编程语言)的原理是如何
谓词匹配。用用就知道了,比较简单,也好理解。