¿Por qué la mayoría de los programas de Linux están escritos en C? ¿Por qué no están escritos con C ++, que es más nuevo?
¿Por qué la mayoría de los programas de Linux están escritos en C? ¿Por qué no están escritos con C ++, que es más nuevo?
Respuestas:
Ha habido muchas discusiones sobre esto. Principalmente, la razón es filosófica. C fue inventado como un lenguaje simple para el desarrollo del sistema (no tanto desarrollo de aplicaciones). Hay muchos argumentos para usar C ++, pero hay tantos para no usar C ++ y apegarse a C.
Al final, es un problema histórico. La mayoría de las cosas de la aplicación están escritas en C, porque la mayoría de las cosas del Kernel están escritas en C. Y desde entonces la mayoría de las cosas fueron escritas en C, las personas tienden a usar los lenguajes originales.
En este punto, alguien podría preguntar "OK, entonces, ¿por qué el núcleo está escrito en C y no está portado a C ++?" . Esto ha sido discutido en kerneltrap hace algún tiempo. Una buena explicación que se puede citar de este hilo es una respuesta de yoshi314 (citando directamente):
Esto se debe a que casi todas las aplicaciones de C ++ necesitan una biblioteca estándar de C ++ separada para funcionar. por lo que tendrían que portarlo al kernel y esperar una sobrecarga adicional en todas partes.
c ++ es un lenguaje más complejo y eso significa que el compilador crea un código más complejo a partir de él. por eso, encontrar que un problema se debe a un error del compilador, en lugar de un error de código, es más fácil en c.
También el lenguaje c es más básico, y es más fácil seguir su representación de ensamblaje, que a menudo es fácil de predecir.
c ++ es más versátil, pero c es más adecuado para cosas de bajo nivel o incrustadas.
Por otro lado, "la mayoría de los programas de Linux" es bastante engañoso. Echa un vistazo a las aplicaciones gráficas. Python está obteniendo cada vez más terreno, especialmente en entornos GUI en Linux. Casi lo mismo que está sucediendo con Windows y .NET.
Después de leer el siguiente correo electrónico de Linus Torvalds, el creador de Linux. No puedo evitar pensar que la respuesta anterior es incorrecta. Parece pensar que los programadores de C ++ no son buenos programadores de sistemas . Y que las características adicionales en C ++ a menudo causan más problemas a largo plazo en comparación con los beneficios que aportan a corto plazo. Si bien uno puede estar en desacuerdo con él, es difícil exagerar la influencia que ha tenido en el sistema operativo Linux.
C++
es más nuevo queC
, pero eso es un poco irrelevante. Son idiomas diferentes.