Modéliser la Casio F-91W avec les statecharts : une démonstration interactive
Sommaire
En bref
- Un développeur a reconstitué le fonctionnement de la montre Casio F-91W sous forme de statecharts, l'extension des automates d'état introduite par David Harel en 1987.
- L'implémentation utilise XState et s'appuie sur une version numérisée de la montre pour montrer comment les statecharts modélisent les changements d'état et les transitions.
- C'est un projet éducatif : il reproduit le manuel officiel et permet d'explorer visuellement la logique d'une interface mécanique devenue emblématique.
- Le choix de la F-91W est pragmatique : contrairement à la Citizen du papier original de Harel, elle est toujours fabriquée et reste accessible.
Ce que dit la source
L'auteur a voulu créer une démonstration interactive des statecharts, le concept théorique décrit par Harel en 1987 avec une montre Quartz comme exemple. Le papier original utilisait la Citizen Quartz Multi-Alarm III, devenue rare. La Casio F-91W, lancée deux ans après la publication du papier, offre une alternative : elle est toujours en production, reste culturellement emblématique, et son interface d'usage est assez complexe (affichage d'heure, alarme, chronomètre, calendrier) pour bien illustrer un système à états.
- L'implémentation repose sur XState, une bibliothèque de machine à états pour JavaScript, remplaçant le code logique d'origine par une définition déclarative de statecharts.
- Le projet inclut un visualiseur côté Stately qui affiche les états et transitions en temps réel, permettant de voir la logique opérationnelle de la montre de manière graphique.
- Le code est écrit en ClojureScript avec une structure modulaire : définition de la machine, actions, intégration XState, et logique d'application principale.
- Certaines fonctionnalités ont été volontairement omises : l'alarme ne sonne pas réellement, le maintien du bouton A pour incrémenter en continu n'est pas implémenté, la manipulation du jour de la semaine n'existe pas (JavaScript Date gère la sémantique de la date autrement).
- La démonstration s'appuie sur une numérisation graphique antérieure des éléments visuels de la F-91W, créée par Alexis Philip.
Dans les commentaires
Peu de débat substantiel. Les trois commentaires trouvent le projet intéressant, posent des questions techniques mineures ou pointent un léger souci d'affichage.
- Un commentateur demande si les limitations (alarme non fonctionnelle, bouton A non implémenté) sont dues à la difficulté de modélisation ou simplement à une volonté de simplicité, la source ne répond pas explicitement, ce qui suggère une simplification pédagogique.
- Un autre signale un problème de rendu sur Firefox mobile pour iOS, sans détail supplémentaire.
- Un commentateur décrit un projet parallèle : un mouvement FOSS de remplacement pour la F-91W avec capteurs embarqués et meilleure précision (<15 s/an), montrant que l'intérêt pour cette montre dépasse largement la simulation logicielle.
Notre lecture
Un projet pédagogique très bien exécuté, sans prétention : montrer comment les statecharts modélisent un système à états réels, sur un exemple concret et reconnaissable. Utile pour enseigner les automates d'état et les machines d'état en JavaScript, mais aucune application directe pour une équipe de production. À tester si tu dois justement former sur XState ou les statecharts ; à ignorer sinon.