Idées & Perspectives

Explorer le développement AI-first, les garde-fous de code et l'architecture de la jetabilité.

Oui, mais votre système de types doit savoir ce qu'est un dollar

TypeScript considère tous les nombres comme identiques. Voici comment lui apprendre la différence entre USD et EUR pour que le compilateur détecte les bugs de conversion de devises avant qu'ils n'atteignent la production.

En 2022, une grande plateforme fintech a traité un virement groupé de 32 700 000,00. Le montant était stocké sous forme de brut. Un service en aval supposait…

Un nombre n'est pas qu'un nombre : comment faire en sorte que le compiler détecte les bugs d'unité

Passer des millisecondes là où des secondes étaient attendues est un bug qui passe tous les tests. Voici comment encoder les unités directement dans le système de types de TypeScript pour que les confusions échouent à la compilation, sans aucun coût à l'exécution.

Une fonction demande un timeout en millisecondes. Vous passez . Plus tard, une autre fonction demande un timeout en secondes. Vous passez . Entre les deux,…

TypeScript m'a laissé passer un identifiant utilisateur là où un identifiant de commande était attendu

Les alias de types ne créent pas de types distincts dans TypeScript. Les types brandés si, et ils peuvent vous éviter de mélanger des identifiants à la compilation.

Le trimestre dernier, nous avons livré un bug qui a remboursé le mauvais client. Une fonction a reçu un identifiant utilisateur là où elle attendait un…

Le differential testing fonctionne sans preuve formelle, mais les common-mode failures sont le piège

Le differential testing permet de trouver des bugs sans connaître la réponse correcte. Le problème est que des erreurs corrélées ressemblent à un accord. Voici comment repérer les angles morts.

Vous pouvez faire confiance au differential testing sans preuve formelle, mais seulement si vous comprenez exactement où il s'effondre. La faiblesse s'appelle…

Les Tests Ne Prouveront Jamais Que Deux Fonctions Sont Équivalentes. Voici Ce Qui Le Peut.

La programmation N-version part du principe que vos implémentations sont d'accord. Nous voyons pourquoi les tests ne suffisent pas, comment les solveurs SMT peuvent prouver l'équivalence, et où tracer la ligne entre 'suffisamment bon' et 'formellement vérifié'.

Vous avez construit un système N-version. Trois implémentations indépendantes de la même fonction critique, un votant qui choisit le résultat majoritaire, et…

Et si mes variantes de LLM n'étaient pas d'accord ? Laquelle a raison ?

Exécuter plusieurs LLM en parallèle permet de détecter des erreurs que tout modèle isolé enverrait avec assurance. Voici comment construire un système de résolution des désaccords qui fonctionne réellement.

Vous envoyez un prompt à GPT-4o. Il retourne un blob JSON avec un score de confiance de 0,97. Vous envoyez le même prompt à Claude 3.5 Sonnet. Il retourne un…

Cinq implémentations et aucune majorité : comment réellement choisir la meilleure

La programmation N-version a l'air simple : exécuter plusieurs implémentations et choisir la meilleure réponse. En pratique, 'meilleure' est bien plus difficile à définir que 'la plus commune'.

Vous avez cinq implémentations de la même fonction. Trois retournent le même résultat. Une est légèrement différente. Une lève une exception. Laquelle est…

Le même LLM peut écrire cinq versions de votre fonction. Voici comment les rendre réellement différentes.

La programmation N-version avec les LLM ne nécessite pas plusieurs modèles. Vous pouvez extraire des implémentations diverses et correctes d'un seul modèle en faisant varier les prompts, les personas et les contraintes de raisonnement.

La programmation N-version part du principe que la diversité vient d'auteurs différents. Avec les LLM, cela signifie des modèles différents, des fournisseurs…

La NASA a exécuté 27 copies du même programme. Les bugs ont voté en bloc.

La programmation N-version promettait que des équipes indépendantes feraient des erreurs indépendantes. L'expérience de Knight et Leveson en 1986 a prouvé le contraire, et la NASA s'est discrètement retirée.

Au début des années 1980, la NASA était confrontée à une question qui hante encore l'ingénierie safety-critical aujourd'hui : comment tolérer des bugs que vous…