Cfront
Cfront — ранний компилятор C++, называвшегося тогда Си с Классами, конвертировавший C++ в Си. Разработан Бьёрном Страуструпом в AT&T Bell Labs примерно в 1983 году. Он не понимал всех деталей языка, большая часть реализовывалась при помощи обычного перевода. Cfront включал в себя синтаксический анализатор, построитель таблиц символов и деревьев классов, функций и другого. Cfront был основан на CPre, компиляторе Си 1979 года.
Поскольку он был написан на раннем C++, было проблематично запустить его без соответствующего компилятора. Наряду с кодом Cfront на C++ была версия на полу-обработанном Си, сгенерированном самим собой. Этот Си-код можно было скомпилировать, а затем использовать для запуска версии Cfront на C++.
Большая часть усилий по переносу для запуска Cfront на новую машину была связана со стандартным вводом-выводом. Потоки Cfront C++ были тесно связаны с буферизованными потоками ввода-вывода библиотеки C, но мало взаимодействовали с остальной средой C. Компилятор мог быть перенесён на большинство производных System V без особых изменений, но системы на основе BSD обычно имели гораздо больше вариаций в своих библиотеках C и связанных с ними структурах stdio.
Cfront определял язык примерно до 1990 года, многие признаков языка были связаны с трансляцией C++ в Си. Некоторые из них всё ещё остаются в современных компиляторах; искажение имён пришло из Cfront, примитивные линковщики того времени не поддерживали информацию о типах в символах, а некоторые модели создания экземпляров шаблонов являются производными от ранних усилий Cfront.
Cfront 4.0 был заброшен после провалившейся попытки добавить поддержку исключений[1] C++ вырос за его границы. Компилятор с аналогичным подходом появился позже, он назывался Comeau C/C++.
Примечания
- Заметки
- Бьёрн Страуструп. Evolving a language in and for the real world: C++ 1991-2006 . Архивировано 20 ноября 2007 года.
- Бьёрн Страуструп. Bjarne Stroustrup's FAQ .
- Бьёрн Страуструп. The Design and Evolution of C++ .