Hello

Je profite de ce topic pour partager mon point de vue et recueillir le vôtre. Pour info je suis spécialisé C++ et n'ai qu'une connaissance légère de Rust. Mais je m'intéresse pas mal à comment ce langage évolue et comment il est adopté dans l'industrie car de manière générale je suis passionné par comment les langages interagissent entre eux.
En lisant certains messages, je crois qu'il est important de préciser que ce qui fait le succès d'un langage ce n'est pas (simplement) ses qualité intrinsèques. C'est peut être même un aspect secondaire. Son écosystème et le support (financier) qu'il reçoit sont des facteurs essentiels : bibliothèques disponibles, IDE / debug / profiling, intégration avec d'autres systèmes, portabilité, etc... Donc surtout ne pas réduire un langage à sa syntaxe quand on veut comparer les utilisations (penser à comment javascript s'est imposé comme langage n°1!). Et donc le fait qu'il reçoive du soutient de la part de Microsoft est une très bonne chose pour le langage.
Un autre point à rappeler est que Rust n'est pas le premier langage à s'attaquer à C/C++ en apportant des innovations qui sont, objectivement, intéressantes. J'ai personnellement lu moultes démonstrations expliquant pourquoi ADA, Objective C, Eiffel, D, Nim... sont de meilleurs langages que C++. Mais il y a un petit détail : C++ est un langage avec un spectre d'utilisation extrêmement large dans plusieurs secteurs aux contraintes très différentes. Le remplacer sur certains segments est une tâche accessible, remplacer le langage de manière large est une tout autre histoire. Et il me semble que Rust occupe aujourd'hui la position de challenger que d'autres ont occupé avant lui (le langage D en particulier, qu'il a à mon avis tué) et peine à en sortir. Non pas qu'il n'en sortira jamais, mais il peine.
Et à mon avis c'est lié au segment sur lequel on le positionne presque systématiquement : la sécurité. Et c'est pas vraiment le plus porteur. Pour rappel les discussions sur la sécurité ne sont pas nouvelles : PASCAL se vantait d'être beaucoup plus secure que le C, et puis au final nos composants système les plus critiques (OS, drivers...) sont écrits en C... tandis que PASCAL n'est plus... De plus - et c'est pas un détail - il existe des solutions logicielles pour fiabiliser des programmes en C et C++. Le hic est qu'elles sont souvent payantes, à vil prix. Mais pour les structures qui ont ces besoin c'est acceptable. Et pour les domaines où ça ne suffit pas, genre l'aérospatiale, les personnes concernées avec qui j'ai pu en discuter ne juraient en général que par ADA, ou alors des solutions style Frama-C.
Donc pour moi Rust a un peu le cul entre deux chaises : pour les environnements critiques genre aérospatiale, il est face à plus qualifié que lui. Et pour les autres cas d'usage, et bien il a quand même un gros côté overkill. En particulier face à un langage comme Go et son approche "get the shit done". En effet y a quand même beaucoup de boites qui arrivent à correctement développer des logiciels en C ou C++ sans vraiment être troublées par des problèmes de sécurité : leurs problèmes au quotidien sont ailleurs. Oui certains bugs constatés ne se seraient pas produits avec Rust, mais ce n'est pas ce qui gêne le plus en pratique car l'outillage hyper mature aide à rattraper beaucoup de choses. Ca me parait important de le souligner car je trouve qu'au niveau communication sur Rust il y a une trop forte focalisation sur cet aspect dont au final peu de monde accord une forte importance. Je donne un exemple réel : dans une conf un mec répond à une question sur pourquoi il faudrait choisir Rust en expliquant pendant plusieurs minutes commet Rust offre de super garanties de sécurité en termes de programmation multi-thread etc... Puis il demande s'il a répondu à la question => "heu... nous on n'utilise pas de threads alors je sais pas". A trop se focaliser sur un aspect parmi tant d'autres, ça peut vite se retourner contre le langage en réduisant la perception de son champ d'application réel.
Enfin, pour qui essaye de suivre l'intégration de Rust dans Firefox, Mozilla n'envoie pas des signaux très positifs. Pour moi là ils ont clairement merdé quand leur comm. Ca a pris beaucoup plus de temps qu'annoncé, l'effet "silver bullet" tant vanté n'a pas vraiment eu lieu, et aujourd'hui le navigateur est en sérieuse difficulté face à ses concurrents intégralement propulsés en C++ : pas de quoi rassurer un décideur. C'est difficile d'avoir les raisons précises de ces difficultés, mais de ce que j'ai pu trouver comme information (j'ai du chercher sur les blogs perso de certains développeurs...) ça confirme ce que j'ai dit au début : développer une brique logicielle dans un coin est une chose. Intégrer cette brique dans des systèmes existants est une autre paire de manches. Et dans un environnement où à peu près tout repose sur C et C++, et bien ces 2 langages ont un avantage. La news ci-dessus vient rappeler cette dépendance en tout un tas de couches de compatibilité / intégration, et c'est avec ce genre de "détails" (qui se multiplient sur les gros projets) que commencent à se diluer tous les avantages qu'on a pu gagner ailleurs.
Par exemple j'ai lu le témoignage de développeurs qui au début ont été enthousiastes avec Rust, et puis ont fini par jeter l'éponge face à ses lacunes dans le domaine de la 3D en particulier. L’écosystème C++ dans ce domaine est colossal, et un nouveau langage ne peut pas rivaliser avec de multiples bibliothèques qui ont souvent +20 ans de développement ininterrompu dans des domaines très pointus. Sans parler, semble-t-il, de la prise de tête que c'est de coder des structures de données complexes telles des arbres ou des graphes.
Face à C, je suis aussi assez dubitatif - mais pour d'autres raisons. D'abord parce que C++, malgré sa possibilité de l'utiliser comme un meilleur C, n'est pas parvenu à convaincre les développeurs récalcitrants. Ceux que j'ai pu fréquenter travaillaient tous dans le domaine embarqué, et avaient comme point commun d'être très à l'aise avec des concepts bas niveau de hardware et d'électronique, de masquage de bits, etc... et par contre de très vite décrocher quand on commence à parler d'abstraction, POO, patterns, etc... Je ne suis même pas arrivé à les convaincre de l'utilité d'une classe vector ou string par rapport à une gestion manuelle ou via des macros. C'est une autre façon de penser le code, et c'est pourquoi je vois mal n'importe quel langage les convaincre. Y'a que Go semble-t-il, qui en séduit quelques uns (Ken Thompson doit y être pour quelque chose).
Donc au final désolé si je casse un peu l'ambiance, mais j'essaye de faire la part des choses entre ce qu'on aimerait qu'il se passe, et ce qu'il peut réellement se produire. Faire basculer des équipes de développement vers un nouveau langage ne répond pas aux mêmes critères de décision que choisir un langage pour un projet perso from scratch sur github. C'est un peu comme comparer 20 ans de vie de couple avec un flirt d'été

Par le passé y'a eu des vagues d'enthousiasme et d'intérêt pour des langages comme D, F#, Haskell. Ces langages ont innové et ont clairement apporté quelque chose à tous ceux qui les ont étudiés à en devenir super fan. Avec aussi, il faut le dire je crois, ce petit côté "ça c'est un vrai langage pour les vrais programmeurs" qui en pratique se marie assez mal avec le pragmatisme de l'industrie.
Personnellement je suis très content que Rust soit là et contribue à faire progresser notre métier. Mais j'ai l'impression qu'on se dirige plus vers un marché de niche qu'une adoption massive du langage. Et
les quelques retours d'expérience qui commencent à circuler tendent à confirmer cela.
Je pense en effet que c'est honorer une techno que d'en reconnaitre les limites, pour éviter de la mettre dans des situations où elle n'est pas adaptée et peut causer des dégats / déceptions. Paradoxalement, plus on connait les faiblesses et lacunes d'un langage, plus il devient fiable car sa zone de risque se clarifie. Et je trouve que c'est quelque chose qui manque encore beaucoup au sujet de Rust : des retours contrastés sur son emploi. Beaucoup de discours sont dithyrambiques, on a l'impression de lire des plaquettes commerciales : pas vraiment de quoi rassurer sur la maturité du langage. Donc si vous avez des retours d'expérience plus nuancés sur la base d'une utilisation sérieuse je suis preneur !
Ceci étant dit, j'aimerais conclure ce message un peu "douche froide" par ce qui est pour moi l'essentiel : le fait d'aimer un langage est une raison suffisante pour pratiquer ce langage. J'ai mis plusieurs années à comprendre que l'affinité qu'on peut avoir avec un langage n'est pas quelque chose de rationnel, mais relève plutôt du goût et des couleurs. Partant de là, y'a pas à rationaliser pourquoi on préfère ce langage. Car chaque langage capture une certaine façon de penser les choses, et quand on est se découvre en phase avec l'une d'elle alors y'a juste à se laisser porter afin de d'explorer tout ce qu'il y a à découvrir avec cette façon de faire. On en retire forcément quelque chose. Et à y réfléchir, c'est quand même plus sympa de choisir un langage sur un coup de coeur !
J'attends vos réactions en espérant avoir blessé personne
9 |
0 |