Conjectures et réfutations

Karl Popper est un philosophe des sciences ayant fait des apports majeurs à l’épistémologie, avec entre autres sa définition de la démarche scientifique par la réfutabilité. Je me suis amusé à appliquer certaines de ses thèses à la mise au point de programmes, en supposant qu’un programme soit une connaissance objective au même titre qu’un théorème ou qu’une théorie scientifique.

Si on applique ces thèses, on peut démontrer que la lecture du code source ne suffit pas, par la seule puissance de la déduction, à prouver que le programme est correct. D’ailleurs, un test ne peut pas prouver la validité d’un programme, au contraire, il ne peut que mettre en évidence une erreur. Popper démontre que le raisonnement inductif n’est pas la méthode rationnelle pour se rapprocher de la vérité, mais que nous procédons par conjectures et réfutations. Tout raisonnement fonctionnerait à partir de théories que l’on essaie de contredire, par l’expérimentation ou par la logique. Pour valider un programme on cherche à le mettre en défaut, ce qui est pourtant intuitivement l’inverse du résultat visé.

Je vois donc la programmation comme l’ajout de conjectures sur un fond initial (langage de programmation employé, librairies, système d’exploitation, autres applications). Fond qui, en passant, est également réfutable selon Popper, contredisant les philosophes affirmant que tout raisonnement rationnel ne se fait qu’à partir d’une base de vérités que l’on augmente par déduction.

En poussant plus loin l’analogie, le test unitaire consisterait donc à tenter de réfuter la conjecture (le programme). Popper affirme également qu’une théorie qui en supplante une autre doit expliquer mieux ou plus de choses que la précédente mais également « survivre » aux mêmes tentatives de réfutation. C’est ce que j’appellerais les tests de non-régression.

Mais alors, si programme = conjecture et test = réfutation, que penser de cette pratique XP : « écrire systématiquement les test unitaires en premier, et ensuite seulement le programme qui va passer les tests unitaires avec succès » (le fameux Test-Driven Development) ?

En termes « popperiens » cela revient à faire des réfutations avant même de conjecturer ! Les « XPeurs » feraient-ils de la programmation d’une façon irrationnelle ?

Disons plutôt que cela signifie que la conjecture est implicite, qu’elle trotte dans la tête du programmeur (ou est discutée au sein du binôme pour ceux qui pratiquent également le « pair-programming ») pendant la programmation des réfutations/tests. Et c’est seulement une fois que toutes les réfutations sont posées que l’on rédige l’équation ou le programme. Connaissant à l’avance les tests, la programmation ressemble plus à mon avis à une sorte de régression au sens statistique (trouver la courbe qui passe par tous les points connus à l’avance).

Cela revient à peser tous les cailloux de la terre et trouver l’équation vraie pour tout un tas de cailloux donné afin de formuler la gravité. Il me semble donc à la fois plus rationnel (et plus intuitif, je l’avoue) de poser la conjecture (le programme) avant d’essayer de le réfuter (par les tests).

La connaissance objective

La connaissance objective

Là où je rejoins les partisans du test extrême c’est que la qualité d’un programme est proportionnelle à la quantité de tests tentant de le réfuter, tout comme la meilleure théorie, toutes choses égales par ailleurs, est celle qui se prête et s’est prêtée au plus de tentatives de réfutation.

Ayant moins de connaissances en philosophie qu’en informatique, il est probable que je résume mal la pensée de Popper, je vous recommande donc chaudement la lecture de l’original, comme par exemple « la connaissance objective » disponible en livre de poche.

Toutes les équipes ont très exactement dix-huit minutes pour construire la plus haute structure autonome possible. Pour cela, chaque équipe dispose de 20 spaghetti, moins d’un mètre de ficelle et autant en ruban adhésif. Ainsi qu’un unique marshmallow, qui doit être placé au sommet de l’édifice.

A moins que vous n’ayez envie comme un des trois petits cochons de construire votre maison en collant des spaghetti, l’intérêt est bien sûr ailleurs que dans l’assemblage lui-même. En comparant les performances de différentes équipes en fonction de leur composition et de leur façon de travailler, on apprend beaucoup de choses, y compris sur la conduite de projet agile…

