Introduction à TLA+: corriger les bugs sans code

Inspiré par https://sadraskol.com

Chaque langage a son paradigme

  • C -> procédural
  • Java -> orienté-objet
  • Haskell -> fonctionnel

Chaque paradigme sa façon de penser

TLA+ ou penser en logique temporelle

  • Temporel = intuitif
  • Logique = Le quoi
  • Action = parce qu'il y a de l'action
  • + parce qu'il y en a toujours +

Utilisations de TLA+

  • Formalisation de protocole
  • Microsoft : CosmosDB
  • AWS : ???
  • Oracle : Loom par Ron Presler

Reservation Train Kata

Les règles

  • max 70% de réservation
  • réservation dans 1 wagon
  • idéalement 70% du wagon

Logique des prédicats

Première spécification

Démo

Spécification : réservation d'une place

Text

Démo

Spécification : 70% du train max

Démo

Démo

Spécification : réservation de plusieurs places

Démo à 400 millions

Démo

Spécification : Problème des conflits de réservations

Démo

Programme sûr n'est pas programme correct

Correct en 2 saveurs

  • Sécurité : On ne va pas à Milan
  • Liveness : On arrive à destination

Dernière itération : On remplit le train

Démo

Problème de stuttering

Conclusion

  • Autre regard
  • No Silver Bullet
  • Alternative au golden master

Merci !

Introduction à TLA+: corriger les bugs sans code

By Thomas Bracher

Introduction à TLA+: corriger les bugs sans code

  • 177