2 points par GN⁺ 2024-08-13 | 1 commentaires | Partager sur WhatsApp

Go est mon marteau, tout est un clou

Introduction

  • Markus est un développeur indépendant et créateur de produits numériques
  • Il travaille seul, sans équipe, et recherche une manière de travailler flexible
  • Il évite les stacks techniques complexes et se concentre sur la création de valeur pour ses clients

Pourquoi avoir choisi Go

Raison 1 : Go peut presque tout faire

  • Go est simple, lisible et cohérent
  • Il peut être utilisé pour des CLI, de l’infrastructure cloud, des serveurs HTTP, des tâches réseau et bien d’autres usages
  • Il est aussi possible de développer en Go des jeux Nintendo Switch, des applications GUI ou encore des synthétiseurs de chaînes de caractères pour terminal

Raison 2 : moins de changement de contexte

  • Utiliser plusieurs langages de programmation rend les bascules de syntaxe difficiles
  • N’utiliser qu’un seul langage permet d’éviter ce problème
  • Il devient plus facile de gérer le langage, le compilateur, l’IDE, la toolchain, la communauté et d’autres éléments

Raison 3 : une connaissance plus approfondie

  • Se concentrer sur un seul langage permet d’acquérir une expertise plus profonde
  • Se focaliser sur un langage est plus productif que d’en pratiquer plusieurs
  • Cela aide à réduire la complexité du développement logiciel

Conclusion

  • Markus mène avec succès divers projets en utilisant Go
  • Sa connaissance approfondie de Go lui permet d’améliorer sa productivité
  • Go lui permet de relever des défis variés

Le résumé de GN⁺

  • En tant que développeur solo, Markus a choisi Go pour réduire la complexité et gagner en productivité
  • Go peut être utilisé pour de nombreux usages et reste simple, cohérent et facile à gérer
  • Se concentrer sur un seul langage permet de développer une expertise approfondie et s’avère plus efficace que d’en utiliser plusieurs
  • Go permet de mener à bien des projets variés avec succès, ce qui peut aussi être utile à d’autres développeurs

1 commentaires

 
GN⁺ 2024-08-13
Avis Hacker News
  • A travaillé dans une entreprise qui traitait des données financières avec Go

    • Trouvait gênant que ses collègues utilisent Go pour des tâches ponctuelles comme agréger des fichiers CSV ou mettre à jour une base de données
    • Avait du mal à faire confiance à des collègues qui implémentaient eux-mêmes des algorithmes de base au lieu d’utiliser Pandas
    • Pensait que c’était une perte de temps pour l’entreprise et que cela relevait de l’ego pour prouver que Go suffisait
  • Beaucoup de gens sous-estiment le coût réel de l’apprentissage d’un langage

    • Il faut 2 à 4 ans pour atteindre un niveau où l’on peut dire qu’on "connaît" un langage
    • Il faut 8 à 10 ans pour comprendre le langage, le compilateur, le runtime, la bibliothèque standard et les pratiques idiomatiques
    • Pendant cette période, on peut faire évoluer la manière d’utiliser le langage et former rapidement les débutants
  • Pense que Go convient à presque toutes les tâches

    • Est très productif avec Go
    • Au-delà de 100 lignes, c’est meilleur que Python
    • Atouts de Go :
      • le langage est très simple
      • la bibliothèque centrale est bien conçue
      • la toolchain et la bibliothèque centrale suffisent pour la plupart des tâches
  • Pense que Go n’est pas adapté aux projets personnels

    • Le code est verbeux et même les tâches simples demandent beaucoup de code
    • Il manque de vrais enums, de types union et de null safety
    • Pour ces raisons, n’y prend pas de plaisir sur des projets personnels
  • Préfère Typescript et Rust

    • Deno et Typescript sont des outils plus polyvalents que Go
    • Typescript est plus sûr et plus ergonomique, mais un peu plus lent
    • Rust est plus sûr et plus rapide, mais plus difficile à apprendre
    • Avantages de Typescript :
      • null safety
      • génériques largement pris en charge
      • types union discriminés
      • concurrence sûre
      • méthodes de collection/itérateur
    • Avantages de Go :
      • plus efficace en taille et en mémoire
      • le GC de Go est meilleur que celui de V8
      • plus rapide sur les tâches CPU-bound
      • bibliothèque standard plus riche
  • A utilisé Go et Typescript, mais préfère Kotlin/JVM

    • Malgré le dilemme Gradle/Maven et l’inquiétude liée au système de build, est très satisfait des fonctionnalités du langage et du runtime
  • Considère Go comme un outil universel

    • Tout est simple et facile à utiliser
    • On peut compiler et déployer avec des commandes simples sans recourir à beaucoup d’outils externes
    • D’autres langages ont aussi leurs qualités, mais aucun n’est aussi simple et sans friction que Go
  • Aime bien Go sans l’adorer

    • Trouve que l’outillage est en désordre
    • Les modules Go donnent une impression d’inachevé
    • Les génériques restent encore primitifs
    • L’écosystème paraît incomplet
  • Aime la plupart des aspects de Go, mais en tant que personne qui écrit beaucoup de code numérique, l’absence de surcharge d’opérateurs est un inconvénient

    • Continue d’utiliser Python et C++
    • Rust est attirant comme remplacement de C++, mais a trop de règles pour remplacer Python
  • La vie est trop courte pour devenir excellent dans plus d’une chose, donc il faut choisir avec soin

    • Raisons du choix de Go :
      • bibliothèque standard remarquable
      • facile à lire et à écrire
      • compilation en binaire statique unique
      • pas besoin de conteneur
      • utilisable partout (développement web, applications desktop, développement de jeux, embarqué, etc.)