PT | EN
Publicado dia 20 de outubro de 2020

Scala: uma linguagem multiparadigma

| Tempo de leitura 4 minutos Tempo de leitura 4 minutos
Scala: uma linguagem multiparadigma

Criada em 2001, Scala é uma linguagem de programação projetada para expressar padrões de programação comuns de forma concisa, elegante e type-safe (tipagem segura que desestimula ou impede erros de programação). Ela foi tema do *SoftDrops apresentado por Lucas Caldeira Xavier, que além de falar sobre os conceitos da stack, mostrou aos colegas alguns exemplos da aplicabilidade da mesma no seu atual projeto de trabalho.

Objetos e Funções

Scala é uma linguagem de programação multiparadigma, o que significa dizer que ela suporta mais de um padrão e pode ser usada para resolver uma infinidade de problemas. Ela foi criada para herdar as vantagens presentes na linguagem Java (orientada a objetos), mas pode também operar no mesmo ambiente no paradigma funcional.

“Scala é orientada a objetos, como no Java. Por isso, ela tem herança e subtipos, só que todo o valor nela é um objeto (até mesmo o vazio é uma unit); toda a operação é uma chamada de método; e toda a função tem um retorno. E Scala também é funcional, ou seja, cada função é um valor. Ela tem uma sintaxe leve para definição de funções anônimas e suporta higher-order functions (funções de alta ordem)”, explicou o trainee.

De acordo com Lucas, a Scala é executada principalmente sobre a JVM (Java Virtual Machine), o que possibilita que ela utilize as classes e métodos da linguagem Java e vice-versa. Contudo, também é possível rodá-la em .NET, que é uma implementação alternativa criada para deixá-la o mais portátil possível entre duas plataformas, e ainda em Android.

Na imagem abaixo é possível ver uma classe em Scala comparada com uma classe em Java.

scala1

Diferenças entre Scala e Java

Apesar da similaridade, o trainee salientou que existem algumas importantes diferenças entre Scala e Java:

1. Scala é menos verbosa – que é uma das principais reclamações dos usuários de Java;

2. Ela adota um modelo chamado Actor para trabalhar com concorrência – trabalhando com programação paralela e concorrente usando modelos de atores;

3. Scala tem técnicas mais funcionais – como a imutabilidade (que é algo padrão) e uma sintaxe mais voltada para o modelo funcional;

4. Ela tem uma tipagem mais segura e estrita – com tipos existenciais e tipos de alta ordem, além de controle de variância que garante melhor controle dos valores opcionais (não tem nulos);

5. Scala não tem as exceções checadas – então, tratar erros é algo opcional;

6. E ela tem uma composição melhor – porque contém Traits e Case Class.

Características da linguagem

Antes de terminar a sua apresentação no SoftDrops, Lucas ainda citou as principais características da Scala, mostrando exemplos aos colegas.

1. Em Scala não é preciso declarar explicitamente os tipos das variáveis. Um compilador mesmo infere isso, no momento em que se está programando;

scala_ex_1

2. Nela existe o Pattern Matching, que funciona como um Switch Case do Java, só que é bem mais robusto e permite a comparação utilizando expressões regulares;

scala_ex_2

3. Scala possui as Case Classes, que são classes regulares que são imutáveis por padrão, decompostas por meio de correspondências de padrões que definem como vai ser o objeto;

scala_ex_3

4. Ela possui as Traits, que é um conceito que existe em várias linguagens de programação orientadas a objetos e, na Scala, funciona como uma interface em Java mas que permite que os métodos também sejam implementados, não apenas declarados;

scala_ex_4

5. E Scala ainda tem o Implicits, que é um parâmetro que permite que sejam aplicados argumentos como um método normal, sendo automaticamente fornecido na ausência desse.

scala_ex_5

Como exemplos de empresas que utilizam a linguagem de programação, o trainee citou o Twitter, Github, FourSquare e ApacheSpark.

*O SoftDrops é um evento de troca de conhecimento que acontece todas as quartas-feiras, na SoftDesign. A cada semana, um colaborador se predispõe a expor para os colegas algum tema de seu interesse, que tenha relação com os três pilares do nosso negócio: design, agilidade e tecnologia. A minipalestra dura em torno de trinta minutos e é seguida por um bate-papo entre os participantes.

Foto do autor

Micaela L. Rossetti

Estrategista Digital, especialista em Marketing Digital e Branding. É graduada em Jornalismo (UCS), Mestre em Comunicação Social (PUCRS) e tem MBA em Gestão de Projetos (PUCRS). Especialista em Growth Marketing, Search Engine Marketing, Inbound Marketing e Content Marketing.

Quer saber mais sobre
Design, Estratégia e Tecnologia?