Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
issue205:micro-ci_micro-la [2024/06/03 07:46] – d52fr | issue205:micro-ci_micro-la [2024/06/12 15:16] (Version actuelle) – andre_domenech |
---|
Le problème de 2038 | Le problème de 2038 |
| |
Bonjour à tous les êtres vivants doués de sensibilité. Venu de quelque part dans le temps et l'espace, je reviens pour vous inspirer ou vous ennuyer. J'espère que c'est le premier cas et non le second. | Bonjour à tous les êtres vivants sensibles. Venu de quelque part dans le temps et l'espace, je reviens pour vous inspirer ou vous ennuyer. J'espère que c'est le premier cas et non le second. |
| |
À la fin de l'article du mois dernier, je disais... | À la fin de l'article du mois dernier, je disais : |
| |
« Si vous êtes assez âgé pour vous souvenir du passage à l'an 2000, vous serez heureux ou effrayé d'apprendre qu'il y en aura un autre en 2038. J'espère que nous serons mieux préparés qu'en 1999. Nous en reparlerons le mois prochain. » | « Si vous êtes assez âgé pour vous souvenir du passage à l'an 2000, vous serez heureux ou effrayé d'apprendre qu'il y en aura un autre en 2038. J'espère que nous serons mieux préparés qu'en 1999. Nous en reparlerons le mois prochain. » |
Once computers started to become popular and part of everyday life, this habit continued. In databases and applications around the world, the habit was maintained. Part of the reason for this was that the cost of memory per kilobyte on disk, ram, and tape (yes, tape) at one point, was over US $100. Think of how much Ram and Hard drive space you have on your home or office computer and then multiply that by 100! When storing date information, those two bytes of memory that hold the ‘19’ would add up and quickly become a stumbling block. It was easy, when needing to print the date on paper or CRT (screen), to just print “19” and then append the two digit year to the end.** | Once computers started to become popular and part of everyday life, this habit continued. In databases and applications around the world, the habit was maintained. Part of the reason for this was that the cost of memory per kilobyte on disk, ram, and tape (yes, tape) at one point, was over US $100. Think of how much Ram and Hard drive space you have on your home or office computer and then multiply that by 100! When storing date information, those two bytes of memory that hold the ‘19’ would add up and quickly become a stumbling block. It was easy, when needing to print the date on paper or CRT (screen), to just print “19” and then append the two digit year to the end.** |
| |
Qu'est-ce que le passage à l'an 2000 ? | De quoi s'agissait le passage à l'an 2000 ? |
| |
Au 20e siècle, lorsqu'on voulait écrire la date, aux États-Unis, on l'écrivait « mm/jj/aa » ou, dans le monde « civilisé », « jj/mm/aa », où « aa » représentait les deux derniers chiffres de l'année. Ainsi, pour inscrire une date sur un chèque, on utilisait « 05/11/64 » ou, dans le monde non civilisé des États-Unis, « 11/05/64 ». Cette pratique remonte à bien avant le début du 20e siècle. (Selon l'une de mes sources secrètes, au début des années 1960, certaines personnes (et certains auteurs de logiciels) n'utilisaient qu'un seul chiffre pour l'année). Ce n'était pas par paresse, mais parce que tout le monde CONNAISSAIT le siècle et qu'il n'y avait pas de raison d'énoncer l'évidence. | Au 20e siècle, lorsqu'on voulait écrire la date, aux États-Unis, on l'écrivait « mm/jj/aa » ou, dans le monde « civilisé », « jj/mm/aa », où « aa » représentait les deux derniers chiffres de l'année. Ainsi, pour inscrire une date sur un chèque, on utilisait « 05/11/64 » ou, dans le monde non civilisé des États-Unis, « 11/05/64 ». Cette pratique remonte à bien avant le début du 20e siècle. (Selon l'une de mes sources secrètes, au début des années 1960, certaines personnes (et certains auteurs de logiciels) n'utilisaient qu'un seul chiffre pour l'année !) Ce n'était pas par paresse, mais parce que tout le monde CONNAISSAIT le siècle et qu'il n'y avait pas de raison d'énoncer l'évidence. |
| |
Lorsque les ordinateurs ont commencé à devenir populaires et à faire partie de la vie quotidienne, cette habitude s'est poursuivie. Dans les bases de données et les applications du monde entier, cette habitude s'est maintenue. Cela s'explique en partie par le fait que le coût de la mémoire par kilo-octet sur disque, mémoire vive et bande (oui, bande) dépassait à un moment donné les 100 dollars américains. Pensez à la quantité de mémoire vive et d'espace disque dont vous disposez sur votre ordinateur personnel ou professionnel, puis multipliez ce chiffre par 100 ! Lors du stockage des informations relatives aux dates, ces deux octets de mémoire qui contiennent le « 19 » s'additionnaient et devenaient rapidement une pierre d'achoppement. Il était facile, lorsqu'il s'agissait d'imprimer la date sur du papier ou sur un écran CRT (écran), d'imprimer simplement « 19 » et d'ajouter les deux chiffres de l'année à la fin. | Lorsque les ordinateurs ont commencé à devenir populaires et à faire partie de la vie quotidienne, cette habitude s'est poursuivie. Dans les bases de données et les applications du monde entier, cette habitude s'est maintenue. Cela s'explique en partie par le fait que le coût de la mémoire par kilo-octet sur disque, mémoire vive et bande (oui, bande) dépassait à un moment donné les 100 dollars américains. Pensez à la quantité de mémoire vive et d'espace disque dont vous disposez sur votre ordinateur personnel ou professionnel, puis multipliez ce chiffre par 100 ! Lors du stockage des informations relatives aux dates, ces deux octets de mémoire qui contiennent le « 19 » s'additionnaient et devenaient rapidement une pierre d'achoppement. Il était facile, lorsqu'il s'agissait d'imprimer la date sur du papier ou sur un CRT (écran), d'imprimer simplement « 19 » et d'ajouter les deux chiffres de l'année à la fin. |
| |
| |
Lorsque décembre 1999 est arrivé, la plupart des entreprises s'étaient occupées du problème, mais il y avait une inquiétude latente : si votre entreprise s'était occupée du problème, combien d'autres ne l'avaient pas fait ? Combien de vos fournisseurs ou de vos clients n'avaient jamais pris le temps de régler le problème ? | Lorsque décembre 1999 est arrivé, la plupart des entreprises s'étaient occupées du problème, mais il y avait une inquiétude latente : si votre entreprise s'était occupée du problème, combien d'autres ne l'avaient pas fait ? Combien de vos fournisseurs ou de vos clients n'avaient jamais pris le temps de régler le problème ? |
| |
Heureusement, il n'y a eu qu'une poignée de situations qui se sont présentées. Cependant, je me souviens d'avoir été assis dans le centre du Texas le 31 décembre 1999, en appel d'urgence avec la société pour laquelle je travaille, dans le Colorado, et d'avoir attendu que le téléphone sonne pour que mon patron me dise qu'il y avait un problème avec notre logiciel parce que nous avions oublié quelque chose qui faisait que notre progiciel affichait la date du 1er janvier 1900. | Heureusement, il n'y a eu qu'une poignée de situations qui se sont présentées. Cependant, je me souviens d'avoir été assis dans le centre du Texas le 31 décembre 1999, en attendant un appel d'urgence de la société pour laquelle je travaille, dans le Colorado, et d'avoir attendu que le téléphone sonne pour que mon patron me dise qu'il y avait un problème avec notre logiciel parce que nous avions oublié quelque chose qui faisait que notre progiciel affichait la date du 1er janvier 1900. |
| |
| |
Alors que Python et Linux (et je suppose Mac et Windows) se sont tous préparés au problème de 2038, MicroPython (au moins jusqu'à la version RPI_PICO_W-20240509-v1.23.0-preview.360.gc3301da17.uf2) ne l'a pas fait. | Alors que Python et Linux (et je suppose Mac et Windows) se sont tous préparés au problème de 2038, MicroPython (au moins jusqu'à la version RPI_PICO_W-20240509-v1.23.0-preview.360.gc3301da17.uf2) ne l'a pas fait. |
| |
L'impact est que lorsque l'heure et la date sur le microcontrôleur atteignent 03:14:08 January 19, 2038 UTC, le système se plante avec une erreur « OverflowError : overflow converting long int to machine word ». | L'impact est que, lorsque l'heure et la date sur le microcontrôleur atteignent 03:14:08 January 19, 2038 UTC, le système se plante avec une erreur « OverflowError : overflow converting long int to machine word ». |
| |
Le code | Le code |
Until next time, as always; stay safe, healthy, positive and creative!** | Until next time, as always; stay safe, healthy, positive and creative!** |
| |
J'ai même rédigé un rapport sur https://github.com/micropython/micropython-lib/issues/842, qui (à ce jour, 10 mai 2024) n'a fait l'objet d'aucun commentaire ou, pour autant que je sache, n'a même pas été examiné. | J'ai même rédigé un rapport sur https://github.com/micropython/micropython-lib/issues/842, qui (à ce jour, le 10 mai 2024) n'a fait l'objet d'aucun commentaire ou, pour autant que je sache, n'a même pas été examiné. |
| |
Conclusion | Conclusion |
| |
Bien qu'une grande partie de moi pense qu'aucun des microcontrôleurs que nous utilisons aujourd'hui ne survivra jusqu'en 2038, je suis presque sûr que quelques-uns le feront, simplement parce qu'ils continueront à fonctionner sans problème jusqu'à cette date. Espérons qu'il n'y aura pas de problème critique avec le code actuel d'ici là. | Bien que je pense en grande partie qu'aucun des microcontrôleurs que nous utilisons aujourd'hui ne survivra jusqu'en 2038, je suis presque sûr que quelques-uns le pourront, simplement parce qu'ils continueront à fonctionner sans problème jusqu'à cette date. Espérons qu'il n'y aura pas de problème critique avec le code actuel d'ici-là. |
| |
Jusqu'à la prochaine fois, comme toujours, restez en sécurité, en bonne santé, positifs et créatifs ! | Jusqu'à la prochaine fois, comme toujours, restez en sécurité, en bonne santé, positifs et créatifs ! |
| |