Articulo de referencia

Frente

Cfront fue el compilador original de C++ (entonces conocido como " C con clases") desde aproximadamente 1983, que convertía C++ a C; fue desarrollado por Bjarne Stroustrup en lo...

Cfront fue el compilador original de C++ (entonces conocido como " C con clases") desde aproximadamente 1983, que convertía C++ a C; fue desarrollado por Bjarne Stroustrup en los laboratorios AT&T Bell. El preprocesador no comprendía todo el lenguaje y gran parte del código se escribía mediante traducciones . Cfront tenía un analizador sintáctico completo , creaba tablas de símbolos y construía un árbol para cada clase , función , etc. Cfront se basaba en CPre, un compilador de C que se inició en 1979.

Dado que Cfront estaba escrito en C++, su instalación en un equipo sin compilador/traductor de C++ suponía un reto . Junto con el código fuente de Cfront en C++, se proporcionaba una versión especial, parcialmente 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 podía utilizarse para compilar el código fuente de Cfront en C++.

La mayor parte del esfuerzo para adaptar Cfront a una nueva máquina se centró en la E/S estándar. Los flujos de C++ de Cfront estaban estrechamente vinculados con los flujos de E/S con búfer de la biblioteca C, pero había poca interacción con el resto del entorno C. El compilador podía portarse a la mayoría de los derivados de System V sin muchos cambios, pero los sistemas basados ​​en BSD solían tener muchas más variaciones en sus bibliotecas C y estructuras stdio asociadas.

Cfront definió el lenguaje hasta aproximadamente 1990, y muchos de los casos límite más oscuros de C++ estaban relacionados con su método de traducción de C++ a C. Aún se conservan algunos vestigios del método de traducción de Cfront en los compiladores de C++ actuales; la modificación de nombres fue originada por Cfront, ya que los enlazadores relativamente primitivos de la época no admitían información de tipo en los símbolos, y algunos modelos de instanciación de plantillas derivan de los primeros trabajos de Cfront. C++ (y Cfront) fueron directamente responsables de muchas mejoras en los enlazadores de Unix y los formatos de archivos objeto , ya que fue el primer lenguaje ampliamente utilizado que requería verificación de tipos en tiempo de enlace, símbolos débiles y otras características similares.

Cfront 4.0 fue abandonado 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, más tarde estuvo disponible un compilador con un enfoque similar, a saber, Comeau C/C++ .

Análogamente a como Cfront puede procesar código fuente C++ en algo que puede ser compilado por compiladores C disponibles anteriormente, cppfront procesa código fuente escrito en la nueva y experimental 'sintaxis 2' de C++ en algo que puede ser compilado por compiladores C++ de 'sintaxis 1' disponibles anteriormente. [ 2 ] [ 3 ] cppfront es diferente en alcance ya que no realiza muchas comprobaciones de validez en el código, sino que confía en el compilador C++ para cualquier comprobación que requeriría una comprensión no local del código, como establecer el uso correcto de los símbolos . Cfront por otro lado era un compilador completo que casualmente apuntaba al lenguaje C en lugar de a un ensamblador .

Referencias

  1. Scott Meyers , El software C++ más importante de la historia , 2006
  2. "Filosofía y principios profesionales de C++" . 2022. pág. 373.
  3. Paul Krill. "El proyecto Cppfront busca modernizar C++" . InfoWorld.
Notas
  • Bjarne Stroustrup. "Desarrollando un lenguaje en y para el mundo real: C++ 1991-2006" (PDF) . Archivado del original (PDF) el 20 de noviembre de 2007.
  • Bjarne Stroustrup. "Preguntas frecuentes de Bjarne Stroustrup" .
  • Bjarne Stroustrup. "El diseño y la evolución de C++" .
  • Lanzamientos de Cfront en el archivo de fuentes históricas de C++
  • cfront v3 , el informe de cfront para la cuarta edición del Plan 9 de Bell Labs.
  • Cfront 3.0.3 , "Traductor de C++ a C de AT&T/Bell Labs de 1994, modificado para funcionar en hardware moderno".