首页
学习
活动
专区
圈层
工具
发布

逻辑式编程还有用吗?--“三维度”逻辑编程语言的设计(2)

不知道这位朋友具体是出于什么原因这么认为的,我认为一个东西不流行不代表它是失败的、被否定的事物。...逻辑编程语言的确很小众,它有它特殊的应用领域, dwcz 恰恰说反了,逻辑编程语言主要的用武之地就是复杂和动态的环境,这个可以从逻辑编程语言Visual Prolog的官网介绍看到: https://www.visual-prolog.com...我使用Chez Scheme编写了一个新冠病毒感染风险监测程序,可以点击我这篇文章《Scheme语言实例入门--怎样写一个“新型冠状病毒感染风险检测程序” 》了解和下载运行这个Scheme程序。...下面我们再通过一个简单一点的“游戏人生”程序来带领大家认识逻辑编程,并且示例代码使用大家熟悉的C#语言来模拟Prolog程序的风格,这样来看逻辑编程就会自然点。...context.Name, rulesFlag); Console.Read(); 运行这段程序,即可看到张三和貂蝉是否可以生孩子的结果,具体运行结果将在本系列结束后公布,读者也可以从我的

5.4K20

编程语言进化史《禅与计算机程序设计艺术》 陈光剑

类C语言起源、历史 C语言、C语言的起源以及类似C语言的编程语言的历史简直不要太漫长,我简单总结列表如下: CPL(Combined Programming Language) - 1963 CPL是...危机三,罗素悖论:S由一切不是自身元素的集合所组成,那S属于S吗?用通俗一点的话来说,小明有一天说:“我正在撒谎!”问小明到底撒谎还是说实话。...现代公理集合论的大堆公理,讲真,难说孰真孰假(人类从已知的正确经验中,反过来自己定义的公理规则)。 可是又不能把它们都消除掉,它们跟整个数学是血肉相连的。...问题:能否给出一个算法,判定一个给定的命题是否为真?对任何输入都能在有限时间内停机吗?...第一定理 任意一个包含一阶谓词逻辑与初等数论的形式系统,都存在一个命题,它在这个系统中既不能被证明为真,也不能被证明为否。

