Guia para Iniciantes em Scala

Introdução

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

Scala significa Scalable Language. É uma linguagem de propósito geral, orientada a objetos que compartilha algumas similaridades com a linguagem de programação Java. Ela fornece suporte para programação funcional. Muitas das decisões de projeto de Scala foram feitas para address os desvantagens da linguagem de programação Java.

Algumas funcionalidades que Scala oferece são:

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

  • Ela fornece interoperabilidade de linguagem com Java, permitindo que bibliotecas escritas em qualquer uma das linguagens sejam referenciadas no Scala ou na base de código Java.

  • Como a Java, Scala também usa uma sintaxe com chaves.

  • Ela tem muitas funcionalidades de linguagens de programação funcional, como Scheme, Standard Machine Learning e Haskell, incluindo currying, inclusão de tipo, imutabilidade, avaliação lazy e correspondência de padrões.

  • Suporte a aplicativos Web usando JavaScript.

  • Contrário ao 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 ele é amplamente usado por empresas como Apple, Twitter, Walmart e Google devido à sua escalabilidade e à capacidade de ser usado em operações de backend.

Configurando o 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. Ele também tem suporte para desenvolvimento em Scala com a ajuda do spylon-kernel.

Nota: Para aqueles que são novos no Jupyter notebook, sinta-se livre para verificar 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.

  • A primeira coisa que você fará é instalar o spylon-kernel.

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

  • A seguir, você criará uma especificação de kernel que lhe permitirá selecionar o scala-kernel na nota de blocos jupyter.

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

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

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

  • Finalmente, inicie sua nota de jupyter e escolha o núcleo como spylon-kernel e você está pronto para começar!

  • Vamos executar um pequeno pedaço de código para testar se o núcleo Scala está configurado corretamente ou não.
val x = 2 val y = 3 x*y
x: Int = 2 y: Int = 3 res1: Int = 6

Muito bom! Então, como você pode observar a partir da saída acima, você teve sucesso em configurar o ambiente Scala na nota de 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 do input como um argumento.

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

  • Scala é case-sensitive, o que significa que os identificadores DataCamp e dataCamp teriam significados diferentes em Scala.

  • Em Scala, todos class names primeira letra devem estar em Upper Case. Se muitas palavras forem combinadas para formar o nome da classe, a primeira letra de cada palavra separada deve estar em Maiúsculas. 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 os 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 não será nem compilado.

  • Finalmente, como a maioria dos linguagens de programação, o processamento de programas em Scala também começa pela função 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 tomar 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 (ponto flutuante de precisão simples) quanto 64 bits (ponto flutuante de precisão dupla)

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

Alguns dos outros tipos de dados são String, Boolean, Null.

Conclusão

Parabéns por completar este tutorial.

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

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

Basics of Functions and Methods in Scala

IF ELSE in Scala

Operators in Scala

Lists in Scala

Há uma quantidade impressionante de informações relacionadas a Scala que permanecem desdobrando-se, como if/else, laços for, vários operadores em Scala, etc., que serão cobertos em futuros tutoriais, então fique ligado!

Referências:

Por favor, sinta-se à vontade para fazer qualquer pergunta relacionada a este tutorial na seção de comentários abaixo.

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