Cherchiez-vous les liens sur les systèmes en temps réel (STR)?
Quelques raccourcis :
Vous trouverez ici quelques liens portant sur le temps pris dans un sens relativement large. Ce thème recoupe mes travaux et plusieurs de mes cours, alors j'accumule les liens depuis un certain temps (!) sur le sujet. Cette page regroupe quelques-uns d'entre eux, et n'est absolument pas exhaustive.
Que veut-on dire par « temps »?
Le bogue de l'an 2038 :
Ce qu'un programmeur devrait savoir sur le temps, de l'avis d'Emil Mikulic en 2006 mais mis à jour régulièrement : http://unix4lyfe.org/time/?v=1
Quelques croyances erronées de programmeurs à propos du temps, colligées par Noah Sussman en 2012 :
Quelques définitions techniques, utiles pour des programmeuses et des programmeurs :
Modifier le passé dans un système ouvert, texte de Roly Perera en 2012 : http://dynamicaspects.org/blog/2012/08/15/changing-the-past-in-open-systems/
Texte fondamental sur la question de la synchronisation et du temps, par Leslie Lamport en 1978 : http://research.microsoft.com/users/lamport/pubs/time-clocks.pdf
Comprendre les horloges vectorielles (Vector Clocks) :
Le temps sous Microsoft Windows, de l'avis de Joseph M. Newcomer en 2011 : http://www.flounder.com/time.htm
Réaliser des tests où existe une dépendance envers le temps avec C#, un texte de Craig Gidney en 2013 : http://twistedoakstudios.com/blog/Post3516_rule-of-thumb-ask-for-the-clock
Concept novateur et franchement intéressant, celui du temps pris en charge (Managed Time), analogue au code pris en charge (Managed Code) comme on en voit en Java ou dans les langages .NET, avec le langage Glitch : Langages-programmation--Liens.html#langage_Glitch
Textes de Raymond Chen :
Combien de jours y a-t-il dans un mois? Formule proposée par Curtis McEnroe en 2014 : http://cmcenroe.me/2014/12/05/days-in-month-formula.html
Le temps et JavaScript :
Temps et C++ :
Bogues résultant d'une mauvaise gestion des années bissextiles, répertoriés par Matt Johnson en 2016 : http://codeofmatt.com/2016/02/29/list-of-2016-leap-day-bugs/
Texte de 2016 par Ayende Rahien, expliquant le fonctionnement des minuteries dans la plateforme .NET : https://ayende.com/blog/174850/how-timers-works-in-the-clr
Bien comprendre UTC et son impact sur la programmation, un texte de Michał Dymel en 2017 : https://devblog.dymel.pl/2017/03/30/operating-on-time-utc/
La classe java.util.Date, un très mauvais type de données, expliquée par Jon Skeet en 2017 : https://codeblog.jonskeet.uk/2017/04/23/all-about-java-util-date/
Formater le temps, en consommer une représentation et en publier une représentation ne sont pas de minces tâches. Par exemple :
Format d'une date dans le monde, en 2015, par https://twitter.com/alerossini... Rien n'est simple
Quelques liens à cet effet :
Pour votre bon plaisir :
Qu'est-ce que UTC, le référentiel « universel » sur Terre? Texte de John D. Cook en 2010 : http://www.johndcook.com/blog/2010/01/28/universal-time/
Les fuseaux horaires et les programmeuses/ les programmeurs ne font pas toujours bon ménage : http://i.imgur.com/2DWKl.jpg
Les tergiversations autour de la fermeture (ou non) d'une base de données de fuseaux horaires, rapportées par Stephen Colebourne en 2011 : http://blog.joda.org/2011/10/today-time-zone-database-was-closed.html
Illustration du passage du temps, par Randall Munroe en 2014 (puis en continu!) : http://xkcd.com/1335/
Mieux vaut faire attention avec nos présuppositions quant aux fuseaux horaires et aux changements d'heure. Texte d'Eric Lippert en 2014 : http://ericlippert.com/2014/04/14/standard-and-daylight-are-different/
La représentation étrange des fuseaux horaires de la bibliothèque BCL de la plateforme .NET, par Jon Skeet en 2014 : http://codeblog.jonskeet.uk/2014/09/30/the-mysteries-of-bcl-time-zone-data/
Quel serait l'impact d'une abolition des fuseaux horaires? Exploration de cette question dans un texte de 2015 : http://qntm.org/abolish
Quelques croyances erronnées qu'entretiennent les programmeuses et les programmeurs à propos des fuseaux horaires, colligées par Lau Taarnskov en 2015 : http://www.creativedeletion.com/2015/01/28/falsehoods-programmers-date-time-zones.html
Ça vaut la peine d'être vu : http://www.commitstrip.com/en/2016/01/14/a-story-about-timestamp-and-timezone/
Une proposition radicale : abolir les fuseaux horaires et établir un temps commun pour la planète entière, à partir de 2018, tout en changeant le calendrier : https://www.washingtonpost.com/news/worldviews/wp/2016/02/12/the-radical-plan-to-destroy-time-zones-2/?tid=sm_tw
Un mouvement pour l'abolition du changement d'heure : https://stopdst.com/
Le chaos des changements de fuseaux horaires, ou plutôt de leur gestion dans chaque pays, par Matt Johnson en 2016 : http://codeofmatt.com/2016/04/23/on-the-timing-of-time-zone-changes/
Texte de 2016 par James Gleick, qui nous enjoint de nous débarrasser des fuseaux horaires : http://www.nytimes.com/2016/11/06/opinion/sunday/time-to-dump-time-zones.html?_r=1
Pour des liens sur les Benchmarks, voir ../Sujets/Developpement/Mesure.html
À propos de la mesure du passage du temps dans un programme, avec exemples, voir ../Sujets/AuSecours/Mesurer-le-temps.html
Les horloges monotones et leur importance :
À propos de la difficulté de synchroniser des horloges, texte de 2014 : https://rachelbythebay.com/w/2014/06/14/time/
Mesurer le passage du temps avec JavaScript, texte de John Resig en 2012 : http://ejohn.org/blog/accuracy-of-javascript-time/
Sous Microsoft Windows :
Sous Linux :
Une minuterie à haute résolution en C++, par Simon Wybranski en 2011 : http://blogs.msdn.com/b/nativeconcurrency/archive/2011/12/28/high-resolution-timer-for-c.aspx
Mesurer le passage du temps avec C++ 11 :
Mesurer le passage du temps avec Erlang :
Go et le temps :
Que représente une nanoseconde? Une présentation par Grace Hopper, rien de moins : http://highscalability.com/blog/2012/3/1/grace-hopper-to-programmers-mind-your-nanoseconds.html
Quelques nombres et ordres de grandeur que tout programmeur devrait connaître, selon Howard Lewis Ship en 2012 : http://architects.dzone.com/articles/every-programmer-should-know
Passage du temps et systèmes répartis :
Que se passe-t-il quand on appelle une fonction comme sleep(), Sleep() ou autre variante de ce type d'appel système? Explications détaillées de Bob Schmidt en 2015 : http://accu.org/index.php/journals/2185
Suspendre un thread avec la fonction Sleep() de Microsoft Windows. Est-ce raisonnable?
L'impact négatif de modifier la fréquence d'horloge, par Bruce Dawson en 2013 : http://randomascii.wordpress.com/2013/07/08/windows-timer-resolution-megawatts-wasted/
En 2013, Bruce Dawson montre comment évaluer, par programmation, la fréquence de l'horloge du processeur (notez que cette information est dans une section du texte suivant, qui porte sur un sujet connexe) : http://randomascii.wordpress.com/2013/08/06/defective-heat-sinks-causing-garbage-gaming/
Fonctionnement interne des horloges de la JVM, un texte de David Holmes en 2006 : https://blogs.oracle.com/dholmes/entry/inside_the_hotspot_vm_clocks
Des noyaux sans tics :
Mesurer le passage du temps dans des applications Web :
Utiliser les compteurs de « performances » de la JVM, texte de 2014 : http://hirt.se/blog/?p=513
Comme le rappelle John D. Cook en 2010, un nanosiècle correspond approximativement à π secondes : http://www.johndcook.com/blog/2010/10/14/duffs-rule/
Selon Thomas Habets en 2010, gettimeofday() ne devrait pas être utilisé pour mesurer le passage du temps : https://blog.habets.se/2010/09/gettimeofday-should-never-be-used-to-measure-time (note personnelle : nous utilisions cette fonction dans certains sous-systèmes non-critiques en raison de sa précision, quand j'oeuvrais dans le monde des simulateurs de vol militaires)
Comment échantillonner des données :
À propos du passage du temps dans les jeux, une réflexion sur l'importance de représenter le temps de manière continue : https://github.com/conal/talk-2014-bayhac-denotational-design#why-continuous-time-matters
Un Wiki sur le sujet : http://en.wikipedia.org/wiki/Leap_second
Peut-il y avoir des conséquences néfastes à ces occasionnels « reculs du temps »?
Et si on accélérait la vitesse de rotation de la terre pour régler ce « problème »? Réflexion amusante de Randall Munroe en 2012 : http://what-if.xkcd.com/26/
Qu'adviendra-t-il des secondes intercalaires dans le futur? http://www.ucolick.org/~sla/leapsecs/onlinebib.html
Comment gérer les secondes intercalaires? Miroslav Lichvar donne cinq techniques dans ce texte de 2015 : http://developerblog.redhat.com/2015/06/01/five-different-ways-handle-leap-seconds-ntp/
Perspectives philosophiques sur le sujet : http://plato.stanford.edu/entries/time-machine/
Un modèle physique « permettant » de voyager à travers le temps, relaté par Julianna Kettlewell en 2005 : http://news.bbc.co.uk/2/hi/science/nature/4097258.stm
Des photons qui reculent dans le temps, article de Tom Paulson en 2006 : http://www.seattlepi.com/local/article/Going-for-a-blast-into-the-real-past-1219821.php
Déplacement plus rapide que la vitesse de la lumière, et la possibilité de s'appuyer sur cela pour voyager à travers le temps. Article de Stephanie Pappas en 2011 : http://www.livescience.com/16207-faster-light-discovery-time-travel.html
Expérience quantique simulant une machine à voyager dans le temps, relatée en 2015 : https://medium.com/the-physics-arxiv-blog/the-quantum-experiment-that-simulates-a-time-machine-185a7cc9bd11
Le « paradoxe du grand-père » :
Les paradoxes associés au voyage dans le temps, ça peut être aussi amusant que pervers :
Pour votre bon plaisir, car les paradoxes temporels s'explorent si bien en bande dessinée, là où le temps se représente par l'espace :