IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

« Les équipes Rust chez Google sont deux fois plus productives que celles qui se servent de C++ », d'après un responsable de l'entreprise
Qui lance le débat de la productivité entre Rust et C++

Le , par Patrick Ruiz

55PARTAGES

10  0 
Les comparatifs entre les langages Rust et C++ portent en général sur des aspects comme la performance et la sécurisation des espaces mémoires des applications. Certains benchmarks suggèrent que les applications Rust sont plus rapides que leurs équivalents en langage C. Et c’est justement pour ces atouts que sont la parité en termes de vitesse d’exécution en comparaison avec le C, mais surtout pour la sécurisation et la fiabilité que de plus en plus d’acteurs de la filière du développement informatique recommandent le Rust plutôt que le C ou le C++. C’est sur la question de l’impact que le choix de ces langages a sur la productivité des développeurs que les intervenants ne se sont pas trop penchés. Google vient de publier les résultats d’un sondage en interne et il en ressort que les équipes Rust en son sein sont deux fois plus productives que celles qui se servent du langage C++.

Les conclusions de Google se basent sur les perceptions des répondants au sondage. Le temps nécessaire à une réimplémentation en Rust comparé à celui d’une précédente réimplémentation en langage C++ est l’un des premiers aspects sur lesquels le sondage en interne au géant technologique a porté.

« Nous avons noté une réduction de 50 % de l’effort nécessaire pour mettre sur pied un service en langage Rust ainsi que pour en assurer la maintenance », déclare Lars Bergstrom dans son comparatif d’impact sur la productivité des développeurs causé par les langages Rust et C++.


L’enquête comparative de l’impact du choix des langages C++ et Rust sur la productivité des développeurs s’est étendue au-delà de la production du code informatique. Les répondants ont en sus partagé leurs perceptions pour ce qui est de la productivité en Rust comparée à celle d’autres langages (C++, Java, etc.) dont ils font usage. Dans les chiffres, le tiers des répondants a déclaré devenir aussi productif en Rust que dans les autres langages en 2 mois au maximum.



Lorsqu'un développeur a fini de travailler sur un ticket, un autre membre de son équipe passe en revue le code en se posant les questions suivantes :

  • Le code présente-t-il des erreurs logiques évidentes ?
  • Après examen des exigences, tous les cas ont-ils été complètement mis en œuvre ?
  • Les nouveaux tests automatisés sont-ils suffisants pour le nouveau code ? Les tests automatisés existants doivent-ils être réécrits pour intégrer les modifications apportées au code ?
  • Le nouveau code est-il conforme au guide stylistique actuel ?

C’est un jeu de questions qui démontre le potentiel impact des revues de code sur la productivité d’un ou d’une équipe entière de développement. Les résultats de l’enquête de Google suggèrent que le langage Rust est susceptible de s’avérer être un bon choix pour ceux désireux de se simplifier les revues de code. En effet, plus de la moitié des répondants du sondage déclarent que les revues de code en langage Rust sont plus aisées que dans d’autres langages (C++, Java, Python, etc.)


Le sondage s’est en sus penché sur la qualité du code comme indicateur de productivité. Dans les chiffres, 85 % des répondants sont d’avis que le langage Rust permet d’obtenir des bases de code d’un niveau de qualité supérieur à celui d’autres langages.


L’analyse du temps passé par les développeurs de logiciels dans les activités de création de produits et les tâches nécessaires pour mettre le code en production fait partie des métriques sur lesquelles s’appuie McKinsey dans l’évaluation de la productivité des développeurs. De façon concrète, il s’agit de mesurer la répartition du temps entre les activités de codage, de construction et de tests unitaires (boucle interne) et les activités d’intégration, de test d’intégration, de publication et de déploiement (boucle externe). C’est la mise en œuvre d’un procédé en principe similaire qui permet à Google d’arriver à la conclusion que les équipes Rust chez Google sont deux fois plus productives que celles qui s’appuient sur le langage C++.


La productivité des développeurs est en général sujette à débats. Certains intervenants de la filière sont d’avis que le sondage de Google souffre d’un biais de sélection des répondants dont les perceptions orientent les résultats.


