Il n’y a rien de mieux que le langage de programmation C pour le développement de systèmes d’exploitation
D’après Linus Torvalds
La déclaration est de Linus Torvalds – le créateur du système d’exploitation open source Linux – lors d’une de ses interventions à l’Intel Open source Technology Center en 2012. Il répondait à la question de savoir s’il voit un autre langage de programmation à part le C qui soit taillé sur mesure pour le développement de systèmes d’exploitation. Quelques extraits de sa réponse …

Envoyé par
Linus Torvalds
Je dois dire que je suis assez vieux jeu sur des sujets comme celui-là. La raison pour laquelle je me suis lancé dans Linux et les systèmes d’exploitation en général est que j’aime vraiment le hardware ; j’aime explorer l’aspect matériel. Je ne le dis pas pour souligner que je suis un expert en hard parce que me tendre un fer à souder serait une mauvaise idée. Ce que je veux dire c’est que j’aime interagir avec le matériel à partir du logiciel. Vu sous cet angle, je n’ai pas encore vu un langage de programmation qui approche seulement le langage C. Cette affirmation ne tient pas uniquement à ce que le C soit utile pour générer du bon code pour piloter le matériel. Ce qu’il faut dire en plus c’est que l’usage du C fait sens pour des personnes qui pensent comme un ordinateur. Je crois que la raison pour laquelle il en est ainsi est que les personnes qui ont conçu le langage C l’ont fait à un moment où les compilateurs devaient être simples ; à un moment où le langage devait être adapté à la sortie ou au résultat attendu. Donc lorsque je lis du code en langage C, je sais à quoi va ressembler le code assembleur et c’est ce qui m’intéresse.
Certes, la déclaration de Linus Torvalds date, mais 7 années plus tard, des avis récoltés sur la toile lui donnent un coup de neuf.

Envoyé par
un internaute
Le C est à bien des égards un langage ingénieux. C'est une très bonne abstraction du matériel sous-jacent. Assez transparent pour "voir" ce qui se passe à un niveau inférieur et juste assez haut niveau pour fournir quelques constructions utiles et éviter la peine de faire usage de l'assembleur.
Bon nombre de ses "défauts" sont en fait la conséquence directe de cette conception. Si vous comprenez le processeur et la mémoire, vous trouverez le C naturel. D'autres langages qui sont vantés comme modernes, plus faciles et tout le reste, font tellement abstraction de l'aspect matériel qu'une grande partie du contrôle fin est perdue. C'est un compromis.
C a certainement des défauts. Il porte en lui un héritage dont il est difficile de se débarrasser, mais la façon dont il garde le programmeur près du matériel n'est pas un défaut, c'est une caractéristique dont il faut dire qu'elle est de plus en plus difficile à trouver.
La sortie de Linus Torvalds est antérieure à la publication de la première version stable de Rust – l’un des langages de programmation pressentis comme remplaçant du C sur le terrain du contrôle du hardware. En fait, au moment où Linus s’exprime, Rust n’en est qu’au stade de l’enfance.

Envoyé par
un internaute
De nos jours, Rust est une véritable alternative et offre des caractéristiques qui le rendent tout simplement plus polyvalent. Nous avons d'abord besoin d'un code sûr et donner des garanties de sécurité élevées est l'un des aspects les plus importants d'un système d'exploitation ou d'un programme. Je suis absolument sûr que quelque chose de similaire à Rust sera utilisé pour écrire le système d'exploitation qui remplacera Linux sur le long terme.
Ce qu’il faut en effet souligner à propos de Rust est que le langage garde une vision proche de la machine. Il est clairement prévu pour être utilisable pour des applications de très bas niveau comme un noyau, des pilotes de périphériques ou de l'embarqué temps réel. Il permet aussi d'éviter certains points complexes du C++, mais n'est pas aussi radical. Il s’appuie pour cela sur des génériques et un système de macros plus propre que celui de C++. Il est par contre plus complexe sur un point particulier : il surveille à la compilation la durée de chaque variable ; il vient qu'une utilisation des pointeurs qu'il ne peut garantir sûre refusera de compiler. Pour éviter cela le développeur doit bien assimiler les notions de propriété et de durée de vie d'un pointeur qui permettent de garantir que le code est sûr. Cela permet d'avoir une garantie absolue qu'il n'y aura aucune erreur de sécurité mémoire.
Dans la liste des systèmes d’exploitation créés à partir de Rust on compte Redox. L’équipe de développeurs derrière cet OS le présente comme un « système d’exploitation open source qui vise l’intégration des innovations au sein de Rust à un microkernel et un ensemble complet d’applications. » Le système d’exploitation est publié sous licence MIT.
Le GUI Orbital sous Redox
De façon générale, l’intervention de Linus Torvalds relance le débat sur la question de savoir quel langage pourrait remplacer le C. Il y a 4 ans, l’architecte logiciel Andrei Alexandrescu a dressé un comparatif de Go, Rust et D. De façon brossée, il en resssortait que pour ses caractéristiques d’introspection statique, son temps de compilation rapide ajouté à d’autres atouts uniques, le langage D est le remplaçant idéal du C.
Sources : YouTube, Redox
Et vous ?
Que pensez-vous de la déclaration de Linus Torvalds ?
Depuis 2012, quel langage de programmation s’est d’après vous positionné en véritable remplaçant du C ?
Pourquoi le langage C pourrait encore avoir de longues années devant lui ?
Voir aussi :
Programmation : un « Pony » peut cacher un langage, l'outil adéquat, d'avis d'utilisateurs, pour le développement d'applications concurrentes
C2 : un langage qui se présente comme une évolution de C, plus rapide, sans fichiers d'en-tête, avec système de build intégré et d'autres changements
Quel avenir pour le langage C ? Un développeur expérimenté fait ses adieux au langage et livre ses inquiétudes quant à son avenir
Partager