Stroustrup afirma que o Cfront, o primeiro compilador C ++, foi escrito em C ++ ( Stroustrup FAQ ).
No entanto, como é possível que o primeiro compilador C ++ seja escrito em C ++?
O código que compõe o compilador também precisa ser compilado e, portanto, o primeiro compilador C ++ não poderia ter sido escrito em C ++, poderia?
Respostas:
A chave está aqui:
Portanto, a primeira versão do Cfront não foi escrita em C ++, e sim na linguagem intermediária. A capacidade de criar compiladores e pré-processadores C diretamente em C levou a muitas das inovações (e falhas de segurança maciças ) em C. Então, você escreve seu novo pré-professor que transforma seu código "C com Classes" em C direto (porque C direto pode fazer qualquer coisa) e então você usa "C com Classes" para escrever um compilador C ++ (não que você não possa fazê-lo em C, isso levaria algum tempo) e, em seguida, você usa esse compilador C ++ para escrever um compilador mais eficiente / completo em C ++. Entendi?
fonte
Foi inicializado. Assim que um recurso C ++ foi adicionado ao cfront, o cfront também poderia usá-lo a partir desse ponto (mas não para implementar esse mesmo recurso). Isso funcionou porque o cfront tinha a capacidade de converter código C ++ em código C. Portanto, se alguma nova plataforma surgir, você poderá usar o cfront em outra plataforma para converter o cfront de C ++ em C e, em seguida, usar o compilador C da nova plataforma para concluir a compilação de C para código de objeto.
fonte
Eu acho que BS responde a essa pergunta:
Primeiro, ele criou algo que chamou de "C com Classes" implementado por um simples pré-processador em C. Era basicamente C ++, mas o pré-processador fez pouca ou nenhuma verificação. Ele então usou isso para escrever o Cfront, a versão mais poderosa do tradutor de C ++ em C, completa com verificação de tipo, tabelas de símbolos etc.
fonte
Acrescentarei esta resposta, já que nenhuma resposta abordou esse aspecto.
Tecnicamente, você não precisa de software para compilar código. Contanto que você tenha as especificações necessárias do compilador, poderá fazer a compilação real manualmente. Não é assim que o primeiro compilador C ++ foi compilado. Só estou dizendo que é possível.
Compare com a linguagem assembly. Quando eles foram usados nos primeiros dias, não havia software de montagem para converter o código de montagem em código de máquina. Foi feito à mão, mas a linguagem assembly deu aos programadores uma melhor visão geral.
fonte