8 points par GN⁺ 2023-12-19 | 1 commentaires | Partager sur WhatsApp

À la recherche du bonheur des programmeurs

  • Ruby est un langage conçu pour le bonheur des programmeurs, ce qui en fait parfois la cible de moqueries de la part d’autres communautés.
  • Utiliser Ruby procure du plaisir, et cette valeur est profondément ancrée dans le langage, l’écosystème des gems et la communauté dans son ensemble.
  • Écrire du code Ruby est agréable, même dans ses mauvais côtés.

Encourager l’expressivité

  • Ruby est peut-être le langage de programmation le plus expressif de la planète.
  • Grâce à ses capacités de métaprogrammation et à ses idiomes culturels, il permet aux programmeurs d’écrire du code qui exprime clairement leur intention.
  • Par exemple, la DSL de RSpec permet de lire ce que l’on veut tester presque comme si une personne le disait à voix haute.

Un langage fait juste pour moi

  • Beaucoup de développeurs Ruby ont le sentiment que Ruby et Rails correspondent parfaitement à leur façon de penser.
  • On peut souvent deviner intuitivement les noms et signatures de méthodes, et si l’on se trompe, essayer d’inverser l’ordre des arguments.
  • On apprend vite à tenter quelque chose à l’intuition avant même de lire la documentation.

Communauté et valeurs

  • La communauté Ruby joue un rôle important dans ce qu’est le langage et dans la manière dont on vit son utilisation.
  • Kent Beck a dit : « Le design logiciel est un exercice de relations humaines », et cela s’applique aussi à la communauté et aux valeurs.
  • La communauté Ruby est un groupe remarquable, accueillant, bienveillant et solidaire.
  • Ruby a deux caractéristiques majeures, la joie et la communauté, et ce sont là de grands atouts.

L’avis de GN⁺

  • La caractéristique la plus importante du langage Ruby est de favoriser le bonheur des programmeurs et l’écriture d’un code expressif.
  • La forte cohésion de la communauté Ruby et sa culture d’entraide apportent une grande fierté et une forte satisfaction aux développeurs qui utilisent ce langage.
  • Cet article transmet bien l’attrait de Ruby du point de vue d’un développeur qui l’aime, et il est intéressant et séduisant en montrant qu’un langage de programmation peut aller au-delà du simple outil pour façonner une communauté et une culture.

