- Ein Artikel, der entgegen der verbreiteten Annahme argumentiert, dass C keine Low-Level-Sprache ist
- Der Autor David Chisnall schlägt vor, dass die Schwachstellen Meltdown und Spectre auf die Fähigkeit von Prozessoren zurückgehen, Befehle unter Umgehung von Zugriffsprüfungen auszuführen, und dass diese Fähigkeit hinzugefügt wurde, damit C-Programmierer glauben, sie würden in einer Low-Level-Sprache programmieren.
- Chisnall argumentiert, dass „nah am Metall“ zu sein bedeutet, dass eine Sprache eine abstrakte Maschine bereitstellen muss, die sich leicht auf die von der Zielplattform offengelegten Abstraktionen abbilden lässt, und behauptet, dass dies bei C nicht der Fall ist.
- Der Autor vermutet, dass die eigentliche Ursache der Schwachstellen Spectre und Meltdown darin liegt, dass Prozessorarchitekten versucht haben, schnelle Prozessoren zu bauen, die abstrakte Maschinen wie den PDP-11 offenlegen, wodurch C-Programmierer weiterhin glauben konnten, ihre Sprache sei nahe an der zugrunde liegenden Hardware.
- Chisnall behauptet, dass es Tausende Personenjahre und komplexe Compiler-Transformationen braucht, um C-Code schnell auszuführen und Compiler zu bauen, die dafür intelligent genug sind.
- Der Autor schlägt vor, dass die Kerneigenschaft einer Low-Level-Sprache darin besteht, dass Programmierer leicht verstehen können, wie die abstrakte Maschine der Sprache auf die zugrunde liegende physische Maschine abgebildet wird, und argumentiert, dass dies bei C nicht zutrifft.
- Chisnall kommt zu dem Schluss, dass es vielleicht an der Zeit ist, nicht länger zu versuchen, C-Code schnell zu machen, und stattdessen darüber nachzudenken, wie ein Programmiermodell auf schnellen Prozessoren aussehen sollte. Er vermutet, dass ein rein auf Geschwindigkeit ausgelegter Prozessor wahrscheinlich sehr viele Threads unterstützen, breite Vektoreinheiten besitzen und ein deutlich einfacheres Speichermodell haben würde.
1 Kommentare
Hacker News-Diskussion
struct-Padding und dem undefinierten Verhalten bei Signed Overflow konstruktiv.