Cfront (original) (raw)
Cfront was the original compiler for C++ (then known as "C with Classes") from around 1983, which converted C++ to C; developed by Bjarne Stroustrup at AT&T Bell Labs. The preprocessor did not understand all of the language and much of the code was written via translations. Cfront had a complete parser, built symbol tables, and built a tree for each class, function, etc. Cfront was based on CPre, a C compiler started in 1979.
Property | Value |
---|---|
dbo:abstract | Cfront was the original compiler for C++ (then known as "C with Classes") from around 1983, which converted C++ to C; developed by Bjarne Stroustrup at AT&T Bell Labs. The preprocessor did not understand all of the language and much of the code was written via translations. Cfront had a complete parser, built symbol tables, and built a tree for each class, function, etc. Cfront was based on CPre, a C compiler started in 1979. As Cfront was written in C++, it was a challenge to bootstrap on a machine without a C++ compiler/translator. Along with the Cfront C++ sources, a special "half-preprocessed" version of the C code resulting from compiling Cfront with itself was also provided. This C code was to be compiled with the native C compiler, and the resulting executable could then be used to compile the Cfront C++ sources. Most of the porting effort in getting Cfront running on a new machine was related to standard I/O. Cfront's C++ streams were closely tied in with the C library's buffered I/O streams, but there was little interaction with the rest of the C environment. The compiler could be ported to most System V derivatives without many changes, but BSD-based systems usually had many more variations in their C libraries and associated stdio structures. Cfront defined the language until circa 1990, and many of the more obscure corner cases in C++ were related to its C++-to-C translation approach. A few remnants of Cfront's translation method are still found in today's C++ compilers; name mangling was originated by Cfront, as the relatively primitive linkers at the time did not support type information in symbols, and some template instantiation models are derived from Cfront's early efforts. C++ (and Cfront) was directly responsible for many improvements in Unix linkers and object file formats, as it was the first widely used language which required link-time type checking, weak symbols, and other similar features. Cfront 4.0 was abandoned in 1993 after a failed attempt to add exception support. The C++ language had grown beyond its capabilities; however a compiler with similar approach became available later, namely Comeau C/C++. (en) Cfront(シーフロント)はビャーネ・ストロヴストルップが1983年頃に開発したC++(当時 C with Classes と呼ばれていた)の初期のコンパイラである。C++のソースコードをC言語にコンパイルした。プリプロセッサはソースコードをプログラミング言語として解釈せず文字列を変換するものに過ぎないが、Cfrontは完全なパーサを搭載し、 シンボルテーブルを構築し、クラスや関数のツリーを構築する。 Cfrontはそれ自体がC++で記述されている。当初はC++コンパイラ自体が存在しておらずブートストラップ問題があった。C++で記述されたCfrontのソースコードを提供するのと同時に、そのCfrontでコンパイルしてC言語に変換した「半分処理済み」の特別バージョンも提供された。このコードはネイティブなC言語コンパイラでコンパイルでき、C++で記述されたCfrontのコードをコンパイルできる実行ファイルを出力できた。 Cfrontを新しいマシンに移植する際には特に標準入出力周りの部分が問題になった。C++のストリームはC言語標準ライブラリのバッファつきI/Oストリームに強く依存していたが、C言語のその他のライブラリとは関連性が弱かった。System V系のシステムへの移植は若干の手直しで動作したが、BSD系ではC言語のライブラリや関連する標準入出力の構造体に方言が多いためより多くの修正が必要だった。 Cfrontは1990年頃までそれ自体が言語規格そのものであり、C++は「C++からC言語へのコンバータ」に過ぎず非常にマイナーな存在だった。今日のC++にはCfrontのコンバータとしての名残がまだある。名前修飾は当時の比較的原始的なリンカがシンボルの型情報をサポートしなかったことからCfrontで実装されたものであり、また一部のテンプレートのインスタンス化に関する仕様もCfrontの初期の試行錯誤から発展したものである。C++(およびCfront)は、タイプチェックやweak symbol(同じシンボルがある場合はweak symbolが無視される)などのような機能をリンク時に必要とする言語として初めて広く普及し、Unixにおけるリンカとオブジェクトファイルのファイルフォーマットの発展に重要な役割を直接的に果たした。 例外処理の完成を見ずにCfront 4.0は途中放棄され、現在では販売されていないようである。C++はCfrontの限界を超えた言語に成長してしまったが、同様のアプローチを取りつつより標準に準拠したComeau C/C++が後に登場した。 (ja) Cfront — ранний компилятор C++, называвшегося тогда Си с Классами, конвертировавший C++ в Си. Разработан Бьёрном Страуструпом в AT&T Bell Labs примерно в 1983 году. Он не понимал всех деталей языка, большая часть реализовывалась при помощи обычного перевода. Cfront включал в себя синтаксический анализатор, построитель таблиц символов и деревьев классов, функций и другого. Cfront был основан на , компиляторе Си 1979 года. Поскольку он был написан на раннем C++, было проблематично запустить его без соответствующего компилятора. Наряду с кодом Cfront на C++ была версия на полу-обработанном Си, сгенерированном самим собой. Этот Си-код можно было скомпилировать, а затем использовать для запуска версии Cfront на C++. Большая часть усилий по переносу для запуска Cfront на новую машину была связана со стандартным вводом-выводом. Потоки Cfront C++ были тесно связаны с буферизованными потоками ввода-вывода библиотеки C, но мало взаимодействовали с остальной средой C. Компилятор мог быть перенесён на большинство производных System V без особых изменений, но системы на основе BSD обычно имели гораздо больше вариаций в своих библиотеках C и связанных с ними структурах stdio. Cfront определял язык примерно до 1990 года, многие признаков языка были связаны с трансляцией C++ в Си. Некоторые из них всё ещё остаются в современных компиляторах; искажение имён пришло из Cfront, примитивные линковщики того времени не поддерживали информацию о типах в символах, а некоторые модели создания экземпляров шаблонов являются производными от ранних усилий Cfront. Cfront 4.0 был заброшен после провалившейся попытки добавить поддержку исключений C++ вырос за его границы. Компилятор с аналогичным подходом появился позже, он назывался . (ru) |
dbo:wikiPageExternalLink | http://stroustrup.com/dne.html https://web.archive.org/web/20071120015600/http:/www.research.att.com/~bs/hopl-almost-final.pdf http://www.softwarepreservation.org/projects/c_plus_plus http://www.softwarepreservation.org/projects/c_plus_plus/index.html%23cfront http://stroustrup.com/bs_faq.html%23bootstrapping http://stroustrup.com/hopl-almost-final.pdf |
dbo:wikiPageID | 81080 (xsd:integer) |
dbo:wikiPageInterLanguageLink | dbpedia-fr:Cfront |
dbo:wikiPageLength | 3588 (xsd:nonNegativeInteger) |
dbo:wikiPageRevisionID | 1065659857 (xsd:integer) |
dbo:wikiPageWikiLink | dbr:Bjarne_Stroustrup dbc:Unix_programming_tools dbr:Unix dbr:Preprocessor dbr:Comeau_C/C++ dbr:Compiler dbr:Object_file dbr:Source-to-source_compiler dbr:Name_mangling dbr:Tree_data_structure dbr:BSD dbr:C++ dbr:C_(programming_language) dbr:Linker_(computing) dbr:Exception_handling dbr:File_format dbr:Source_code dbc:C++_compilers dbr:Bootstrapping_(compilers) dbr:Programming_language dbr:Symbol_table dbr:Parser dbr:Weak_symbol dbr:Class_(computer_science) dbr:Function_(programming) dbr:System_V |
dbp:wikiPageUsesTemplate | dbt:Cite_web dbt:Reflist dbt:Short_description dbt:Programming-software-stub |
dct:subject | dbc:Unix_programming_tools dbc:C++_compilers |
gold:hypernym | dbr:Compiler |
rdf:type | dbo:Software yago:WikicatC++Compilers yago:CausalAgent100007347 yago:Communicator109610660 yago:Compiler109946957 yago:LivingThing100004258 yago:Object100002684 yago:Organism100004475 yago:Person100007846 yago:PhysicalEntity100001930 yago:Writer110794014 yago:YagoLegalActor yago:YagoLegalActorGeo yago:Whole100003553 |
rdfs:comment | Cfront was the original compiler for C++ (then known as "C with Classes") from around 1983, which converted C++ to C; developed by Bjarne Stroustrup at AT&T Bell Labs. The preprocessor did not understand all of the language and much of the code was written via translations. Cfront had a complete parser, built symbol tables, and built a tree for each class, function, etc. Cfront was based on CPre, a C compiler started in 1979. (en) Cfront(シーフロント)はビャーネ・ストロヴストルップが1983年頃に開発したC++(当時 C with Classes と呼ばれていた)の初期のコンパイラである。C++のソースコードをC言語にコンパイルした。プリプロセッサはソースコードをプログラミング言語として解釈せず文字列を変換するものに過ぎないが、Cfrontは完全なパーサを搭載し、 シンボルテーブルを構築し、クラスや関数のツリーを構築する。 Cfrontはそれ自体がC++で記述されている。当初はC++コンパイラ自体が存在しておらずブートストラップ問題があった。C++で記述されたCfrontのソースコードを提供するのと同時に、そのCfrontでコンパイルしてC言語に変換した「半分処理済み」の特別バージョンも提供された。このコードはネイティブなC言語コンパイラでコンパイルでき、C++で記述されたCfrontのコードをコンパイルできる実行ファイルを出力できた。 例外処理の完成を見ずにCfront 4.0は途中放棄され、現在では販売されていないようである。C++はCfrontの限界を超えた言語に成長してしまったが、同様のアプローチを取りつつより標準に準拠したComeau C/C++が後に登場した。 (ja) Cfront — ранний компилятор C++, называвшегося тогда Си с Классами, конвертировавший C++ в Си. Разработан Бьёрном Страуструпом в AT&T Bell Labs примерно в 1983 году. Он не понимал всех деталей языка, большая часть реализовывалась при помощи обычного перевода. Cfront включал в себя синтаксический анализатор, построитель таблиц символов и деревьев классов, функций и другого. Cfront был основан на , компиляторе Си 1979 года. Cfront 4.0 был заброшен после провалившейся попытки добавить поддержку исключений C++ вырос за его границы. Компилятор с аналогичным подходом появился позже, он назывался . (ru) |
rdfs:label | Cfront (en) Cfront (ja) Cfront (ru) |
owl:sameAs | freebase:Cfront yago-res:Cfront wikidata:Cfront dbpedia-ja:Cfront dbpedia-ru:Cfront https://global.dbpedia.org/id/4h6KK |
prov:wasDerivedFrom | wikipedia-en:Cfront?oldid=1065659857&ns=0 |
foaf:isPrimaryTopicOf | wikipedia-en:Cfront |
is dbo:wikiPageRedirects of | dbr:CFront |
is dbo:wikiPageWikiLink of | dbr:Santa_Cruz_Operation dbr:Borland_Turbo_C dbr:List_of_compilers dbr:Unix_System_Laboratories dbr:Comeau_C/C++ dbr:Compiler dbr:Source-to-source_compiler dbr:C++ dbr:CFront dbr:Yacc dbr:Exception_handling dbr:HCR_Corporation dbr:Microsoft_Visual_C++ |
is foaf:primaryTopic of | wikipedia-en:Cfront |