Cфронт

Оригинальный компилятор для C++

Cfront был оригинальным компилятором для C++ (тогда известного как « C with Classes») примерно с 1983 года, который преобразовывал C++ в C; разработан Бьярне Страуструпом в AT&T Bell Labs. Препроцессор не понимал весь язык , и большая часть кода была написана с помощью трансляций . Cfront имел полный парсер , строил таблицы символов и строил дерево для каждого класса , функции и т. д. Cfront был основан на CPre, компиляторе C, выпущенном в 1979 году.

Поскольку Cfront был написан на C++, его было сложно запустить на машине без компилятора/транслятора C++. Вместе с исходными текстами Cfront C++ также предоставлялась специальная «полупрепроцессированная» версия кода C, полученная в результате компиляции Cfront с самим собой. Этот код C должен был быть скомпилирован с помощью собственного компилятора C, а полученный исполняемый файл мог затем использоваться для компиляции исходных текстов Cfront C++.

Большая часть усилий по портированию для запуска Cfront на новой машине была связана со стандартным вводом-выводом. Потоки Cfront C++ были тесно связаны с буферизованными потоками ввода-вывода библиотеки C, но взаимодействие с остальной частью среды C было незначительным. Компилятор можно было портировать на большинство производных System V без особых изменений, но системы на основе BSD обычно имели гораздо больше вариаций в своих библиотеках C и связанных структурах stdio.

Cfront определял язык примерно до 1990 года, и многие из наиболее неясных случаев в C++ были связаны с его подходом к трансляции с C++ на C. Несколько остатков метода трансляции Cfront все еще можно найти в современных компиляторах C++; искажение имен было создано Cfront, поскольку относительно примитивные компоновщики в то время не поддерживали информацию о типах в символах, а некоторые модели создания экземпляров шаблонов произошли от ранних усилий Cfront. C++ (и Cfront) были напрямую ответственны за многие улучшения в компоновщиках Unix и форматах объектных файлов , поскольку это был первый широко используемый язык, который требовал проверки типов во время компоновки, слабых символов и других подобных функций.

Cfront 4.0 был заброшен в 1993 году после неудачной попытки добавить поддержку исключений . [1] Язык C++ вышел за рамки своих возможностей; однако позже появился компилятор с похожим подходом, а именно Comeau C/C++ .

Аналогично тому, как cfront может преобразовывать исходный код C++ в нечто, что может быть скомпилировано ранее доступными компиляторами C, cppfront преобразует исходный код, написанный на новом и экспериментальном C++ «синтаксисе 2», в нечто, что может быть скомпилировано ранее доступными компиляторами C++ «синтаксиса 1». [2] [3]

Ссылки

  1. ^ Скотт Мейерс , Самое важное программное обеспечение C++... когда-либо существовавшее, 2006
  2. ^ «Профессиональная философия и принципы C++». 2022. С. 373.
  3. ^ Пол Крилл. «Проект Cppfront направлен на модернизацию C++». InfoWorld.
Примечания
  • Бьярне Страуструп. "Развитие языка в реальном мире и для него: C++ 1991-2006" (PDF) . Архивировано из оригинала (PDF) 2007-11-20.
  • Бьерн Страуструп. «Часто задаваемые вопросы Бьярна Страуструпа».
  • Бьярне Страуструп. «Проектирование и эволюция C++».
  • Релизы Cfront в архиве исторических источников C++
  • cfront v3, отчет cfront для 4-го издания Plan 9 от Bell Labs
  • Cfront 3.0.3, «Транслятор C++ в C от AT&T/Bell Labs, выпущенный в 1994 году и модифицированный для работы на современном оборудовании»
Взято с "https://en.wikipedia.org/w/index.php?title=Cfront&oldid=1212247930"