La crise de réplication en psychologie : études de la science cognitive démenties

2025-09-17
La crise de réplication en psychologie : études de la science cognitive démenties

Les années 2010 ont été marquées par une « crise de réplication » en psychologie, où de nombreux résultats largement acceptés n’ont pas pu être reproduits. Cet article compile une liste d’études importantes de la science cognitive qui n’ont pas été répliquées, notamment l’effet d’épuisement de l’ego, l’effet de la posture de pouvoir, l’amorçage social (effet des mots associés aux personnes âgées) et l’effet d’amorçage monétaire. Ces résultats autrefois populaires ont depuis été remis en question ou carrément réfutés. L’objectif est d’aider les lecteurs à distinguer les recherches crédibles des résultats non fiables, en évitant la désinformation.

Lire plus
Divers

Beaucoup de problèmes difficiles de LeetCode sont simplement des problèmes de contraintes faciles

2025-09-12
Beaucoup de problèmes difficiles de LeetCode sont simplement des problèmes de contraintes faciles

L'auteur raconte une expérience d'entretien frustrante où un problème de rendu de monnaie apparemment simple l'a déconcerté en raison de son manque de compétences en programmation dynamique. Il soutient que de nombreux problèmes difficiles de LeetCode sont, en fait, facilement résolubles à l'aide de solveurs de contraintes tels que MiniZinc, Z3 ou OR-Tools. L'article présente plusieurs exemples, notamment la maximisation du profit boursier et la recherche du plus grand rectangle dans un histogramme, démontrant la simplicité et la puissance élégantes des solveurs de contraintes, en particulier lorsqu'il s'agit de contraintes complexes.

Lire plus
Développement

Comment RSS a battu ICE : La simplicité l’emporte sur la complexité

2025-09-08
Comment RSS a battu ICE : La simplicité l’emporte sur la complexité

Cet article relate la bataille entre RSS et ICE, deux protocoles concurrents de syndication de contenu. Soutenu par des géants comme Microsoft et Adobe, ICE offrait des fonctionnalités supérieures mais était excessivement complexe et fermé. RSS, originaire de Netscape, était simple, convivial et a prospéré grâce à sa nature ouverte. En fin de compte, la simplicité de RSS et les contributions de nombreux blogueurs et développeurs ont mené à sa victoire sur le plus puissant ICE, devenant la norme du secteur pour l'agrégation de contenu. Cela renforce le dicton d'Internet : la simplicité l’emporte sur la complexité.

Lire plus

Pourquoi je préfère reStructuredText à Markdown

2025-08-18
Pourquoi je préfère reStructuredText à Markdown

Cet article explique pourquoi l'auteur préfère reStructuredText (rST) à Markdown pour écrire des livres techniques. rST, étant une représentation de poids moyen d'un arbre de documentation abstrait, offre une extensibilité et une personnalisation supérieures par rapport à l'approche légère de Markdown. L'auteur l'illustre avec des exemples de création d'images et de gestion d'exercices, montrant comment les directives personnalisées et les transformations d'arbre de documents de rST permettent des structures de documents complexes et des fonctionnalités difficiles à obtenir dans Markdown. Bien qu'il reconnaisse la syntaxe potentiellement moins intuitive de rST, l'auteur défend sa puissance pour la documentation à grande échelle, surtout lorsque des extensions et des transformations personnalisées sont nécessaires, comme démontré dans son livre, "Logique pour les Programmeurs."

Lire plus
Développement Rédaction Technique

L'explosion des environnements d'exécution JavaScript : une décennie d'innovation

2025-07-28
L'explosion des environnements d'exécution JavaScript : une décennie d'innovation

La dernière décennie a vu une explosion de nouveaux environnements d'exécution et moteurs JavaScript, permettant l'exécution de JavaScript dans divers contextes avec une optimisation remarquable spécifique à chaque tâche. Cela a propulsé JavaScript dans le cloud, l'edge computing, les Smart TV, les appareils mobiles et même les microcontrôleurs. Cet article explore les facteurs à l'origine de cette diversité et pourquoi un seul environnement d'exécution ou moteur ne suffit pas à répondre à tous les besoins. De l'essor de l'edge computing et des moteurs à faibles ressources pour les microcontrôleurs aux moteurs polyglots facilitant l'interopérabilité avec d'autres langages et l'utilisation généralisée dans le développement d'applications natives, les environnements d'exécution JavaScript démontrent une incroyable adaptabilité et une croissance dynamique. L'article détaille divers environnements d'exécution et moteurs tels que Node.js, Deno, Cloudflare Workers, Bun, React Native, NativeScript, etc., en décrivant leurs technologies sous-jacentes et leur évolution.

