Gli sviluppatori di kernel sono spesso il tipo di persone, che si sentono più felici, quando è immediatamente evidente dalla fonte, cosa fa effettivamente il codice.
C ++ ha molte più funzionalità, che nascondono ciò che il codice fa più del semplice codice C lo nasconde: overload, metodi virtuali, template, riferimenti, lanci ... C ++ ha anche una sintassi molto più ampia che devi padroneggiare per pareggiare capisci il codice C ++ che lo usa.
Penso che il potere del C ++ sia uno strumento molto potente per creare librerie e framework, che rendono quindi lo sviluppo di applicazioni molto veloce. Molto spesso lo sviluppatore di applicazioni C ++ si perderebbe completamente nelle interi di una libreria riempita di modelli, anche quando è molto competente nella creazione di applicazioni che utilizzano quella libreria. Scrivere una libreria C ++ è un compito di programmazione molto impegnativo, e fatto solo per fornire un ottimo framework a beneficio dello sviluppatore dell'applicazione. Le librerie C ++ non sono semplici internamente, sono (o possono essere ...) semplicemente potenti ma semplici dal punto di vista dei programmatori di applicazioni.
Ma l'API del kernel non può essere un'API C ++, deve essere un'API indipendente dal linguaggio, quindi la maggior parte delle cose carine in C ++ non sarebbero direttamente utilizzabili in quell'interfaccia. Inoltre, il kernel non è realmente suddiviso in parti "library" e "application" sviluppate in modo indipendente, con un maggiore sforzo logico in una libreria, per semplificare la creazione di una massa di applicazioni.
Inoltre, la sicurezza e la stabilità sono più critiche all'interno di un kernel, ei metodi virtuali sono molto più dinamici e quindi molto più difficili da isolare e verificare, piuttosto che semplici callback o altri meccanismi simili a C.
In breve, mentre potreste ovviamente scrivere qualsiasi programma C incluso un kernel come C ++, la maggior parte della potenza del C ++ non è ben usata nel kernel. E molti sostengono che gli strumenti di programmazione dovrebbero impedirti di fare cose che non dovresti fare. C ++ no.