Category: Développement

Backend de construction uv : Builds Python plus rapides et plus fluides

2025-07-03

Le backend de construction natif d’uv, uv_build, améliore considérablement la vitesse et l’expérience utilisateur lors de la construction de projets Python. Il propose des paramètres par défaut raisonnables, visant à ne nécessiter aucune configuration pour la plupart des utilisateurs, tout en offrant une configuration flexible pour s’adapter aux diverses structures de projet. uv_build prend actuellement en charge le code Python pur ; des backends alternatifs sont nécessaires pour les bibliothèques contenant des modules d’extension. Utilisez ce backend en ajoutant `uv_build` à votre fichier `pyproject.toml` ou en créant un nouveau projet avec `uv init --build-backend uv`. uv_build optimise également la normalisation du nom du paquet, la découverte des modules et les stratégies d’inclusion/exclusion des fichiers, ce qui conduit à des builds plus prévisibles et reproductibles.

Développement

Le code est tout ce dont vous avez besoin : Les limites des pipelines à composants multiples (MCP)

2025-07-03
Le code est tout ce dont vous avez besoin : Les limites des pipelines à composants multiples (MCP)

Cet article remet en question l’efficacité des pipelines à composants multiples (MCP) pour de nombreuses tâches, en arguant que leur forte dépendance à l’inférence les rend inefficaces et difficiles à mettre à l’échelle. L’auteur utilise un exemple personnel – la conversion de reStructuredText en Markdown – pour démontrer une approche supérieure : utiliser les LLM pour générer du code qui effectue la tâche, suivi d’une validation basée sur les LLM. Cette méthode réduit la dépendance à l’inférence, améliore la fiabilité et s’adapte bien, en particulier pour les tâches répétitives. Tout en reconnaissant les forces des MCP dans des scénarios de niche, l’auteur conclut que leurs limites inhérentes entravent l’automatisation à grande échelle. L’avenir, suggère-t-il, réside dans le développement de techniques de génération de code plus efficaces, combinées à la validation et à l’explication par les LLM pour améliorer la convivialité et l’applicabilité.

Développement

Imagebin de Max : Un témoignage de simplicité

2025-07-03
Imagebin de Max : Un témoignage de simplicité

Cette histoire raconte l'histoire de Max, un programmeur, et de son Imagebin, un script d'upload d'images PHP vieux de 15 ans. Le code d'Imagebin est remarquablement simple, seulement 233 lignes, dont la plupart sont des journaux de modifications. L'auteur a tenté une réécriture en Go, mais a constaté que la taille du code avait augmenté et que la lisibilité avait diminué. Cela l'a amené à réfléchir à la complexité de la conception de logiciels, soulignant la facilité de maintenance offerte par un code concis. La longévité d'Imagebin de Max est attribuée à cette simplicité. Finalement, l'auteur a décidé de conserver le code de Max et de continuer à utiliser PHP.

Développement

Compilation d'un noyau Linux nativement sur macOS : un voyage en enfer

2025-07-03
Compilation d'un noyau Linux nativement sur macOS : un voyage en enfer

Cet article détaille l'expérience de l'auteur lors de la compilation d'un noyau Linux (architecture RISC-V) nativement sur macOS. Le processus a été semé d'embûches : une version obsolète de make, l'incompatibilité du ld de macOS avec les attentes de Linux, l'absence des fichiers d'en-tête elf.h et byteswap.h, et des conflits de version avec uuid_t et sed. L'auteur a surmonté ces problèmes en utilisant Homebrew pour installer des chaînes d'outils à jour (make, llvm, lld, libelf, gnu-sed) et en créant des correctifs pour résoudre les incohérences des fichiers d'en-tête et les conflits de définition de type. Le noyau a été compilé avec succès, macOS étant plus rapide que Docker pour les compilations complètes, mais plus lent pour les compilations incrémentales. L'auteur conclut que la résolution des problèmes de compilation est un processus itératif et continu, similaire à l'intégration continue.

Développement

Questions et réponses fréquentes sur l'évaluation de l'IA : leçons de plus de 700 ingénieurs et chefs de produit

2025-07-03
Questions et réponses fréquentes sur l'évaluation de l'IA : leçons de plus de 700 ingénieurs et chefs de produit

