Por que a maioria dos programas Linux são escritos em C? Por que eles não são escritos com C ++, que é mais recente?
Por que a maioria dos programas Linux são escritos em C? Por que eles não são escritos com C ++, que é mais recente?
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):
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.
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.