OBSD4* : wiki

(traduction de l'article “More Falsehoods programmers believe about time” par Noah Sussman - CC By au 20/06/2017)


D'autres fausses croyances des développeurs à-propos du temps

(…)

Toutes ces hypothèses sont fausses :

  1. Les décalages entre deux fuseaux horaires resteront constants.
  2. OK, hormis les bizarreries historiques, les décalages entre deux fuseaux horaires ne changeront pas dans le futur.
  3. Les changements dans les décalages entre deux fuseaux horaires se produiront avec un préavis suffisant.
  4. L'heure d'été a lieu au même moment chaque année.
  5. L'heure d'été a lieu au même moment dans chaque fuseau horaire
  6. L'heure d'été s'ajuste toujours d'une heure
  7. Les mois ont soit 28, 29, 30, ou 31 jours.
  8. Le jour du mois avance toujours de manière contiguë de N vers N+1 ou 1, sans discontinuer.
  9. Un seul calendrier système est utilisé à la fois.
  10. Les années non bissextiles ne contiendront jamais de jour bissextile.
  11. Il sera toujours facile de calculer la durée d'un nombre d'heures et de minutes à partir d'un point particulier du temps.
  12. Le même mois a le même nombre de jours, partout !
  13. Le temps Unix est complètement ignorant de tout excepté des secondes.
  14. Le temps Unix est le nombre de secondes depuis le 1er Janvier 1970.
  15. Le jour précédent Samedi est toujours Vendredi.
  16. Les fuseaux horaires contiguës ne sont pas distant de plus d'une heure (ainsi nous n'avons pas besoin de tester ce qui arrive à l'avionique lors d'un survol de la Ligne de Date Internationale)
  17. Deux fuseaux horaires qui différent seront différents d'un nombre entier de demi-heures.
  18. OK, de quart d'heures.
  19. OK, de secondes, mais ce sera une différence constante si nous ignorons l'heure d'été.
  20. Si vous créez deux objets de date l'un à côté de l'autre, ils représenteront le même temps (un fantastique générateur d'Heisenbug).
  21. Vous pouvez vous attendre à ce que l'horloge atteigne exactement HH:MM:SS en échantillonnant une fois par seconde.
  22. Si un processus s'exécute pendant n secondes et puis se termine, il se sera passé approximativement n seconds par l'horloge système à la fin de l'exécution.
  23. Les semaines commencent un Lundi.
  24. Les jours commencent le matin.
  25. Les jours fériés contiennent un nombre entier de jours.
  26. Les fins de semaine consistent en Samedi et Dimanche.
  27. Il est possible d'établir un ordre complet d'horodatage qui est utile en-dehors de votre système.
  28. Le décalage de l'heure locale (depuis UTC) ne changera pas durant les heures de bureau.
  29. Thread.sleep(1000) dort durant 1000 millisecondes
  30. Thread.sleep(1000) dort durant un temps >= 1000 millisecondes.
  31. Il y a 60 secondes dans chaque minute
  32. GMT et UTC sont les mêmes fuseaux horaires.
  33. La Grande-Bretagne utilise GMT.
  34. Le temps va toujours de l'avant.
  35. La différence entre le temps actuel et une semaine par rapport à l'heure actuelle est toujours de 7 * 86400 secondes.
  36. La différence entre deux horodatages est une mesure précise du temps écoulée entre les deux.
  37. 24:12:34 est une heure invalide.
  38. Chaque nombre entier est une année théorique possible.
  39. Si vous affichez une date, l'heure affichée a la même seconde que l'heure stockée.
  40. Ou la même année.
  41. Mais au moins la différence numérique entre l'année affichée et celle enregistrée sera au minimum de 2.
  42. Si vous avez une date dans le format correct YYYY-MM-DD, l'année est constituée de quatre caractères.
  43. Si vous fusionnez deux dates, en prenant le mois de la première et le jour ou l'année de la seconde, vous aurez une date valide.
  44. Mais cela fonctionnera, si les deux années sont des années bissextiles.
  45. Si vous prenez un algorithme publié par le W3C pour le calcul de durées de dates, cela fonctionnera dans tous les cas.
  46. La biblothèque standard supporte les années négatives et les années au-delà de 10000.
  47. Les fuseaux horaires différent toujours d'une heure pleine.
  48. Si vous convertissez un horodatage avec une précision de la milliseconde vers une date et une heure avec la précision de la seconde, vous pouvez ignorez les millisecondes.
  49. Mais vous pouvez ignorez les millisecondes, s'il y en a moins que 0.5
  50. Les années à deux chiffres doivent être situées entre 1900 et 2099
  51. Si vous analysez une date et une heure, vous pouvez lire les nombres caractère par caractère, sans avoir besoin de revenir en arrière.
  52. Mais si vous imprimez une date et une heure, vous pouvez écrire les nombres caractère par caractère, sans avoir besoin de revenir en arrière.
  53. Vous n'aurez jamais besoin d'analyser un format tel que —12Z ou P12Y34M56DT78H90M12.345S
  54. Il y a seulement 24 fuseaux horaires.
  55. Les fuseaux horaires sont toujours a des heures complètes depuis UTC.
  56. L'heure d'été (DST) commence et termine à la même date partout.
  57. L'heure d'été est toujours avancée d'une heure.
  58. Lire l'horloge d'un client et la comparer avec UTC est une bonne manière de déterminer leur fuseau horaire.
  59. La pile logicielle essaiera ou n'essaiera pas automatiquement d'ajuster le fuseau horaire ou l'heure d'été.
  60. Mon logiciel est seulement utilisé en interne ou localement, aussi je n'ai pas besoin de me soucier des fuseaux horaires.
  61. Ma pile logicielle la gérera sans que j'ai quoique ce soit de spécial à faire.
  62. Je peux facilement maintenir par moi-même une liste de fuseau horaire.
  63. Toutes les mesures de temps d'une horloge donnée se feront dans le même cadre de référence.
  64. Les années ont 365 ou 366 jours.
  65. Chaque date calendaire est suivie de la suivante dans l'ordre, sans saut.
  66. Une date ou une heure donnée sans ambiguïté identifie un moment unique.
  67. Les années bissextiles arrivent tous les 4 ans.
  68. Vous pouvez déterminer le fuseau horaire depuis l'état ou la province.
  69. Vous pouvez déterminer le fuseau horaire depuis la cité ou la ville.
  70. Le temps passe à la même vitesse du haut d'une montagne et en bas d'une vallée.
  71. Une heure est aussi longue que la suivante dans tous les systèmes de temps.
  72. Vous pouvez calculer quand les secondes intercalaires seront ajoutées.
  73. La précision d'un type de donnée retournée par une fonction getCurrentTime() est la même que la précision de la fonction.
  74. Deux appels subséquents à la fonction getCurrentTime() retourneront des résultats distincts.
  75. Le second de deux appels subséquents à la fonction getCurrentTime() aura un résultat plus grand.
  76. Le logiciel ne fonctionnera jamais sur un vaisseau spatial en orbite d'un trou noir.

Sérieusement ? Des trous noirs ?

Hé, si Bruce Sterling dit que mon logiciel a besoin d'être résilient contre les distorsions du temps causé par les trous noirs, je vais être attentif à ce propos.


Le reste n'est volontairement pas traduit du fait de remerciements de l'auteur envers plusieurs personnes… (à traduire ?)