Follow

Cela fait quelques années que je programme principalement avec RubyOnRails, et j'adore toujours. Mais en plus de tout ceci, je souhaiterais apprendre un langage plus "low-level".

Est-ce que vous programmez en Go et/ou Rust ? Si vous deviez apprendre l'un ou l'autre aujourd'hui, lequel choisiriez-vous ?

· · Web · 4 · 4 · 2

@etienne plutôt Rust, mais c'est par goût plutôt que pour des raisons techniques.

Qu'est ce qui te pousse à te tourner vers du bas niveau ?

@amdg2 Merci pour ton retour. Ca fait quelques années que je fais du Web avec Rails, et j'aime toujours ca.

Sans avoir à me tourner vers le bas niveau completement, je me vois faire "autre chose" que du Web dans quelques temps. Et je pense que ca va de pair avec le fait que faire du bas niveau depuis un moment m'interesse.

@etienne avant de te précipiter sur un langage ou l'autre cherche un peu ce que tu souhaites faire. Go et Rust sont des langages intéressants avec des propriétés différentes.

Go est plutôt orienté micro-services et CLI. L'écosystème est ouvert, mais le développement n'est pas hyper communautaire, Google reste le maître à bord. Si tu as de gros besoins en performances go fonctionnera jusqu'à que son garbage collector te bloque.

1/2

@etienne Rust de son côté est plutôt orienté système, mais convient très bien pour les services web et les CLI. L'écosystème est ouvert et hyper inclusif. Le développement est complètement communautaire.

C'est avec Rust que tu aura les meilleures perfs : pas de garbage collector et les abstractions sont coûts si tu ne les utilises pas (comme C++).

Par contre, la courbe d'apprentissage est beaucoup plus raide que Go !

2/2

@amdg2 Merci beaucoup pour ton retour, ca me fait plaisir et ca m'aide bien 🙂

Je vais continuer de me documenter mais je garde certainement la comparaison que tu viens de faire.

Merci encore 👍

@etienne Les types inductifs de Rust, je les trouve très bien faits : on a l'impression de loin d'être dans un langage haut niveau… alors qu'on écrit du très bas niveau !

Il me manque de la pratique, mais Rust est clairement sur ma liste 😊

@etienne J'ai une expérience très limitée avec Go et Rust. Je voulais apprendre l'un des deux pour pouvoir développer de petits programmes très bas niveau pour mes micro-ordinateurs, avec un langage moderne. Rust a d'abord eu ma préférence, puisqu'originaire de Mozilla.

Mais je me suis confronté à plusieurs problèmes :

@etienne

1) Le langage a un niveau d'abstraction terriblement élevé pour moi. Je suis développeur JavaScript, ai de l'expérience en Java, mais très peu en langage bas niveau (C/C++). Ma motivation diminuait au fur et à mesure que je me paluchais The Book (manuel du langage), et essayer plusieurs ressources du genre "Rustlang 101" ne m'a pas aidé.

@etienne

2) En tapant "Rust" sur LinkedIn, je suis tombé sur une poignée de jobs, essentiellement dans la blockchain, ou dans la conversion de programmes système C++ en Rust. Non seulement il n'y en avait pas beaucoup, mais en plus les domaines ne m'intéressaient pas particulièrement.

@etienne L'un des domaines qui m'aurait intéressé serait le web, mais l'écosystème de Rust est encore très peu mature. Le site web arewewebyet.org/ vient seulement (il y a un mois) de décréter que tu peux utiliser Rust en remplacement d'autres solutions largement utilisées (nodejs, Ruby on Rails, Django, ...), mais les bibliothèques citées ne sont pas encore très matures, et sont gérées par la communauté. Je ne pense pas que beaucoup d'entreprises s'y fieront tout de suite.

@etienne

3) En cherchant "Go" sur LinkedIn, je suis tombé sur plus d'offres que ce que j'aurais imaginé. Le Go est un langage multi-purpose, donc peut être utilisé autant pour un serveur web qu'un site internet, et est performant. Sa prise en main est bien plus rapide que pour le Rust (de mon expérience ; libre à toi d'essayer, vraiment), et sa syntaxe pas si compliquée (celle de Rust m'angoisse), ce qui facilite la collaboration.

@etienne Tout cela (performance, variété d'usages et facilité de collaboration) encourage les entreprises à le plébiciter.

Cependant, le Go n'est en terme de performance pas comparable au Rust, mais plutôt au Java ou au C# (en terme de rapidité d'exécution, Go est équivalent au C# .NET Core, et plus rapide que le Java) : benchmarksgame-team.pages.debi

@etienne

4) Plusieurs lectures m'ont convaincu que le Rust n'était pas pour moi, notamment « Why not Rust ? » de Aleksey Kladov : matklad.github.io/2020/09/20/w

Ce que j'en retiens essentiellement, c'est que "toute programmation n'est pas programmation système" — ce à quoi est destiné le Rust.

@etienne En fait, ça dépend de ce dont tu as besoin, toi : as-tu *vraiment* besoin de faire des programmes très proches du hardware, avec une gestion de la mémoire très sécurisée ? Rust pourrait t'intéresser. As-tu plutôt besoin d'un langage rapide, moderne, supporté officiellement par un mastodonte, aux multiples cas d'usages et à la prise en main rapide ? Go serait plus pour toi.

@etienne

5) Ce qui a achevé de me convaindre d'apprendre le Go plutôt que Rust, est le constat qu'aujourd'hui, la grande majorité des applications cools open source sont en Go (Docker, Kubernetes, Matrix Dendrite, et d'autres encore). Et enfin, des entreprises qui m'intéresseraient incluent Go dans leur stack technique.

@etienne Voilà. J'espère que mon retour d'expérience te sera utile. :)

@gabriel Merci énormément pour ton excellent retour, ca m'a aide beaucoup !! Je relirai l'article que tu as mentionné et tes messages plus tard pour continuer d'y voir plus clair.

Merci encore 🙂

@etienne J'ai jamais essayé Go, je touche un peu à Rust, et il est TRES sécurisant et TRES chiant pour la même raison -> Le compilateur est TRES stricte et lève des erreurs hyper souvent. (mais elles sont généralement très claires, donc bon... x) )

Ceci dit, ça évite bien de se planter.^^

@Apitronics Merci pour ton retour ! 🙂

Ca aide, et ca rejoint un peu ce que j'ai pu lire aussi. 👍

Merci encore !

Sign in to participate in the conversation
Diaspodon

Diaspodon.fr est une instance majoritairement francophone et généraliste. Aucun contenu du fédiverse n'est filtré par une décision d'administrateur ou de modérateur.