为什么要制作脚本语言并且有目的地图灵非完整'?

时间:2015-02-03 00:00:23

标签: scripting programming-languages bitcoin turing-machines turing-complete

所以,我在他们的官方文档上阅读有关比特币脚本的内容并找到了这一行:“脚本很简单,基于堆栈,并且从左到右处理。它是有目的地没有Turing-complete < / em>,没有循环。“我试图努力推理,但无法理解为什么会有人制作语言” 有目的地非图灵完整 “ 。这是什么原因?如果一种语言成为图灵完成会怎样? 并且进一步扩展,“没有循环”是否与非图灵完成的脚本有关?

2 个答案:

答案 0 :(得分:5)

可能的原因:

  • 安全性:如果没有循环,程序将始终终止。用户无法挂断翻译。此外,如果脚本的大小有限制,您可以有相当严格的时间限制。另一个没有循环语言的例子是google查询。如果谷歌允许循环,用户将能够杀死他们的服务器
  • 简单:没有循环使语言更容易被非程序员读写
  • 没有必要:如果没有业务需要那么为什么要打扰?

答案 1 :(得分:2)

主要原因是因为比特币脚本在处理/验证交易时由所有矿工执行,我们不希望它们陷入无限循环。 另一个原因是,根据Mike Hearn的这个message,比特币脚本是Satoshi尝试合并他想到的几种交易的事后想法。这可能解释了这样一个事实,即它的设计并不是很好,并且表现力很差。

Ethereum有一种不同的方法,允许任意循环,但让用户为执行步骤付费。