Cet article résume les questions fréquemment posées lors de l'enseignement d'un cours d'évaluation de l'IA à plus de 700 ingénieurs et chefs de produit. Les sujets abordés incluent la question de savoir si RAG est mort, la sélection des modèles, les outils d'annotation, les méthodologies d'évaluation, la génération de données synthétiques et les lacunes des outils d'évaluation existants. Les auteurs soulignent l'importance de l'analyse des erreurs, en préconisant les évaluations binaires plutôt que les échelles de Likert, et en partageant les meilleures pratiques pour construire des outils d'annotation personnalisés, choisir des tailles de fragments appropriées et évaluer les systèmes RAG. L'article examine également les différences entre les garde-fous et les évaluateurs, la configuration minimale viable d'évaluation, l'évaluation des flux de travail agentifs et les différentes utilisations des évaluations dans la CI/CD par rapport à la surveillance de la production.

Déclarations de fonctions JavaScript : trois manières de définir des fonctions

2025-07-03
Déclarations de fonctions JavaScript : trois manières de définir des fonctions

Cet article explore les nuances des trois styles de déclaration de fonction en JavaScript : les déclarations de fonction, les expressions de fonction et les fonctions fléchées. Les déclarations de fonction sont « hoistées » ; les expressions de fonction peuvent être nommées, mais leurs noms ne sont pas liés à la portée ; les fonctions fléchées sont concises, mais elles n’ont pas de liaison `this`, de capacités de constructeur ni de fonctionnalité de générateur. Le choix dépend de l’utilisation du mot clé `this`, du besoin de fonctions génératrices et de la priorité accordée à la lisibilité du code. Un organigramme est fourni pour guider les développeurs dans le choix du style de déclaration de fonction approprié pour différentes situations.

Développement fonctions

L'avenir incertain de la programmation : anxiété, espoir et l'essor du développeur augmenté par l'IA

2025-07-03
L'avenir incertain de la programmation : anxiété, espoir et l'essor du développeur augmenté par l'IA

L'inquiétude d'un jeune programmeur suscite une réflexion sur l'avenir des carrières en programmation à l'ère de l'IA. L'auteur, fort de 28 ans d'expérience dans le secteur technologique, aborde les préoccupations liées aux pertes d'emplois causées par l'IA. L'argumentation repose sur l'idée que l'IA ne remplacera pas les programmeurs, mais augmentera leurs capacités, leur permettant de se concentrer sur la résolution créative de problèmes. Le programmeur de demain devra maîtriser le contexte, guider efficacement les outils d'IA et rester un apprenant constant pour éviter la stagnation. La valeur fondamentale d'un programmeur – résolution de problèmes, pensée critique et ingéniosité spécifiquement humaine – restera irremplaçable par l'IA.

Développement

LLM : Accélération de la génération de code, mais la compréhension reste le goulot d'étranglement

2025-07-03
LLM : Accélération de la génération de code, mais la compréhension reste le goulot d'étranglement

L'avènement des grands modèles linguistiques (LLM) a considérablement accéléré la génération de code. Cependant, cela n'a pas résolu les véritables goulots d'étranglement de l'ingénierie logicielle : les revues de code, le transfert de connaissances, les tests, le débogage et la collaboration d'équipe. L'article soutient que les LLM réduisent le coût de l'écriture du code, mais le coût de la compréhension, des tests et de la confiance en ce code est plus élevé que jamais. Le code généré par LLM peut être difficile à comprendre, violer les conventions établies ou introduire des effets secondaires inattendus, augmentant ainsi la difficulté de la revue et de la maintenance. En fin de compte, l'ingénierie logicielle repose toujours sur la confiance de l'équipe, le contexte partagé et une revue minutieuse du code ; ce sont les clés de l'efficacité.

Développement

Les LLM comme compilateurs : l'avenir de la génération de code ?

2025-07-03

L'auteur prévoit un nouveau paradigme de développement logiciel : utiliser les grands modèles linguistiques (LLM) comme compilateurs. Au lieu d'écrire du code directement, les ingénieurs fournissent le contexte (exigences, cas de test, etc.) au LLM, qui génère et intègre le code itérativement. Les ingénieurs se concentrent sur le contexte et les tests, tandis que le LLM gère la génération et l'intégration du code. Cela réduit la barrière à l'entrée, augmente la vitesse de développement et révolutionne potentiellement l'ingénierie logicielle. Bien que les sorties du LLM ne soient pas parfaitement prévisibles, les tests et l'itération garantissent la fiabilité. L'idée centrale est de traiter le code comme une couche intermédiaire ; l'objectif est la fonctionnalité, pas le code parfait.

