38 votes

Quel est le but de nulle?

Je suis dans une compilateurs classe et nous sommes chargés de créer notre propre langue, à partir de zéro. Actuellement notre dilemme est de savoir si pour inclure un 'null' type ou pas. Ce but n'a nulle fournir? Certains membres de notre équipe, arguant que cela n'est pas strictement nécessaire, tandis que d'autres sont pro-null juste pour plus de souplesse, il peut fournir.

Avez-vous des pensées, surtout pour ou contre null? Avez-vous déjà créé des fonctionnalités que nécessaire null?

43voto

moffdub Points 3757

Null: Le Milliard De Dollar Erreur. Tony Hoare:

Je l'appelle mon milliard de dollars dans l'erreur. Il a été l'invention de la valeur null référence en 1965. À l'époque, j'étais la conception de l'adoption du premier type système de références à un objet langage orienté (ALGOL W). Mon objectif pour s'assurer que toute utilisation de les références doivent être absolument sûr, avec la vérification effectuée automatiquement par le compilateur. Mais je ne pouvais pas résister la tentation de le mettre dans un null de référence, tout simplement parce qu'il était si facile à mettre en œuvre. Cela a conduit à d'innombrables erreurs, des vulnérabilités,des et le plantage du système, qui ont probablement causé un milliard de dollars de la douleur et les dommages dans les quarante dernières années. Au cours des dernières années, un certain nombre de programme des analyseurs comme Préfixe et PREfast dans Microsoft ont été utilisés pour vérifiez les références, et de donner des avertissements si il y a un risque qu'ils peuvent être non-nulle. Plus récente des langages de programmation comme Spec# ont introduit des déclarations pour non null références. C'est le une solution, que j'ai rejeté en 1965.

28voto

staticsan Points 14435

null est une sentinelle de la valeur qui n'est pas un entier, pas une chaîne de caractères, pas un booléen - pas vraiment, sauf quelque chose à s'accrocher et être "pas là" valeur. Ne pas le traiter comme ou s'attendre à 0, ou une chaîne vide ou une liste vide. Ce sont toutes des valeurs valides et peuvent être geniunely valeurs valides dans de nombreuses circonstances - l'idée d'une valeur null au lieu de cela signifie qu'il n'existe pas de valeur.

Peut-être que c'est un peu comme une fonction de la levée d'une exception au lieu de retourner une valeur. Sauf qu'au lieu de fabrication et de retourner une valeur ordinaire avec une signification particulière, elle renvoie une valeur spéciale qui a déjà une signification particulière. Si une langue attend de vous que vous travaillez avec null, alors vous ne pouvez pas vraiment l'ignorer.

27voto

codewise Points 436

Oh non, je pense que la majeure en philosophie à venir hors de moi....

La notion de NULL vient de la notion de l'ensemble vide dans la théorie des ensembles. Presque tout le monde convient que l'ensemble vide n'est pas égal à zéro. Les mathématiciens et les philosophes ont été aux prises avec la valeur de la théorie des ensembles pour des décennies.

Dans les langages de programmation, je pense qu'il est très utile de comprendre les références de l'objet qui ne renvoie pas à quelque chose en mémoire. Google à propos de la théorie des ensembles et vous verrez des similitudes entre les systèmes symboliques (notation) que l'ensemble des théoriciens de l'utilisation et de symboles que nous utilisons dans de nombreux langages informatiques.

En ce qui concerne, Sam

14voto

Zoasterboy Points 424

Ce qui est nul pour vous demander?

Eh bien,

Rien.

12voto

CodingWithSpike Points 17720

J'ai l'habitude de penser à 'null', dans le C/C++ aspect de la "mémoire de l'adresse 0'. Il n'est pas strictement nécessaire, mais si elle n'existait pas, alors les gens ont autre chose (si myNumber == -1, ou si myString == "").

Tout ce que je sais est que je ne peux pas penser à une journée que j'ai passé de codage que je n'ai pas tapé le mot "null", donc je pense que rend assez important.

Dans l' .Monde NET, MS récemment ajouté nullable types int, long, etc qui ne sont jamais utilisés pour accepter les valeurs null, donc je suppose qu'ils pensent que c'est assez important aussi.

Si j'ai été la conception d'une lanaguage, j'aimerais garder. Cependant, je ne reviendrai pas éviter d'utiliser un langage qui n'ont pas nulle non plus. Il serait juste de prendre un peu de s'habituer aussi.

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