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