Certains intervenants de la filière mettent souvent la chaîne d’outils du langage Rust en avant comme l’un des atouts susceptibles d’améliorer la productivité des développeurs en comparaison à d’autres langages de programmation. Des observateurs sont néanmoins d’avis que le compilateur Rust est un tueur silencieux de la productivité des développeurs qui travaillent sur des bases de code importantes.


Source : Lars Bergstrom

Et vous ?

Quelle appréciation faites-vous des résultats de ce sondage mené en interne par Google ? Sont-ils pertinents ? Quels sont les aspects qui vous semblent biaisés ?
Que pensez-vous de l’analyse du temps passé en C++ puis en Rust dans les activités de création de produits et les tâches nécessaires pour mettre le code en production comme métrique de mesure de la productivité des développeurs ? Quelles sont les métriques susceptibles de la compléter dans le processus de comparaison de l’impact du choix des langages C et C++ sur la productivité des développeurs ?

Voir aussi :

Programmation : une étude révèle les langages les plus voraces en énergie, Perl, Python et Ruby en tête, C, Rust et C++, les langages les plus verts

Linus Torvalds souligne une bonne avancée du langage Rust dans le développement du noyau Linux, et aurait qualifié le C++ de « langage de m... », après le message de Google

Microsoft, Google, AWS, Huawei et Mozilla s'associent pour créer la Fondation Rust, une organisation à but non lucratif chargée de gérer le langage de programmation

Facebook rejoint AWS, Huawei, Google, Microsoft et Mozilla dans la Fondation Rust, et renforce son équipe Rust par des nouveaux talents

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de Pyramidev
Expert éminent https://www.developpez.com
Le 30/03/2024 à 20:28
J'avais vu passer ça sur r/rustjerk.

Citation Envoyé par Patrick Ruiz Voir le message
Comment se fait-il que les équipes qui utilisent Rust soient aussi peu productives que celles qui utilisent Go ?
5  0 
Avatar de kiruahxh
Nouveau membre du Club https://www.developpez.com
Le 30/03/2024 à 20:50
Le gros soucis de productivité en C++ vient de la chaîne d'outils (gestion des dépendances, scripts de build, cross-compilation) et de la librairie standard, très optimisée mais pauvre en fonctionnalités. Avec le framework Qt on se sent déjà un peu mieux.
Je pense que ces soucis peuvent bien prendre la moitié du temps de dev, le langage lui-même étant assez complet pour du bas niveau
5  0 
Avatar de chrtophe
Responsable Systèmes https://www.developpez.com
Le 01/04/2024 à 18:58
Non,

C'est Mozilla qui a tout d'abord parrainé Rust qui a été créé par un de leur ingénieur. Microsoft en est membre également.

Google on créé Go, mais c'est sur Rust qu'ils investissent.
3  0 
Avatar de Pyramidev
Expert éminent https://www.developpez.com
Le 02/04/2024 à 1:23
Citation Envoyé par Pyramidev Voir le message
Comment se fait-il que les équipes qui utilisent Rust soient aussi peu productives que celles qui utilisent Go ?
J'avais écrit ce passage sur un ton un peu trollesque, car j'aime bien taper sur le langage Go de temps en temps. La dernière fois, je crois que c'était en juillet 2023.

Concernant la conférence, je viens de regarder ce qui en a été dit sur r/rust. Je suis tombé sur le commentaire :

Citation Envoyé par steveklabnik1
For everyone asking: in the talk, Lars mentions that they often rely on self-reported anonymous data. But in this case, Google is large enough that teams have developed similar systems and/or literally re-written things, and so this claim comes from analyzing projects before and after these re-writes, so you’re comparing like teams and like projects. Timestamped: https://youtu.be/6mZRWFQRvmw?t=27012

Some additional context on these two specific claims:

Google found that porting Go to Rust "it takes about the same sized team about the same time to build it, so that's no loss of productivity" and "we do see some benefits from it, we see reduced memory usage [...] and we also see a decreased defect rate over time"

