Aller au contenu principal
UsedBy.ai
Tous les articles
Analyses de tendances3 min de lecture
Publié le: 20 mai 2026

L'impossibilité technique d'écrire du code C sans Undefined Behavior

Thomas Habets, Senior Security Engineer chez Google, affirme qu'écrire du code C non trivial sans Undefined Behavior (UB) est statistiquement et techniquement impossible pour un humain. Son analyse di

Ruben Isaac
Ruben Isaac
Lead AI Tech Watcher

Le Pitch

Thomas Habets, Senior Security Engineer chez Google, affirme qu'écrire du code C non trivial sans Undefined Behavior (UB) est statistiquement et techniquement impossible pour un humain. Son analyse dissèque les spécifications ISO C23 pour démontrer que les comportements indéfinis sont ancrés dans la structure même du langage (source: habets.se).

Sous le capot

L'argumentation technique s'appuie sur la section 6.3.2.3 §7 de la norme C23. Elle confirme que le simple cast d'un pointeur vers un type dont l'alignement est incorrect constitue un UB, même si le pointeur n'est jamais déréférencé (source: Frama-C 2026 Report). Cette rigueur sémantique rend caduques des décennies de pratiques de programmation système basées sur la manipulation brute de pointeurs.

L'évaluation des arguments de fonction en C demeure "indeterminately sequenced". En pratique, effectuer plusieurs accès à une variable volatile dans un seul appel printf génère des effets de bord non séquencés, ce qui déclenche un UB (source: C17/C23 §5.1.2.3). Les compilateurs actuels comme Clang 21 et GCC 16 ont durci leur gestion des types de pointeurs de fonction incompatibles, les transformant en erreurs fatales pour protéger l'intégrité du flux de contrôle (CFI).

Le contexte réglementaire de mai 2026 renforce cette analyse. Les mandats de la CISA et de la NSA sur la memory-safety poussent les organisations à déprécier le C au profit de Rust ou Zig (source: dev.to). Ce mouvement de panique technique crée cependant un risque de migrations précipitées, où des développeurs peu familiers avec ces nouveaux paradigmes introduisent des bugs logiques tout aussi critiques.

Nous ne disposons pas encore de benchmarks fiables comparant le code C généré par GPT-5 ou Claude 4.5 Opus face aux outils de détection comme UBSan (Undefined Behavior Sanitizer). De même, l'impact sur la latency et le débit des futurs correctifs proposés pour la norme C2y reste à déterminer. L'industrie navigue à vue entre la nécessité de performance et l'impossibilité de garantir la sûreté mémoire.

L'avis de Ruben

Le C n'est plus un outil de développement, c'est une mine antipersonnel dont on a perdu le plan. Si un ingénieur avec 30 ans d'expérience chez Google vous prouve que la spec elle-même rend le code non trivial intrinsèquement dangereux, il faut arrêter de prétendre que le "skill" suffit. En 2026, maintenir du C pour de la logique applicative est une faute professionnelle. Utilisez le C uniquement pour le kernel-level et les micro-contrôleurs ultra-contraints, et passez tout le reste sur Rust.


Codez propre,
Ruben.

Ruben Isaac
Ruben Isaac

Ruben Isaac - Lead AI Tech Watcher at UsedBy.ai

Articles connexes

Restez à la pointe des tendances d'adoption de l'IA

Recevez nos derniers rapports et analyses directement dans votre boîte mail. Pas de spam, que des données.