Développement

L'évolution des bibliothèques de cache en Go : de Ristretto à Otter v2

2025-07-03

Cet article explore l'évolution des bibliothèques de cache en Go. Les premières bibliothèques de cache Go souffraient de problèmes de concurrence et de goulots d'étranglement de performances. Ristretto est apparu comme un leader, offrant un débit élevé et de bons taux de réussite, mais ses défauts de conception ont finalement conduit à une baisse des taux de réussite et à des performances sous-optimales sous certaines charges. Theine et Otter v1 ont suivi, tentant de résoudre les lacunes de Ristretto, chacune ayant ses propres forces et faiblesses. Enfin, l'auteur a développé Otter v2, qui intègre les leçons tirées de ses prédécesseurs et s'inspire de la bibliothèque Caffeine de Java pour atteindre un débit élevé, des taux de réussite élevés et des fonctionnalités riches, ce qui en fait l'un des principaux concurrents parmi les bibliothèques de cache Go.

Développement algorithmes de cache

Chasse au Higgs-Bugson : Débogage d’un problème NFS/Kerberos au niveau du noyau

2025-07-03
Chasse au Higgs-Bugson : Débogage d’un problème NFS/Kerberos au niveau du noyau

Des ingénieurs ont rencontré un bug difficile à reproduire qui provoquait des échecs de copie de fichiers (-EACCES) dans Gord, un système critique de données de trading. La désactivation de Kerberos a résolu le problème, indiquant des problèmes d’authentification. L’enquête a révélé que le noyau obtient les informations d’identification Kerberos via le démon rpc_gssd, mais les journaux n’ont montré aucune anomalie. Des tests approfondis, notamment la création d’un système de fichiers factice en mémoire et l’utilisation de bpftrace pour le suivi du noyau, ont finalement permis d’identifier le problème : une charge élevée du serveur NFS a entraîné des retransmissions de requêtes. Le noyau a mal géré les requêtes/réponses avec des XID identiques mais des numéros de séquence GSS différents, ce qui a entraîné des incohérences de somme de contrôle et des erreurs. L’ingénieur a corrigé le noyau pour éviter la retransmission immédiate en raison d’incohérences de numéro de séquence.

Développement bug du noyau

10 fonctionnalités impressionnantes du langage de programmation D

2025-07-03

Cet article, facile d'accès pour les débutants, explore dix fonctionnalités captivantes du langage de programmation D. Des petites améliorations de qualité de vie aux fonctionnalités majeures telles que les constructeurs automatiques, la conception par contrat, l'exécution des fonctions au moment de la compilation (CTFE) et les tests unitaires intégrés, l'article fournit des explications claires. Les puissantes capacités de métaprogrammation de D sont également mises en avant, rivalisant avec peu de langages compilés statiquement en termes de flexibilité et de puissance de modélisation. L'article couvre également des fonctionnalités de syntaxe uniques à D, telles que l'opérateur dollar, l'omission des parenthèses et la syntaxe d'appel de fonction uniforme (UFCS), améliorant considérablement la lisibilité et l'efficacité du code. De plus, D prend en charge les importations avec portée et sélectives, ainsi qu'un générateur de documentation intégré, améliorant encore la maintenabilité et la lisibilité du code. En résumé, D offre une combinaison convaincante de fonctionnalités pour une programmation efficace et pratique.

Développement Fonctionnalités

Arrêtez de construire des agents d'IA !

2025-07-03
Arrêtez de construire des agents d'IA !

Hugo, un expert qui conseille des équipes de Netflix, Meta et de l'US Air Force sur la construction de systèmes basés sur les LLM, soutient que de nombreuses équipes adoptent prématurément des agents d'IA, ce qui entraîne des systèmes complexes et difficiles à déboguer. Il affirme que des flux de travail plus simples, tels que l'enchaînement, le traitement parallèle, le routage et les modèles d'orchestrateur-travailleur, sont souvent plus efficaces que des agents complexes. Les agents sont la bonne solution uniquement lorsqu'il s'agit de flux de travail dynamiques nécessitant de la mémoire, de la délégation et de la planification. L'auteur partage cinq modèles de flux de travail LLM et souligne l'importance de construire des systèmes observables et contrôlables. Évitez les agents pour les systèmes d'entreprise stables ; ils sont mieux adaptés aux scénarios avec intervention humaine.

