Parlant en tant que développeur pour un fabricant d'équipements réseau de renommée mondiale, je'dirais C et C++.
Pour les raisons :
- contrôle de la gestion des ressources : vous vous retrouvez généralement à développer dans un environnement limité en ressources (CPU, RAM, stockage). Le C et le C++ ont l'avantage indiscutable de ne pas vous faire "payer" pour ce dont vous n'avez pas besoin (en termes de ressources), tout en étant des langages de programmation éprouvés, adaptés également aux problèmes complexes et de grande envergure. Ce ne sont ni les langages de programmation les plus agréables ni les plus faciles à utiliser, mais ils sont raisonnablement bons et donnent au développeur le contrôle total de l'allocation et de la gestion des ressources ;
- support de tiers : les protocoles réseau de bas niveau sont difficiles à mettre en œuvre, difficiles à tester dans des environnements réels et difficiles à faire interagir correctement avec ce qui existe (c'est-à-dire qu'il ne faut pas croire que tout fonctionne parfaitement selon les spécifications - c'est un logiciel et il y a donc des bogues, même subtils). Vous ne pouvez donc pas envisager de tout développer et de tout maintenir en interne. Il existe de nombreuses implémentations personnalisables prêtes à l'emploi des protocoles réseau, généralement réalisées en C ou C++, qui peuvent faire l'objet d'une licence auprès de tiers et vous faire gagner beaucoup de temps. Sans parler du support matériel;
- tests sur le terrain : certains codes C/C++ avaient sur les épaules plus de 15 ans de tests sur le terrain et de correction de bogues, qui devraient être refaits s'ils étaient jetés, avec une perte énorme et aucun avantage clair. C et C++ étaient les meilleures options à l'époque, donc c'est ce qui'est encore utilisé aujourd'hui;
- disponibilité des développeurs : il y a beaucoup de développeurs seniors dehors avec 10+ ans d'expertise C/C++. Quand vous'faites un firmware pour le mettre en production, vous voulez des développeurs avec une expertise et des antécédents solides.
.