C++é mais recente C, mas isso é um pouco irrelevante. Eles são idiomas diferentes.
Mat
6
Você provavelmente deve perguntar isso no StackOverflow ou Programmers (onde o tópico já foi realmente bem abordado ).
rozcietrzewiacz
4
@ Mat Bem, não é totalmente correto, como C ++ é um superconjunto de C. Você pode programar em C e compilá-lo com um compilador C ++. Compilará e funcionará como esperado.
Houve muitas discussões sobre isso. Principalmente, o motivo é filosófico. C foi inventado como uma linguagem simples para o desenvolvimento do sistema (não tanto para o desenvolvimento de aplicativos). Existem muitos argumentos para usar C ++, mas há tantos para não usar C ++ e aderir a C.
No final, é uma questão histórica. A maioria das coisas de aplicativos é escrita em C, porque a maioria das coisas de Kernel é escrita em C. E como na época a maioria das coisas eram escritas em C, as pessoas tendem a usar os idiomas originais.
Nesse momento, alguém pode perguntar "OK, então por que o kernel está escrito em C e não portado para C ++?" . Isso foi discutido no kerneltrap há algum tempo. Uma boa explicação que pode ser citada neste tópico é uma resposta de yoshi314 (citando diretamente):
isso ocorre porque quase todo aplicativo c ++ precisa de uma biblioteca padrão c ++ separada para operar. então eles teriam que portá-lo para o kernel e esperar uma sobrecarga extra em todos os lugares.
c ++ é uma linguagem mais complexa e isso significa que o compilador cria código mais complexo a partir dele. por isso, descobrir que um problema decorre de um erro do compilador, em vez de um erro de código é mais fácil em c.
também a linguagem c é mais básica e é mais fácil seguir sua representação de montagem, o que geralmente é fácil de prever.
O c ++ é mais versátil, mas o c é mais adequado para coisas de baixo nível ou incorporadas.
Por outro lado, "a maioria dos programas Linux" é bastante enganadora. Dê uma olhada nas aplicações gráficas. O Python está ganhando cada vez mais espaço, especialmente em ambientes de GUI no Linux. Sobre a mesma coisa que está acontecendo com o Windows e .NET.
Além disso, o C possui ABI estável e pode ser facilmente conectado a outras línguas por meio de seu FFI nativo, enquanto o C ++ não possui ABI legível por humanos e o g ++ teve alterações no ABI. Portanto, as bibliotecas tendem a ser escritas em C e não em C ++. Como você deseja ter um idioma no projeto, os programas foram empacotados com a biblioteca. (Pelo menos essa foi uma história com o Gnome).
Maciej Piechotka 30/10/11
@MaciejPiechotka Tudo isso é verdade, e é uma boa discussão, mas c não possui uma ABI definida , exceto que geralmente existe uma maneira "óbvia" de trabalhar as coisas em cada plataforma. Depois disso, siga o líder.
dmckee
@dmckee: Eu não afirmei que ele padronizou, mas a API C em cada plataforma segue certas regras simples (incluindo nenhuma ou mínima manipulação) que raramente mudam - o que a torna útil para a finalidade, mesmo que não seja 100% correta.
Maciej Piechotka 1/11/11
2
Atualmente, você também pode considerar que ... * tudo o que você pode fazer em C, você também pode fazer em C ++ da mesma maneira, pense também em "C externo" ... * o compilador não criará um código mais complexo se você não escreve código mais complexo ... * você pode escrever o mesmo material de barebone em C ++ ... * você pode vincular e usar bibliotecas C ++ de C. No final, é uma questão histórica.
Zrin
7
Depois de ler o seguinte email de Linus Torvalds, o criador do linux. Não consigo deixar de pensar que a resposta acima está incorreta. Ele parece pensar que os programadores de C ++ não são bons programadores de sistemas . E que os recursos extras em C ++ geralmente causam mais problemas a longo prazo, em comparação com os benefícios que trazem a curto prazo. Embora alguém possa discordar dele, é difícil exagerar a influência que ele teve no sistema operacional linux.
C++
é mais recenteC
, mas isso é um pouco irrelevante. Eles são idiomas diferentes.Respostas:
Houve muitas discussões sobre isso. Principalmente, o motivo é filosófico. C foi inventado como uma linguagem simples para o desenvolvimento do sistema (não tanto para o desenvolvimento de aplicativos). Existem muitos argumentos para usar C ++, mas há tantos para não usar C ++ e aderir a C.
No final, é uma questão histórica. A maioria das coisas de aplicativos é escrita em C, porque a maioria das coisas de Kernel é escrita em C. E como na época a maioria das coisas eram escritas em C, as pessoas tendem a usar os idiomas originais.
Nesse momento, alguém pode perguntar "OK, então por que o kernel está escrito em C e não portado para C ++?" . Isso foi discutido no kerneltrap há algum tempo. Uma boa explicação que pode ser citada neste tópico é uma resposta de yoshi314 (citando diretamente):
Por outro lado, "a maioria dos programas Linux" é bastante enganadora. Dê uma olhada nas aplicações gráficas. O Python está ganhando cada vez mais espaço, especialmente em ambientes de GUI no Linux. Sobre a mesma coisa que está acontecendo com o Windows e .NET.
fonte
Depois de ler o seguinte email de Linus Torvalds, o criador do linux. Não consigo deixar de pensar que a resposta acima está incorreta. Ele parece pensar que os programadores de C ++ não são bons programadores de sistemas . E que os recursos extras em C ++ geralmente causam mais problemas a longo prazo, em comparação com os benefícios que trazem a curto prazo. Embora alguém possa discordar dele, é difícil exagerar a influência que ele teve no sistema operacional linux.
http://harmful.cat-v.org/software/c++/linus
fonte