Lire plus

Cache : abstraction, pas optimisation

2025-07-04
Cache : abstraction, pas optimisation

La sagesse conventionnelle veut que le cache accélère les logiciels. L’auteur soutient que ce n’est qu’une partie de l’histoire. Après avoir travaillé sur le déplacement de données entre le stockage d’objets, le disque et la mémoire, l’auteur propose que le rôle le plus crucial du cache est de simplifier les logiciels. L’article explore les limites des algorithmes de cache prédéfinis (LRU, LFU, etc.) et suggère que le cache agit davantage comme une couche d’abstraction, masquant les détails de stockage sous-jacents, libérant les programmeurs du souci de l’emplacement du niveau de données. Les mécanismes de cache des bases de données et du système d’exploitation illustrent cette abstraction. Bien que le cache puisse présenter des problèmes, comme la mauvaise utilisation du cache de pages du système d’exploitation et fsync, cela ne signifie pas qu’il faille abandonner le cache, mais plutôt le comprendre et l’utiliser mieux.

Lire plus
Développement

L'épidémie de solitude : un appel à sortir de chez soi

2025-06-29
L'épidémie de solitude : un appel à sortir de chez soi

Cet article aborde le problème omniprésent de la solitude dans la société moderne, en affirmant que sortir de chez soi est essentiel pour la combattre. L’auteur utilise son expérience avec un chien et son implication communautaire dans un parc à chiens comme exemple principal de la construction de liens. Il souligne l’importance des infrastructures urbaines, comme les trottoirs, pour favoriser la communauté. L’article critique le capitalisme tardif pour son profit et son exacerbation de la solitude, encourageant les lecteurs à participer activement à la vie communautaire et à expérimenter la connexion humaine.

Lire plus
Divers

Résolution du problème des Reines LinkedIn avec SMT : Plus facile qu'avec SAT !

2025-06-12
Résolution du problème des Reines LinkedIn avec SMT : Plus facile qu'avec SAT !

Cet article détaille la résolution du casse-tête des « Reines LinkedIn », une variante du problème classique des N-Reines avec des contraintes régionales supplémentaires, à l'aide du solveur SMT Z3. L'auteur montre que l'expression du problème en SMT, en utilisant des variables entières et des contraintes, est considérablement plus simple que la formulation SAT équivalente, qui nécessite de nombreuses clauses booléennes. Bien que les solveurs SMT puissent être plus lents que les solveurs SAT hautement optimisés comme Glucose, la facilité d'encodage rend le SMT préférable pour beaucoup. L'article inclut le code complet et des vérifications de bon fonctionnement utiles pour vérifier l'exactitude du modèle. Cela fournit une explication convaincante de la préférence de l'industrie pour les outils qui compilent en SAT plutôt que d'utiliser directement SAT.

Lire plus
Développement solveur SMT

Indécidabilité : la boîte de Pandore des programmeurs

2025-05-28
Indécidabilité : la boîte de Pandore des programmeurs

Cet article explique clairement le concept d'« indécidabilité » en informatique. À l'aide d'un langage accessible et d'exemples concrets (comme déterminer si un nombre est la somme de deux nombres premiers), l'auteur explique les problèmes de décision et le rôle des machines de Turing. La principale conclusion est que l'indécidabilité ne signifie pas qu'il est impossible de savoir si un programme s'arrêtera, mais plutôt qu'il n'existe pas d'algorithme universel pour déterminer le comportement d'arrêt de tous les programmes. Cela rend de nombreux problèmes (comme la vérification des propriétés des programmes) exigeants en efforts et potentiellement insolubles, soulignant la nécessité de domaines comme la vérification formelle et l'analyse de programmes.

Lire plus
Développement machine de Turing

Tests basés sur les propriétés : pourquoi ils surpassent les tests unitaires pour les entrées complexes

2025-05-21
Tests basés sur les propriétés : pourquoi ils surpassent les tests unitaires pour les entrées complexes

