Tour of Scala

Introdução

Language

Scala é uma linguagem de programação moderna e multi-paradigma desenvolvida para expressar padrões de programação comuns em uma forma concisa, elegante e com tipagem segura. Integra facilmente características de linguagens orientadas a objetos e funcional.

Scala é orientada a objetos

Scala é uma linguagem puramente orientada a objetos no sentido que todo valor é um objeto. Tipos e comportamentos de objetos são descritos por classes e traits. Classes são estendidas por subclasses e por um flexível mecanismo de composição mesclada como uma alternativa para herança múltipla.

Scala é funcional

Scala é também uma linguagem funcional no sentido que toda função é um valor. Scala fornece uma sintaxe leve para definir funções anônimas, suporta funções de primeira ordem, permite funções aninhadas, e suporta currying. As case classes da linguagem Scala e o suporte embutido para correspondência de padrões modelam tipos algébricos utilizados em muitas linguagens de programação funcional. Objetos Singleton fornecem uma alternativa conveniente para agrupar funções que não são membros de uma classe.

Além disso, a noção de correspondência de padrões em Scala se estende naturalmente ao processamento de dados de um XML com a ajuda de expressões regulares, por meio de uma extensão via objetos extratores. Nesse contexto, compreensões de sequência são úteis para formular consultas. Essas funcionalidades tornam Scala ideal para desenvolver aplicações como serviços web.

Scala é estaticamente tipada

Scala é equipada com um expressivo sistema de tipos que reforça estaticamente que abstrações são utilizadas de uma forma segura e coerente. Particularmente, o sistema de tipos suporta:

Um mecanismo de inferência de tipo local se encarrega para que o usuário não seja obrigado a anotar o programa com informações reduntante de tipos. Combinados, esses recursos fornecem uma base poderosa para a reutilização segura de abstrações de programação e para a extensão de tipos seguro do software.

Scala é extensível

Na prática, o desenvolvimento de aplicações de um determinado domínio geralmente requer uma linguagem de domínio específico. Scala fornece uma combinação única de mecanismos de linguagem que facilitam a adição suave de novas construções de linguagem na forma de bibliotecas:

Uma utilização conjunta de ambos os recursos facilita a definição de novas instruções sem estender a sintaxe e sem usar meta-programação como macros.

Scala é projetada para interoperar bem com o popular Java 2 Runtime Environment (JRE). Em particular, a interação com a linguagem de programação orientada a objetos Java é o mais suave possível. Funcionalidades novas do Java como annotations e Java generics têm correspondentes diretos em Scala. Esses recursos Scala sem correspondentes Java, como valor default de parâmetros e parâmetros nomeados, compilam de forma semelhante ao Java. Scala tem o mesmo modelo de compilação que Java (compilação separada, carregamento de classe dinâmica) e permite o acesso a milhares de bibliotecas de alta qualidade existentes.

Continue na próxima página para ler mais.