Connect with us

BUSCAR EN SINALOAHOY

Tecnología

¿Se puede confiar en el compilador de C?

Los lenguajes de programación vienen en “dos sabores”, intérpretes y compiladores. Los primeros, los intérpretes, obligan al sistema a analizar cada línea de código a ver si está correctamente escrita y si es así, ejecutar lo que el programador quiere. Si por alguna razón el sistema regresa a esa línea, tiene que volver a verificar que está bien escrita, aunque ya lo haya hecho antes. Por otra parte, los compiladores, traducen a código de máquina las instrucciones del programador. Así, el compilador genera un código que, en principio, corre unas 10 a 100 veces más rápido que la versión interpretada.

Crean algoritmo capaz de predecir tiros de tenis

Pero claramente, los programas que en general se escriben, resuelven problemas administrativos, financieros, o bien se usan para jugar, etcétera. Sin embargo, hay aplicaciones que concretamente tienen que correr correctamente porque pudiese estar la vida de alguien en juego. Pensemos por ejemplo en programas que llevan el control de un marcapasos, el cual no pude funcionar mal, no puede tener “bugs” que pongan en peligro la vida del paciente. O pensemos en un programa que corre en un dispositivo como una consola electrónica que usan los buzos y que da los parámetros para saber qué tan rápido debe subir a la superficie para no sufrir problemas por una mala descompresión.

Y esto hace pensar que una cosa es hacer un programa que haga cálculos para -digamos- controlar la contabilidad y otra cuando se pone en juego la vida de alguien. ¿Podríamos confiar entonces en que el compilador va a traducir correctamente el código? La pregunta puede ser muy sensible en algunos aspectos y hay quien trabaja ya en este tema.

Así, se ha desarrollado el compilador COMPCERT, el cual es un compilador formalmente verificado, lo que significa es que hay una prueba matemática que indica que al escribir código en C, se traduce correctamente a lenguaje de máquina. El compilador puede generar código para PowerPC, ARM, RISC-V y x86, el cual acepta un subconjunto del ISO C 99 con un par de extensiones. Es claro que este compilador probablemente no pueda generar código tan rápido como el gcc, pero lo que sí vale la pena destacar es que el código creado cumple con las especificaciones dadas.

Hay que reconocer que la idea de COMPCERT es buena, pero no hay garantía que un programa escrito con este compilador va a correr correctamente. Por ejemplo, si ponemos “x=1/A”, donde A es una variable entera y en algún caso, dicha variable se vuelve cero, tendremos un error y un problema con nuestra lógica en el software. Esto no es atribuible directamente al compilador. Vamos, es un error del usuario.

Para que un compilador de estas características pueda funcionar, se tienen que poner algunas restricciones, que en algunos compiladores se llaman “directivas”, pero que aquí no son opcionales. Por ejemplo, arreglos de longitud variable no están permitidos y no se puede usar longjmp ni setjmp. Hay restricciones en el caso de la instrucción “switch” también. Sin embargo, hay una variedad de opciones que permiten examinar el código corriendo a través de un intérprete.

Y más de uno podrá pensar que los compiladores normalmente traducen correctamente, pero la realidad es que en la documentación de los compiladores, se han hallado artículos (de 1995 al 2011), en donde se ha hallado errores en la forma de compilar, incluso en los compiladores más populares.

Para que el COMPCERT funcione correctamente, un asistente de la prueba matemática del código compilador checa el código pasando por el mismo en 15 ocasiones, y todas deben probarse como correctas. Incluso así, hay un 10% de código que se ha demostrado que no es correcto. Los desarrolladores de COMPCERT dedicaron 6 años de procesamiento de máquina paras hallar errores de compilación usando Csmith y no pudieron hallar ningún error, cosa que no fue así considerando otros compiladores.

Esta idea de los compiladores verificados es interesante aunque quizás no es necesaria en la mayoría de las aplicaciones. Sin embargo, es un paso para hacer que formalmente los compiladores sean herramientas más sólidas.

La entrada ¿Se puede confiar en el compilador de C? se publicó primero en unocero.

Últimas noticias

Mazatlán

La candidata de Morena a la Presidencia Municipal de Mazatlán se reunió con alrededor de 400 trabajadores del Grupo Hersa en el complejo Marina...

Mazatlán

🚨 ¡Trágico hallazgo en una taquería de Mazatlán! 😢 Las autoridades investigan la muerte de un hombre encontrado sin vida en el baño del...

Culiacán

A dos meses de la muerte de La Gilbertona, su amigo y ex manager Pavel Moreno, quien desde años la apoyó, reveló que la casa de...

Nacionales

Alerta en el sistema eléctrico de México debido a fallas en subestaciones y líneas de transmisión

Mazatlán

La candidata del pueblo participó en una Reunión con Jóvenes Emprendedoras y Emprendedores, a la que asistieron el candidato a diputado por el Distrito...

Choix

Autoridades del municipio de Choix, confirmaron la detención del presunto asesino del gobernador tradicional de la Ciénega de Núñez de Choix,

Suscríbete y recibe noticias

Tendencia

Culiacán

Hasta el momento, no se ha proporcionado información oficial sobre el estado de salud de los militares heridos.

Ahome

Un adulto mayor perdió la vida en un trágico accidente, al ser atropellado por su propio vehículo.

Mazatlán

La Unidad Especializada en la Prevención de la Violencia Familiar reporta un aumento.

Sinaloa

Culiacán, Sinaloa.- Luego de luchar por su vida varias horas tras chocar el trailer en que viajaban, el conductor y su hijo de 5...

Nacionales

El presidente López Obrador izará la Bandera monumental en la marcha opositora en Tapachula.

Guasave

Medidas ante la escasez de agua en Guasave desatan críticas.

Los Mochis

José Santos Valdivia hizo un llamado a la comunidad para recibir apoyo en la reconstrucción del negocio.

Mazatlán

La avenida La Pradera se transformó en una gran fiesta guinda engalanada con el brillo de Estrella Palacios.