Cet article débat des mérites des tests basés sur les propriétés (PBT) par rapport aux tests unitaires traditionnels. L’auteur soutient que si les tests unitaires suffisent pour les fonctions à entrée unique, l’explosion combinatoire des cas limites dans les fonctions à entrées multiples rend le PBT, avec sa génération d’entrées aléatoires, supérieur pour la découverte d’erreurs limites cachées. Cependant, le PBT présente une courbe d’apprentissage ; la maîtrise de stratégies complexes de génération d’entrées est cruciale. La plupart des exemples de PBT sont trop simplistes pour montrer leur véritable puissance dans la gestion des espaces d’entrée complexes.

Lire plus

Le pari du service postal américain sur l'e-mail : l'essor et la chute d'E-COM

2025-05-14
Le pari du service postal américain sur l'e-mail : l'essor et la chute d'E-COM

Face à la menace du courrier électronique, le service postal américain a lancé E-COM en 1982, un service qui imprimait les e-mails et les distribuait par la poste. Initialement réussi, E-COM a finalement échoué en 1985 en raison de coûts élevés, de processus lourds et d'un manque de flexibilité, entraînant des pertes de plus de 40 millions de dollars. Cependant, E-COM a popularisé le terme « e-mail » et a mis en lumière les tentatives du service postal pour s'adapter aux changements technologiques.

Lire plus
Technologie E-mail

Sécurité alimentaire aux États-Unis : Une bataille contre les mensonges et l'histoire

2025-04-30
Sécurité alimentaire aux États-Unis : Une bataille contre les mensonges et l'histoire

Cet article interviewe la journaliste scientifique Deborah Blum, explorant l'état actuel et l'histoire de la sécurité alimentaire aux États-Unis. Blum souligne que, au milieu de la prolifération de la désinformation et de la déréglementation gouvernementale, les citoyens américains sont confrontés à des risques pour la sécurité alimentaire, avec des problèmes similaires à l'adultération alimentaire du XIXe siècle qui refont surface. Elle utilise son livre, "The Poison Squad", pour illustrer la naissance de la loi sur les aliments et les médicaments purs de 1906 et comment le chimiste Harvey Wiley a exposé les problèmes de sécurité alimentaire au moyen d'une expérience avec un "groupe de poison". Blum appelle à une attention publique sur la sécurité alimentaire et critique l'approche individualiste qui blâme les consommateurs pour les maladies d'origine alimentaire, soulignant la responsabilité du gouvernement de garantir les droits fondamentaux.

Lire plus

Les exigences changent jusqu'à ce qu'elles ne changent plus : méthodes formelles et évolution du système

2025-04-28
Les exigences changent jusqu'à ce qu'elles ne changent plus : méthodes formelles et évolution du système

Cet article explore comment gérer les exigences en constante évolution dans le développement de logiciels. Bien qu'une modélisation formelle extensive à l'avance puisse être peu pratique en cas de changements fréquents, l'auteur soutient que les méthodes formelles deviennent cruciales lorsque les systèmes atteignent une certaine échelle ou subissent des changements architecturaux (transitions de phase). La spécification et la vérification formelles garantissent que les améliorations ne brisent pas les fonctionnalités existantes. En utilisant l'exemple du passage d'une mise à jour synchrone à une mise à jour asynchrone, l'auteur montre comment les méthodes formelles peuvent vérifier qu'un nouveau système satisfait les exigences anciennes, soulignant l'importance de la maintenance logicielle et prévenant la défaillance silencieuse des fonctionnalités.

Lire plus
Développement évolution des exigences

Résolution du casse-tête du salon propositionnel du Prince Bleu avec la logique

2025-04-21
Résolution du casse-tête du salon propositionnel du Prince Bleu avec la logique

Cet article détaille comment résoudre automatiquement une énigme logique du jeu Prince Bleu en utilisant la logique propositionnelle. L'énigme implique trois boîtes (bleue, blanche, noire), chacune faisant des affirmations, et des règles stipulant qu'au moins une boîte est entièrement vraie, au moins une est entièrement fausse, et le prix se trouve dans exactement une boîte. L'auteur modèle le problème en logique propositionnelle, utilise une approche de force brute pour trouver toutes les affectations satisfaisantes et détermine ainsi l'emplacement du prix. L'article inclut une implémentation en JavaScript et discute de l'optimisation du code.

Lire plus

AMP pour Email de Google : Un échec audacieux