On re-writing C++ into Rust: "in every case, we've seen a decrease by more than 2x in the amount of effort required to both build the services written in Rust, as well as maintain and update those services. [...] C++ is very expensive for us to maintain."
À 7h30m12, il y a effectivement des détails intéressants.

En fait, le présentateur ne dit pas que la réécriture en Rust offre la même productivité que l'écriture en Go. Il dit que l'équipe a la même taille et que ça prend autant de temps à coder, mais aussi que ça réduit la consommation de mémoire et les bogues. Moins de bogues, ce n'est pas une productivité égale.

Citation Envoyé par Metal3d Voir le message
Les dev Rust s'admirent tellement dans le miroir. Franchement, le comportement de leur communauté me décide à ne plus jamais utiliser Rust. Ils sont devenus hautains, désagréables, insultant et surtout ils utilisent des arguments moisis pour descendre les autres langages. Ça me dégoûte au point de rejeter leur langage malgré l'intérêt potentiel du compilo (c'est le seul truc bien de Rust d'ailleurs)

Moi j'en ai marre de les entendre.
Citation Envoyé par OrthodoxWindows Voir le message
Pourtant Rust possède de nombreuses qualités indéniables, mais il n'est en effet pas aidé par sa communauté.
Le mépris des autres n'incite pas à la considération...
Est-ce spécifiquement sur ce forum ou bien aussi ailleurs ?
3  0 
Avatar de NotABread
Membre régulier https://www.developpez.com
Le 10/09/2024 à 9:50
Citation Envoyé par 23JFK Voir le message
Il semble que Rust soit trop strict pour être viable dans la chaîne de développement d'une entreprise qui vise, entre autre, le profit. Le code permit par Rust est un sous-ensemble de tous les codes fiables et sécurisés possibles pour un problème donné. Les dev passeraient ainsi plus de temps à se battre avec le compilateur pour satisfaire à toutes les exigences de Rust qu'à écrire d'autres parties de code permettant de livrer dans les temps un produit "fini" (qui fait au moins ce pourquoi il a été prévu - Osef des bugs, les updates c'est fait pour les corriger) aux utilisateurs. Et de toute façon Rust ne permet pas de se prémunir contre les bugs/failles hardware comme celles qui ont affecté les processeurs Intel (DownFall etc...)
Je ne suis pas d'accord. Je trouve que le fait que le compilateur soit plus strict ne ralenti pas le développement, car entre le moment où tu ponds ton premier binaire et le moment où tu as un binaire près pour la release, et bien tu as des phases de test même minime. Donc certes, tu mettras plus de temps à satisfaire ce tyran de compilateur, mais tu gagneras en vas-et-viens entre la plateforme de test et ton PC car toutes les erreurs de manipulation de la mémoire sont éliminé avant même que les binaires soient mis sur la plateforme.

Après, Rust, c'est pas magique, tu auras toujours des problèmes de précision lié à la représentation numérique, dead lock et autre problème classique qui n'est pas en relation avec l'allocation, l'initialisation, la lecture, l'écriture et la libération de la mémoire. De plus, si la majorité du code doit être en unsafe, Rust ne serait pas adapté (pas assez de connaissance sur les microcontroleurs et firmware pour savoir dans quel scénario ça arrive)
3  0 
Avatar de fdecode
Membre habitué https://www.developpez.com
Le 13/09/2024 à 22:53
Citation Envoyé par 23JFK Voir le message
Ou que l'on obligé de faire de l'unsafe et l'unstable.
Et bien non! Il ne vous a pas échappé si vous êtes allés sur le Playground, que le code en question fonctionne dans une version stable de Rust:

Ce qui est nighty, c'est la librairie SIMD, pas les instructions machines répliquées dans le core Rust.

