English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Introdução ao Scala

Scala é a abreviação de Scalable Language, é uma linguagem de programação de múltiplos paradigmas

Martin Odersky do Instituto Federal Politécnico de Lausanne (EPFL) em2001Ano, o trabalho começou a ser projetado Scala com base em Funnel.

Funnel é uma linguagem de programação que combina ideias de programação funcional com Petri nets.

O trabalho anterior de Odersky foi Generic Java e javac (compilador Java do Sun). A Scala para a plataforma Java foi lançada em2003Fim do ano/2004Ano, o lançamento da Scala para a plataforma .NET foi em2004ano6Mês. A segunda versão do idioma, v2.0, lançada em2006ano3Mês.

Até2009ano9Mês2.7.6 Mês, a versão mais recente é a versão 2.8As novas características previstas incluem a reescrita da biblioteca Scala (Scala collections library), parâmetros nomeados e parâmetros padrão de métodos, objetos de pacote (package object) e Continuation.

2009ano4No mês, a Twitter anunciou que já migrou a maioria de seus programas de backend do Ruby para Scala, e os outros também estão planejando fazer a migração. Além disso, a Wattzon já declarou publicamente que sua plataforma inteira é baseada em infraestrutura Scala.

Características Scala

Características Orientadas a Objetos

Scala é uma linguagem orientada a objetos pura, onde cada valor é um objeto. O tipo de dados e o comportamento dos objetos são descritos por classes e traits.

Existem duas formas de expandir o mecanismo de abstração de classes: uma é a herança de subclasses, e a outra é o mecanismo flexível de mistura. Ambas as abordagens evitam os problemas de múltipla herança.

Programação Funcional

Scala também é uma linguagem funcional, cujas funções podem ser usadas como valores. Scala oferece uma sintaxe leve para definir funções anônimas, suporta funções de ordem superior, permite a nesting de várias camadas de funções e suporta currying. A case class Scala e o padrão de correspondência integrado são equivalentes aos tipos algebraicos comuns em linguagens de programação funcionais.

Ainda mais, os programadores podem usar o padrão de correspondência Scala para escrever código semelhante a expressões regulares para manipular dados XML.

Tipo estático

O Scala possui um sistema de tipos, que garante a segurança e a consistência do código através de verificações na compilação. O sistema de tipos suporta as seguintes características específicas:

  • Classes genéricas

  • Contravariança e covariança

  • Anotações

  • Restrições de limites de parâmetros de tipo

  • Usar classes e tipos abstratos como membros de objetos

  • Tipos compostos

  • Especificar explicitamente o tipo ao se referir a si mesmo

  • Visão

  • Métodos polimórficos

Extensibilidade

O design do Scala mantém uma verdadeira, ou seja, na prática, o desenvolvimento de aplicações específicas de um domínio geralmente requer extensões de linguagem específicas para o domínio. O Scala oferece muitos mecanismos únicos de linguagem que podem ser adicionados facilmente e sem problemas como bibliotecas novas estruturas de linguagem:

  • Qualquer método pode ser usado como operador prefixo ou sufixo

  • pode construir automaticamente closures com base no tipo esperado.

Concurrença

O Scala usa Actor como seu modelo de concurrency, Actor é uma entidade semelhante a uma thread, que envia e recebe mensagens por e-mail. O Actor pode reutilizar threads, portanto, pode usar milhões de Actors em um programa, enquanto as threads podem criar apenas milhares. Em2.10nas versões posteriores, usará o Akka como sua implementação padrão de Actor.

Quem usa Scala

  • 2009ano4Em , o Twitter anunciou que já migrou a maior parte de seus programas back-end do Ruby para Scala, e os outros também pretendem migrar.

  • Além disso, a Wattzon já declarou publicamente que toda sua plataforma já é escrita com infraestrutura Scala.

  • UBS (Union Bank of Switzerland) usa Scala em seus produtos gerais.

  • Coursera usa Scala como linguagem de servidor.

Frameworks de Web do Scala

A seguir está listado3Os seguintes são alguns dos frameworks de aplicativos web mais populares do Scala atualmente: