Cfront fue el compilador original de C ++ (entonces conocido como " C con clases") de alrededor de 1983, que convirtió C ++ en C; desarrollado por Bjarne Stroustrup en AT&T Bell Labs. El preprocesador no entendió todo el idioma y gran parte del código se escribió a través de traducciones . Cfront tenía un analizador completo , construyó tablas de símbolos y construyó un árbol para cada clase , función , etc. Cfront se basó en CPre, un compilador de C iniciado en 1979.
Como Cfront se escribió en C ++, fue un desafío arrancar en una máquina sin un compilador / traductor de C ++. Junto con las fuentes de Cfront C ++, también se proporcionó una versión especial "medio preprocesada" del código C resultante de compilar Cfront consigo mismo. Este código C debía compilarse con el compilador nativo de C, y el ejecutable resultante podría usarse para compilar las fuentes de Cfront C ++.
La mayor parte del esfuerzo de transferencia para hacer que Cfront se ejecute en una máquina nueva se relacionó con E / S estándar. Los flujos de C ++ de Cfront estaban estrechamente vinculados con los flujos de E / S almacenados en búfer de la biblioteca C, pero había poca interacción con el resto del entorno C. El compilador podría ser portado a la mayoría de los derivados de System V sin muchos cambios, pero los sistemas basados en BSD usualmente tenían muchas más variaciones en sus bibliotecas C y estructuras stdio asociadas.
Cfront definió el lenguaje hasta alrededor de 1990, y muchos de los casos de esquina más oscuros en C ++ estaban relacionados con su enfoque de traducción de C ++ a C. Algunos remanentes del método de traducción de Cfront todavía se encuentran en los compiladores de C ++ actuales; La alteración de nombres fue originada por Cfront, ya que los enlazadores relativamente primitivos en ese momento no admitían información de tipo en símbolos, y algunos modelos de instanciación de plantillas se derivan de los primeros esfuerzos de Cfront. C ++ (y Cfront) fue directamente responsable de muchas mejoras en los enlazadores Unix y formatos de archivos de objetos , ya que fue el primer lenguaje ampliamente utilizado que requirió verificación de tipo en tiempo de enlace, símbolos débiles y otras características similares.
Cfront 4.0 se abandonó en 1993 después de un intento fallido de agregar soporte para excepciones . [1] El lenguaje C ++ había crecido más allá de sus capacidades; sin embargo, un compilador con un enfoque similar estuvo disponible más tarde, a saber, Comeau C / C ++ .
Referencias
- ^ Scott Meyers , el software C ++ más importante ... nunca , 2006
- Notas
- Bjarne Stroustrup. "Evolución de un lenguaje en y para el mundo real: C ++ 1991-2006" (PDF) . Archivado desde el original (PDF) el 20 de noviembre de 2007.
- Bjarne Stroustrup. "Preguntas frecuentes de Bjarne Stroustrup" .
- Bjarne Stroustrup. "El Diseño y Evolución de C ++" .