A raíz de las recientes vulnerabilidades de Meltdown y Spectre, vale la pena pasar algún tiempo mirando su causa principal. Ambas vulnerabilidades involucraban a los procesadores ejecutando instrucciones especulativamente sin ningún tipo de control de acceso permitiendo al atacante observar los resultados a través de un canal lateral. Las características que llevaron a estas vulnerabilidades se añadieron para permitir que los programadores de C continúen creyendo que están programando en un lenguaje de bajo nivel.
Comentarios
Como yo lo tengo entendido, y lo estudié, C es de alto nivel. Está claro que no es Java o Javascript (por nombrar alguno), pero tampoco es un ensamblador.
Creo que eso es interpretación, definiciones; al final C es más "bajo" que Java o Python, pero más "alto" que cualquier ensamblador.
Pues en el primer libro que leí sobre C lo presentaban como un lenguaje de alto nivel. Vean ensamblador y lo entenderán.
"A programming language is low level when its programs require attention to the irrelevant."
malloc y free.
Es de bajo nivel, de nada.
#1 O volatile.