Разработчики ядра часто относятся к тем людям, которые чувствуют себя счастливее, когда из источника сразу видно, что на самом деле делает код.
C ++ имеет гораздо больше функций, которые скрывают то, что код делает больше, чем простой код C, скрывает это: перегрузки, виртуальные методы, шаблоны, ссылки, броски ... C ++ также имеет гораздо больше синтаксиса, который вы должны освоить, чтобы даже понять C ++ код, использующий это.
Я думаю, что сила C ++ - это очень мощные инструменты для создания библиотек и фреймворков, которые затем упрощают разработку приложений. Очень часто разработчик приложений на C ++ полностью теряется во внутренних библиотеках, заполненных шаблонами, даже если он очень компетентен в создании приложений с использованием этой библиотеки. А написание правильной библиотеки C ++ - очень сложная задача программирования, и сделано она только для того, чтобы обеспечить отличную среду для разработчиков приложений. Библиотеки C ++ не являются внутренне простыми, они (или могут быть ...) просто мощными, но простыми с точки зрения программистов приложений.
Но API ядра не может быть API C ++, это должен быть API, не зависящий от языка, поэтому большинство приятных вещей в C ++ не могут быть непосредственно использованы в этом интерфейсе. Более того, ядро на самом деле не разделено на «библиотечные» и «прикладные» части, разработанные независимо, при этом больше усилий логически направляется на одну библиотеку, чтобы упростить создание массы приложений.
Кроме того, безопасность и стабильность более важны внутри ядра, а виртуальные методы гораздо более динамичны и, следовательно, намного сложнее изолировать и проверить, чем простые обратные вызовы или другие C-подобные механизмы.
Короче говоря, хотя вы, конечно, могли бы написать любую программу на C, включая ядро, как C ++, большая часть возможностей C ++ недостаточно хорошо используется в ядре. И многие утверждают, что инструменты программирования должны мешать вам делать то, что вы не должны делать. С ++ не будет.