Linus Torvalds : "C++ est un langage horrible", en justifiant le choix du langage C pour Git
Linus Torvalds : "C++ est un langage horrible"
En justifiant le choix du langage C pour le système de gestion de version Git
Cet article n'est pas proprement né d'une nouveauté, mais fait écho à une tempête que soulève la découverte d'un email vieux de quatre ans.
Des « cyberspéléologues » ont sorti des méandres sournois des archives du Net un email fort polémique. Son auteur n'est autre que Linus Torvalds, le célèbre créateur du noyau Linux, tout aussi connu parmi les développeurs pour avoir initié le projet Git, le système de gestion de version (très) à la mode.
En réponse à un contributeur qui s'interrogeait en 2007 sur les raisons qui ont conduit au choix du C (plutôt que du C++), Torvalds s'en est donner à coeur joie pour avouer son désamour au C++ qu'il qualifie d’« horrible langage ».
Il est vrai que son interlocuteur n'a pas dû tourner deux fois les doigts sur son clavier avant de qualifier l'argument de portabilité d'un délicat « bullshit » (foutaise), mais l'avis de Torvalds est tellement tranché — sur le langage, mais surtout sur ses développeurs — qu'il semblait attendre une telle opportunité pour l'étaler.
« C++ est un langage horrible. Ce qui le rend d'autant plus horrible est le fait que beaucoup de programmeurs “substandard” l'utilisent, au point qu'il est nettement plus facile de générer de la merde totale et absolue avec », sic.
Le choix du langage de Git, avoue le développeur, n'est là que pour « garder les programmeurs C++ loin, c’est en soi, un énorme argument en faveur de l'utilisation du C », surenchérit-il.
Après un autre paragraphe tout aussi scatologique à l'encontre des développeurs C++, Torvalds passe aux arguments techniques. « C++ entraîne à des choix de conception très très mauvais. Vous commencez invariablement par utiliser les fonctionnalités “sympas” de la librairie standard du langage comme STL, Boost et autres conneries totales et absolues, ça peut aider votre programme, mais ça engendre : »
Il énumère, d'abord : « la souffrance infinie quand ça ne marche pas ». Sur ce point, il remet en cause la stabilité et la portabilité de la bibliothèque standard et « surtout de Boost ». Puis de s'attaquer à « l'abstraction inefficace des modèles de programmations, où, deux ans plus tard, vous vous rendez compte que certaines abstractions n'étaient pas très efficaces, alors que maintenant, tout votre code dépend de ces beaux modèles objets, et vous ne pouvez corriger tout ça sans réécrire votre application ».
À se demander si Torvalds n'a pas plutôt une dent contre toute la programmation orientée objet pour les usages de niveau système. « La seule manière de faire du C++ bien, efficace, de niveau système et portable revient à vous limitez à tous les trucs que sont à la base disponible en C », déclare-t-il avec force de conviction.
Torvalds explique par la suite et en substance que l'efficacité est le premier objectif à atteindre sur des projets tels que Git, et en prime « emmerder les personnes incapables de le comprendre », et de comprendre « les problèmes de bas niveau ».
Peu accueillant sur son projet, il invite les développeurs désireux d'écrire un CVS en C++ d'aller voir du côté de Monotone, un projet qui s'enorgueillirait d'après lui de décisions de conceptions « reluisantes pour les gars des sciences informatiques », mais qui conduisent finalement à « une pagaille horrible et non-maintenable ».
Nourrie par une forte intensité dans le verbe et d'une perceptible volonté de blesser, une véritable polémique est née entre les partisans du langage. La rivalité entre les deux camps n'est pas nouvelle, mais l'intervention aussi virulente d'un personnage emblématique ne contribue certainement pas à faire avancer sereinement le débat.
Il n'empêche que des arguments techniques sont là, et nous vous invitons à y répondre objectivement.
Source : l'email original de Torvalds
Voir aussi sur C++ :
:fleche: Cours et tutoriels C++.
:fleche: La FAQ C++.
:fleche: Le Forum C++.
Et vous ?
:fleche: Que pensez-vous de la position de Linux Torvalds et de ses arguments ?
Réponse de Dmitry Kakurin à Linus Torvalds
Juste pour signaler la réponse de Dmitry Kakurin à Linus Torvalds après les propos de ce dernier rapportés dans la news.
Dmitry Kakurin
Citation:
As dinosaurs (who code exclusively in C) are becoming extinct, you
will soon find yourself alone with attitude like this.
Measuring number of people who contributed to Git is incorrect metric.
Obviously C++ developers can contribute C code. But assuming that they
prefer it that way is wrong.
I was coding in Assembly when there was no C.
Then in C before C++ was created.
Now days it's C++ and C#, and I have never looked back.
Bad developers will write bad code in any language. But penalizing
good developers for this illusive reason of repealing bad contributors
is nonsense.
Anyway I don't mean to start a religious C vs. C++ war. It's a matter
of beliefs and as such pointless.
I just wanted to get a sense of how many people share this "Git should
be in pure C" doctrine.
source : http://thread.gmane.org/gmane.comp.v...43/focus=57918
Donc Kakurin traite Torvalds de dinosaure, il considère son choix du C comme une doctrine religieuse... Comme pour Torvalds, ici non plus ça ne vole pas très haut.
Dans le fil de 2009, les propos de koala01 étaient prémonitoires.
koala01 en #10
Citation:
j'ai la conviction que si l'on recherchais dans ce même forum une discussion similaire, nous en trouvrions sans doute une de l'époque dans laquelle tous les " C++ iens" se sont indignés contre certaines paroles, et j'ai la conviction que d'ici quelques années, nous aurons un autre participant qui "déterrera" encore une fois l'échange de cette ML, qui engendrera de nouveau des noms d'oiseau à l'égard de linus tovald
Alors, bien sur que le débat "réel" du choix d'un langage n'est pas clos (le sera-t-il seulement un jour ), mais le déterrage régulier de cet échange (dont il faut admettre qu'il présente des phrases assassines en certains points) ne sert en fait qu'à entretenir ce qui me fait un peu penser à ces guerres de clans s'étendant sur des générations et dont plus personne ne se souvient réellement quelle broutille en a été l'origine...
Et je serais même tenté de dire qu'il y a de fortes chances pour que, d'ici un an ou deux, un C++ien se fasse rabrouer de la même manière sur l'un des autres projets écrits en C qui seraient encore suivi par Linus Tovald...
Ce qui ne manquera sans doute pas de relancer la polémique.