1 commentaires

 
GN⁺ 2023-12-19
Avis Hacker News
  • Les avis divergent sur l’expressivité du langage Ruby.

    Ruby est excellent quand on travaille dans son écosystème ou sur ce que l’écosystème attend, mais il devient très délicat dès qu’on essaie de faire quelque chose de non standard. Une méthode utilitaire peut être définie quelque part à cinq niveaux d’abstraction, et parfois faire partie de la métaprogrammation d’une bibliothèque, au point que le LSP ne peut même pas la retrouver. Ruby célèbre l’implicite dans son écosystème, et cela peut parfois rendre fou. Même si le code final est élégant et agréable à lire, cela ne résout pas tous les problèmes.

  • Un avis qui reconnaît l’importance de l’expérience développeur, tout en estimant que Ruby n’est pas le meilleur dans ce domaine.

    Je suis d’accord pour dire que l’expérience développeur est sous-estimée dans beaucoup de langages ou de frameworks, mais je ne pense pas que Ruby soit le meilleur sur ce point. La syntaxe peut sembler séduisante au début, mais l’absence d’informations de type et la métaprogrammation rendent Ruby difficile à utiliser. Il y a aussi d’autres facteurs à considérer quand on choisit un langage de programmation, par exemple les performances à l’exécution. Je pense que Ruby est sorti de la mode en partie à cause de l’absence de typage statique et pour ces raisons. Personnellement, je trouve que Kotlin représente le point d’équilibre idéal pour un langage de programmation. Kotlin est concis, facile à lire, et offre un support d’outillage de classe mondiale, le typage statique, les excellentes performances de la JVM et tout l’écosystème Java.

  • Un avis qui exprime de l’affection pour Ruby tout en expliquant pourquoi Python reste préféré.

    J’aime Ruby, et je le préfère même à Python. En particulier, l’enchaînement des opérations fonctionnelles est très propre et très expressif. J’aime sa ressemblance avec les streams Java. L’écosystème de bibliothèques est aussi excellent et, comme en Python, les bibliothèques sont très pratiques. Mais pour un travail qui doit être maintenu, je choisis Python, et dès qu’il faut accorder un peu d’attention aux performances, je choisis Java. Entre Ruby et Python, je continue à choisir Python à cause de leur approche différente du typage progressif. Python 3 permet d’inclure les types comme partie intégrante du programme, alors que Ruby a tendance à placer les types dans des fichiers séparés. Cela semble surtout destiné aux bibliothèques, un peu comme les bibliothèques JavaScript qui fournissent des fichiers de types TypeScript à côté. Mais personnellement, je veux utiliser les types directement. Bien sûr, il existe un outil appelé Sorbet, mais je n’aime pas le fait que ce soit une gem et non une partie de la syntaxe, même s’il fonctionne dans le langage. Je l’ai vu bien fonctionner chez Stripe, mais personnellement je n’aime pas cette approche, et j’ai l’impression que Python 3 avec son annotation de types intégrée permet d’adopter les types plus facilement que Ruby. J’aime énormément Ruby, mais j’aimerais que la partie type hints s’améliore.

  • Un avis qui partage une expérience avec plusieurs langages et explique une faible préférence pour Ruby.

    J’ai essayé différents langages et, à une époque où j’utilisais surtout Rails, je me suis beaucoup investi dans Ruby. Pourtant, Ruby est probablement le langage que j’aime le moins. La plupart des fonctionnalités qui rendent Ruby unique me poussent plutôt à chercher le plaisir fonctionnel avec F#, à utiliser C++ quand j’ai envie d’aventure, ou Scheme/Racket quand je veux un langage dynamique. Je me demande s’il existe une définition quantitative généralement reconnue de l’expressivité d’un langage de programmation. Ici, l’auteur semble assimiler l’expressivité à une proximité avec le langage naturel. D’après mon expérience, le code Ruby est facile à écrire, mais difficile à suivre quand on ne connaît pas la base de code ni ses idiomes. Beaucoup d’informations nécessaires à la compréhension sont transmises par un contexte implicite.

  • Un avis qui exprime une forte aversion pour Ruby tout en précisant que c’est actuellement le langage principal utilisé.

    Je déteste Ruby avec passion, mais c’est pourtant le langage que j’utilise principalement en ce moment. Le vrai problème n’est pas tant Ruby lui-même que les motifs courants de son écosystème. L’usage de l’héritage pour partager du code, la prolifération de l’état global mutable et l’abus de métaprogrammation sont souvent pointés du doigt. Ces problèmes ne sont pas imposés par le langage, mais relèvent de conventions peu heureuses dans la communauté.

  • Un avis qui se plaint de la difficulté de maintenir du Ruby et tente de passer à un autre langage.

    J’ai l’impression que maintenir du Ruby est un cauchemar, et j’essaie de sortir de cet enfer. J’aime Ruby pour les projets personnels, mais quand on travaille avec d’autres personnes, tout part plus vite en vrille, et l’avantage de Ruby qui consiste à « ne pas se mettre en travers de votre chemin » disparaît alors. Ce qui pose problème, c’est la destruction de la capacité de raisonnement local dans le code.

  • Un avis qui partage une transition de Ruby vers Rust tout en exprimant encore de l’attachement pour Ruby.

    Après avoir utilisé Ruby pendant 10 ans, je suis passé à Rust il y a 4 ans et je ne compte pas revenir en arrière. Malgré cela, j’ai encore de l’affection pour Ruby. J’ai l’impression de ne plus pouvoir me passer d’un bon système de types, et je crois m’être habitué à Rust. Mais les puissantes capacités de réflexion de Ruby me manquent.

  • Un avis qui souligne l’ironie selon laquelle les langages les plus agréables à utiliser ont souvent les plus petits marchés de l’emploi.

    L’une des ironies de la programmation, c’est que les langages les plus agréables à utiliser ont souvent les plus petits marchés de l’emploi. Si je pouvais programmer en Elixir toute la journée, ma vie de programmeur serait bien meilleure, mais il n’y a presque pas d’emplois Elixir comparé à TypeScript, Python ou Java. Ruby faisait exception à cela, mais aujourd’hui il n’y a presque plus de gens qui se basent sur Rails, alors qu’il y en a beaucoup qui se basent sur React et NextJS. Cela concerne le marché des applications full stack dans son ensemble, et la situation peut être différente pour ceux qui utilisent Rust pour les systèmes ou Python pour la data et l’IA.

  • Un avis qui met en avant l’impact de l’écosystème et de la culture Ruby sur la pratique de la programmation.

    On parle beaucoup du langage lui-même, mais c’est l’écosystème Ruby et la culture qu’il crée qui me donnent envie d’y rester. L’article souligne aussi ce point. Je n’ai encore jamais vu de communauté de programmation aussi encourageante et bienveillante que celle qui gravite autour de Ruby.

  • Un avis positif sur le fait que l’auteur apprécie Ruby, accompagné d’une expérience personnelle.

    Je suis heureux de voir que l’auteur prend plaisir avec Ruby et, en tant que personne ayant une expérience limitée avec ce langage, certaines citations m’ont marqué. Il est important qu’un langage soit agréable à utiliser, qu’un code Ruby bien écrit puisse se lire comme une langue naturelle, et qu’on puisse ressentir une forme de reconnaissance dans le langage avec lequel on programme. Je suis aussi d’accord avec Kent Beck quand il dit que la conception logicielle est un exercice de relations humaines. Tous les éléments qui soutiennent un langage sont particulièrement importants : compilateur, documentation, bibliothèque standard, bibliothèques tierces, gestionnaire de paquets, framework, formateur, profileur, etc.