Points Clés
- L'auteur a passé la majorité de son temps à travailler avec Rust avant de passer à Go.
- Apprendre Go n'a pas été décrit comme difficile, mais le développement a révélé des moments désagréables.
- Go s'est avéré moins flexible que Rust dans certains domaines.
- L'auteur a identifié des manières dans Go de « tirer dans son propre pied ».
- La décision d'écrire cet article est intervenue après près d'un an et demi de développement industriel avec Go.
Résumé Rapide
Un développeur avec une vaste expérience en Rust a récemment commencé à utiliser Go pour du développement industriel. Bien que la courbe d'apprentissage initiale de Go ait été décrite comme gérable, l'application pratique sur une longue période a révélé des différences significatives. L'auteur a identifié que Go manque de flexibilité dans certains domaines par rapport à Rust et présente des opportunités pour les développeurs de commettre des erreurs critiques.
Après près de 18 mois de travail de production avec Go, l'auteur a compilé une liste de griefs spécifiques. Ces observations sont présentées comme une comparaison pour les développeurs envisageant de passer de Rust ou de langages similaires. L'argument principal est que bien que Go soit fonctionnel, il n'offre pas nécessairement la même sécurité ou expressivité à laquelle les développeurs Rust sont habitués.
Passer de Rust à Go
Le passage de Rust à Go a été motivé par des exigences professionnelles plutôt que par une préférence personnelle. L'auteur note que sa familiarité préalable avec Go était superficielle, la majorité de sa carrière de code ayant été passée dans Rust. Malgré ce manque de connaissances approfondies, le processus d'apprentissage de Go n'a pas été considéré comme difficile. Cependant, la transition est devenue compliquée une fois que le véritable travail de développement a commencé.
Une fois que l'équipe a commencé à construire des logiciels, des moments désagréables ont commencé à apparaître. L'auteur a observé que les choix de conception du langage dans Go restreignent parfois la capacité du développeur à exprimer une logique complexe comme il le ferait dans Rust. Ce manque de flexibilité est devenu une source principale de frustration durant le cycle de développement.
Défis du Développement Industriel
Travailler dans un environnement de production a mis en évidence les différences pratiques entre les deux langages. L'auteur mentionne que Go contient des modèles ou des fonctionnalités spécifiques qui permettent aux développeurs de tirer dans leur propre pied. Cela suggère que Go offre moins de garde-fous par rapport à Rust, qui est connu pour ses vérifications strictes au moment de la compilation.
Après avoir passé presque un an et demi dans le développement industriel en utilisant Go, l'auteur s'est senti obligé de documenter ces problèmes. L'objectif est de fournir une ressource pour les autres qui pourraient faire face à des obstacles similaires lorsqu'ils passent d'un écosystème de programmation à l'autre.
Analyse Comparative
La comparaison est explicitement présentée autour du langage principal de l'auteur, Rust. L'article sert de critique de Go à travers le prisme d'un développeur Rust. L'auteur a l'intention de lister des moments ou des fonctionnalités spécifiques dans Go qui causent de la douleur, sans un ordre strict de gravité. Cette approche permet d'avoir un aperçu large des lacunes du langage d'un point de vue technique spécifique.
En se concentrant sur le manque de flexibilité et le potentiel d'erreurs, l'article met en évidence les compromis entre les deux langages. Il suggère que bien que Go puisse être plus facile à apprendre, il pourrait exiger plus de vigilance pour maintenir les standards de sécurité attendus par les développeurs venant d'un contexte Rust.



