Cfront - Cfront

Cfront был оригиналом компилятор для C ++ (тогда известный как "C с классами ") примерно с 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. Компилятор может быть перенесен на большинство Система V производные без особых изменений, но BSD -системы обычно имели гораздо больше вариаций в своих библиотеках C и связанных с ними структурах stdio.

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

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

использованная литература

Заметки
  • Бьярне Страуструп. "Развитие языка в реальном мире: C ++ 1991-2006" (PDF). Архивировано из оригинал (PDF) на 2007-11-20.
  • Бьярне Страуструп. "FAQ Бьярна Страуструпа".
  • Бьярне Страуструп. «Дизайн и эволюция C ++».

внешние ссылки