Linus Torvalds pourrait-il envisager d'introduire le C++ dans le noyau Linux ?

Linus Torvalds

Linus Benedict Torvalds est un ingénieur logiciel, connu pour avoir initié et maintenu le développement du noyau Linux.

il y a quelques semainess nous partageons ici sur le blog les nouvelles d'une proposition qui a été relancé après de nombreuses années en ce qui concerne la viabilité d'adopter du code C++ dans le noyau Linux, une proposition qui a été lancée en 2018 pour plaisanter.

La la proposition a été à nouveau lancée sur les listes de diffusion du Kernel, mais de manière sérieuse pour Hans Peter Anvin, Un développeur et développeur clé du noyau Intel a évoqué la faisabilité d’inclure le C++ comme troisième langage de programmation sous Linux.

LinuxC++
Article connexe:
C++ sous Linux, le sujet est relancé après 6 ans

Avec l'introduction de Rust sous Linux, de nombreux développeurs et une partie de la communauté ont vu un grand chemin en avance sous Linux, et aussi Diverses "idées" ont émergé pour implémenter d'autres langages de programmation, la proposition d'implémenter le C++ ouvre une fois de plus un débat parmi de nombreux développeurs du noyau et même Linus Torvalds explique une fois de plus, de la manière la plus passive et la plus compréhensible possible, pourquoi Linux n'est pas préparé pour le C++ (sarcasme).

Il faut se rappeler que Rust n'a pas été accepté sous Linux d'un moment à l'autre, puisque le projet Rust sur Linux (Rust pour Linux) a subi une série de révisions par Linus Torvalds lui-même avant d'être accepté dans la branche principale du noyau pour être inclus et il convient de mentionner que le père de Linux n'était rien de logiciel. lors des révisions et des commentaires sur les changements proposés.

Avant de développer l'article, je dois mentionner que tout le contenu de l'article est une opinion personnelle générée par l'interprétation des informations et des nouvelles que j'ai lues sur Internet, elle peut donc être différente de l'interprétation que vous pouvez en tant que lecteur. have.have et que je prendrai volontiers le temps de lire si vous souhaitez le partager ici dans les commentaires.

maintenant dans le cas de la proposition du C++ comme troisième langage de programmation, dans le cas allégué, et je dis "bien sûr", La mise en œuvre devrait passer par une série similaire d'examens, sinon encore plus rigoureux que pour Rust. Et le fait de mentionner cela est dû au fait que C++ et Linus ont leur histoire, petite, mais déjà vieille de plusieurs années.

La raison de mentionner que le cas du C++ en tant que troisième langage Linux en tant que « Apparemment », c'est parce que le père de Linux, Linus Torvalds, n'a pas et ne verra pas le C++ d'un bon oeil., puisqu'à plusieurs reprises et à chaque occasion, il a mentionné que le C++ "est un langage terrible".

Par mentionr quelques-uns des moments où l'utilisation du C++ a été envisagée sous linux et Linus Torvalds a exprimé non seulement son désaccord, mais une "certaine haine" envers le C++ qui se superpose pour mentionner pourquoi "ce n'est tout simplement pas une option pour Linux", l'un des plus récents a eu lieu lors des examens de l'implémentation de Rust, puisque lors d'une discussion sur un post Google, l'inclusion du C++ a été mentionnée comme suggestion :

"La solution ici est simple : utilisez simplement C++ au lieu de Rust"

Au Qui Linus Torvalds n'a pas pu s'empêcher de rire et sa réponse a été :

"MDR". « Le C++ ne résout aucun des problèmes du C et ne fait qu'empirer les choses, c'est vraiment un langage poubelle.

Pour les personnes qui n'aiment pas le C, optez pour un langage qui vous offre réellement quelque chose d'intéressant. Tels que les langages sécurisés pour la mémoire et "cela", peuvent éviter certains des pièges du C, ou les langages qui prennent en charge le "garbage collection" interne du GC et facilitent la gestion de la mémoire. "C++ résout tous les mauvais problèmes, et quiconque dit 'réécrire le noyau en C++' est trop ignorant pour le savoir."

Linus Torvalds a toujours considéré le C++ comme un « déchet » et l'a considéré comme « inutile » Eh bien, car « C++ ne peut pas du tout résoudre le problème du langage C, cela ne fera qu'empirer les choses ». Torvalds Je crois que ceux qui n'aiment pas le langage C peuvent rechercher un langage qui peut réellement apporter une valeur ajoutée. Par exemple, les langages qui sont sécurisés en mémoire et peuvent éviter les dangers cachés causés par C (comme Rust).

Par rapport au C++, Linus a expliqué pourquoi C est son choix standard :

"Quand les gens parlent des dangers causés par C, ils évoquent également une partie de la raison pour laquelle C est si puissant : 'Il vous permet d'implémenter efficacement tous ces éléments de bas niveau'", a mentionné Linus. De plus, bien que GC soit efficace pour simplifier la programmation dans la plupart des cas, ce n'est généralement pas quelque chose qui peut être fait dans la programmation de systèmes de bas niveau.