Développement Flux de travail LLM

Gmailtail : Outil de surveillance Gmail en ligne de commande

2025-07-03
Gmailtail : Outil de surveillance Gmail en ligne de commande

Gmailtail est un outil en ligne de commande permettant de surveiller en temps réel les messages Gmail et de les exporter au format JSON. Il offre un filtrage flexible (expéditeur, objet, étiquettes, pièces jointes, etc.), plusieurs formats de sortie (JSON, JSON Lines, compact), l'authentification OAuth2 et les comptes de service, ainsi que la reprise sur point de contrôle. Les utilisateurs peuvent personnaliser les règles de surveillance à l'aide d'arguments simples en ligne de commande ou d'un fichier de configuration YAML, ce qui le rend idéal pour l'automatisation, la surveillance et l'intégration avec d'autres outils.

Développement

L'astuce XOR intelligente : résoudre des questions d'entretien difficiles

2025-07-03

Cet article dévoile une astuce intelligente utilisant l'opérateur bit à bit XOR pour résoudre plusieurs problèmes d'entretien courants. XOR possède des propriétés uniques : des nombres identiques donnent 0, des nombres différents donnent une valeur non nulle, et l'ordre des opérations n'affecte pas le résultat. En tirant parti de ces propriétés, vous pouvez trouver élégamment des nombres manquants ou dupliqués dans un tableau, même deux nombres manquants/dupliqués, sans avoir recours à des algorithmes complexes ou à des structures de données. L'article explique progressivement les applications de l'astuce XOR avec des exemples de code, offrant une approche efficace et concise pour résoudre les problèmes.

Développement

Rails : Le miracle de l'open source et son impact sur une génération de frameworks

2025-07-02
Rails : Le miracle de l'open source et son impact sur une génération de frameworks

Lancé en 2004 sous licence MIT, Ruby on Rails a révolutionné le développement web grâce à sa liberté, sa flexibilité et sa forte communauté. Sa philosophie « convention sur configuration », son ORM ActiveRecord et ses puissants outils de scaffolding ont considérablement amélioré la productivité des développeurs, influençant profondément les frameworks suivants tels que Laravel, Django et Phoenix. Rails a prouvé que l'open source pouvait rivaliser, voire surpasser, les alternatives commerciales, établissant un modèle pour les autres et continuant de façonner le développement web.

Développement

IntyBASIC : Un compilateur BASIC qui relance le développement de jeux Intellivision

2025-07-02
IntyBASIC : Un compilateur BASIC qui relance le développement de jeux Intellivision

Inspiré par les défis du développement de jeux pour Intellivision, l'auteur a créé IntyBASIC, un compilateur BASIC pour la console Intellivision. Lancé en 2014, IntyBASIC traduit le code source BASIC en assembleur CP1610, prenant en charge les fonctionnalités vidéo et sonores de l'Intellivision. Son succès a entraîné une augmentation de nouveaux jeux et de jeux homebrews pour Intellivision, menant même à un concours de programmation. L'auteur a également écrit deux livres partageant des idées sur le développement de jeux, couvrant des techniques de base à avancées avec le code source complet des jeux inclus.

Développement

Éditeur visuel de flux de conversation pour chatbot

2025-07-02
Éditeur visuel de flux de conversation pour chatbot

Un outil visuel basé sur un navigateur pour concevoir, tester et exporter des flux de conversation de chatbot au format JSON. Ajoutez des nœuds, modifiez le contenu, testez le flux et importez/exportez des fichiers JSON. Le JSON exporté est compatible avec n'importe quelle application de chatbot. Les options d'installation incluent : l'installation en tant que dépendance de développement, l'ajout aux scripts de projet ou l'installation globale.

Math.Pow(-1, 2) renvoie -1 dans la version Canary de .NET 8

2025-07-02
Math.Pow(-1, 2) renvoie -1 dans la version Canary de .NET 8

