Diría que el programador tiene la culpa, a menos que una prueba bastante rigurosa de una o más versiones del compilador / intérprete para el mismo idioma muestre una discrepancia (el (los) otro (s) funcionan como se esperaba y uno falla, o hace algo inesperado), y la especificación. dice que tu código debería funcionar.
Es posible que una implementación de lenguaje contenga un error que afecta la capacidad de compilar / ejecutar código legal. Estos son, después de todo, solo programas, y están sujetos a los mismos defectos en los programadores humanos, como en otro software.
Creo que la razón por la cual los compiladores / intérpretes tienden a ser impecables, o parecen ser de esa manera, es que son en gran medida artefactos matemáticos, que se pueden probar usando un conjunto de casos de prueba matemáticamente vinculados.
- ¿Cómo haría para crear un nuevo software empresarial para un sistema escolar (calificar, asignar HW, etc., todo en línea)?
- Parece que no puedo terminar algunos de mis proyectos a medias debido a obstáculos, conocimiento limitado de algoritmos, estructuras de datos, etc. ¿Cómo puedo ser productivo?
- ¿Los desarrolladores profesionales usan un montón de bibliotecas diferentes en una aplicación?
- ¿Cuáles son las características del programa de capacitación en línea de garantía de calidad en H2kinfosys?
- ¿Debo continuar con la ingeniería de software o cambiarme a ingeniería mecánica?
Solo he visto errores en un intérprete que afectan mi trabajo en una instancia, que fue en la implementación del logotipo de Terrapin, cuando estaba en la escuela secundaria Jr., alrededor de 1983. La cuestión era que siempre detectaba sus propios errores, si te lo puedes imaginar! No era una cosa común, pero cuando sucedía, ibas avanzando, ingresando tus funciones o ejecutando tu programa, y de repente el intérprete apareció con una pantalla de texto que decía: “¡Felicidades! Acabas de encontrar un error en el logotipo. Escriba la siguiente información y envíela a … “, seguido de un breve volcado de memoria en hexadecimal.
El único otro ejemplo que puedo señalar es C ++ en la década de 1990 y principios de 2000. Solía ser un desarrollador de Microsoft Visual C ++, y solía obtener parches regulares para Visual C ++ que corrigieron errores en el IDE / compilador, aunque cada vez, las correcciones tenían que ver con la integración de COM, nada que ver con la sintaxis / semántica de C ++. Recuerdo vagamente con VC ++ 6 que hubo deficiencias en la implementación que no estuvieron a la altura del estándar actual de C ++, particularmente en lo que respecta a re. plantillas, pero estas estaban bien documentadas (o “errores conocidos”), y no se solucionaron hasta que salió la próxima versión principal. Hubo otras instancias en el momento en que escuché acerca de los compiladores de Unix C ++ con implementaciones defectuosas de plantillas en el sentido de que no admitían todas las características especificadas en el estándar. Recuerdo un caso de un desarrollador que trabajaba para un contratista de defensa que se estaba arrancando el cabello quejándose del compilador Irix C ++ que estaba usando. Parecía que en ese momento era bastante común que los compiladores de C ++ tuvieran implementaciones de plantillas incompletas / con errores. Otros desarrolladores de C ++ me aconsejaron que a pesar de las especificaciones de las plantillas. se estandarizó, en efecto, con el estado defectuoso de las implementaciones disponibles, eran una característica no portátil del lenguaje. Supongo que eso ha mejorado desde entonces.