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



子类型(subtyping)是不是错误(ill-defined)的东西? 第1页

  

user avatar   yueqianren 网友的相关建议: 
      

你的问题问得不是很对,主要是英文的表述以及对定义的理解有些问题。

错误对应英文的wrong、mistake,ill-defined对应的是病态定义,错误与病态定义是不一样的。

well-defined与ill-defined并不是正确与错误的。想学明白一样东西需要先搞清定义。

well-defined的意思是大约是每个定义都有唯一的解释。大约应该是这样,水平有限,我给不出精准的定义,还有一些well-founded、well-formed之类的词我都无法给出很好的定义。

而ill-defined的意思应该是一个类型系统中的定义是存在歧义(ambiguity)的。

所以,你应该问java、scala中的subtyping polymorphism是不是ill-defined或存在歧义的?

或者

你应该问的是java、scala引入了subtyping polymorphism的决定是不是一个错误(mistake)?


如果你是第一种问法:

Types and Programming Language一书中给出的Subtype polymorphism并没有任何的歧义,Java与Scala中应该也没有歧义,因为只要编译成功,能输出结果,说明歧义已经消除了,他编译的结果即是对代码的解释,所以Java与Scala是不应该存在歧义的。


如果是第二种问法:

你需要给出什么叫错误的。臃肿是一种错误?丑陋是一种错误?这些都太过主观了。我更倾向于说Java里没有和类型(sum type),接口的实现与类需要强绑定,函数需要借助类来包装等等问题,由于有这些问题导致java很难用,但是"错误"这一词太过强烈了。'Mistake' is a strong word.

多看书,少上知乎。




  

相关话题

  如果穿越成1972年的Dennis Ritchie,你会怎样重新设计C语言? 
  子类型(subtyping)是不是错误(ill-defined)的东西? 
  编程语言的类型推断怎么解决协变和逆变的问题? 
  读 CS PhD 之前没有工业界经历真的没关系吗? 
  出于什么样的原因,诞生了「协程」这一概念? 
  读 CS PhD 之前没有工业界经历真的没关系吗? 
  高级语言为什么要添加数据类型? 
  怎样学范畴论? 
  编程语言的类型推断怎么解决协变和逆变的问题? 
  高级语言为什么要添加数据类型? 

前一个讨论
编剧/作者如何塑造出比自己聪明的角色?
下一个讨论
住在深圳的你对深圳有什么感受?





© 2024-06-29 - tinynew.org. All Rights Reserved.
© 2024-06-29 - tinynew.org. 保留所有权利