Nous savons tous comment la discussion sur le meilleur système d'exploitation a provoqué de nombreuses guerres de flammes. Votre objectif est maintenant de fournir une "preuve" décisive que votre système d'exploitation préféré est meilleur ... ah, non, beaucoup mieux, de fournir une "preuve" décisive qu'un autre système d'exploitation est mauvais.
La tâche: écrire un programme qui effectue certains calculs et qui fonctionne correctement sur au moins un système d'exploitation et incorrectement sur au moins un autre.
- le programme devrait faire au moins quelques calculs, donc il doit lire une entrée simple (de préférence sur l'entrée standard, ou si à partir de fichiers si vous le souhaitez, mais une mauvaise utilisation de petit endian / big endian serait non seulement bon marché, mais aussi évidente) , et fournir une sortie en fonction de l'entrée. Les calculs doivent être significatifs et justifiés, par exemple pour résoudre une vie réelle ou un problème mathématique.
- vous devez spécifier les deux systèmes d'exploitation, en indiquant sur lequel il fonctionnera correctement et sur lequel il ne fonctionnera pas. Les deux systèmes d'exploitation devraient être bien connus et à peu près au même moment (donc pas de DOS 1.0 par rapport à un système d'exploitation moderne). Il est conseillé de fournir une brève description de la cause de la différence (surtout si vous pensez que beaucoup de gens ne s'en rendraient pas compte) dans les balises de spoiler.
comme ça
la cause de la différence doit être subtile, donc non
#ifdef _WIN32
ou similaire, s'il vous plaît! N'oubliez pas que votre objectif est de «prouver» que ce système spécifique est mauvais, afin que les gens ne puissent pas (immédiatement) repérer votre astuce!s'il y a une partie très étrange ou très inhabituelle dans votre code, vous devez la justifier dans les commentaires pourquoi elle est là. Bien sûr, cette "justification" peut / sera un gros mensonge.
Notation:
Ce n'est pas un golf! Le code doit être bien organisé et simple. N'oubliez pas que votre objectif est d'y cacher un bug afin que les gens ne le soupçonnent pas. Plus le code est simple, moins il est suspect.
Le gagnant sera décidé par vote. Le plus grand nombre de votes environ 10 jours après la première soumission valide gagne. Généralement, les réponses où le code est facile à lire et à comprendre, mais le bogue est bien caché, et même s'il est découvert, peut être attribué à une erreur plutôt qu'à de la malveillance, doit être votée. De même, cela devrait valoir beaucoup plus si le bogue provoque juste un résultat incorrect, plutôt que de simplement provoquer le plantage du programme ou de ne rien faire.
Comme d'habitude, je me réserve le droit de choisir une réponse en tant que gagnante si elle n'est pas plus de 10% ou 1 point en dessous de celle avec le plus de votes, sur n'importe quel critère subjectif.
make (1)
fonctionne correctement sur pratiquement toutes les boîtes Unix et incorrectement certaines boîtes Windows. Pas à cause des OS, mais à cause des systèmes de fichiers. Tout système de fichiers qui conserve les dates de modification des fichiers avec une faible précision peut échouermake
correctement sur une machine rapide.