¿Qué lenguajes de programación son los más utilizados para implementar el software de red en conmutadores y routers y por qué?

Hablando como desarrollador de un fabricante de equipos de red conocido en todo el mundo, diría que C y C++.

En cuanto a las razones:

  • Control de la gestión de recursos: normalmente te encuentras desarrollando en un entorno con recursos limitados (CPU, RAM, almacenamiento). C y C++ tienen la ventaja indiscutible de no hacerte "pagar" por lo que no necesitas (en términos de recursos), siendo además lenguajes de programación probados y adecuados también para problemas grandes y complejos. No son ni los lenguajes de programación más bonitos ni los más fáciles que existen para este propósito, pero son razonablemente buenos y dan al desarrollador el control completo sobre la asignación y gestión de recursos;
  • soporte de terceros: los protocolos de red de bajo nivel son difíciles de implementar, difíciles de probar en entornos reales y difíciles de conseguir que interoperen correctamente con lo que hay (es decir, no creas que todo funciona perfectamente según las especificaciones - es software y por lo tanto tiene errores, incluso sutiles). Por lo tanto, no se puede pensar en desarrollar y mantener todo internamente. Hay un montón de implementaciones de protocolos de red personalizables y listas para usar, por lo general hechas en C o C++, que pueden ser licenciadas por terceros y le ahorran mucho tiempo. Por no hablar de la compatibilidad con el hardware;
  • pruebas de campo: algunos códigos en C/C++ llevaban más de 15 años de pruebas de campo y corrección de errores, que tendrían que volver a hacerse si se desechan, con una enorme pérdida y sin ninguna ventaja clara. C y C++ eran las mejores opciones en ese momento, así que eso es lo que se sigue utilizando hoy en día;
  • Disponibilidad de desarrolladores: hay muchos desarrolladores senior con más de 10 años de experiencia en C/C++. Cuando haces un firmware para ponerlo en producción, quieres desarrolladores con experiencia y una sólida formación.