2025-04-18
AMP pour Email de Google : Un échec audacieux

Google a tenté de révolutionner l'email avec AMP (Accelerated Mobile Pages), permettant des expériences interactives comme la réservation d'hôtels ou la réponse aux commentaires Google Docs directement dans les emails. Cependant, cette initiative a échoué. L'article analyse les raisons de cet échec, notamment la complexité de développement, la faible compatibilité et les conflits avec les propriétés inhérentes de l'email. La méfiance des développeurs envers la politique de Google a grandement contribué à sa chute. Bien que les emails interactifs ne soient pas impossibles, ils doivent privilégier la compatibilité et la permanence, sans sacrifier la simplicité et la fiabilité. Le succès durable de l'email repose sur sa simplicité et sa décentralisation.

Lire plus
Technologie

Au-delà de NP : un problème de complexité plus intuitif

2025-04-17
Au-delà de NP : un problème de complexité plus intuitif

L'auteur remet en question l'utilisation du problème de l'arrêt comme exemple canonique d'un problème plus difficile que NP-complet, arguant qu'il est confus et peu intuitif. Bien qu'indécidable, la vérification d'une réponse « oui » au problème de l'arrêt peut être effectuée en exécutant le programme pendant un nombre fini d'étapes. Une alternative plus facile à comprendre est présentée : déplacer une pièce sur une grille infinie pour atteindre un point cible. Ce problème est PSPACE-complet en dimensions inférieures, mais sa complexité explose avec l'augmentation des dimensions, atteignant finalement la complétude d'ACKERMANN, démontrant visuellement une complexité bien au-delà des problèmes NP.

Lire plus

Résolution élégante d'une énigme de Layton avec Prolog

2025-04-08
Résolution élégante d'une énigme de Layton avec Prolog

L'auteur a réécrit le chapitre sur les langages de programmation logique de son livre "Logique pour programmeurs", mettant en valeur la puissance de Prolog avec une énigme de type 'Layton'. L'énigme consiste à déduire le score du quatrième élève en fonction des scores des trois premiers. Utilisant un code Prolog concis (seulement 15 lignes !), l'auteur résout élégamment le problème, en tirant parti de la correspondance de motifs et de la bidirectionnalité de Prolog pour trouver toutes les clés de réponse possibles, déterminant finalement le score du quatrième élève à 6. Une comparaison est faite avec une solution plus longue et moins efficace. Bien que l'auteur plaide contre l'utilisation d'énigmes pour l'enseignement, cet exemple démontre le potentiel d'application pratique de Prolog.

Lire plus
Développement Résolution d'énigmes

Il est temps d'arrêter de construire des bases de données KV

2025-03-25
Il est temps d'arrêter de construire des bases de données KV

L'auteur critique les bases de données clé-valeur pour leur simplicité excessive et leur manque de puissance expressive, ce qui les rend difficiles à utiliser. Bien que populaires auprès des fournisseurs de moteurs de stockage, les bases de données clé-valeur ne sont que des blocs de construction pour des modèles de données raisonnables, obligeant les utilisateurs à les construire à partir de zéro, souvent avec des résultats sous-optimaux. L'auteur propose un compromis : une base de données embarquée avec des enregistrements typés, séparant les schémas logiques et physiques, mais en écrivant des requêtes contre le schéma physique. Cela évite les planificateurs de requêtes complexes, prend en charge les modifications de schéma asynchrones et le changement de disposition. Cette approche équilibre l'indépendance des données avec la simplicité nécessaire aux systèmes embarqués, offrant une alternative convaincante aux simples magasins clé-valeur et aux complexités des bases de données relationnelles complètes.

Lire plus
Développement

Développement axé sur la vérification : au-delà du développement piloté par les tests

2025-03-18
Développement axé sur la vérification : au-delà du développement piloté par les tests

Cet article explore le développement axé sur la vérification (VFD), un paradigme qui met l’accent sur la mise en place de mécanismes de vérification avant d’écrire du code. Cela peut impliquer d’écrire des tests, de définir des invariants de type, d’ajouter des contrats ou d’utiliser d’autres méthodes. Le VFD diffère du développement piloté par les tests (TDD), qui est un cas particulier du VFD et se concentre sur l’utilisation de tests pour piloter la conception du code. Les avantages du VFD incluent la réduction de la probabilité de sauter la vérification, la détection précoce des erreurs et l’amélioration de la qualité du code. Cependant, le VFD présente également des inconvénients : il peut ralentir le développement, entraver la programmation exploratoire et les méthodes de vérification peuvent influencer la conception du code. L’auteur soutient que le VFD, en tant que technique plutôt que comme paradigme, est plus flexible et s’intègre facilement à d’autres approches.

