HeadlinesBriefing HeadlinesBriefing.com

Reducir el comportamiento indefinido en el lenguaje C

Hacker News •
×

Somos malos en marketing — lo admitimos. Nuestra fortaleza es escribir artículos del tipo en el que desarrolladores, administradores y defensores del software libre confían para saber qué ocurre en el mundo de Linux. Suscríbete hoy para ayudarnos a seguir haciendo eso, y para que no tengamos que volverse buenos en marketing.

Como profesor de ingeniería biomédica, Martin Uecker quizás no encaje en el perfil de un presentador típico en Kernel Recipes. Sin embargo, es un usuario de Linux de toda la vida y trabaja en software libre para controlar escáneres de resonancia magnética (MRI). Asistió a la conferencia para hablar sobre el lenguaje de programación C, el problema específico del comportamiento indefinido en C, y si eventualmente puede convertirse en un lenguaje seguro en cuanto a memoria.

¿Por qué molestarse con C en 2026? Dijo que sigue siendo un gran lenguaje. C es portable, estable a largo plazo, ofrece compilación rápida y el código binario resultante es rápido. "Lo que ves es lo que obtienes"; es fácil mirar el código C y tener una idea de lo que realmente hará el ordenador. Hay muchas herramientas para trabajar con el lenguaje, y C se aparta cuando es necesario.

C tiene una larga historia, y eso afecta al lenguaje tal como lo vemos hoy, dijo. El estándar C89 tuvo que lidiar con una amplia variedad de hardware, incluidas máquinas con representaciones de enteros en magnitud con signo o complemento a uno, memoria segmentada, representaciones de punteros exóticas y tamaños sorprendentes para los tipos. Algunas máquinas Honeywell, por ejemplo, tenían bytes de nueve bits. Eso complicó enormemente la tarea de escribir un estándar que permitiera escribir código portable. El enfoque adoptado fue definir la semántica del lenguaje en términos de una máquina abstracta. Todas las operaciones deben ejecutarse como si se hubieran ejecutado en esa máquina abstracta, que puede no coincidir exactamente con el hardware real. El comportamiento observable del programa debe ser lo que habría hecho la máquina abstracta.

Fuente: Hacker News · Resumido por HeadlinesBriefing