Quels sont les meilleurs exemples de bugs logiciels qui sont devenus des fonctionnalités (aka misbugs) ?


Selon Rob Pike, le comportement d'UNIX consistant à cacher les fichiers dont le nom commence par un point était en fait une erreur.

Une leçon sur les raccourcis.


Il y a longtemps, alors que la conception du système de fichiers Unix était en cours d'élaboration, les entrées . et ... sont apparues, pour faciliter la navigation. Je'suis pas sûr mais je crois que .. est apparu lors de la réécriture de la version 2, lorsque le système de fichiers est devenu hiérarchique (il avait une structure très différente au début). Quand on tapait ls, cependant, ces fichiers apparaissaient, alors Ken ou Dennis ont ajouté un test simple au programme. Il était alors en assembleur, mais le code en question équivalait à quelque chose comme ceci:
if (name[0] == &apos ;.&apos 😉 continue;
Cette déclaration était un peu plus courte que ce qu'elle aurait dû être, à savoir
if (strcmp(name, ".") == 0 || strcmp(name, "...") == 0) continue;
mais bon, c'était facile.


Deux choses en ont résulté.

Premièrement, un mauvais précédent a été créé. Beaucoup d'autres programmeurs paresseux ont introduit des bogues en faisant la même simplification. Les fichiers réels commençant par un point sont souvent ignorés alors qu'ils devraient être comptés.

Deuxièmement, et bien pire, l'idée d'un fichier "caché" ou "point" a été créée. En conséquence, des programmeurs plus paresseux ont commencé à déposer des fichiers dans le répertoire personnel de tout le monde't. Je n'ai pas beaucoup de choses installées sur la machine que j'utilise pour écrire ceci, mais mon répertoire personnel contient environ une centaine de fichiers point et je ne sais même pas ce que sont la plupart d'entre eux ou s'ils sont encore nécessaires. Chaque évaluation de nom de fichier qui passe par mon répertoire personnel est ralentie par cette boue accumulée.

Je suis presque sûr que le concept de fichier caché était une conséquence involontaire. C'était certainement une erreur.

Combien de bogues et de cycles de CPU gaspillés et de cas de frustration humaine (sans parler de mauvaise conception) ont résulté de ce petit raccourci il y a environ 40 ans ?

Gardez cela à l'esprit la prochaine fois que vous voudrez couper un coin dans votre code.

(Pour ceux qui objectent que les fichiers à points servent à quelque chose, je ne le conteste pas, mais je rétorque que ce sont les fichiers qui servent à quelque chose, pas la convention pour leurs noms. Ils pourraient tout aussi bien être dans /cfg ou /lib, ce que nous avons fait dans le Plan 9, qui n'avait pas de fichiers dot. On peut en tirer des leçons.)

https://plus.google.com/101960720994009339267/posts/R58WgWwN9jp