Tony Hoare, qui a créé l'idée d'une référence nulle en premier lieu, l'appelle son erreur d'un million de dollars .
Le problème ne concerne pas les références nulles en soi, mais le manque de vérification de type appropriée dans la plupart des langues sûres (sinon) de type.
Ce manque de prise en charge, de la langue, signifie que les bogues "null-bugs" peuvent se cacher dans le programme pendant une longue période avant d'être détectés. Telle est la nature des bugs, bien sûr, mais les "null-bugs" sont désormais connus pour être évitables.
Ce problème est particulièrement présent en C ou C ++ (par exemple) à cause de l'erreur "dure" qu'il provoque (un crash du programme, immédiat, sans récupération élégante).
Dans d'autres langues, il y a toujours la question de savoir comment les gérer.
En Java ou C #, vous obtiendriez une exception si vous tentez d'appeler une méthode sur une référence nulle, et cela pourrait être correct. Et donc la plupart des programmeurs Java ou C # sont habitués à cela et ne comprennent pas pourquoi on voudrait faire autrement (et rire de C ++).
Dans Haskell, vous devez explicitement fournir une action pour le cas nul, et donc les programmeurs Haskell se moquent de leurs collègues, car ils l'ont bien compris (non?).
C'est, en fait, l'ancien débat sur les codes d'erreur / exceptions, mais cette fois avec une valeur sentinelle au lieu d'un code d'erreur.
Comme toujours, celui qui est le plus approprié dépend vraiment de la situation et de la sémantique que vous recherchez.