C'est ainsi que la conscience publique a perçu l'erreur de 2000. Par exemple, un politicien britannique du Brexit a déclaré que les craintes concernant l'impact économique du rôle du Brexit étaient similaires à la panique du bogue de l'an 2000.
L'erreur du millénaire a été oubliée presque immédiatement après l'an 2000. Même dans les publications non essentielles, ils ont discuté du bogue de l'an 2000 pendant des mois, mais déjà dans les premiers jours de la nouvelle année, l'attention portée au sujet s'est évanouie. Le changement de nombre fascinant de 1999 à 2000 n'a pas créé les désastres si effrayés. Les sceptiques ont annoncé que l'argent était gaspillé pour corriger le bogue.
Ce qui se passe dans les coulisses est plus important que l'opinion de non-spécialistes. Le degré de panique du public a vraiment dépassé le niveau que la situation méritait. Le véritable danger de pannes informatiques dans le monde au 1er janvier 2000 existait et nécessitait l'intervention de développeurs de logiciels. Des départements entiers de programmeurs résolvent le problème de l'an 2000 depuis des années.
Source de problèmes
Dans la vie de tous les jours, nous n'écrivons pas les deux premiers personnages de l'année - ils sont presque toujours les mêmes. Une logique similaire a dicté la règle d'économie d'espace sur les disques des premiers ordinateurs: si le siècle n'est pas important, il peut être écarté. Au lieu de huit chiffres, la date est écrite en six. Les économies semblent maigres, mais s'il y a des millions de dates, alors la facture passe à des mégaoctets de mémoire, dont les premiers ordinateurs en avaient peu.
Le livre de 1958 "Cartes perforées leurs applications à la science et à l'industrie" traite principalement des lecteurs de cartes perforées électromécaniques. Faire une bibliographie sur une carte perforée IBM standard. Les colonnes 15 et 16 indiquent les deux derniers chiffres de l'année de publication. Dans un autre passage, le livre motivesélection d'un format d'année courte pour que la plupart des entrées soient destinées au 20e siècle.
La personne est née le 1er janvier XX20 et est décédée le 2 janvier XX20. A-t-il vécu une vie épanouie ou est-il mort subitement après avoir accouché? Il est impossible d'établir cela sans contexte, nous allons donc demander à nouveau si un foie long inhabituel ou un nourrisson est décédé. De même, sans préciser le siècle, l'ordinateur ne peut pas distinguer 2000 de 1900. C'est l'essence même de l'erreur de l'an 2000.
Une illustration simple: la date d'expiration sur une carte bancaire est indiquée par MM / AA, et certains des algorithmes les plus simples des systèmes de paiement vérifient l'expiration par comparaison arithmétique des nombres YYMM. Un contre-exemple pour un tel algorithme est toute carte valide après 2000. En 1999, un algorithme naïf invalidera une carte avec une date d'expiration du 12/01 jusqu'en décembre 2001.
Il semble étrange que la mauvaise habitude de raccourcir le siècle ait survécu jusqu'à la fin des années 90. On dit souvent que la source des problèmes est l'héritage terry des premiers ordinateurs et langages de programmation, qui, pour une raison stupide, ont fonctionné sans changement pendant près de 40 ans. Ce n'est que partiellement vrai: l'aube de l'ère informatique a d'abord établi les traditions de développement qui subsistent encore. Par exemple, l'environnement de développement moderne est plus large que 80 colonnes de cartes perforées, mais la limite de 80 caractères par ligne de code a été supprimée de Linux il y a seulement trois mois.
Même à la fin des années 70, les caractéristiques des ordinateurs en entreprise restaient modestes. Dans le même temps, ils étaient déjà tenus d'avoir de réelles applications en automatisation. Un mainframe avec un processeur de 0,9 million d'opérations par seconde, 1,5 Mio de RAM et 2 Gio de stockage sur disque a dû en quelque sorte comprimer 20 000 transactions par heure de 300 à 500 utilisateurs simultanés. Et ces machines informatiques faibles coûtent des centaines de milliers, des millions de dollars. Seulement en 1990, un gigaoctet de données sur un disque dur est tombé en dessous de 10 000 dollars.
Et pourtant, toutes les entreprises ne peuvent pas se permettre les familles phares S / 360 , S / 370 ou S / 390 . Pour les petits clients, IBM a développé des ordinateurs S / 3 , S / 32 ,S / 34 , S / 36 , S / 38 , AS / 400 avec des caractéristiques beaucoup plus modestes. La capacité maximale du disque dur d'un ordinateur professionnel IBM System / 32 est de 13 mégaoctets, dans lesquels vous devez insérer non seulement du code, mais également des données.
Ordinateur mono-utilisateur IBM System / 32, 1975. La machine avec un écran de 6 lignes est conçue pour les tâches de niveau comptabilité. Photo: Musée d'histoire de l'informatique .
Dans de telles circonstances, le gonflement scandaleux du niveau XML ou JSON ne peut tout simplement pas apparaître. Quel genre de formats de texte existe-t-il - le projet de loi est allé à chaque octet.
De même, les dates étaient écrites en Cobol, l'un des plus anciens langages de programmation d'applications métier. Ici, AA représente deux chiffres de l'année, MM est le numéro du mois, JJ est le jour.
01 EMP-HIRE-DATE.
03 EMP-HIRE-DATE-YY PIC 99.
03 EMP-HIRE-DATE-MM PIC 99.
03 EMP-HIRE-DATE-DD PIC 99.
Ici, la date est représentée par 3 octets, 4 bits pour chaque chiffre. Cobol est si ancien que les nombres pairs qu'il contient sont décimaux (sauf indication contraire, L' UTILISATION EST INFORMATIQUE ).
Il n'y a pas de champ de date standardisé dans Cobol, mais les implémentations auto-écrites étaient toujours guidées par quelque chose. Le code
ACCEPT todays-date FROM DATE
renvoie la date système actuelle sous la forme d'un numéro AAMMJJ à 6 chiffres. Si vous le comparez avec le nombre de la présentation ci-dessus, il est facile de comprendre si ce jour est venu ou non. La fonction CENTURY-DATE, qui a renvoyé la date sous forme de 8 chiffres AAAAMMJJ avec le siècle, apparaîtra dans les normes linguistiques ultérieures .
Il est pratique de trier par date au format AAMMJJ: la comparaison de ce qui s'est passé auparavant est réduite à une opération arithmétique.
Avec l'avènement du nouveau siècle, le tri sera interrompu: l'année 00 doit être postérieure à 99, et non l'inverse. Le nombre 000101 sera inférieur à 991231, c'est-à-dire qu'au 1er janvier 2000, le programme dira que le 31 décembre 1999 n'est pas encore arrivé. Une tentative de calculer la période entre ces dates renverra presque 100 ans, pas 1 jour.
Même lors de la mise à niveau d'anciens systèmes, le format de la date n'a pas été modifié pour maintenir la compatibilité avec les bases de données existantes et d'autres composants. Le programmeur ne pensait pas que son logiciel serait utilisé dans 20 à 30 ans. Pour lui, le "bug de l'an 2000" semble encore plus lointain que pour nous "le débordement de 32 bits temps Unix". Ce dernier se produira en 2038 et a été corrigé sous Linux pour les systèmes 32 bits uniquement depuis le noyau 5.6. Mais pour une raison quelconque, nous ne sommes pas pressés de mettre à jour les anciens routeurs.
Une partie du «blâme» résidait dans la prolifération du code binaire-décimal ( BCD ), dans lequel chaque chiffre du nombre décimal sera écrit sur 4 bits. Le code binaire-décimal est dû à la popularité du secteur bancaire en raison de la rapidité et de la prévisibilité lors de l'arrondissement des nombres - il est impossible dans une situation où la
0.1 + 0.2
réponse est 0,30000000000000004 . Les comptables et les financiers deviennent un peu nerveux lorsque des artefacts arrondis de nombres à virgule flottante binaire apparaissent. Par conséquent, les processeurs pour les applications d'entreprise prenaient en charge le traitement BCD natif et il était moins nécessaire de traduire les nombres entre les formes de notation.
Une date à 6 chiffres tiendra sur 3 octets. Bien sûr, il est plus sûr de convertir la date en un seul entier binaire. Mais la conversion nécessitera des opérations mathématiques complexes: ce sont de longues boucles ou des tables. C'est plus difficile que de convertir le BCD en code décimal en temps linéaire, parfois même avec une seule instruction machine fournie par le fabricant de la puce. BCD ajoute seulement 1 à 2 octets supplémentaires à l'enregistrement de date, mais élimine 5 à 10 instructions d'assemblage, qui sont difficiles à comprendre et facilement confondues.
Dans les années quatre-vingt, les programmeurs du monde des applications professionnelles de la taille d'un placard sont passés aux ordinateurs personnels de bureau, mais ont conservé la mentalité. Sur les premiers ordinateurs personnels 8 et 16 bits, ils ont été accueillis par le support matériel BCD familier.
Enfin, certains des problèmes liés au calendrier. Si 2000 est une année bissextile (elle est divisible par 400), alors 1900 ne l'est pas. En vrai 2000, c'est le 29 février. Si l'ordinateur calcule qu'il est 1900 dans la cour, après le 28 février, le 1er mars viendra immédiatement.
Avertissements précoces
L'attention du public sur l'erreur du tournant du siècle a été attirée par le programmeur canadien Peter de Jager. En 1978, lui, alors employé d'IBM, a remarqué qu'un ordinateur peut prendre deux zéros pour 1900. La direction a rejeté la plainte de Peter: pourquoi penser à un problème qui n'est pas pertinent dans les 22 prochaines années? D'ici l'an 2000, l'erreur sera définitivement corrigée, lui a-t-on dit.
En 1989, la situation n'avait pas changé. À l'époque, de Jager travaillait pour une entreprise qui déployait des systèmes de bureau professionnels. Le 1er janvier 1990, le système "tomba malade": en annexe un chiffre était attribué pour l'année. Par souci d'expérience, Peter, qui se souvenait à nouveau d'environ 2000, a décalé l'heure de son ordinateur personnel de quelques minutes jusqu'à minuit le 31 décembre 1999. Dix minutes plus tard, la date est passée à 1984.
En 1993, de Jaeger a écrit un article de trois pages pour Computerworld qui a tout déclenché. Le titre "Doomsday 2000" a mis l'an 2000 sous les projecteurs. Au début, les descriptions colorées de la catastrophe imminente n'ont pas été prises au sérieux, mais à l'approche de l'an 2000, de Jager a acquis une réputation d'expert en armageddon numérique. Depuis, Peter a traité exclusivement du problème des dates.
Couverture du magazine Time, 18 janvier 1999
Cependant, les bizarreries du traitement de la date dans l'industrie ont été remarquées sans aucun article. Martin Thomas, qui dirigeait l'équipe de correction des bogues de l'an 2000 chez Deloitte Consulting, a décrit comment une chaîne d'épicerie britannique a reçu une cargaison de conserves à la fin des années 1980. Le système comptable a adopté une date d'expiration de 01/00 pour janvier 1900 et a exigé que l'illiquide vieux de 80 ans soit éliminé.
Au milieu de 1997, Chrysler a décalé toutes les heures de l'usine d'assemblage de Sterling Heights au 31 décembre 1999 pour un essai, ce qui a apporté beaucoup de surprises. Il était impossible de payer le salaire. Le système de sécurité s'est simplement éteint: personne ne pouvait entrer ou sortir.
À la fin de la décennie, les entreprises ont des équipes d'ingénieurs qui analysent et corrigent uniquement le bogue de l'an 2000. Le problème a même été porté au niveau interétatique: en 1998, au sommet du G8, tous les participants se sont mis d' accord sur le danger d'un bug. Le 19 octobre 1998, le président des États-Unis adopte la loi sur la divulgation d'informations et de préparation à l' an 2000 . En Russie, la question de la compatibilité avec l'an 2000 a été traitée par le Comité d'État pour les communications et l'informatisation et une commission gouvernementale spéciale.
Pas sans panique. La popularité des scénarios apocalyptiques était présente dans l'esprit américain tout au long des années 90. Les journalistes et les écrivains ont commencé avec enthousiasme à brosser un tableau du Doomsday numérique. Même les grands médias réputésrecommandé de faire le plein d'eau et de nourriture .
Des post-dossiers de l'an 2000 avec des éléments de conseils pour une femme au foyer La
littérature sur le bogue de l' an 2000 allait des guides de survie détaillés aux romans de fiction sur le monde après un crash informatique mondial. Les œuvres fictives ont peint un avenir monstrueux. Le 1er janvier, des précipitations tombent du ciel sous la forme d'avions de ligne, et dans chaque centrale nucléaire, il y a un Tchernobyl local. Les appareils ménagers explosent, le système financier mondial s'effondre, les réseaux électriques et les téléphones sont coupés. Puis, à partir de ces ingrédients, un scénario est construit pour la décomposition dépressive de la civilisation en une société semi-féodale affamée avec un crime organisé violent endémique.
Le court métrage
mettant en vedette Leonard Nimoy exploite le thème populaire de la peur de l'erreur de l'an 2000. Les manuels du survivaliste détaillaient comment échapper au déclin de la civilisation. Ils ont peu parlé d'essayer de corriger le bogue, et peu de discussions sur la théorie derrière le bogue 2000. Au lieu de cela, les livres sont allés directement dans des histoires d'horreur et des conseils pour le monde après la fermeture des banques et le chômage endémique. Quelqu'un a simplement conseillé d'acheter de l'or. D'autres ont passé des pages à répertorier les articles et les ressources qui devaient être stockés d'urgence.
Cependant, comme le rappellent les employés des librairies, cette littérature n'était pas populaire et a disparu des rayons après le début de 2000.
Les kits de survie de l'an 2000 - essayés par des hommes d'affaires entreprenants - avaient au moins une valeur pratique. Les rations sèches conserveront leur valeur nutritionnelle quel que soit le format des données informatiques, même si elles sont vendues à un prix exorbitant, essayant de surfer sur la vague de l'hystérie.
2000 famille prête pour l'apocalypse du Colorado
Types de correctifs
L'ajout de deux nombres résout le problème pendant 8 000 ans.
01 EMP-HIRE-DATE.
03 EMP-HIRE-DATE-YR.
05 EMP-HIRE-DATE-CC PIC 99.
05 EMP-HIRE-DATE-YY PIC 99.
03 EMP-HIRE-DATE-MM PIC 99.
03 EMP-HIRE-DATE-DD PIC 99.
Mais la durée d'enregistrement en Cobol est limitée. Si vous devez insérer deux octets au centre, vous devrez réécrire le fichier entier à partir de zéro dans un nouveau et remplacer l'original par la copie corrigée. Le code d'application qui traite ce fichier devra également être ajusté. Le processus promet de longs tests et des arrêts. Il n'est pas toujours possible que la base de données ralentisse ainsi.
Une mise à jour relativement petite du code du programme n'est pas si gracieuse et n'ajoute que quelques décennies de vie, mais prend moins de temps. Même si l'année est inférieure à 50, c'est déjà un nouveau XXIe siècle.
IF EMP-HIRE-DATE-YY > 50
MOVE 19 TO PRINT-HIRE-DATE-CC
ELSE
MOVE 20 TO PRINT-HIRE-DATE-CC.
Toutes les données ne supposent pas que les dates antérieures à 1950 ou après 2050 ne sont pas possibles. Dans certains cas, ces «béquilles» prolongent la durée de vie de seulement 20 ans. Il s'est avéré en janvier: quelqu'un a reçu des factures de 1920, certains logiciels ne fonctionnaient pas.
Un reçu erroné est arrivé début janvier 2020 et dans
certains cas, l'an 2000 n'a pas été corrigé avant 10000, mais pendant 9 siècles. Si 3 octets de la date ont été stockés dans un nombre signé de 4 bits, un chiffre rentrera dans les demi-octets inutilisés pour signer le siècle. Les programmes avec ce correctif sont affectés par l'année 2100 ou l'année 2900.
Une date peut être représentée comme le nombre de jours écoulés depuis un moment dans le passé. Le nombre de jours est enregistré dans un nombre binaire de 14 bits. Vous pouvez donc imaginer 16 384 années différentes. Des restrictions spécifiques sont fixées par le choix de l'époque.
Parfois, l'année n'était pas du tout corrigée. Le format TLE du North American Aerospace Defense Command décrit les objets en orbite terrestre. Jusqu'à présent, seuls les 2 derniers caractères de l'année y sont indiqués. Il est curieux que la situation puisse être indirectement influencée par les sociétés Internet par satellite, qui envisagent de lancer des dizaines de milliers de véhicules en orbite. TLE est conçu pour un nombre à cinq chiffres d'objets, par conséquent, l'épuisement du pool de nombres nécessitera une révision de l'ensemble du format de données.
Les détails des correctifs du matériel militaire sont naturellement gardés secrets. Le plus souvent, les médias ont publié des rapports faisant état d'un test de préparation à l'an 2000 réussi à l'aide de simulateurs et d'un environnement de test spécial. Des tests de combat à part entière ont parfois lieu. Le 1er mai 1999, la marine américaine a lancé le missile de croisière Tomahawk. La veille du lancement, l'heure de la fusée a été fixée au 29 février 2000, afin de vérifier le comportement des années bissextiles en même temps.
Autocollant concis de l'état de préparation de l'équipement d'ici 2000
Mais le retour à grande échelle des programmeurs vétérans de la retraite ne s'est pas produit. Au lieu de la conscription attendue de légions de kobolistes, les entreprises étaient souvent limitées à des travailleurs à plein temps ou à des solutions externalisées. En prévision de 2000, les entreprises américaines ont investi des milliards dans la main-d'œuvre à faible coût d'Infosys, Wipro et TCS. Une conséquence inattendue de l'an 2000 a été la vulgarisation des entreprises indiennes. Dans les années à venir, l'externalisation indienne deviendra la norme.
Life after 23:59:59 31 décembre 1999
Seuls 7% des Américains étaient très préoccupés par l'erreur de l'an 2000. Un sondage réalisé en décembre 1999 a montré que seule une personne sur cinq prévoyait de s'approvisionner en espèces. Quelqu'un avait peur de voler le dernier jour de l'année. Peter de Jager dit qu'il a volé le 31 décembre pour montrer la sécurité des patchs.
La matinée du 1er janvier a été "désagréable" surprise. Il n'y a pas eu de coupures de courant, les transactions financières se déroulaient toujours régulièrement, un bug informatique n'a pas lancé d'ICBM. Le comptage des déchets a commencé immédiatement. Il est difficile de nommer le montant exact, bien que de Jager lui-même estime les coûts mondiaux entre 300 et 400 milliards de dollars. Certaines banques, a-t-il dit, ont dépensé jusqu'à 100 millions de dollars.
La critique avait encore un fondement. Les commissions et les experts l'ont exagéré et ont promis l'irréalisable.
Le monde n'est pas tombé à cause de microcircuits incorrigibles dans lesquels l'année est représentée par deux caractères. Parmi eux se trouvent les puces BIOS de certains ordinateurs et de nombreux microcontrôleurs. Il y en a trop, tout ne peut être remplacé, raconte l'histoire d'horreur. En fait, les experts de l'an 2000 n'avaient généralement aucune expérience du développement de matériel - au mieux, ils comprenaient les logiciels. Ils ne pensaient pas que la traduction et la comparaison des dates ne se produisaient tout simplement pas sur ces microcircuits.
Les affiches de l'an 2000 de la Geek Squad, dans le style des films des années 50 B, devaient être affichées aux arrêts de bus, mais il n'y avait tout simplement pas de marketing supplémentaire requis. Photo: Best Buy .
Un autre scénario effrayant impliquait le développement d'une cascade de pannes se propageant d'un programme à l'autre et s'étendant aux composants prêts pour l'an 2000. En réalité, si un sous-système renvoie par erreur l'année 1900, l'autre, interagissant avec lui, passera l'année 1900 plus loin, ou donnera une erreur, ou marquera l'année incorrecte.
Il est facile d'imaginer comment les avions, prêts pour l'an 2000 et vulnérables au bogue de 2000, en raison d'un jour bissextile non enregistré le 29 février 2000, reçoivent l'autorisation d'un ordinateur pour atterrir sur la même voie. Mais dans une application Web, une entrée de base de données incorrecte ne commencera pas à parcourir le système comme un virus.
Le profane n'a ressenti ni la préparation au bogue, ni la nuit blanche du début du siècle pour les équipes de support technique, ni les conséquences de systèmes non corrigés. Les témoins oculaires et les dirigeants des équipes d'élimination de l'an 2000 se souviennent de petits problèmes, mais rien de catastrophique ni même de particulièrement intéressant. Certains de ceux impliqués dans la correction du bogue attribuent le faible nombre de rapports de plantage aux entreprises qui ne veulent tout simplement pas annoncer leurs propres échecs.
Certains des problèmes ont encore filtré dans les médias. Voici quelques plantages informatiques. Aucun d'entre eux n'a menacé la vie humaine.
- . , . . . .
- - . Y2K, .
- . CyberCash. — . Apple. 700 .
- . , . Golden 1 Credit Union 31 1999 .
- Les éditeurs de logiciels de bureau n'ont souvent mis à jour que des versions plus récentes. Par exemple, Access version 2.0 (1994) et plus ancienne ne gère pas correctement les dates après 2000. Ce dernier était désagréable pour les utilisateurs de Windows 3.0, dans lesquels les nouvelles versions d'Access étaient moins bonnes. En revanche, ce système d'exploitation était déjà hors d'usage à l'époque.
Outre des problèmes mineurs, les médias ont rapporté des cas curieux.
- Le premier nouveau-né en 2000 au Danemark était enregistré comme âgé de 100 ans.
- Un client de location de vidéo à New York a rendu la cassette de la fille du général à temps, mais a été condamné à une amende de 91 250 $ pour un retard d'un siècle. Le bogue a été corrigé immédiatement.
- Le virement de 6 millions de dollars daté du 30 décembre 1899 est arrivé sur le compte bancaire d'un résident allemand. L'histoire est silencieuse sur combien de temps il a tenu en tant que millionnaire.
- Le système policier, affecté par un bug de 2000, a transformé les adolescents en personnes âgées. Les rapports sur la criminalité faisaient état du harcèlement sexuel d'une femme de 83 ans par un homme de 80 ans et deux adolescents disparus âgés de 83 et 84 ans.
Il y a au moins une erreur médicale grave due à un bogue de l'an 2000. Dans l'une des régions d'Angleterre, quelques mois après l'an 2000, on a noté un nombre inhabituellement élevé d'enfants nés avec le syndrome de Down. Le programme d'évaluation a estimé de manière incorrecte l'âge de 154 femmes enceintes et identifié de manière incorrecte le groupe à risque pour les études ultérieures d'amyocentèse. Au total, les mères dont le groupe à faible risque était mal défini avaient 4 enfants atteints du syndrome de Down. En raison d'une évaluation inexacte du risque élevé, 2 avortements ont été pratiqués par erreur.
Dans le nouveau millénaire, le monde a immédiatement oublié le bogue informatique de la gestion des dates. Seuls les autocollants «Y2K Compliant» lui rappelaient, qui étaient collés sur l'équipement prêt pour le nouveau siècle.
Extérieurement, l'erreur de 2000 diffère peu de la modification de l'affichage des bureaux de change de quatre à cinq caractères lorsque le rouble baisse. Ajuster la date à quatre chiffres ressemble à une petite solution, bien que coûteuse, à l'échelle de l'économie.
Des centaines de milliards de dollars ont été dépensés pour corriger l'erreur. Sans les conséquences désastreuses évidentes, l'effort de mise à jour de l'an 2000 semblait redondant et inutilement coûteux. Les spécialistes ont prétendu que le problème existait et était résolu. Certains étaient simplement satisfaits de l'attention publique accordée aux infrastructures essentielles et aux mises à niveau.
Des événements à la fin des signes se sont produits et continueront de se produire à l'avenir. Le passage des réseaux IPv4 aux réseaux IPv6 vise à débarrasser le monde d'une pénurie d'adresses Internet. Un jour, un autre chiffre sera ajouté aux numéros de téléphone. Le 19 janvier 2038 pour les systèmes Unix non corrigés sera soit le 1er janvier 1970, soit, en raison de l'utilisation d'une variable signée, le 13 décembre 1901.
Tout projet d'information a des limites. Mais cela ne doit pas être craint. Si le système va au-delà de ses hypothèses inhérentes, cela indique seulement sa popularité non planifiée.
Basé sur des documents de Stack Exchange , Stack Overflow , US Department of Defense Archives ( 1 , 2 ), CelesTrak ( 1 , 2 ),Popular Mechanics , blog de Chris Weston , How-To Geek , Mental Floss , BBC , cs.swarthmore.edu , Fast Company , Inc.com , Computerworld , Cnet and Slate .