Perché la maggior parte dei programmi Linux è scritta in C? Perché non sono scritti con C ++, che è più recente?
Perché la maggior parte dei programmi Linux è scritta in C? Perché non sono scritti con C ++, che è più recente?
Risposte:
Ci sono state molte discussioni su questo. Principalmente, la ragione è filosofica. C è stato inventato come un linguaggio semplice per lo sviluppo del sistema (non tanto per lo sviluppo di applicazioni). Ci sono molti argomenti per usare C ++, ma ce ne sono altrettanti per non usare C ++ e attenersi a C.
Alla fine, è un problema storico. La maggior parte delle cose dell'applicazione è scritta in C, perché la maggior parte delle cose del Kernel è scritta in C. E da allora la maggior parte delle cose è stata scritta in C, le persone tendono ad usare le lingue originali.
A questo punto, qualcuno potrebbe chiedere "OK, quindi perché il kernel è scritto in C e non trasferito in C ++?" . Questo è stato discusso su kerneltrap qualche tempo fa. Una bella spiegazione che può essere citata da questo thread è una risposta di yoshi314 (citando direttamente):
questo perché quasi ogni app c ++ ha bisogno di una libreria standard c ++ separata per funzionare. quindi dovrebbero portarlo sul kernel e aspettarsi un overhead extra ovunque.
c ++ è un linguaggio più complesso e ciò significa che il compilatore crea codice più complesso da esso. per questo motivo, scoprire che un problema deriva dal bug del compilatore, piuttosto che dall'errore di codice è più facile in c.
inoltre il linguaggio c è più barebone ed è più facile seguire la sua rappresentazione di assieme, che è spesso facile da prevedere.
c ++ è più versatile, ma c è più adatto per cose di basso livello o incorporate.
D'altra parte, "la maggior parte dei programmi Linux" è abbastanza fuorviante. Dai un'occhiata alle applicazioni grafiche. Python sta prendendo sempre più piede soprattutto negli ambienti GUI su Linux. Circa la stessa cosa che sta succedendo con Windows e .NET.
Dopo aver letto la seguente e-mail da Linus Torvalds, il creatore di Linux. Non posso fare a meno di pensare che la risposta sopra sia errata. Sembra pensare che i programmatori C ++ non siano buoni programmatori di sistemi . E che le funzionalità extra in C ++ spesso causano più problemi a lungo termine rispetto ai benefici che portano a breve termine. Mentre uno può non essere d'accordo con lui, è difficile sopravvalutare l'influenza che ha avuto sul sistema operativo Linux.
C++
è più recente diC
, ma è un po 'irrilevante. Sono lingue diverse.