Los desarrolladores del kernel son a menudo el tipo de personas, que se sienten más felices, cuando de inmediato se desprende de la fuente, lo que el código realmente hace.
C ++ tiene muchas más funciones, que ocultan lo que hace el código más de lo que el código C simple lo oculta: sobrecargas, métodos virtuales, plantillas, referencias, lanzamientos ... C ++ también tiene mucha más sintaxis que debe dominar para comprender incluso el C ++ código que lo usa.
Creo que el poder de C ++ es una herramienta muy poderosa para crear bibliotecas y marcos, que luego facilitan el desarrollo de aplicaciones. Muy a menudo, el desarrollador de aplicaciones C ++ se perdería totalmente en las entrañas llenas de plantillas de una biblioteca, incluso cuando es muy competente en la creación de aplicaciones utilizando esa biblioteca. Y escribir una biblioteca de C ++ correctamente es una tarea de programación muy desafiante, y solo se realiza para proporcionar un gran marco para el beneficio del desarrollador de aplicaciones. Las bibliotecas de C ++ no son internamente simples, son (o pueden ser ...) simplemente poderosas pero simples desde el punto de vista de los programadores de aplicaciones.
Pero la API del núcleo no puede ser una API de C ++, debe ser una API independiente del lenguaje, por lo que la mayoría de las cosas buenas de C ++ no serían directamente utilizables en esa interfaz. Además, el núcleo no está realmente dividido en partes de "biblioteca" y "aplicación" desarrolladas independientemente, con más esfuerzo yendo lógicamente a una biblioteca, para facilitar la creación de una gran cantidad de aplicaciones.
Además, la seguridad y la estabilidad son más críticas dentro de un núcleo, y los métodos virtuales son mucho más dinámicos y, por lo tanto, mucho más difíciles de aislar y verificar, que las devoluciones de llamada simples u otros mecanismos similares a C.
En resumen, si bien podría escribir cualquier programa en C, incluido un kernel como C ++, la mayor parte del poder de C ++ no se usa bien en el kernel. Y muchos dirían que las herramientas de programación deberían evitar que hagas cosas que no deberías hacer. C ++ no lo haría.