59 votes

Explication de James Gosling sur la signature de l'octet de Java

J'ai d'abord été surpris de voir que Java décide de de préciser qu' byte est signé, avec une gamme de -128..127 (inclus). J'ai l'impression que la plupart des 8-bit nombre de représentations ne sont pas signés, avec une gamme d' 0..255 à la place (par exemple IPv4 dot-notation décimale).

A James Gosling jamais été demandé d'expliquer pourquoi il a décidé qu' byte est-elle signée? A-t-il eu des discussions/débats sur cette question dans le passé entre l'autorité de langage de programmation, les concepteurs et/ou des critiques?

33voto

Bozho Points 273663

Il semble que la simplicité était la principale raison. À partir de cette interview:

Gosling: Pour moi, comme une langue designer, dont je n'ai pas vraiment me sens comme ces jours-ci, ce "simple" vraiment fini le sens je pourrais attendre J. Aléatoire Développeur de tenir la spec dans sa tête. Cette définition dit que, par exemple, Java ne l'est pas, et en fait, beaucoup de ces langues à la fin avec beaucoup de coin affaires, des choses que personne ne comprend vraiment. Quiz tout développeur C sur non signé, et très rapidement, vous découvrez que presque aucun des développeurs C vraiment comprendre ce qui se passe avec non signé, ce unsigned l'arithmétique est. Des choses comme ça fait C complexe. Le langage Java est, je pense, assez simple. Les bibliothèques que vous avez à regarder.

Mon hypothèse de départ était que c'est parce que Java n'a pas non signé types numériques à tous. Pourquoi devrait - byte être une exception? char est un cas particulier, car il a de représenter de code UTF-16 unités (merci à Jon Skeet, pour la citation)

17voto

Favonius Points 9008

Selon Chêne Langage de Spécification de 0,2 " aka langage Java:

"Le Chêne de type octet est ce que C programmeurs sont utilisés à penser que le type char. Mais dans le Chêne de la langue, les personnages sont au nombre de 16 bits de large. Ayant un octet de type enlève la confusion dans C entre l'interprétation de caractère sur 8 bits entier et comme un personnage."

Vous pouvez saisir un postscript copie à partir d'ici :

http://cretesoft.com/archive/files/OakSpec0.2.ps (copie partielle sur scribd)

Il ya aussi une partie de l'interview publiée sur ce site: (Où il est la défense de l'absence d'octet non signé en java)

http://www.darksleep.com/player/JavaAndUnsignedTypes.html

L'ajout de l'interview de la prise de cette page...

*" http://www.gotw.ca/publications/c_family_interview.htm

Q: les Programmeurs ont souvent parler des avantages et des inconvénients de la programmation dans un "langage simple." Ce n'est que l'expression signifie pour vous, et [C/C++/Java] un langage simple, à votre avis?

Ritchie: [supprimé pour des raisons de concision]

Stroustrup: [supprimé pour des raisons de concision]

Gosling: Pour moi, comme une langue designer, ce qui je ne compte pas vraiment moi-même, comme ces jours-ci, ce "simple" vraiment fini ce sens n'a pu J'attends J. Aléatoire Développeur de tenir la spec dans sa tête. Que définition dit que, par exemple, Java ne l'est pas, et en fait, beaucoup de ces langues jusqu'à la fin avec beaucoup de coin des cas, les choses que personne comprend vraiment. Quiz tout développeur C environ, non signé et jolie bientôt, vous découvrez que presque aucun des développeurs C vraiment comprendre ce va sur avec non signé, ce unsigned l'arithmétique est. Des choses comme ça fait C complexe. Le langage Java est, je pense, assez simple. Les bibliothèques que vous avez à regarder.

Sur l'autre main.... Selon http://www.artima.com/weblogs/viewpost.jsp?thread=7555

Une fois Sur un Chêne ... par Heinz Kabutz Le 15 juillet 2003

... Essayer de combler mes lacunes, de Java, de l'histoire, j'ai commencé à creuser autour de Le site de Sun, et finalement trébuché à travers le Chêne de la Langue Spécification pour le Chêne de la version 0.2. Le chêne était le nom original de ce est maintenant communément connu comme Java, et ce manuel est le plus ancien manuel disponible pour le Chêne (c'est à dire de Java). ... Valeurs entières non signées (Section 3.1)

La spécification dit: "Les quatre types d'entiers de largeurs de 8, 16, 32 et 64 bits, et sont signés, à moins que préfixé par le non signé modificateur.

Dans la barre latérale, il est dit: "non signé n'est pas encore mis en œuvre; il peut ne jamais l'être." La manière dont vous avez été. "*

8voto

polygenelubricants Points 136838

Je ne suis pas au courant de toutes les citations de James Gosling, mais il y a un officiel de la RFE non signés, byte:

Bug ID: 4186775: demande d'entier non signé types, esp. unsigned byte

État: 11-Fermé, ne Va Pas s'arranger, demande d'amélioration

Merci de prolonger la Java de conception afin de permettre unsigned types, en particulier unsigned byte.

J'ai demandé pourquoi il n'y a pas d'entier non signé types en Java. Il me semble que pour byte-longueur de valeurs, il est extrêmement maladroit de ne pas avoir eux [...]

Je reconnais que c'était une décision de conception faite par les développeurs Java. Ce que je ne comprends pas, c'est pourquoi. Ont-ils considéré entier non signé types de mal ou nuisible, et a choisi pour me protéger de moi-même?

0voto

this. __curious_geek Points 23728

Il n'y a aucune raison pour qu'un byte soit pas signé. lorsque vous avez char saisi pour représenter des caractères, les byte ne feront normalement pas ce travail de char .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X