Lire plus
Développement vérification prioritaire

Cinq Types de Non-Déterminisme : Aperçus Pratiques des Méthodes Formelles

2025-02-20
Cinq Types de Non-Déterminisme : Aperçus Pratiques des Méthodes Formelles

Cet article explore cinq types de non-déterminisme dans la modélisation des systèmes : la vraie aléatoire, la concurrence, l’entrée utilisateur, les forces externes et l’abstraction. L’auteur explique chaque type clairement à l’aide d’exemples pratiques. La vraie aléatoire, bien que souvent simulée avec des générateurs de nombres pseudo-aléatoires, est généralement traitée comme un choix non déterministe dans la modélisation. La concurrence est une source principale de non-déterminisme, nécessitant une gestion spéciale en raison de l’explosion de l’espace d’états. L’entrée utilisateur et les forces externes sont traitées comme des influences externes non déterministes. Fondamentalement, l’abstraction simplifie les processus déterministes complexes en choix non déterministes, simplifiant les modèles et augmentant la sensibilité aux erreurs potentielles. Cela fournit des informations précieuses pour comprendre le non-déterminisme et ses applications dans le développement de logiciels.

Lire plus

Efficacité vs. Scalabilité Horizontale : Un Compromis Nécessaire ?

2025-02-12
Efficacité vs. Scalabilité Horizontale : Un Compromis Nécessaire ?

Cet article explore la tension entre l'efficacité des logiciels et la scalabilité horizontale. L'auteur soutient que les logiciels optimisés pour la scalabilité ont souvent de mauvaises performances dans les environnements monomoteurs, et vice versa. Cela découle de la loi d'Amdahl, des frais généraux de coordination et des limitations des ressources partagées. Les algorithmes efficaces reposent souvent sur des hypothèses concernant le système et le problème qui peuvent ne plus être vraies lors d'une scalabilité horizontale. L'auteur discute également des facteurs culturels et des types de tâches qui influencent les choix, en illustrant avec des exemples tels que la base de données Tigerbeetle et le GIL de CPython. En fin de compte, une compréhension approfondie du problème et de l'environnement est essentielle pour atteindre une haute efficacité et une haute scalabilité.

Lire plus
Développement

L'histoire curieuse des ancres d'expressions régulières : pourquoi `$` et `^` ?

2025-01-21
L'histoire curieuse des ancres d'expressions régulières : pourquoi `$` et `^` ?

Cet article explore les origines historiques de l'utilisation de `$` et `^` comme ancres de ligne dans les expressions régulières. En remontant à l'éditeur de texte QED, `$` représentait initialement la fin du buffer, puis a été adapté par Ken Thompson pour signifier la fin d'une ligne dans les regex. Le choix de `^` est probablement dû à l'ensemble de caractères limité de la machine à écrire Teletype Model 35, `^` étant déjà présent dans ASCII-67. Ce n'était pas un choix de conception brillant, mais plutôt une conséquence des limitations matérielles et de l'ensemble de caractères de l'époque, devenant une convention dans les expressions régulières.

Lire plus
Développement

La modélisation mathématique révèle à quel point le jeu de Dreidel est mauvais

2024-12-18
La modélisation mathématique révèle à quel point le jeu de Dreidel est mauvais

L'année dernière, l'auteur a utilisé le langage de modélisation probabiliste PRISM pour modéliser le jeu traditionnel de vacances Dreidel, prouvant son manque d'amusement. Cette année, il a affiné le modèle pour simuler l'intégralité du jeu jusqu'à sa conclusion. Le nouveau modèle corrige le défaut précédent de ne simuler que l'élimination du premier joueur et améliore la logique de calcul des mises et de l'élimination des joueurs. Grâce à la simulation de modèles, l'auteur a découvert qu'en moyenne, une partie à quatre joueurs prend 760 tours pour se terminer, et la plus longue peut même dépasser 6 heures. Cela prouve complètement que le jeu Dreidel est long, fastidieux et frustrant.

Lire plus