Pourquoi le nom de type primitif booléen Java n'est-il pas «booléen»?

28

Java a

  • int et Integer
  • boolean et Boolean

Cela semble un peu incohérent, pourquoi pas non plus

  • boolvs Booleanutiliser un nom plus court pour le type primitif?

ou

  • integervs Integerpour garder les noms de type cohérents?

Je pense que C ++ avait décidé d'utiliser boolun peu plus tôt que Java avait décidé d'utiliser boolean, et peut-être aussi certaines extensions C (non standard à l'époque?), Donc il y aurait eu une priorité historique pour bool. J'ai remarqué que j'essaie souvent instinctivement boolau début (c'est une bonne chose que les éditeurs modernes le remarquent immédiatement sans compilation supplémentaire), donc ce serait bien de connaître la raison d'être de l'état actuel des choses.

Si quelqu'un se souvient (d'une partie de) l'histoire, ou peut même trouver et créer un lien vers une discussion historique pertinente sur le net, ce serait formidable.

hyde
la source
8
booleanest définitivement plus explicite que bool. Je préfère demander pourquoi intn'est pas appelé integer. Ma conjecture: intet charoù trop ancré pour être changé en integeret character, mais booln'était pas encore complètement établi.
Joachim Sauer
"Je pense que C ++ a décidé d'utiliser bool un peu plus tôt que Java a décidé d'utiliser booléen" Pourquoi pensez-vous cela?
John Bartholomew
6
Selon Evolving, un langage dans et pour le monde réel: C ++ 1991-2006 , le booltype a été introduit dans C ++ en 1993. Java inclus booleandans sa première version en 1995, mais le projet Java lui-même a été lancé en 1991. Sans trouver d'autres sources de informations, je ne sais pas ce qui est venu en premier, ou quelle influence (le cas échéant) ils ont eu les uns sur les autres.
John Bartholomew
3
La spécification du langage Oak (version 0.2, Copyrighted 1994) inclut également le booleantype. (Oak a ensuite été renommé Java). Cela rapproche encore plus les dates, même si je ne vois toujours aucune preuve définitive de la préséance ou de l'influence dans l'une ou l'autre direction.
John Bartholomew
Ce n'est pas incohérent, il y en a doubleet Doubleaussi.
vortexwolf

Réponses:

20

Sans entrer en contact avec des personnes réellement impliquées dans ces décisions de conception, je pense qu'il est peu probable que nous trouvions une réponse définitive. Cependant, sur la base des délais de développement de Java et de C ++, je suppose que Java a booleanété choisi avant ou en même temps que l'introduction boolde C ++, et certainement avant, boolétait largement utilisé. Il est possible qu'il ait booleanété choisi en raison de son histoire d'utilisation plus longue (comme dans l'algèbre booléenne), ou pour correspondre à d'autres langages (comme Pascal) qui avaient déjà un booleantype.

Contexte historique

Selon Evolving a language in and for the real world: C ++ 1991-2006 , le booltype a été introduit en C ++ en 1993.

Java inclus booleandans sa première version en 1995 ( Java Language Specification 1.0 ). La première spécification de langage que je puisse trouver est la spécification Oak 0.2 ( Oak a ensuite été renommée Java ). Cette spécification Oak est marquée "Copyright 1994", mais le projet lui-même a été lancé en 1991 et a apparemment eu une démo fonctionnelle à l'été 1992 .

John Bartholomew
la source
12

En fait, Java est plus précis dans l'histoire ici. La théorie des valeurs vraies et fausses a été inventée par George Boole et est communément appelée l'algèbre de Boole en son honneur.

boolest vraiment juste un raccourci pour éviter un nom plus long, cependant, étant donné la prise en charge de l'achèvement automatique des IDE modernes, ce n'est plus une raison valable (et n'était même pas de retour à l'époque où Java a décidé de le faire boolean).

Je n'ai pas fait partie du processus de décision pour Java, mais si quelqu'un se soucie de l'histoire, alors "l'algèbre booléenne" est la priorité historique pertinente, et on pourrait aussi bien remettre en question la décision C / C ++ sur la raison pour laquelle ils ont mutilé le nom de Boole en coupant le e.

Franc
la source
5
Même raison que l'appel POSIX pour créer un fichier est appelé creat().
Blrfl
5
Donc vous dites que ça intdevrait être integer?
4
Si vous voulez être historiquement exact, alors je pense Booleanest une sorte de mal, compte tenu qu'il peut avoir 3 valeurs ( Boolean.FALSE, Boolean.TRUE, null) ... Point de symboles étant, langage de programmation et des mots réservés sont toujours un compromis de plusieurs facteurs, et la précision historique est probablement assez bas sur cette liste.
hyde
2
Je n'ai pas l'intention d'être exact sur le plan historique, mais n'oubliez pas que toutes les langues ne permettent pas d'appeler cette erreur d'un milliard de dollars null.
Frank
2
@Frank Hé, je suis en train de convertir une situation NullPointerException spécifique en rapports et gestion d'erreurs plus agréables, et j'essaie d'oublier activement LALALAA de ne pas entendre ce que vous dites LALALAA ;-)
hyde
-2

Je ne peux pas résoudre le problème de cohérence, mais il y a une longue histoire ici.

Pour autant que je m'en souvienne, l'Algol 60 a été la première langue à désigner ses types logiques comme «booléens». Algol 60 avait également des types comme «entier», «procédure», etc.

Vint Algol 68, et les abréviations semblaient être en vogue: «bool», «int», «proc», etc.

Ainsi, les concepteurs de langues peuvent choisir le style qu'ils aiment, et il y a un précédent.

Dave
la source