Спереди
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 на новой машине была связана со стандартным вводом-выводом. Потоки C++ Cfront были тесно связаны с буферизованными потоками ввода-вывода библиотеки 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 обрабатывает исходный код, написанный на новом и экспериментальном «синтаксисе 2» C++, в нечто, что можно скомпилировать с помощью ранее доступного «синтаксиса 1». 'Компиляторы C++. [2] [3]
Ссылки
[ редактировать ]- ^ Скотт Мейерс , Самое важное программное обеспечение C++... когда-либо , 2006 г.
- ^ «Профессиональная философия и принципы C++» .2022.п. 373.
- ^ Пол Крилл. «Проект Cppfront направлен на модернизацию C++» .ИнфоМир.
- Примечания
- Бьерн Страуструп. «Развитие языка в реальном мире и для него: C++ 1991–2006» (PDF) . Архивировано из оригинала (PDF) 20 ноября 2007 г.
- Бьерн Страуструп. «Часто задаваемые вопросы Бьярна Страуструпа» .
- Бьерн Страуструп. «Проектирование и эволюция C++» .
Внешние ссылки
[ редактировать ]- Релизы Cfront в архиве исторических источников C++
- cfront v3 , отчет cfront для 4-го издания Plan 9 от Bell Labs.
- Cfront 3.0.3 , «Переводчик C++ на C AT&T/Bell Labs 1994 года, модифицированный для использования на современном оборудовании»