Un développeur du jeu osu! a signalé un problème étrange dans la version Canary de Windows 11 (27881.1000) où `Math.Pow(-1, 2)` dans .NET 8 renvoie inopinément -1 au lieu de 1. Le problème se produit également avec la fonction `std::pow()` de C++, mais fonctionne correctement en Python. Le développeur a créé une issue sur GitHub et suggère de rejoindre le serveur Discord d'osu! pour plus de détails.

Développement Bug Windows 11

Arrêtez de dire « Cliquez ici » ! - Rédiger des liens plus efficaces

2025-07-02

Le W3C a publié un guide sur la rédaction de liens plus efficaces. Il déconseille l'utilisation de phrases mécaniques comme « cliquez ici », suggérant plutôt un texte concis et significatif qui décrit clairement le contenu du lien, et non la mécanique du clic. L'article présente également les Conseils QA du W3C, une ressource offrant des conseils pratiques aux développeurs et designers web, y compris comment soumettre des conseils et un index des conseils existants.

Développement Texte de lien

Portabl E : Un compilateur AmigaE multiplateforme

2025-07-02

Portabl E est une recréation du langage de programmation AmigaE, amélioré avec des améliorations et conçu pour une compatibilité multiplateforme. La version r6b est maintenant disponible, avec une prise en charge complète d'AmigaOS4, AROS et MorphOS, une bonne prise en charge d'AmigaOS3 et des fonctionnalités de base pour Linux/Windows. Le téléchargement nécessite le nom d'utilisateur "user" et le mot de passe "password". Le projet inclut du code d'exemple, des captures d'écran, des programmes précompilés, de la documentation, des forums et des listes de diffusion pour le support communautaire.

Développement

arXivLabs : Projets expérimentaux avec des collaborateurs communautaires

2025-07-02
arXivLabs : Projets expérimentaux avec des collaborateurs communautaires

arXivLabs est un cadre permettant aux collaborateurs de développer et de partager de nouvelles fonctionnalités arXiv directement sur notre site web. Les individus et les organisations qui travaillent avec arXivLabs ont adopté et accepté nos valeurs d'ouverture, de communauté, d'excellence et de confidentialité des données des utilisateurs. arXiv est engagé envers ces valeurs et ne travaille qu'avec des partenaires qui les respectent. Vous avez une idée de projet qui apportera de la valeur à la communauté arXiv ? En savoir plus sur arXivLabs.

Développement

arXivLabs : Expérimentations en collaboration avec la communauté

2025-07-02
arXivLabs : Expérimentations en collaboration avec la communauté

arXivLabs est un cadre permettant de collaborer au développement de nouvelles fonctionnalités d'arXiv directement sur le site. Les individus et les organisations impliqués partagent les valeurs d'arXiv : ouverture, communauté, excellence et confidentialité des données utilisateur. arXiv ne collabore qu'avec des partenaires qui adhèrent à ces valeurs. Vous avez une idée pour améliorer la communauté arXiv ? En savoir plus sur arXivLabs.

Développement

Construction d'une usine de code IA auto-améliorante

2025-07-02
Construction d'une usine de code IA auto-améliorante

Cet article détaille l'expérience de l'auteur dans la construction d'une usine de code IA personnelle utilisant les modèles d'IA Claude, o3 et Sonnet. Le principe fondamental est de « corriger les entrées, pas les sorties » : au lieu de corriger directement le code généré, l'auteur ajuste les plans, les invites ou les combinaisons d'agents. L'usine s'améliore itérativement grâce à la planification (o3), l'exécution (Sonnet) et la vérification (o3 et Sonnet), en utilisant les worktrees Git pour le développement parallèle. L'auteur partage des stratégies d'évolutivité, telles que la création d'agents spécialisés et l'application de règles de style de code cohérentes. L'objectif final est un système d'IA qui génère, vérifie et améliore son propre code de manière autonome.

Développement

Spegel : Un navigateur terminal utilisant les LLM pour réécrire les pages web

2025-07-02
Spegel : Un navigateur terminal utilisant les LLM pour réécrire les pages web

Spegel est un navigateur web terminal, preuve de concept, qui utilise des LLM pour transformer du HTML en markdown, le rendant directement dans votre terminal. Développé en un week-end, sa praticité a été considérablement améliorée par la sortie du Google Gemini 2.5 Pro Lite plus rapide. Spegel permet des vues personnalisées grâce à des invites personnalisées, comme extraire uniquement les informations essentielles d'une recette. Bien qu'il ne prenne pas en charge les requêtes POST, il simplifie la navigation en se concentrant sur les besoins définis par l'utilisateur, offrant une expérience plus propre et moins encombrée que les navigateurs terminaux traditionnels.

