Tipos no Ruby 3 — apresentando a RBS, uma nova linguagem para definição de tipos
(developer.squareup.com)A partir do Ruby 3, foram adicionadas anotações de tipo semelhantes às do TypeScript. Este é um texto que explica quais foram as preocupações do Matz e da equipe de committers do Ruby ao introduzir tipagem estática no Ruby, e quais soluções eles adotaram. Abaixo está um resumo.
No Ruby 3, foi adicionada uma nova linguagem chamada RBS, que é distribuída junto com o Ruby 3.
RBS é uma linguagem para anotações de tipo no Ruby.
- Contexto da adoção
( untype foi traduzido como tipo dinâmico. )
Tipos e tipagem dinâmica são um debate antigo nas linguagens de programação. A tipagem dinâmica permite desenvolvimento rápido, mas traz problemas ao escalar equipes e bases de código; já a tipagem é adequada para sistemas de grande porte, mas oferece menos flexibilidade.
Para obter vantagens entre as duas abordagens, o C# introduziu o recurso dynamic, que adia a checagem de tipos até o tempo de execução; PHP e Python adotaram opções de verificação de tipos. Já o TypeScript escolheu criar uma linguagem de tipos para uma linguagem originalmente sem tipos explícitos.
Para obter os benefícios das duas abordagens, o Ruby criou uma linguagem padrão de definição de tipos: a RBS.
- Como é a RBS?
A RBS é semelhante aos arquivos .h de C/C++/ObjC ou aos .d.ts do TypeScript. A vantagem dessa abordagem é que ela permite aproveitar os benefícios da checagem de tipos sem modificar os arquivos Ruby já existentes.
Na RBS, são definidos os atributos da classe e os tipos dos métodos. A RBS é uma linguagem que descreve a estrutura de programas Ruby e fornece aos desenvolvedores uma visão geral do código, além das classes e métodos definidos. Sua maior vantagem é que é possível verificar as definições de tipos tanto para a implementação quanto para a execução.
- Principais recursos da RBS
O desenvolvimento de um sistema de tipos para uma linguagem dinâmica é diferente do de linguagens que já são estaticamente tipadas. Já existe muito código Ruby no mundo, e o sistema de tipos para Ruby precisava oferecer suporte ao maior volume possível desse código.
Por isso, aqui estão duas características importantes do código Ruby e as soluções adotadas pela RBS.
- Duck typing
Duck typing é uma técnica em que o tipo exato não é conhecido, mas o código é escrito assumindo que determinados métodos existirão. Para oferecer suporte a essa técnica, a RBS introduziu interface, permitindo verificar se um argumento possui os métodos necessários.
- Não uniformidade
Esse é outro padrão de código que permite que uma expressão tenha valores de tipos diferentes. Também é popular em Ruby, e a RBS torna isso possível com suporte a tipos union e sobrecarga de métodos.
- Programação em Ruby com tipos
Aqui estão os principais benefícios da RBS.
-
Possibilidade de encontrar mais bugs.
-
Segurança contra
nil -
Melhor integração com IDEs.
-
Guia para duck typing
3 comentários
https://crystal-lang.org - Fico curioso para saber como o Crystal vai se relacionar com o RBS. (Crystal é uma linguagem compilada que adota a sintaxe do Ruby.)
; m; o texto continuou sendo cortado no meio, então removi todos os códigos. Desculpem por acabar fazendo spam sem querer uh..
Ah, acho que foi por causa do `