Dans un AMA (Ask Me Anything) organisé par l’ACM en juin dernier, Stroustrup a donné son avis sur le langage qu’il a créé. Dans un premier temps, on lui a demandé ce qu’il changerait s'il était capable de remonter le temps au jour où il a créé le C++. « Hum... C'est une question de machine à remonter le temps, et nous n'avons pas de machine à remonter le temps », a-t-il déclaré. Il a tout de même dit que cela n’est pas une bonne idée de vouloir changer des aspects d’un langage ou toute autre chose dès lors que celui-ci à des utilisateurs. Cela risquerait de casser leur code, selon lui.
« L’un des aspects les plus importants de la conception d'un langage de programmation est que si vous réussissez, vous avez ce que vous avez fait il y a plusieurs années et décennies, et vous devez vivre avec. Une fois que vous avez des utilisateurs, vous avez des responsabilités, et l'une des responsabilités est de ne pas casser leur code. La stabilité devient donc un enjeu majeur. Il y a quelques centaines de milliards de lignes de C++ sur le marché, et nous ne pouvons pas les casser », a-t-il déclaré. Par la suite, il a fait savoir qu’avec le C++, il n’avait pas essayé de réinventer la roue.
Stroustrup a déclaré à son interlocuteur qu’il s’est, dans un premier temps, contenté d’étendre les conventions du langage de programmation C qui existait déjà. « Je savais que c'était un problème quand j'ai commencé. Cependant, il existait déjà une communauté C, et je pouvais passer mon temps à enseigner aux gens comment écrire une boucle For, ou je pouvais fournir un concept de classe décent. Je ne pouvais pas faire les deux. Je n'avais pas le temps », a-t-il déclaré. Ainsi, la première chose qu’il a donc faite est d’ajouter la programmation orientée objet au C.
Toutefois, il ne s’est pas arrêté là. En plus de cet ajout, il s'est aussi souvenu de ses premiers objectifs de conception pour le C++. « Je voulais une très grande liberté d'expression, une très grande généralité. Je voulais des performances comparables à celles du C codé à la main, directement sur la machine. Et je voulais une sécurité de base pour les caractères. Compte tenu du temps, de la technologie et des connaissances, j'ai obtenu deux sur trois. J'ai ensuite passé les 20 années qui ont suivi à essayer de comprendre comment nous allons obtenir le troisième », a-t-il confié.
Cette troisième chose est la sécurité des types. Cette fonction a été ajoutée plus tard au langage grâce aux “concepts”. Cela permet de limiter les types de données des modèles de fonctions du langage. Cela dit, il a ajouté qu’il n’est pas un fan de la métaprogrammation de modèles, estimant qu’elle est « laide et compliquée, mais tellement pratique que des personnes saines d'esprit la feront malgré ses problèmes ». Ainsi, s’il pouvait changer une chose au C++, Stroustrup veut pouvoir remplacer les parties laides et compliquées de la métaprogrammation par quelque chose de plus simple.
En outre, il a précisé plus loin que s’il avait pu inventer les concepts en 1988, « nous aurions été mieux lotis aujourd'hui ». Il a fini cette partie en expliquant que le succès du C++ est basé sur sa grande communauté, de grandes performances, une grande flexibilité, un support d'outils massif, des bibliothèques massives. « C'est juste un bon langage solide », conclut-il. Questionné à propos de la concurrence, il a aussi fait plusieurs déclarations. Selon lui, seulement deux choses peuvent arriver si vous essayez de remplacer un langage, comme le C++.
« Vous savez, quand vous simplifiez un langage pour le rendre plus facile, vous jetez généralement quelque chose. Cependant, même au-delà, les langages simplifiés finissent tous par emprunter l'une des deux voies suivantes : vous échouez parce que vous ne pouvez pas amener les gens à utiliser votre langage ou vous réussissez, et votre langage se développe », a-t-il déclaré. Il a donné un exemple de cela : « Java est aujourd'hui trois, quatre, cinq fois plus complexe et plus grand qu'à ses débuts », prétendant qu'il était meilleur que le C++ parce qu'il était plus simple.
À la question de savoir quel était son langage préféré, il a dit : « Je ne crois pas qu'il y ait ou puisse y avoir un langage de programmation parfait, du moins pas à l'échelle de temps dont nous parlons, quelques décennies ou une centaine d'années. Peut-être dans une centaine d'années, mais pas de mon vivant ». Pour ce qui concerne Rust, le langage conçu par Mozilla et qui fait beaucoup parler de lui actuellement, il a déclaré que le C++ peut faire absolument tout ce que Rust fait et avec des performances similaires.
Selon lui, les développeurs de Rust l’accusent de copier certains concepts de Rust. Voici ce qu’il a dit à propos : « c'est très humoristique quand certains développeurs de Rust viennent m'accuser d'avoir volé certaines de leurs idées sans le reconnaître, alors que certaines des choses que j'ai faites, je les ai faites il y a presque 40 ans ». Il a ensuite parlé de ce sur quoi il travaille actuellement chez Morgan Stanley, une banque américaine. Il travaille sur les systèmes distribués, la mise en réseau, l'obtention de données de A à B sous diverses contraintes…
Selon ce qu’il a dit, ces points constituent le sujet d’un doctorat sur lequel il travaille aussi. Enfin, il a fait part de certains objectifs en matière de design qui pourraient être plus éloignés à l'avenir. « Nous avons un modèle pour une meilleure concurrence à venir. Il est presque certain que ce sera dans la [version C++] 23. Il existe et il est utilisé. Il est soutenu par des gens comme Facebook, NVIDIA et Intel... C'est donc là que nous aurons une meilleure concurrence, une meilleure utilisation du matériel... Au-delà de cela, j'envisage une concordance de style fonctionnel », a-t-il déclaré.
« Je travaille sur ce sujet depuis longtemps, je l'ai proposé pour le C++ 17. Nous l'aurons peut-être pour 23 ou 26, mais les choses avancent lentement quand on déplace une communauté vraiment massive. Si nous pouvons le faire correctement, j'aimerais beaucoup », ajouta-t-il. Il a aussi appelé à la fin à beaucoup plus de soutien pour la contribution distribuée. « C'est comme ça que j'ai commencé. Je voulais construire ce qui aurait été le premier cluster Unix, si j'avais réussi à le terminer au lieu de me laisser distraire par le C++ », a-t-il fait remarquer.
« Et j'aimerais que le langage, ou les bibliothèques, permettent de communiquer avec de grands groupes d'ordinateurs et de cœurs, etc. Nous sommes assez bons en multicœur, en multithreading, ce genre de choses. Mais j'aimerais en venir à la mémoire non partagée. En tout cas, c'est mon cheval de bataille personnel, depuis longtemps », a-t-il conclu.
Source : vidéo
Et vous ?
Que pensez-vous des propos de Bjarne Stroustrup ?
Voir aussi
Linus Torvalds : le "C++ est un langage horrible" en justifiant le choix du C pour le système de gestion de version Git
L'EDI CLion 2020.2 de JetBrains disponible, avec l'ajout des projets Makefile, l'amélioration du support de CMake, une analyse de code plus précise et une meilleure conformité à la norme C++20
Big Data : la plateforme de développement pour l'analyse in-memory Apache Arrow 1.0.0 est disponible et s'accompagne de nombreuses améliorations