arXivLabs : Projets expérimentaux avec des collaborateurs communautaires

2025-07-02
arXivLabs : Projets expérimentaux avec des collaborateurs communautaires

arXivLabs est un cadre qui permet aux collaborateurs de développer et de partager de nouvelles fonctionnalités arXiv directement sur notre site web. Les individus et les organisations qui travaillent avec arXivLabs ont adopté et accepté nos valeurs d'ouverture, de communauté, d'excellence et de confidentialité des données des utilisateurs. arXiv s'engage envers ces valeurs et ne travaille qu'avec des partenaires qui les partagent. Vous avez une idée de projet qui apportera une valeur ajoutée à la communauté arXiv ? En savoir plus sur arXivLabs.

Développement

Édition bidirectionnelle en temps réel entre un éditeur de code et une interface graphique via un serveur LSP

2025-07-02
Édition bidirectionnelle en temps réel entre un éditeur de code et une interface graphique via un serveur LSP

Un programmeur a construit un prototype utilisant un serveur LSP pour permettre une édition bidirectionnelle en temps réel entre n'importe quel éditeur de code moderne et une interface graphique. Les modifications apportées à l'éditeur de code mettent instantanément à jour l'interface graphique, et inversement, ce qui résout une limitation majeure des systèmes de CAO basés sur du code existants. Cela permet aux utilisateurs de tirer parti de leurs éditeurs préférés tout en bénéficiant d'un retour visuel en temps réel. Bien qu'il ne s'agisse actuellement que d'une petite démonstration, elle met en évidence le potentiel des serveurs LSP pour construire des outils de CAO basés sur du code plus puissants.

Développement serveur LSP CAO par code

Claude génère un fractal de Mandelbrot en assembleur x86

2025-07-02
Claude génère un fractal de Mandelbrot en assembleur x86

Inspiré par un tweet, l'auteur a mis au défi l'IA Claude de générer du code assembleur x86 pour créer un fractal de Mandelbrot. Les tentatives initiales ont échoué à la compilation, mais en utilisant les capacités de débogage et de modification itératives de Claude Code, l'auteur a réussi à compiler et à exécuter le code dans un conteneur Docker, générant un fractal d'art ASCII satisfaisant. Cela démontre les impressionnantes capacités de compréhension et de débogage de code de Claude Code.

Développement

Un bot Discord qui a sauvé notre amitié

2025-07-01

En 2022, un groupe d'amis dispersés à travers le monde a eu du mal à rester connectés pendant la pandémie. Leur groupe Signal est devenu un chaos, rendant difficile la coordination des soirées jeux. Un ami a créé un bot Discord simple qui envoie une notification à un canal texte chaque fois que quelqu'un rejoint un canal vocal. Cette solution apparemment simple a non seulement résolu le problème de communication, mais a aussi inopinément favorisé des interactions quotidiennes plus informelles, devenant un 'signal de chauve-souris' numérique pour des rencontres spontanées. Maintenant, ils utilisent Discord presque tous les soirs, créant même un événement annuel "Discord Wrapped" pour célébrer leurs connexions numériques.

Développement

Les limites d'abstraction sont des limites d'optimisation : Relever les abstractions pour optimiser les requêtes de base de données

2025-07-01
Les limites d'abstraction sont des limites d'optimisation : Relever les abstractions pour optimiser les requêtes de base de données

Le problème de la requête N+1, où une application envoie une requête SQL par élément d'une collection, provient de fuites d'abstraction. Au lieu de réduire la limite d'abstraction (par exemple, en disant explicitement à l'ORM de récupérer en bloc), cet article propose de l'augmenter. En intégrant l'ORM au langage, les règles de réécriture peuvent fusionner N requêtes en une seule. Cela reflète l'utilisation de règles de réécriture en Haskell pour l'optimisation des listes, en tirant parti de sa nature déclarative pour abstraire la sémantique opérationnelle de bas niveau afin d'obtenir une meilleure optimisation. Conclusion principale : relever la limite d'abstraction relève également la limite d'optimisation.

1 2 48 49 50 52 54 55 56 214 215