Mais je ne veux pas trop en dévoiler, le mieux est de regarder l’excellente présentation ci-dessous (les sous-titres en français sont accessibles en cliquant dans le lien « View subtitles » juste sous la vidéo).

(suivez ce lien si votre lecteur de flux n’affiche pas la video : http://www.ted.com/talks/view/id/837)

Si l’expérience vous tente, vous trouverez toutes les instructions nécessaires pour organiser un tel défi sur http://www.marshmallowchallenge.com/.

Vidéo-Bonus : Ne mangez pas le marshmallow !

Enfin, pas tout de suite.

(suivez ce lien si votre lecteur de flux n’affiche pas la video : http://www.ted.com/talks/view/id/553)

La fillette qui sniffe son marshmallow est franchement géniale.

broken hard disks

Google l’avait annoncé et le voici : le système d’exploitation basé sur son navigateur open-source chrome. Plutôt destiné aux netbooks, il est pensé pour les utilisateurs qui n’allument leur ordinateur que pour lire leurs mail et trainer sur facebook, c’est-à-dire qui n’ont souvent besoin que d’un navigateur ouvert en plein écran. Google Chrome OS leur propose un délai de quelques secondes seulement entre le bouton marche et le navigateur sur internet. Il fonctionne sans stocker de données sur l’appareil : applications et données sont manipulées directement sur internet. Par exemple, il s’agit d’utiliser un document en ligne google docs au lieu d’utiliser traitement de texte et document stockés par l’appareil. On pourrait dire que google pousse la molette de réglage local<->cloud à 11.

Jamais sans mon disque dur

J’imagine l’intérêt pour les utilisateurs ainsi que pour les vendeurs de logiciel (qui verront enfin leur vieux rêve de location de leurs logiciels – donc zéro piratage – enfin réalisé). L’erreur, à mon humble avis, serait dans l’approche « Toutes vos données sont sur le cloud. Toutes ? Toutes ! ». Je veux bien que les données soient hébergées en ligne mais il faut quand même un disque dur ou un quelconque moyen de conserver une copie personnelle (ou d’entreprise) des données. C’est l’exacte symétrique de la recommandation de faire un backup en ligne à ceux qui gardent tout sur leur disque dur… Je n’écris pas ça par conservatisme, je n’ai pas peur du cloud, tout comme on peut être fana d’escalade et recommander le mousqueton.

Pourquoi conserver une copie sur disque dur ?

  1. Pour avoir une copie de sauvegarde, à un prix comparable aux services de sauvegarde les plus abordables. Avec un avantage colossal : le temps d’accès. C’est en essayant de m’imaginer en train d’essayer de retélécharger 18Go d’album photo (eh oui, vive le reflex numérique) depuis mozy.com -l’envoi de DVD est un service lourdement facturé- que j’ai décidé de conserver un miroir sur disque dur à la cave.
  2. Pour conserver la propriété et la jouissance de mes œuvres. Si l’on est dans un système de location, le loueur peut disparaitre, faire faillite, changer ses tarifs, ses prestations, vous mettre sur la liste des pays subissant l’embargo américain, effacer vos données à distance (comme amazon sur son lecteur d’ebooks), la liste des ennuis potentiels est infinie… Quand je prends une photo, développe un logiciel ou rédige un document, je veux pouvoir y avoir accès indéfiniment. Cela veut également dire qu’il faut être vigilant quant au format d’exportation que proposent les suites logicielles en “cloud” : il faut pouvoir obtenir un backup lisible sur le long terme (dans un format ouvert et de préférence non-propriétaire).
  3. Pour avoir accès à mes documents sans réseau. Quel que soit votre FAI, vous aurez des coupures ; vous partirez peut-être en congés sans clé 3G ; vous serez peut-être victime des dommages collatéraux de l’HADOPI… Bref, sans réseau point de données. L’idéal est de disposer d’un mécanisme de synchronisation capable de gérer efficacement les connexions intermittentes. La technologie Google Gears (tiens donc) permet d’ores et déjà de le faire pour certaines applications. HTML5 promet de généraliser cette fonction entre autres capacités utiles au cloudapps.

La CloudBackupBox

Je vous propose donc la CloudBackupBox : un boitier silencieux autour d’un gros disque dur et d’une connexion réseau, qui se connecte régulièrement à tous les services cloud que j’utilise et qui synchronise toutes mes données sans intervention manuelle. On peut imaginer une prise USB qui permet de se brancher physiquement pour configurer l’appareil ou bien travailler sur les données stockées sur le disque dur : mode hors-ligne ou restauration de sauvegarde. Ajoutez à cela un mode sécurité qui demande un code PIN pour s’allumer et crypte toutes les données sur le disque dur, afin qu’un cambrioleur ou autre indélicat ne puisse pas lire le contenu du disque. Il ne me reste plus qu’à déposer le brevet. Ah flûte, trop tard ! Je n’aurais pas dû en décrire le principe ici, ça doit compter comme prior art


Crédit photo : purplemattfish Certains droits réservés (licence  Creative Commons)

Ce matin votre voiture a disparu du parking. *pffffuit*, plus rien. :wassat: A la place, juste un PV, qui traîne par terre. Ce qui se passe, c’est que l’on vient de vous retirer votre voiture pour 1 an, assorti d’une amende de 1500€, et interdiction d’acheter une nouvelle voiture pendant l’année d’interdiction. :shock: Cependant, vous continuerez à rembourser le crédit auto, ou payer les mensualités si cette voiture était une location. « Pourquoi moi ? ». Il se trouve qu’un employé d’une association qui lutte contre la vitesse au volant a signalé votre plaque d’immatriculation à la Haute Autorité Contre la Vitesse au Volant, pour excès de vitesse répétés.

Vous aviez pourtant eu un premier avertissement : un papier glissé sous le rétroviseur expliquant que rouler trop vite c’est pas bien. Vous l’avez peut-être pas lu, en vous disant « encore une pub ». Vous vous rappelez quand même avoir reçu un courrier recommandé il y a quelques mois, qui disait que les associations de lutte contre la vitesse au volant vous avaient vu rouler trop vite et qu’il faudrait éviter tout excès de vitesse sous peine de se voir retirer sa voiture. Vous vous étiez promis de lever le pied. :angel: Sauf que maintenant, plus de voiture, et pour toute la famille en plus. :cry: Votre époux(se) et vos enfants qui pourtant ont leur permis n’ont plus de voiture non plus, ni le droit d’en avoir une. :dizzy:

Alors vous voulez contester la condamnation. :angry: Comme on ne peut pas prouver que vous étiez au volant, la justice vous accorde le bénéfice du doute : OK ce n’était pas vous. Mais c’était votre plaque d’immatriculation. Donc, on vous colle une amende pour « non-sécurisation de votre voiture ». :blink: En gros, si on vous a « emprunté » votre voiture pour faire un excès de vitesse, c’est que vous aviez dû mal la verrouiller ou que vous n’avez pas acheté le modèle d’alarme officiel labellisé par l’état (ah ben oui, il n’existe que pour les Renault, fallait pas acheter coréen). En passant, si nos assureurs appliquaient la logique du législateur, ils ne rembourseraient jamais aucun vol ni cambriolage… :roll: Donc, si vous voulez récupérer votre voiture, il faut contester devant un juge. Le recours n’étant pas suspensif, vous irez au tribunal en bus ou à vélo. :dizzy:

Maintenant, le plus dur reste à faire : prouver votre innocence.  :pinch: Prouver que ce n’était pas votre voiture qui roulait il y a trois mois, trop vite, sur une départementale interdite. Malheureusement, n’importe qui peut accrocher votre plaque sur sa voiture, et la vitesse a été mesurée au pifomètre par un employé de l’association de lutte contre la vitesse. Alors bonne chance, et bienvenue dans le monde de l’HADOPI… :ninja:

En passant, petite suggestion aux maisons de disques : si quelqu’un laisse un commentaire désagréable du genre « cet album est naze :sick:  » sur internet à propos de l’un de vos produits, récoltez son adresse IP, la date et l’heure du commentaire et envoyez le tout à l’HADOPI, assorti d’une liste de 3 000 téléchargements illégaux choisis au hasard dans votre catalogue. :devil: Le gêneur ou la gêneuse sera interdit d’internet pendant une durée pouvant aller jusqu’à un an, :face: ce qui vous laissera le temps de faire la promotion de votre produit plus sereinement… sauf si votre cible trouve un moyen de prouver son innocence; mais je vois pas comment ça serait possible. C’est pas beau, ça ?