pol*_*nts 50 java byte types language-design
我最初感到惊讶的是Java决定指定byte
签名,范围从-128..127
(包括).我的印象是,大多数8位数字表示都是无符号的,0..255
而是一系列的(例如,以点十进制表示的IPv4).
那么詹姆斯·戈斯林有没有被要求解释为什么他决定byte
签署?过去权威程序设计语言设计师和/或评论家之间是否就此问题进行了明显的讨论/辩论?
Boz*_*zho 28
似乎简单是主要原因.从这次采访中:
Gosling:对于我作为一名语言设计师而言,我现在并不像以前那样真实地认为,"简单"真正意义上的结果是我可以期待J. Random Developer在他的脑海中保留这个规范.这个定义说,例如,Java不是 - 实际上很多这些语言都有很多极端情况,这些都是没人真正理解的.测试任何C开发人员关于unsigned的问题,很快你就会发现几乎没有C开发人员真正理解无符号算法是什么,无符号算术是什么.这样的事情让C变得复杂.我认为Java的语言部分非常简单.你必须查找的库.
我最初的假设是因为Java根本没有无符号数字类型.为什么要byte
成为例外?char
是一个特例,因为它必须代表UTF-16代码单元(感谢Jon Skeet的报价)
Fav*_*ius 14
根据'Oak Language Specification 0.2'又称Java语言:
"Oak字节类型是C程序员习惯用作char类型的东西.但是在Oak语言中,字符是16位宽.具有单独的字节类型消除了在将char解释为8位之间的C中的混淆整数和作为一个字符."
你可以从这里获取一个postscript副本:
http://cretesoft.com/archive/files/OakSpec0.2.ps(上scribd部分副本)
此外,还有一部分访谈在本网站上发布:(他在捍卫java中无符号字节的缺席)
http://www.darksleep.com/player/JavaAndUnsignedTypes.html
添加上面提到的页面采访...
*" http://www.gotw.ca/publications/c_family_interview.htm
问:程序员经常用"简单的语言"来讨论编程的优缺点.这句话对你意味着什么,你的视图中的[C/C++/Java]是一种简单的语言?
里奇:[删除简洁]
Stroustrup:[为简洁而删除]
Gosling:对于我作为一名语言设计师而言,我现在并不像以前那样真实地认为,"简单"真正意义上的结果是我可以期待J. Random Developer在他的脑海中保留这个规范.这个定义说,例如,Java不是 - 实际上很多这些语言都有很多极端情况,这些都是没人真正理解的.测试任何C开发人员关于unsigned的问题,很快你就会发现几乎没有C开发人员真正理解无符号算法是什么,无符号算术是什么.这样的事情让C变得复杂.我认为Java的语言部分非常简单.你必须查找的库.
另一方面......根据http://www.artima.com/weblogs/viewpost.jsp?thread=7555
曾经的橡树...... Heinz Kabutz,2003年7月15日
...为了填补我的Java历史空白,我开始在Sun的网站上挖掘,并最终偶然发现了Oak语言规范的Oak版本0.2.Oak是现在通常称为Java的原始名称,本手册是Oak(即Java)最早的手册....无符号整数值(第3.1节)
规范说:"四个整数类型的宽度分别为8,16,32和64位,并且除非带有unsigned修饰符作为前缀,否则都是有符号的.
在侧边栏中,它说:"未签名尚未实施;它可能永远不会." 你是对的."*
我不知道James Gosling的任何直接引用,但是有一个未签名的官方RFE byte
:
错误ID:4186775:请求无符号整数类型,尤其是 无符号
byte
州:11-已关闭,无法修复,请求增强
请扩展Java设计以允许无符号类型,尤其是未签名类型
byte
.我一直在想为什么Java中没有无符号整数类型.在我看来,对于
byte
长度值,没有它们是非常尴尬的[...]我认识到这是Java开发人员做出的设计决策. 我不明白的是为什么.他们是否认为无符号整数类型是邪恶的还是有害的,并选择保护我自己?
归档时间: |
|
查看次数: |
7058 次 |
最近记录: |