Pour ce qui est de l'unsafe, il est tout naturellement utilisé ici pour inclure du code machine, donc extérieur à Rust, tout comme on utilise de l'unsafe pour inclure une librairie C : cela sert à isoler les parties du code non contrôlées par la sémantique de sécurisation de Rust. Il s'agit pour le coup du contexte d'utilisation le plus simple de l'unsafe: délimiter le code externe. Pas de risque d'UB. Vous ne risqueriez donc pas d'y perdre des dents.
3  0 
Avatar de Metal3d
Membre régulier https://www.developpez.com
Le 30/03/2024 à 21:13
Les dev Rust s'admirent tellement dans le miroir. Franchement, le comportement de leur communauté me décide à ne plus jamais utiliser Rust. Ils sont devenus hautains, désagréables, insultant et surtout ils utilisent des arguments moisis pour descendre les autres langages. Ça me dégoûte au point de rejeter leur langage malgré l'intérêt potentiel du compilo (c'est le seul truc bien de Rust d'ailleurs)

Moi j'en ai marre de les entendre.
9  7 
Avatar de fdecode
Membre habitué https://www.developpez.com
Le 12/09/2024 à 11:15
Citation Envoyé par 23JFK Voir le message
Reste qu'apparemment, il n'est pas possible de tout faire en Rust et certain projet comme construire une librairie Rust semble carrément impossible, l'algorithme de la racine carré-inverse rapide ne semble pas non plus pouvoir être tolérée par le compilateur (spéculatif, je n'ai pas essayé ; mais étant donné qu'il faille jouer avec les différents motifs mémoire fonction du types des nombres, en Rust ça doit être un enfer) ; la compilation est affreusement lente quand il faut récupérer tous les paquets Cargo pour un gros projet. Franchement passé la hype, je ne vois pas comment Rust pourrait avoir une trajectoire différente d'Ocaml ou Haskell, c'est un truc d'université/laboratoire qui ne semble pas pouvoir s'adapter à la réalité des entreprises.
Cela a l'air très personnels et émotionnels comme griefs. Je vais simplement répondre à la demande concrète de votre message: "algorithme de la racine carré-inverse rapide" (de quake, je suppose).
Dans la mesure où c'est un algorithme de calcul très approximatif, et que l'instruction SSE RSQRT existe désormais, il me paraît assez peu intéressant, mais il a quand même été facile de trouver un exemple d'implémentation [playground]:

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
fn inv_sqrt(x: f32) -> f32 {
    let i = x.to_bits();
    let i = 0x5f3759df - (i >> 1);
    let y = f32::from_bits(i);
 
    y * (1.5 - 0.5 * x * y * y)
}
 
 
fn print_both(v: f32) {
    println!("quake: {}", inv_sqrt(v));
    println!("real:  {}", 1.0 / v.sqrt());
    println!();
}
 
fn main() {
    print_both(4.0);
    print_both(10.0);
    print_both(3.1415);
}
Ceci-dit, le code de quake n'est pas très intéressant puisque le calcul exact tient en 3 instructions machine.
2  0 
Avatar de Pyramidev
Expert éminent https://www.developpez.com
Le 14/09/2024 à 1:47
Citation Envoyé par 23JFK Voir le message
Désolé, mais dans le code d'en haut, from_bits() semble tagué unstable.
f32::from_bits est stable depuis Rust 1.20.0. C'est le fait que cette fonction soit const (l'équivalent de constexpr en C++) qui n'est pas encore stable.
2  0 
Avatar de Uther
Expert éminent sénior https://www.developpez.com
Le 18/09/2024 à 9:41
Je sais qui est Mara Bos, mais il y a des bugs bien plus vieux et plus impactants que ça dans le compilateur qui ne sont pas encore corrigés car ils impliqueraient une refonte technique complexe et qu'on considère improbable de les déclencher sans faire exprès.
Le plus connu étant le bug https://github.com/rust-lang/rust/issues/57893 qui permet de faire un transmute sans bloc unsafe. En théorie il casse complètement la sécurité de Rust mais vu que le code qui peut déclencher le problème n'a pas vraiment de sens dans du code normal, il n'est pas considéré urgent et attend la refonte du borrow checker à venir.

Au vu du code tordu de la crate de Mairia Bos, j'ai l'impression qu'on est bien dans cette catégorie.
2  0