Guia para Iniciantes em Scala

Introdução

Scala foi desenhada por Martin Odersky, um professor na École Polytechnique Fédérale de Lausanne (EPFL) na Suíça e um cientista da computação alemão. Martin começou a trabalhar na criação do Scala em 2001, e sua primeira versão foi lançada em 2004.

Scala significa Linguagem Escalável. É uma linguagem de propósito geral, orientada a objetos que tem algumas semelhanças com a linguagem de programação Java. Ela fornece suporte a programação funcional. Muitas das decisões de design do Scala foram direcionadas a endereçar as limitações da linguagem de programação Java.

Algumas características que o Scala oferece são:

  • O código fonte do Scala pode ser compilado para bytecode Java e, portanto, executável em uma Máquina Virtual Java (JVM).

  • Ele fornece interoperabilidade de linguagem com Java de forma que bibliotecas escritas em qualquer uma das linguagens podem ser referenciadas no código base Scala ou Java.

  • Como o Java, Scala também utiliza uma sintaxe com chaves.

  • Ele tem muitas características de linguagens de programação funcionais como Scheme, Standard Machine Learning e Haskell, incluindo currying, inferência de tipos, imutabilidade, avaliação preguiçosa e correspondência de padrões.

  • Suporte a aplicação Web usando JavaScript.

  • À diferença do Java, o Scala também suporta sobrecarga de operadores, parâmetros opcionais, parâmetros nomeados e strings cruas.

Um fato interessante sobre o Scala é que é amplamente usado por empresas como Apple, Twitter, Walmart e Google por causa de sua escalabilidade e capacidade de ser usado em operações de backend.

Configuração do Scala no Jupyter Notebook

O Jupyter notebook é a ferramenta mais amplamente usada na ciência da computação, especialmente no domínio da ciência de dados. Também tem suporte para desenvolvimento em Scala com a ajuda do spylon-kernel.

Nota: Para aqueles de vocês que são novos no Jupyter notebook, não hesitem em conferir este tutorial abrangente.

A configuração do ambiente Scala no Jupyter notebook não é ciência espacial. Então, vamos configurá-lo rapidamente em apenas alguns passos.

  • Primeiro, você irá instalar o spylon-kernel.

    pip install spylon-kernel (Python 2)
    pip3 install spylon-kernel (Python 3)

  • Em seguida, você criará uma especificação de kernel que permitirá selecionar o scala-kernel no notebook jupyter.

    python -m spylon_kernel install (Python 2)
    python3 -m spylon_kernel install (Python 3)

  • Então, como um passo importante, você instalará pyspark e findspark já que o spylon-kernel também instala alguns componentes spark.

    pip install pyspark findspark (Python 2)
    pip3 install pyspark findspark (Python 3)

  • Por fim, inicie seu notebook jupyter e escolha o kernel como spylon-kernel e você estará pronto para começar!

  • Vamos rodar um pequeno trecho de código para testar se o kernel Scala foi corretamente configurado ou não.
val x = 2 val y = 3 x*y
x: Int = 2 y: Int = 3 res1: Int = 6

Ótimo! Assim como você pode observar na saída acima, você foi bem-sucedido em configurar o ambiente Scala no notebook jupyter.

Sintaxe Básica

Vamos começar imprimindo Hello, World! em Scala.

print("Hello, World!")
Hello, World!

Como você pode ver, foi muito simples, apenas um comando print seguido pela entrada como um argumento.

Agora, vamos olhar para alguns detalhes relacionados à sintaxe em Scala:

  • Scala é sensível a maiúsculas e minúsculas, o que significa que os identificadores DataCamp e dataCamp teriam um significado diferente em Scala.

  • Em Scala, todas as nomes de classes devem iniciar com uma Maiúscula. Se muitas palavras forem combinadas para formar um nome de classe, a primeira letra de cada palavra separada deve ser em maiúscula. Por exemplo, class MyScalaDataCampTutorial.

  • Os nomes de métodos em Scala funcionam de forma ligeiramente diferente em comparação com nomes de classes, principalmente para distinguir nomes de métodos de nomes de classes. Os nomes de métodos devem começar com letra minúscula (Source). Se múltiplas palavras forem combinadas para formar o nome do método, então a primeira letra de cada palavra interna deve ser em maiúsculo. Por exemplo, def firstDatacampScalaTutorial()

  • Em Scala, o nome do arquivo de programa deve corresponder exatamente ao nome do objeto. Ao salvar o arquivo, você precisa salvar usando o nome do objeto e acrescentar .scala no final do nome. Por exemplo, digamos que ScalaTutorial é o nome do objeto. Então o arquivo deve ser salvo como ScalaTutorial.scala.

    Nota: Se o nome do arquivo e o nome do objeto não conferem, então seu programa nem sequer compilará.

  • Finalmente, como a maioria das linguagens de programação, o processamento de programas em Scala também começa com o método main(), que é uma parte crucial de todos os programas em Scala.

A figura abaixo mostra as palavras reservadas em Scala que não podem ser usadas como constantes ou variáveis ou como outros identificadores.

(Source)

Tipos de Dados

Tipos de dados em Scala são quase idênticos a muitas outras linguagens de programação como C, C++, Java, Python, etc., com uma pegada de memória e precisão semelhantes.

Finalmente, vamos olhar para alguns dos tipos de dados que existem em Scala:

  • Int: Um valor de 32 bits assinado (pode levar valores positivos e negativos) tem um intervalo de $2^{-31}$ a $2^{31} – 1$

  • Byte: Um valor de 8 bits assinado tem um intervalo de $2^{-7}$ a $2^{7} – 1$

  • Short: Um valor de 16 bits assinado tem um intervalo de $2^{-15}$ a $2^{15} – 1$

  • Long: Um valor de 64 bits assinado tem um intervalo de $2^{-63}$ a $2^{63} – 1$

  • Float: Tanto 32 bits (flutuação de precisão simples) quanto 64 bits (flutuação de precisão dupla)

  • Char: Um caractere Unicode de 16 bits não assinado (só pode levar valores positivos).

Alguns dos outros tipos de dados são String, Booleano, Nulo.

Conclusão

Parabéns por terminar este tutorial.

É um bom ponto de partida para iniciantes interessados em aprender Scala.

Para aprender mais, confira os tutoriais de Scala da DataCamp:

Basics of Functions and Methods in Scala

IF ELSE em Scala

Operadores em Scala

Listas em Scala

Existe uma abundância de informações relacionadas a Scala que ainda não foram exploradas, como if/else, laços for, vários operadores em Scala, etc., que serão cobertos em tutoriais futuros, então fique ligado!

Referências:

Por favor, não hesite em fazer qualquer pergunta relacionada a este tutorial nos comentários abaixo.

Source:
https://www.datacamp.com/tutorial/beginners-guide-to-scala