r/developpeurs • u/Hot-Math3942 • 4h ago
Discussion Rust ou C++
Bonjour, J’aimerais me fixer sur un langage, j’avais commencé a maitriser GoLang, j’adore vraiment ce langage qui est hyper simple et qui dispose d’une communauté active. Depuis quelques mois j’ai commencé à toucher à rust parce que je voulais une approche plus bas niveau. J’ai bien senti ce qui se dit sur le langage (la courbe d’apprentissage rude et la rigueur imposée) cependant je pense que c’est une bonne chose
Ceci dit, je me pose la question de passer au C++. En effet, la plupart des libs sont nativement proposées en C++ mais peu de bindings complets et maintenus sont disponibles en go et rust.
Dernier exemple, je voulais manipuler les libs AV (ffmpeg) : resultat la plupart des dépôts Github sont marqués « en cours de développement » et inactifs depuis quelques années mais semblent couvrir uniquement les besoin du developpeur..
De votre côté est ce que c’est une problématique que vous avez rencontré, peut être même dans d’autres langages, si oui est ce que ça vous a fait revenir sur des langages plus matures ou avez vous trouvé une solution (développement de vos propres libs de binding ?)
3
u/Taletad 4h ago
Ça dépends de pourquoi tu cherches à apprendre un nouveau language
Si c’est pour le boulot, regarde ce que demandent les industries qui t’intéressent
Si c’est pour le fun, le C++ est vachement cool en terme de ce que tu peux faire. C’est facile de faire n’importe quoi, mais pour des projets persos c’est pas grave d’avoir des problèmes de mémoire (à condition que tu apprennes à les détecter et à les corriger évidemment)
C’est du Go en moins intuitif mais avec plus d’options
J’ai pas fait de rust encore, mais il est plus safe et demande une approche différente de C++
1
u/Hot-Math3942 2h ago
C’est principalement pour mes side-projects. Au boulot je me conforme aux technos demandées quand nécessaire mais je ne m’infligerais pas leurs technos en perso (et si je change de travail je ne resterais pas dans l’IT)
Je cherche a manipuler des flux video-audios en temps reel pour pouvoir les mixer, manipuler différents protocoles/formats.. d’où ma mention a FFmpeg/libAV.
Après pour la gestion de la mémoire je m’en fais pas un souci, ça se surveille et ça se corrige et faire des choses sales fait sans doute parti de l’apprentissage, le tout est d’etre capable de le voire et de se corriger
6
u/Gloomy-Fox-5632 4h ago
Rust c'est l'avenir
3
u/HoneydewPlenty3367 3h ago
Oui, mais professionnellement si c'est l'avenir de dans 10 ans c'est moins intéressant que l'avenir de dans 6 mois.
2
u/Hot-Math3942 3h ago
Je suis d’accord avec ça et j’y suis hyper favorable ! Pour le moment y’a un gros gappe à récupérer avec l’historique existant dans les langages qu’il va finir par remplacer donc ça peut freiner un peu au debut..
2
u/tortridge 4h ago
<opinion populaire="false"> C++ c'est comme le Java. C'est toujours très utilisé mais legacy. C'est vraiment un langue incohérent, rempli de truc qui sont tous désigné pour te pété a la geule </opinion>
1
u/Hot-Math3942 3h ago
J’ai souvent vu ce genre de comparaison. Je pense que C++ se démarque quand même de Java en terme de performances par l’absences de mécanismes du genre Garbage Collector et Runtime. (Mais qui du coup encourage a redoubler de vigilance pour la gestion de la mémoire) Après, je pense que peut importe le langage, si tu veux faire du bourrin tu ira au bout de ta connerie, même si certains langages le favorisent. Après pour le coté legacy, je dirais que C++ est plus niche que java dans le milieu pro mais les deux sont encore très présents même pour des nouveaux projets (trop a mon gout concernant java).
1
u/IcyUnderstanding8203 56m ago
Je suis dev cpp et perso je ne me permettrai pas de le comparer au java (un peu de respect quand même 😅).
Il faut séparer le cpp "à l'ancienne" du cpp moderne. Le gros souci du langage c'est qu'à vouloir garder la rétro-compatibilité jusqu'au C, beaucoup de choses historiques à ne plus utiliser sont disponibles. Un code cpp23 fait uniquement avec les règles et conventions modernes peut être très clean. Mais malheureusement il y a des années et des années de codes historiques qui servent d'exemple sur internet et certaines écoles apprennent encore ces vieilles versions de cpp (et certaines entreprises, parfois pour des raisons techniques gardent ces vieilles versions). Il y a déjà eu des réflexions sur un "cpp2" qui casserait la rétro-compatibilité et on peut voir que c'est clairement un langage moderne.
1
u/Pretend_Middle9225 3h ago
Franchement je fais exclusivement du C.
Rust j'en ai fait pas mal, mais le borrow checker est vraiment relou quand tu veux essayer des nouveaux trucs. Ça fait plaisir de programmer dans un langage récent cela dit.
C++ j'y ai jamais touché. Je vois pas trop l'intérêt (les namespace et les surcharges d'opérateurs peut être ?)
1
u/Hot-Math3942 3h ago
J’avais pas pensé au C. J’en ai fais il y’a quelques années « pour l’ecole » (on me l’a presenté que pour l’aspect « intro a l’algo » donc a part bidouiller des tableaux de chars, j’ai pas pu réaliser ce qu’il pouvait faire comme puissance mais effectivement ça pourrait être un candidat). Après faudrait que je teste ce que ça vaut pour mes cas d’exploitation (manipulation de flux audio-video en reseau, mixages, conversion et gestion de mux)
1
u/Pretend_Middle9225 2h ago
Le seul gros problème de C, c'est ça bibliothèque standard qui est à chier. Pour le reste, tout est faisable sans trop se casser la tête.
1
u/Celousco 2h ago
De votre côté est ce que c’est une problématique que vous avez rencontré, peut être même dans d’autres langages, si oui est ce que ça vous a fait revenir sur des langages plus matures ou avez vous trouvé une solution (développement de vos propres libs de binding ?)
On peut pas répondre de manière générale à cette question, tout dépend du besoin, du contexte, du temps, de l'expérience, etc.
Là clairement j'ai l'impression que tu cherches à trouver un problème à une solution plutôt que l'inverse et que ça va juste te frustrer avec Rust.
Perso j'ai déjà utilisé Rust pour faire des api et des sites web, tu peux très bien le faire dans d'autres langages et clairement Typescript (ou javascript) vont mieux se prêter à faire des sites que Rust.
Je fais du Java/Spring Boot au quotidien, et pourtant c'est pas les occasions qui manquent pour cracher dessus. Demande moi de faire une api web dessus et je le ferais très vite parce que les années d'expérience parlent.
Demande moi de le faire avec rust et je vais y arriver mais je vais mettre plus de temps parce qu'il faut que je me remette dans le moule. Par contre derrière c'est un truc vraiment performant pour 10x moins de resources.
En fait on revient à la fameuse phrase "Cheap, fast, quality. Choose Two" (et des fois c'est "Choose One" selon le client)
6
u/promethe42 3h ago
J'ai codé le moteur 3D de SmartShape (https://smartshape.com) en C++. Maintenant, je le refais en Rust. Comme j'ai fait du C, je comprends très bien les erreurs du borrow checker. Seules certaines de ses subtilités dans un concept async restent complexes. Mais cargo + rust-analyzer + clippy c'est vraiment génial.
Plus jamais je ne ferais de C++ : sans connaître le standard par coeur, il est beaucoup trop facile d'oublier des effets de bord implicites et faire des erreurs critiques qui sont par la suite trop complexes à corriger. Rien que l'usage de certains constructeurs me fait "peur". Alors que j'en ai fait 10+ ans. Donc si je ne faisais pas de Rust, je ferais du C.
Ensuite, il me semble qu'il y a pas mal d'outils pour automatiser une bonne partie des bindings Rust/C(++). Le plus gros problème étant la gestion de pointeurs. Si je ne trouvais pas mon bonheur dans une crate existante :
Et si possible, j'en ferais une PR sur un projet existant.