- Un article qui soutient que, contrairement à une croyance répandue, C n’est pas un langage de bas niveau
- L’auteur, David Chisnall, avance que les vulnérabilités Meltdown et Spectre sont dues à la capacité des processeurs à exécuter des instructions en contournant les vérifications d’accès, une fonctionnalité ajoutée pour permettre aux programmeurs C de croire qu’ils programment dans un langage de bas niveau.
- Chisnall affirme qu’être « proche du métal » signifie qu’un langage doit fournir une machine abstraite qui se mappe facilement sur les abstractions exposées par la plateforme cible, et il soutient que ce n’est pas le cas de C.
- L’auteur suggère que la cause profonde des vulnérabilités Spectre et Meltdown tient au fait que les architectes processeur ont essayé de concevoir des processeurs rapides exposant une machine abstraite semblable au PDP-11, ce qui a permis aux programmeurs C de continuer à croire que leur langage était proche du matériel sous-jacent.
- Chisnall soutient que pour exécuter rapidement du code C, il faut des transformations de compilation complexes et des milliers d’années-homme pour construire des compilateurs suffisamment intelligents.
- L’auteur avance qu’une propriété essentielle d’un langage de bas niveau est que les programmeurs doivent pouvoir comprendre facilement comment la machine abstraite du langage se mappe sur la machine physique sous-jacente, et il affirme que ce n’est pas le cas avec C.
- Chisnall conclut qu’il est peut-être temps d’arrêter d’essayer de rendre le code C rapide, et de réfléchir plutôt à ce à quoi devrait ressembler un modèle de programmation pour des processeurs rapides. Selon lui, des processeurs conçus uniquement pour la vitesse prendraient probablement en charge un grand nombre de threads, disposeraient de larges unités vectorielles et d’un modèle mémoire bien plus simple.
1 commentaires
Avis sur Hacker News
structet du fait que le dépassement signé est un comportement indéfini, paraît constructive.