Scala 3不会图灵完整吗?
我参加了Martin Odersky关于
Scala未来的主题演讲:
https://skillsmatter.com/skillscasts/8866-from-dot-to-dotty 在1:01:00,对观众问题的回答似乎表明未来的Scala将不会是图灵完整的. 我理解正确吗? Scala 3将不再是图灵完整吗?如果是这样,对于像我这样每天在工作中使用Scala解决实际问题的人会产生什么样的实际影响呢?换句话说,工业Scala程序员松散了什么,他们通过删除图灵完整性获得了什么? 解决方法
不,这既不是被问到的问题,也不是答案. 首先:被问到的问题不是Scala是否不会图灵完备,问的问题是Scala类型系统是不是图灵完备. 其次:给出的答案并不是未来Scala的类型系统不会是图灵完备的.马丁奥德斯基清楚地说,带有暗示,类型系统肯定会是图灵完备的,并且没有暗示,他不想预测它是否会图灵完备. 那么,回答你的问题: > Scala肯定仍然是Turing-complete.
没有任何.首先,由于含义,类型系统仍将是图灵完备的.其次,即使不是,AFAIK,Scala的类型系统的图灵完整性还没有被用于任何实用的有趣的东西.有些库可以执行复杂的类型级计算,但这些计算总是会终止.没有人编写过在类型级别执行任意图灵完全计算的库. (事实上??,它甚至不可能,因为即使Scala的类型系统是Turing-complete,所有当前现有的Scala实现(无论如何只有一个)都对类型检查器的递归深度有严格的限制).
我们先来谈谈类型系统:它们不会丢失任何东西.他们获得的是保证编译终止的事实,以及这意味着编译器可以证明其无法证明的程序. 让我们回答一个假设的问题:如果Scala没有图灵完成怎么办?好吧,我们再也无法编写无限循环了.这就是它.但请注意,许多通常被建模为无限循环(或无限递归)的数据仍然可以建模为共同数据上的有限共同递归! (例如,操作系统,Web服务器或GUI中的事件循环.) OTOH,编译器不能做的很多东西都是“因为它等同于解决停机问题”.好吧,在一种非图灵完备的语言中,停止问题不存在!因此,编译器可以证明有关程序的更多内容,而不是图灵完备语言. 但是,要重新进行迭代:没有计划让Scala不是Turing-complete.没有计划暗示没有图灵完整.类型系统存在限制,可能会或可能不会使类型系统不完全图灵. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |