- Un artículo que sostiene que, contrario a la creencia popular, C no es un lenguaje de bajo nivel
- El autor, David Chisnall, sugiere que las vulnerabilidades Meltdown y Spectre existen por la capacidad de los procesadores de ejecutar instrucciones saltándose las comprobaciones de acceso, una función que se añadió para hacer creer a los programadores de C que estaban programando en un lenguaje de bajo nivel.
- Chisnall argumenta que estar "cerca del metal" significa ofrecer una máquina abstracta que pueda mapearse fácilmente a las abstracciones expuestas por la plataforma objetivo, y sostiene que esto no ocurre con C.
- El autor propone que la causa raíz de las vulnerabilidades Spectre y Meltdown es que los arquitectos de procesadores intentaron crear procesadores rápidos que expusieran máquinas abstractas como la PDP-11, lo que permitió que los programadores de C siguieran creyendo que su lenguaje estaba cerca del hardware subyacente.
- Chisnall afirma que, para ejecutar código C rápidamente, se requieren transformaciones complejas del compilador y miles de años-persona para construir compiladores lo bastante inteligentes.
- El autor sugiere que una propiedad clave de un lenguaje de bajo nivel es que los programadores puedan entender con facilidad cómo la máquina abstracta del lenguaje se mapea a la máquina física subyacente, y sostiene que ese no es el caso de C.
- Chisnall concluye que quizá sea momento de dejar de intentar hacer que el código C sea rápido y, en cambio, pensar cómo debería verse el modelo de programación en procesadores rápidos. Sugiere que un procesador diseñado puramente para la velocidad probablemente soportaría una gran cantidad de hilos, tendría unidades vectoriales anchas y un modelo de memoria mucho más simple.
1 comentarios
Opiniones en Hacker News
structy que el signed overflow sea comportamiento no definido, parece constructiva.