En effet, sur les listes de diffusion il est mentionné que À un moment donné, une tentative a été faite pour utiliser le C++ sous Linux, en 1992. (plus ou moins un an après la naissance de Linux), mais cela ne restait qu'une "tentative", puisque Torvalds mentionner cette tentative :

C'est affreux. Croyez-moi : écrire du code noyau en C++ est une putain d'idée stupide.

Le fait est que les compilateurs C++ ne sont pas fiables. La situation était encore pire en 1992, mais certains faits fondamentaux n’ont pas changé :

– toute la gestion des exceptions en C++ est fondamentalement cassée. C'est "surtout" cassé pour les noyaux.
– tout compilateur ou langage qui aime cacher des choses comme les allocations de mémoire derrière son dos n’est tout simplement pas un bon choix pour un noyau.
– vous pouvez écrire du code orienté objet (utile pour les systèmes de fichiers, etc.) en C, « sans les déchets du C++ ».

Compte tenu de ces commentaires et de bien d’autres, Nous pouvons comprendre un peu pourquoi Linus Torvalds considère le C++ comme un langage horrible., en plus de critiquer le langage utilisé par «des programmeurs de mauvaise qualité, au point qu'il est beaucoup plus facile de générer des déchets complets et complets avec.» Et c'est ça Il semble que le C++ ait été, à un moment donné, un goût amer dans la bouche de Torvalds., puisque dans vos critiques, il semble que j'essaye d'essayer le C++, eh bien Je mentionne dans un e-mail que:

"Le C++ conduit à de très mauvais choix de conception. Vous commencez invariablement à utiliser les fonctionnalités « intéressantes » de la bibliothèque de langage comme STL et Boost et d’autres déchets complets et absolus, qui peuvent « vous aider » à programmer, mais provoquent :

une quantité infinie de douleur quand ils ne fonctionnent pas (et quiconque me dit que STL et surtout Boost sont stables et portables est tellement plein de bêtises que ce n'est même pas drôle)
"des modèles de programmation abstraits inefficaces où, deux ans plus tard, vous remarquez qu'une certaine abstraction n'était pas très efficace, mais maintenant tout votre code dépend de tous les jolis modèles d'objets qui l'entourent, et vous ne pouvez pas le corriger sans réécrire votre application."

Donc, pour en revenir au titre de la publication et ayant déjà compris un peu la pointe de l'iceberg de la haine que Linus Torvalds a envers le C++, il n'est pas nécessaire d'enquêter beaucoup puisque Pour Torvalds, Linux n’a besoin d’aucun autre langage car C suffit et pendant tout ce temps, C est, a été et sera le langage qui convient à son travail et Linus continuera à attaquer les langages de programmation qu'il n'aime pas, notamment le C++.

Et est-ce l'une des nombreuses raisons pour lesquelles le C++ n'est tout simplement pas pris en compte pour Linux, c'est qu'il autorise des exceptions, alors que Rust n'aime pas le C, puisque dans la programmation du noyau, cela ne peut pas être autorisé Une exception non détectée peut désactiver le système d'exploitation et vous ne devriez même pas penser à une défaillance du noyau.

Y dans le "supposé" étant donné que Torvalds en est venu à considérer le C++ sur linux, cela pourrait être plus qu'un avantage l'inclusion d'un troisième ou plusieurs langages de programmation, deviendrait un problème, puisque par exemple avec la mise en œuvre de Rust actuellement, certains problèmes commencent à apparaître, comme ceux que nous avons déjà mentionnés dans une publication sur l'état actuel de Rust sur Linux.

Pilotes Rust sous Linux
Article connexe:
Rust sur Linux : avancées, défis et état actuel

Parmi les défis actuels, nous mentionnons dans l'article que l'un d'eux est «recruter plus de réviseurs pour le code qui est en cours d'élaboration" en plus de La progression du compilateur Rust basé sur GCC a ralenti, aussiIl y a très peu de chances qu'ils réécrivent de grandes parties du noyau dans Rust à court terme et même de très faibles chances qu'ils puissent le faire sans introduire toutes sortes d'erreurs et surtout de problèmes de compatibilité.

Si ces problèmes, qui se reflètent dans Rust nous les ajoutons en C++ ou dans tout autre langage qui peut être ajouté sous Linux, Le développement du noyau serait grandement affecté et avec cela, au début, nous ne recevrions pas une version tous les deux mois, mais plutôt le développement entre des versions plus longues, il faudrait plus de développeurs, plus de réviseurs et tout cela se traduirait par un plus grand effort.

Sans aucun doute, l’approche consistant à introduire le C++ comme troisième langage de programmation est loin d’être envisagée et, comme nous l’avons déjà mentionné, l’un des principaux obstacles à cela est Linus Torvalds lui-même.


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données : AB Internet Networks 2008 SL
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.