为什么从Java和C#中删除constness? - c#

我知道对此进行了很多次讨论,但是我不确定我是否真正理解Java和C#设计者为什么选择从这些语言中省略此功能。我对如何做出变通办法(使用接口,克隆或任何其他替代方法)不感兴趣,但是对做出决定的理由不感兴趣。

从语言设计的角度来看,为什么拒绝了此功能?

附注:我使用的是诸如“略过”之类的词,有些人可能认为这是不够的,因为C#是采用加法(而不是减法)设计的。但是,我之所以用这样的词,是因为该功能在设计这些语言之前就已存在于C++中,因此从程序员的工具箱中删除该功能时就将其省略了。

参考方案

在this采访中,安德斯说:

安德斯·海斯伯格:是的。关于
const,这很有趣,因为我们
也总是听到该投诉:
“你为什么没有const?”隐含的
问题是,“为什么不
具有由强制执行的const
运行时?”这真的是人们
在问,尽管他们不来
出来那样说。

const在C++中起作用的原因是
因为您可以将其丢弃。如果你
无法抛弃它,那么你的世界
会吸。如果声明方法
需要一个const Bla,你可以通过
它是非常量Bla。但是如果是
否则,您将无法做到。如果你
声明需要一个
非常量Bla,您不能通过它
const Bla。所以现在你被困住了。那么你
逐渐需要一个const版本
所有不是const的东西,而你
最终成为一个影子世界。在C++中,您
摆脱它,因为与
C++中的任何内容都是纯可选的
是否要进行此检查。
你可以把constness打掉
如果您不喜欢它。

是否有任何基于Java语法和功能的底层编程语言? - java

有没有基于Java语法和功能的低级编程语言?基本上,应该没有内存管理,用户应该能够直接访问内存。但应保持以下java功能:1)平台独立性(应根据机器架构直接编译为本机代码,以保持平台独立性,而不是编译为字节码)2)应该没有JVM来管理内存和资源。3)应具有异常抛出和捕获机制。4)应该具有内置的多线程和并发支持。5)利用Java-API。6)应该有像C一样的指…

是否有使用PHP作为虚拟机的语言? - php

我想知道是否有任何语言将PHP扩展为“更好”的东西?他们不一定必须能够与PHP进行交互,但是如果可以的话(例如,调用PHP函数或什至是从PHP调用)肯定是一个好处。 参考方案 这是CodingHorror撰写的有关Wasabi的文章,Wasabi是一种显然可以编译成PHP的语言,其中包括其他奇怪的东西:http://www.codinghorror.com/…

使用Python构建编译器或解释器 - java

Improve this question 现在,我正在写我的博士学位提案,为Java的新规范语言(参见JML或C#的SpeC#)构建语言处理器,并且需要确定一种实现工具以开始开发。语言的研究方面(语法,语义,理论结果)与我选择的实现正交,因此出于自身原因,我想使用Python(2.6+)。最终产品将是能够验证用Java编写的程序的某些指定属性的编译器或解释…

LeetCode题解计算机为什么是基于二进制的?

可以是三进制么?二进制有什么好处?题解:为什么叫电子计算机?算盘应该没有二进制

LeetCode题解统计城市的所有灯泡

这个是我刚毕业的时候,一个真实的面试题,这是一个开放题。题目描述:想办法,将一个城市的所有灯泡数量统计出来。题解:费米估算法1、如果某个城市常驻人口有1000万2、假设每5人居住在一套房里,每套房有灯泡5只,那么住宅灯泡共有1000万只3、假设公众场所每10人共享一只灯泡,那么共有100万只4、主要的这两者相加就得出了1100万只当然实际上这是估算的,具体应…