Gli sviluppatori del kernel sono spesso il tipo di persone, che si sentono più felici, quando è immediatamente evidente dalla fonte, cosa fa effettivamente il codice.
Il C ++ ha molte più funzioni, che nascondono ciò che il codice fa di più rispetto al semplice codice C che lo nasconde: sovraccarichi, metodi virtuali, modelli, riferimenti, proiezioni ... Il C ++ ha anche molta più sintassi che devi padroneggiare per capire anche il C ++ codice che lo utilizza.
Penso che il potere del C ++ sia uno strumento molto potente per creare librerie e framework, che rendono lo sviluppo di applicazioni un gioco da ragazzi. Molto spesso lo sviluppatore di applicazioni C ++ verrebbe totalmente perso nelle viscere piene di template di una libreria, anche quando è molto competente nel creare applicazioni usando quella libreria. E scrivere una libreria C ++ a destra è 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 ...) 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 belle cose in C ++ non sarebbero direttamente utilizzabili su quell'interfaccia. Inoltre, il kernel non è realmente suddiviso in parti di "libreria" e "applicazione" sviluppate in modo indipendente, con un maggiore sforzo logico che va in una libreria, per facilitare la creazione di una massa di applicazioni.
Inoltre, la sicurezza e la stabilità sono più critiche all'interno di un kernel e i metodi virtuali sono molto più dinamici e quindi molto più difficili da isolare e verificare, rispetto ai semplici callback o ad altri meccanismi simili a C.
In breve, sebbene si possa ovviamente scrivere qualsiasi programma C incluso un kernel come C ++, la maggior parte della potenza di C ++ non è ben usata nel kernel. E molti direbbero che gli strumenti di programmazione dovrebbero impedirti di fare cose che non dovresti fare. C ++ no.