为什么Java布尔原始类型名称不是'bool'?


28

Java有

  • intInteger
  • booleanBoolean

这似乎有点不一致,为什么不

  • boolBoolean使用已建立的较短名称作为原始类型?

要么

  • integerInteger保持类型名称一致?

认为 C ++决定bool比Java决定使用很多时间boolean,也许还有一些(当时是非标准的)C扩展,所以对于来说,C会有历史优先权bool。我注意到我经常本能地一开始尝试使用bool(现代编辑器很快就发现了这一点,而无需进行额外的编译),因此很高兴知道当前事务状态的基本原理。

如果有人记得故事的一部分,甚至可以找到并链接到网络上相关的历史讨论,那将是很棒的。


8
boolean肯定比bool。我宁愿问为什么int不叫integer。我的猜测:int并且char根深蒂固,无法更改为integercharacter,但是bool尚未完全确定。
Joachim Sauer

“我认为C ++决定使用bool的时间要比Java决定使用布尔值的时间早得多”。为什么会这样呢?
John Bartholomew

6
根据“在现实世界中以及在现实世界中使用一种语言:C ++ 1991-2006”,该bool类型于1993年引入C ++。Java boolean于1995年首次发布,其中包括Java ,但Java项目本身始于1991年。信息,我不清楚是谁先来的,还是彼此之间有什么影响(如果有)。
John Bartholomew

3
橡树语言规范(版本0.2,受版权保护的1994)还包括boolean类型。(橡树后来更名为Java)。这使日期更加接近,尽管我仍然没有确切的证据显示这两个方向的优先次序或影响。
John Bartholomew

这是不相矛盾的,也有doubleDouble也。
vortexwolf

Answers:


20

如果不与实际上参与这些设计决策的人员联系,我认为我们不太可能找到确切的答案。但是,根据Java和C ++的发展时间表,我可以推测Java boolean是在引入boolC ++ 之前或与之同时选择的,并且肯定bool是在广泛使用之前选择的。boolean由于使用历史较长(例如在布尔代数中),或者与已经具有某种boolean类型的其他语言(例如Pascal)匹配,因此可能选择了该语言。

历史背景

根据“在现实世界中以及在现实世界中发展语言:C ++ 1991-2006”,该bool类型于1993年引入C ++。

Java包含boolean在其1995年的第一个版本中(Java语言规范1.0)。我可以找到的最早的语言规范是Oak 0.2规范后来Oak被重命名为Java)。该Oak规范标有“ Copyright 1994”,但该项目本身始于1991年,并且显然在1992年夏天进行了演示


12

实际上,Java在这里对历史更准确。真假值理论是乔治·布尔George Boole)发明的,在他的荣誉中,通常被称为布尔代数

bool确实只是避免使用更长名称的捷径,但是,鉴于现代IDE的自动完成支持,这不再是正当的理由(而且甚至在Java决定采用的时候都没有boolean)。

我还没有参与过Java的决策过程,但是如果有人在乎历史,那么“布尔代数”就是相关的历史优先级,因此人们还可能会质疑C / C ++关于他们为什么通过切断Boole的名字来残废其名称的决定。的e


5
调用POSIX创建文件的原因相同creat()
Blrfl 2013年

5
所以你说int应该是integer

4
如果你想成为历史上是准确的话,我认为Boolean是一种不好的,认为它可以有3个值(Boolean.FALSEBoolean.TRUEnull)...点是,编程语言符号和保留字始终是几个因素的妥协和历史精度可能在那个列表上很低。
2013年

2
我无意在历史上保持准确,但不要忘记,并非所有语言都允许这种称为的十亿美元的错误null
Frank

2
@Frank Hey,我只是将特定的NullPointerException情况转换为更好的错误报告和处理,并试图积极地忘记LALALAA没听到您说的话LALALAA ;-)
hyde

-2

我无法解决一致性问题,但是这里已有很长的历史了。

据我所知,Algol 60是第一种将其逻辑类型称为“布尔”的语言。Algol 60还具有“整数”,“过程”等类型。

随之而来的是Algol 68,缩写似乎很流行:“ bool”,“ int”,“ proc”等。

因此,语言设计师可以选择他们喜欢的任何样式,这是有先例的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.