什么是Prolog不好?

nos*_*you 5 prolog

我最近试图了解Prolog,它似乎很好地映射到很多领域,但我很难弄清楚它可能是什么坏处.

那么它有什么不好(除了需要实时/无gc性能的东西)?

mat*_*mat 8

我同意您对Prolog很好地映射到许多领域的一般评估.在我看来,甚至超过大多数其他语言.

给出一些不好的例子:

Prolog在数字处理方面显然不好,因为它目前被理解.通过这种方式,我的意思是许多,很多基本上无意义的浮点数计算,以任何人都无法实际理解或处理的方式累积错误.

这是Prolog实现无法像现在这样竞争的领域,因为所有这些计算都会因Prolog对术语的推理而产生过多的开销,并且还因为这些计算的肮脏性在逻辑编程社区中一般都被憎恶,其中重点是更倾向于用户的正确性便利性,并且如果可能的话,通常会选择其他数字格式,例如有理数.

然而,我认为这将成为未来的重要发展,一旦浮点数的极端缺点已经得到充分广泛的理解,并且更好的格式(例如:Unums等)已经广为人知并且可用,Prolog可能会变成一个在这一领域也越来越重要的工具.

在他的书"错误的终结"中,John Gustafson给出了一个我经常想到的美丽的比喻:

几十年前,打印一页需要30秒.当打印机变得更好时,打印页面仍需要30秒.我们没有花费所有技术进步来在30秒内打印5000个低质量页面,而是将页面质量提高了数千倍.

我认为数字运算最终会朝着同一个方向发展:使用越来越多的计算能力来提高结果的质量,而不是数量.

  • 虽然Prolog可能不擅长数字运算,但我不认为这种不足是Prolog语言结构所固有的.毕竟,Prolog非常擅长使用CLP(FD)库"推理整数".它只是一个图书馆,远离其他良好的数字处理能力.但是我们必须定义我们正在讨论的数字运算的子域. (3认同)
  • 是的,我完全同意你说的一切! (3认同)