百科问答小站 logo
百科问答小站 font logo



Prolog 这类逻辑式编程语言为什么没有得到广泛应用? 第1页

  

user avatar   abstract-monkey 网友的相关建议: 
      

有几位对Prolog认识不足, 言论大谬, 特此反驳

SWI-Prolog

先看这段Prolog程序

packages-R/r_demo.pl at master · SWI-Prolog/packages-R · GitHub

有一系列从Prolog呼叫R语言的程序, 完全不需要额外宣告什麽FFI或中间语言, 就自动生成对应的R语言函数, 不只能呼叫R语言函数, 连R语言的语法都嵌了进去

@彭飞

除了上述跟R语言合用, 光凭packages中官方支持的包, 还可以跟Java双向沟通, 不用啥中间语言可以呼叫C++, 可以Constraint Query Language读写SQL资料库, 还可以写网路应用

以此看来C语言之类的不少语言用途都没比Prolog广, 真要就短处论, C语言只能算是用来写作业系统跟系统程序的DSL, Ada也只是电子软体控制系统的DSL, 都不能算通用语言

@阅千人而惜知己

Prolog的全称是Programming in Logic, 用途是编程, 不是用来搞证明一类的东西, 却拿来跟Coq用途完全不同的东西比较, 这跟拿Haskell这个编程语言跟Coq比自动证明有啥差别?

其语言本身也不用来作知识表示, 若要作知识表示另有方法

section('packages/semweb.html')

也比较看看我之前提到的应用, Coq几时能做到类似的事情?

看看

SWI-Prolog -- op/3

可知Prolog的语法相当自由, Prolog语法根本就不是劣势, 连『jhon likes tim.』 这种看起来像英文句子也可以是Prolog合法程序, 也藉此能嵌入R語言语法

写个fibonacci数列就论断效能是否过于偏颇? Haskell也常因为惰性求值被乱用, 常常出现效能比Python差的程序, 但Haskell效能真的有比Python差?

另Python的效能也是很差, 但並不影响其成为通用语言, 很大一部分原因是他可用C扩展

相较下Prolog甚至可以自然地用C++跟Java扩展, 而且扩展所需的步骤更少, 为何Prolog效能会是问题, Python就不会是问题?

Python要是没有可扩展性, 也没办法有用到哪裡去


其实问一个XYZ语言为啥没被IT业界广泛应用, 跟问哲学系教授怎没成为当红电视名嘴一样莫名其妙

现在多数IT产业的功能几乎只剩下让人手机成瘾

要是有装Matlab的话, 可以打开安装的资料夹, 就会发现裡面有个Swi prolog的执行档, 在无形中帮助科研度过不少难关, JVM的设计文件裡也有提到使用Prolog规划

其存在如同《道德經》所云:太上,不知有之

------------------------------------------------------------------------------------------------------

离个题说我自己应用Prolog的成果

某亲戚的农田需要排班几个抽水马达跟电机设备, 还要调控光照周期, 但又不能操劳过度避免烧毁, 反正就是一系列的规划问题

我买个Rasberry PI里面装Linux跟Swi Prolog, 用了CLP(R)规划, 输出IO pin控制继电器

用Prolog写起来着实简单, 同样问题要是用C++或Haskell, 我大概过劳死了

Swi Prolog的库很全, 各种规划问题, 另外有Java, C++高阶FFI, 有心应用真可以看下, 应用不需要受限於IT之类的


user avatar   peng-fei-29 网友的相关建议: 
      

Prolog 不流行,或者生命力不强和输入输出半点关系都没有,真正的原因是Prolog 根本就算不上一门通用编程语言(general purpose programming language),它只是一个用穷举法(backward chaining search) 来求解受限的一阶逻辑(database semantic first-order logic) 问题的DSL。这种DSL 最初发明出来就是为了快速解决constraint-based problems 的,比如类型推导、图着色寄存器分配等,用来解决其他问题,比如数值计算,就会捉襟见肘,所以The Craft of Prolog 中才总结了那么多然并卵的小技巧。

所以“Prolog 自动替程序员做了很多事情”的假象背后,是“任何问题都用穷举法求解”的愚蠢策略。


user avatar   david-dong-20 网友的相关建议: 
      

这是一个普通的游戏公司,对于真正生活中的英雄最大的支持和鼓励,

不知道各位玩家,在玩守望先锋的时候有没有注意过游戏的宣传语和背景设定,

‘’这个世界,需要英雄!"


守望先锋维护世界和平,与邪恶征战,

但是因为坏人的谣言与人民的导向而走向失落,

是啊,在见义勇为的时候,我们每个人都会迟疑,

如果我们挺身而出,自己身败名裂,甚至生命受到了威胁,怎么办?

然而,这个中国少年,和守望先锋的选择一样,我们要选择正义,


守望先锋的成员在地下活动着,他们活跃在世界各地,

无论是波多黎各,还是埃及,还是大洋彼岸的东方,他们的人数越来越少,伤亡也越来越惨重,

但是他们没有一刻停下自己维护世界和平的脚步,没有豪言壮语,也没有经天纬地,

只是哪怕日行一善,帮助身边的人。

多拉多是个不太平的地方,波多黎各的海水也格外苦涩,

曾经守望先锋的领袖莫里森化名76号士兵,他的任务是夺下敌人的赃物,

但是当坏人向女孩扔出一颗手雷时,莫里森没有迟疑,选择先去救人。

当我们在宣传片里看到,当76号扑向女孩救下了她的时候,

小女孩怯懦地问到,你是我们说的…英雄吗?



而那个曾经的世界英雄指挥官只是淡淡的回答,旧习难改吧,也不再是了。


担担自己身上的灰尘,继续前行。如果他再遇到这种事,他依然会伸出援手。

是的,维护善良和正义,其实只是我们的习惯,

只是我们在面对邪恶的时候,畏惧,恐慌,让我们忘记了正义。



可我觉得,你就是英雄。。。

是啊,看完这个宣传片,每个人都会热血沸腾,

为什么世界有太多的懦弱和犹豫,为什么正义不能得到歌颂。

暴雪的这一壮举,让世界的所有玩家,

记住了有这样一个普通的玩家,和我们一起奋战在正义的路上。




打击邪恶的勇气,一心向上的情怀,发自内心而生的能量,这一切得一切都被我们铭记。


“隐形的纪念躲在心里面

也许吧 也许不会再见

阴天或晴天

一天又一年

风它在对我说莫忘这一切'

这个世界,需要英雄,不是吗?




  

相关话题

  请问数学的函数和编程语言的函数有什么区别呢? 
  C++ 是否适合做 GUI? 
  代码初学者,学到一段时间后,怎么寻找练手的项目? 
  C# 如何在调用控件时做到 Thread-safe(线程安全)? 
  JavaScript 是什么? 
  如何理解 C++11 的六种 memory order? 
  面向对象(OOP)是编程语言发展中的弯路吗?为什么? 
  性能最强的编程语言是什么? 
  在C语言中,math.h中定义的各种数学函数在电脑上具体是怎么实现的? 
  C# 这么优秀的语言,现在到底出了什么问题? 

前一个讨论
如何评价「快手」APP?
下一个讨论
历史上有哪些脱离发明者初衷的发明?





© 2024-11-28 - tinynew.org. All Rights Reserved.
© 2024-11-28 - tinynew.org. 保留所有权利