1.9K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    汉诺塔——各种编程范式的解决

    Prolog是明显不同于之前的几种编程语言,它使用的是逻辑范式,使用谓词演算来计算。...比如这里如果我想查4个盘的汉诺塔,从柱1移到柱3, ?- hanoi(4,1,3,2,S),write(S),!....我在这里加了一个谓词turn,而[[FROM,BUFFER],[BUFFER,TO],[TO,FROM]]代表着转化规则FROM=>BUFFER,BUFFER=>TO,TO=>FROM,通过规则把S2转换成...turn_list谓词还是太复杂,继续降阶,我们再定义一个谓词turn_one,它只是用来转换单个元素的。   比如turn_one(1, [[1,10]], 10).   ...思考   我还是留下几个思考给读者:   1.可不可以证明对于n个盘,上述的2n-1步是最少的移动步数?   2.可以证明“现实中的玩法”的正确性吗?

    2.1K30

    TIOBE新排名:Python居第八R居15位仍持续上升

    Dart从2011年末诞生到如今被广泛采用经历了一个漫长的过程,因为工程师们担心除谷歌以外的其他浏览器不会支持Dart。而且他们是对的。...最常问到的问题 问:我能把TIOBE排名转载/引用到我的博客/展示文档/出版物上吗? 答:能。唯一的要求是注明排名出自www.tiobe.com。...问:我怎样申请把一个新语言添加到TIOBE排名里呢?...问:我想要一份TIOBE排名的完整数据,可以吗?...答:我们花了许多努力来得到这些数据以及使用这些数据来更新TIOBE排名,为了得到一点点回报,得到完整数据集需支付5000美金,这个数据集包括从2001年六月至今的全部数据,2001刚开始时我们有25种语言

    1.1K50

    计算机科学中的谓词-Java快速进阶教程

    这些语言虽然没有明确说明,但使用整数、字节甚至位作为布尔数据类型的基础。从本质上讲,零是假的,其他任何东西都是真的。 例如,在 C 语言中,bool数据类型来自 _BOOL数据类型。...在我们前面的动物示例中,我们可以定义: isGreaterThan(animal1,animal2) := true if animal1 weighs more than animal2Copy 这可以给我们一个从最大重量到最小重量的动物列表...模糊逻辑谓词 有时,当我们问一个是/否的问题时,答案并不是真的对或错。 也许我们不确定,或者介于两者之间。例如,如果我们提出问题或设置一个谓词来回答问题,使用温度: 问题:水热吗?...但一个小时后,水肯定是冷的,对谓词的回答是假的。 但是,谓词的答案在什么温度下从真变成假?是40岁吗?30?25?例如,我们是否认为在 31 度时水是热的,然后在 30 度时突然水是冷的?...模糊逻辑谓词示例 在图中,我们定义了一个谓词IsItHot(T),它回答了“它热吗?”这个问题。

    17200

    container html css,splitcontainer「建议收藏」

    大家好,又见面了,我是你们的朋友全栈君。...怎么使用SplitContainer控件实现上下分隔您好,我来为您解 C#如何使用SplitContainer控件实现上下分隔 Orientation 属性设置为Horizontal 希望我的回答对你有帮助...c# splitContainer能把窗体分割成三部分或者更多…splitContainer能把窗体分割成三部分或者更多的部分吗?怎么操作?...怎么调整splitcontainer中间分割线的位置 如何删除拆分器SplitContainer控件 – C#编程 – C#方面splitcontainer和panel的问题第一种在Form1中添加一个...splitcontainer1控件的背景色调成透明试试:splitcontainer1.backgroundColor = Color.transparent; 或者直接在splitcontainer1的属性列表里设置

    64660

    Erlang 入坑指南

    这篇文章是他在《程序人生》的处女稿,从另一个角度跟大家介绍一下 erlang。虽然我之前也也写过一篇介绍 上帝说:要有一门面向未来的语言,于是有了 erlang。...这篇入坑指南很短,尝试从另一个角度认识 Erlang 。 Erlang 难吗? 难,也不难。 大部分人学习编程是从面向对象过来的。 Erlang 是一门函数式编程语言。...Prolog 大部分人可能都没听过,更别说用过了,我特地搜了下 Prolog,跟 Erlang 绝对是一个亲妈生的。...每个人都有一个大脑,里面包含了仅属于我们自己的记忆。我不知道你脑子里面在想什么,你不知道我脑子里在想什么,除非我问你,”约吗?“。你说:”约“。我们两个的记忆分别产生了些许变化。...由于公众号奇葩的赞赏和原创设置,我只能把赞赏设成我自己,然后原创作者也成了我自己。。。这是逼着我自己来鄙视我自己的节奏啊。大家多多支持,好让小山同学多多发文!

    2.4K10

    在刚刚结束的ACL 2019上,知识图谱领域都发生了哪些大事?

    我个人非常高兴看到 KG 在顶级人工智能会议上受到了如此大的推崇:在 660 中有大约 30 篇论文,这样一个大型会议占有 5% 的比重是很不错的(好吧,ACL 不一直都是 AI 的风向标吗?)。...,而无需将它们转换为逻辑形式,并使用 Prolog 形式的推理来回答逻辑查询。...在这里,作者从任何模式中分离出一个关系,并允许提取你可能希望包含在你自己的模式中的非常通用的关系。...作者使用可能涉及的实体和实体类型的二维列表(转换为具有后续图网络表征的图),构建了一个双曲嵌入空间,能够推断提及的上下文并在很大程度上指定实体类型。...例如,给定一个句子“由 Agatha Christie 发表的小说列表......”,Agatha Christie 不仅会被归为人类,而且会被归为一个更细粒度的作家类。

    84520

    6 个新奇的编程方式,改变你对编码的认知

    相关类型 示例语言:Idris, Agda, Coq 你可能习惯使用C和Java等语言来键入系统,编译器可以检查变量是整数,列表还是字符串。...但是如果你的编译器能检查一个变量是“一个正整数”,“一个长度为2的列表”还是“一个回文字符串”呢?...至少我没有,但显然有些人这么想了,他们提出了连续编程。这个想法是,语言中的所有内容都是将数据推送到堆栈或从堆栈中弹出数据的函数; 程序几乎完全通过功能组合(串联组合)来构建。...如果您使用像Prolog这样的声明性语言对数字进行排序 ,则应该描述所需的输出:“我需要相同的值列表,但索引中的每个项目 i应小于或等于索引处的项目i + 1”。...这使得从绘制Facebook连接到操纵图像,查看天气,处理自然语言查询,绘制地图上的方向,求解数学方程式等等都可以轻松地完成。 我怀疑 Wolfram 语言是否有最大的“标准库”和有任何语言的数据集。

    2.6K50

    DeepProbLog: Neural Probabilistic Logic Programming

    DeepProbLog:神经概率逻辑程序设计 摘要 本论文介绍的DeepProlog是一种概率逻辑编程语言,通过神经谓词和深度学习结合起来。我们将展示现有的推理和正在学习的技术将如何适应新的语言。...据我们所知,这项工作首先提出了一个能把通用神经网络和表达概率逻辑建模和推理以某种方式结合的框架,从而有更强的表达能力和两种框架的优点,并且可以基于样例进行端到端的训练。...因此,只要将在原子表达式上的神经网络输出解释成一个概率,就可以将“神经网络”组件的输出封装为“神经”谓词的形式。...虽然这些谓语可以直接从标准的神经网络分类器中学得,但是考虑到背景知识(比如定义一个谓语两个自然数的加和)这种做法会比较困难。而在DeepProbLog中,这些知识可以很容易的编码成一些规则,比如 ?...我们将遵循Prolog约定,让常量以小写字母开头,变量以大写字母开头。可以使用 ? 把 ? 替换成 ? 。当用e替换 ? 时,我们同时用所以 ? 替换 ? ,表达式我们写成 ? 。

    2K20

    C#3.0新增功能09 LINQ 标准查询运算符 04 运算

    筛选操作的谓词指定字符必须为“A”。 ? 下面一节列出了执行所选内容的标准查询运算符方法。 方法 方法名 说明 C# 查询表达式语法 详细信息 OfType 根据其转换为特定类型的能力选择值。...在每种情况下,假定选择器(转换)函数从每个源值中选择一个由花卉数据组成的数组。 下图描述 Select() 如何返回一个与源集合具有相同元素数目的集合。 ?...代码通过从源集合的每个花卉名称列表中提取前两项来创建一个“花束”。...如何:执行内部联接 如何:执行左外部联接 如何:从多个源填充对象集合 (LINQ) (C#) 08 数据分组 分组是指将数据分到不同的组,使每组中的元素拥有公共的属性。...Enumerable.ToLookup 查询表达式语法示例 下列代码示例根据奇偶性,使用 group by 子句对列表中的整数进行分组。

    11.5K20

    编程语言傻傻分不清:弱类型、强类型、动态类型、静态类型

    作为一个开发者,你连弱类型、强类型、动态类型、静态类型语言傻傻分不清吗? 这篇文章综合介绍了四种分类,特别地,为了方便大家快速有效的学习,笔者尝试用思维导图的办法描述编程语言的区别。...needed 型态系统(type system):程序中专门处理数据的系统,语言可以分为: 动态型态系统(dynamically typed systems),例如Lisp,JavaScript,Tcl和Prolog...例如C/C++/Java/C# 弱类型定义语言(Implicit type conversion,类型不安全的语言): 数据类型可以被忽略的语言。...举例:在VBScript中,可以将字符串 '12' 和整数 3 进行连接得到字符串 '123',  然后可以把它看成整数 123,而不需要显示转换 例如PHP/ASP/Ruby/Python/Perl/...typed 运行时排除红色程序,dynamically typed 所有程序都在黄框以外,type safe 四、结论 那么问题来了,眼尖的人可能已经发现了,关于【强弱类型】,有两种截然不同的分类观:一个是从数据类型转换和语法角度

    11.3K32

    C#:昨天,今天和明天:和 Anders Hejlsberg 座谈,第三部分

    翻译:我要去桂林 Osborn:关于增加的匿名方法有什么特点吗?...如果你想在一种不支持匿名方法或者 lambda 表达式的语言中实现一个Where方法,这是不太可能的。一个 测试应用到每个元素上, 你知道我说的意思吗?...但这并不是一个普通意义上的参数,因为我并没有把它作为一个 布尔 值参数,很显然这个参数首先被计算,然后在传递进去。我并不想看到 真 或者 假,我只是想传递 测试 本身。你知道我刚才讲的意思吗?...这就是:提供一个元素,提供一个函数他就能把元素转换成另一个元素。这就是组合的威力。 OrderBy 和这是同样的道理,提供一些元素,然后对他们进行比较。重申一遍,这些都是通过写代码实现的。...因为,为了表示一个可能值为null的整数值,在java中使用Integer封装类,为每个 int 值分配空间,然后当他们是null的时候你设置值null来实现。

    1K40

    Java 编程问题:九、函数式编程——深入研究

    但是假设我们不想要前 10 个偶数整数的列表,实际上我们希望直到 10(或任何其他限制)的偶数的列表。从 JDK9 开始,我们可以通过一种新的味道Stream.iterate()来塑造这种行为。...例如,伪随机整数值的无限流可以声明如下(生成的整数将在[1100]范围内): IntStream rndInfStream = new Random().ints(1, 100); 尝试获取 10 个偶数伪随机整数值的列表可以依赖于此流...此方法具有两种不同的行为,如下所示: 如果流是有序的,它将返回一个流,该流包含从该流中获取的、与给定谓词匹配的元素的最长前缀。...3dd密码将使我们的谓词失败,并最终得到最终结果(List。生成的四个密码被添加到结果中,而不受dropWhile()的影响。 现在,假设我们有一个无序的整数流。...collect(groupingBy(Melon::getWeight, counting())); 输出如下: {1600=1, 1200=2, 1700=1, 2600=3, 3000=2} 我们能把最轻和最重的瓜按种类分类吗

    2K10

    改变开发者编码思维的六种编程范式

    示例语言:Idris, Agda, Coq 你可能习惯于像C和JAVA等语言的类型系统,编译器可以检查一个变量是整数,列表,或者字符串。...但是如果你的编译器可以检查一个变量是“正整数”,“长度为2的列表”,还是“一个回文字符串”会怎样呢? 这就是支持依赖类型语言背后的思想:你可以在编译时指定检查变量值得类型。...示例语言:Forth, cat ,joy 想象过,在没有变量和函数应用的情况下,编写程序是什么样子的吗?没有?我也没试过。但显然有人做了,他们提出了拼接编程。...如果使用声明式语言如Prolog来进行数字排序,可直接描述你想要的输出:“我想要相同的值列表,但每个索引i中的每个项目都应小于或等于索引为i+ 1的项”。...例如,在Prolog语言中一个简单的数独求解器的代码只需要列出每行,每列,和一个解决的数独难题的对角线应该看起来的样子: sudoku(Puzzle, Solution) :- Solution =

    2.3K100

    重复性的工作交给 bat脚本 来完成---脚本开启emqx服务器

    工作中需要开启开启MQTT的服务器,每次开机都要操作一次,折腾了1个小时,用bat来实现就好了,然后扔到服务器开机自启动就OK了.比上次 [C#] 操作CMD笔记 实现还简单一些....\Edge\Application\msedge.exe" http://11.168.1.102:18083/ D:\emqx>tree D:\emqx\bin\ 卷 Job 的文件夹 PATH 列表...三是调用结果不同:call调用不仅可以把参数或变量传给被调用的批处理,而且被调用的批处理也可以设置参数或变量以便回传,而start只能把参数或变量传给被调用的批处理,却不能回传参数或变量,这一点实际上是第二点的延伸...从批处理程序调用另一个批处理程序。...NODE 将首选非一致性内存结构(NUMA)节点指定为 十进制整数。 AFFINITY 将处理器关联掩码指定为十六进制数字。

    1.3K20

    数据库系统概述——第三章 关系数据库标准语言SQL(知识点复习+练习题)

    #,C#,GRADE)。...A.从职工表中删除行(‘025’,‘王芳’,‘03’,720) B.将行(‘005,’,‘乔兴’,‘04’,750)插入到职工表中 C.将职工号为,‘001’的工资改为700 D.将职工号为,’038’...的部门号改为‘03’ 5、在SQL语言中,用来测试一个集合里是否有重复元组存在,使用下列哪一个关键字(A) A.UNIQUE B.DISTINCT C.EXISTS D.NOT IN 6、SQL数据查询语句...SELECT语句格式: SELECT [ALL|DISTINCT] 列表达式> [,列表达式>] … FROM [, ] … [ WHERE <条件表达式...*,SC.* FROM Student,SC WHERE Student.Sno = SC.Sno; (2)嵌套查询 带有IN谓词的子查询: 例:查询与“刘晨”在同一个系学习的学生 SELECT Sno

    36510

    在 C# 语言中使用 LINQ 对数据进行筛选和排序

    它为C#及其他.NET语言带来了类似SQL的查询功能,让从各种数据源(如集合、数据库和XML文件)中筛选、排序以及操作数据变得更加容易。...使用Where进行数据筛选 Where方法是LINQ中的一个方法,它允许我们基于某个条件或谓词来筛选集合。它将条件应用于集合中的每个元素,并仅返回那些符合条件的元素。...它从集合中获取一个元素,如果该元素应包含在结果中,则返回true,否则返回false。 基于简单条件进行筛选 假设你有一个整数列表,并且想要筛选出大于5的数字。...基于对象属性进行筛选 现在,让我们基于特定属性来筛选一个对象列表。假设我们有一个Person对象列表,并且想要筛选出年龄大于30岁的人员。...按升序排序 让我们使用OrderBy方法对一个整数列表按升序进行排序: List numbers =newList{,,,,}; // 按升序对数字进行排序 var sortedNumbers

    84810
    领券