Los tipos en Ruby 3: presentamos RBS, el nuevo lenguaje para definir tipos
(developer.squareup.com)A partir de Ruby 3 se agrega una anotación de tipos similar a TypeScript. Este artículo explica qué consideraciones tuvieron Matz y el equipo de committers de Ruby al introducir tipos estáticos en Ruby, y qué soluciones utilizaron. A continuación, un resumen.
En Ruby 3 se incorpora un nuevo lenguaje llamado RBS, que se distribuye junto con Ruby 3.
RBS es un lenguaje para las anotaciones de tipos de Ruby.
- Contexto de la introducción
( untype fue traducido como tipo dinámico ).
Los tipos y el tipado dinámico son una discusión antigua en los lenguajes de programación. El tipado dinámico permite desarrollar rápido, pero presenta problemas al escalar equipos y bases de código; los tipos son adecuados para grandes proyectos, pero ofrecen menos flexibilidad.
Para obtener ventajas de ambos enfoques, C# adoptó dynamic, una función que pospone la verificación de tipos hasta tiempo de ejecución; PHP y Python adoptaron opciones de verificación de tipos. TypeScript eligió un lenguaje de tipos que define tipos para un lenguaje que originalmente no los especificaba.
Ruby creó RBS como un lenguaje estándar para la definición de tipos con el fin de aprovechar las ventajas de ambos enfoques.
- ¿Cómo es RBS?
RBS es similar a los archivos .h de C/C++/ObjC o a los .d.ts de TypeScript. La ventaja de este enfoque es que se puede aprovechar la validación de tipos sin modificar los archivos Ruby ya existentes.
En RBS se definen los atributos de una clase y los tipos de sus métodos. RBS es un lenguaje para describir la estructura de un programa Ruby y ofrece a los desarrolladores una vista general del código, junto con las clases y métodos definidos. Su mayor ventaja es que permite verificar las definiciones de tipos tanto para la implementación como para la ejecución.
- Funciones principales de RBS
Desarrollar un sistema de tipos para un lenguaje dinámico es distinto de hacerlo para un lenguaje que ya tiene tipado estático. Ya existe mucho código Ruby en el mundo, y un sistema de tipos para Ruby debía soportar la mayor cantidad posible de código.
Por eso se presentan dos características importantes del código Ruby y la forma en que RBS las resuelve.
- Duck typing
El duck typing es una técnica en la que no se conoce el tipo, pero se escribe el código asumiendo que existirán ciertos métodos. Para soportar esta técnica, RBS introdujo interface, permitiendo verificar si un argumento cuenta con esos métodos.
- No uniformidad
Es otro patrón de código que permite que una expresión tenga valores de distintos tipos. También es popular en Ruby, y RBS lo hace posible mediante soporte para tipos unión y sobrecarga de métodos.
- Programación en Ruby con tipos
Se presentan las principales ventajas de RBS.
-
Permite encontrar más bugs.
-
Seguridad frente a
nil -
Mejor integración con IDE.
-
Guía para duck typing
3 comentarios
https://crystal-lang.org - Me pregunto cómo se relacionará Crystal con RBS. (Crystal es un lenguaje compilado que adopta la sintaxis de Ruby.)
; m; El texto seguía cortándose a la mitad, así que quité todos los códigos. Perdón por haber terminado haciendo spam sin querer T_T..
Ah, parece que fue por el `