4 points par ffdd270 2020-07-30 | 3 commentaires | Partager sur WhatsApp

À partir de Ruby 3, des annotations de type similaires à celles de TypeScript sont ajoutées. Cet article explique les réflexions de Matz et de l’équipe des committers Ruby lors de l’introduction du typage statique dans Ruby, ainsi que les solutions qu’ils ont retenues. Voici un résumé.

Dans Ruby 3, un nouveau langage appelé RBS est ajouté et est fourni avec Ruby 3.

RBS est un langage destiné aux annotations de type de Ruby.

  • Contexte de l’introduction

(untype a été traduit par typage dynamique.)

Le typage et le typage dynamique s’opposent depuis longtemps dans les langages de programmation. Le typage dynamique permet de développer rapidement, mais pose des problèmes lorsqu’il faut faire grandir une équipe et une base de code, tandis que le typage est mieux adapté à grande échelle mais offre moins de flexibilité.

Pour tirer parti des avantages des deux approches, C# a introduit la fonctionnalité dynamic, qui repousse la vérification des types jusqu’à l’exécution ; PHP et Python proposent des options de vérification de types. TypeScript, lui, a choisi un langage de types pour un langage qui n’impose pas les types.

Ruby a créé RBS, un langage standard de définition de types, afin de bénéficier des points forts des deux approches.

  • À quoi ressemble RBS ?

RBS est similaire aux fichiers .h de C/C++/ObjC ou aux .d.ts de TypeScript. L’avantage de cette approche est qu’elle permet de bénéficier de la vérification des types sans modifier les fichiers Ruby existants.

Dans RBS, on définit les propriétés de la classe concernée ainsi que les types des méthodes. RBS est un langage qui décrit la structure d’un programme Ruby et fournit aux développeurs une vue d’ensemble du code ainsi que des classes et méthodes définies. Son plus grand avantage est de permettre de vérifier les définitions de types à la fois pour l’implémentation et pour l’exécution.

  • Fonctionnalités clés de RBS

Le développement d’un système de types pour un langage dynamique diffère de celui d’un langage déjà statiquement typé. Il existe déjà énormément de code Ruby dans le monde, et le système de types de Ruby devait donc pouvoir prendre en charge autant de code que possible.

Voici donc deux caractéristiques importantes du code Ruby, ainsi que la manière dont RBS y répond.

  • Duck typing

Le duck typing est une technique qui consiste à écrire du code sans connaître le type exact, en supposant simplement la présence de certaines méthodes. Pour prendre en charge cette approche, RBS a introduit les interface, ce qui permet de vérifier si un argument possède bien les méthodes attendues.

  • Non-uniformité

Il s’agit d’un autre pattern de code qui permet à une expression de contenir des valeurs de types différents. C’est également populaire en Ruby, et RBS le rend possible grâce à la prise en charge des types union et de la surcharge de méthodes.

  • Programmer en Ruby avec les types

Présentation des principaux avantages de RBS.

  • Permet de trouver davantage de bugs.

  • Sécurité vis-à-vis de nil

  • Meilleure intégration avec les IDE.

  • Guide pour le duck typing

3 commentaires

 
heycalmdown 2020-07-30

https://crystal-lang.org - Je me demande comment Crystal va se positionner par rapport à RBS. (Crystal est un langage compilé qui emprunte la syntaxe de Ruby.)

 
ffdd270 2020-07-30

; m; Le texte continuait à être coupé au milieu, donc j’ai retiré tout le code. Désolé d’avoir fait du spam involontairement uh..

 
xguru 2020-07-30

Ah, on dirait que c’est à cause du `