e acordo com o livro Programming in Scala, escrito pelos criadores da linguagem – , o nome Scala vem da combinação das palavras em inglês Scalable Lang (Linguagem escalável), e foi chamada assim pois foi desenhada para crescer com a demanda de seus usuários (nós programadores). É possível usá-la em um grande espectro de atividades: desde de pequenos scripts a aplicações web ou GUI com alto tráfico e acesso (ou carga de processamento). Ela é simples para começar, principalmente para o pessoal que já usa o Java pois roda dentro da JVM e tem integração bem próxima das APis e bibliotecas Java.
Uma primeira coisa que podemos dizer que a linguagem é uma mistura com sabor funcional e orientado a objeto e isso será notado a medida que for avançando em seu aprendizado. O interessante é que ao fundir essas duas característica, tendo como objetivo pegar o melhor de cada, Scala acabou se tornando uma boa escolha frente as todas as da moda hoje e atingindo a meta geral de ser altamente capaz de escalar: a parte funcional torna fácil a missão de construir coisas rapidamente com código de alta legibilidade; a parte OO permite a manipulação fácil de dados e sua adaptabilidade.
A Catedral e a Bazar
Eric Raymond fez a metáfora da Catedral e Bazar para construção de sistemas. A catedral, segundo ele, é um tipo de construção próxima “a perfeição” que leva muito tempo para ser construída. Uma vez que tenha sido construída, pouco coisa resta para fazer ou modificar (pelo menos eu não vejo grandes obras, além das de restauro, dentro de igrejas antigas e catedrais). Já os bazares, pelo contrário, são feitos muito rápido, simples e adaptáveis mudando todos os dias para atender e superar as expectativas dos clientes. Scala é algo mais próximo do Bazar.
Primeiro programa
object HelloWorld{
def main (args : Array[String]) : Unit ={
println (“Hello World, ou em português, Olá Mundo”)
}
}
Nesse programa já podemos ver algumas das características interessantes da linguagem. Embora ela se proponha ser da família das dinâmicas, ela é estaticamente tipada: os tipos das variáveis devem ser definidos em tempo de compilação (não existe o famoso duck type como o Python). Com isso mesmo que não defina o tipo, o compilador vai definir um por inferência. Outra característica interessante é forma que declaramos a classe e seus métodos.
Em Scala, tudo é dado, inclusive as funções ( para quem já trabalhou com Haskell ou Lisp isso é mais simples de entender). Assim as funções tem os seus “valores” (o código) passado como numa variável : algo = valor . Isso é algo que o pessoal está muito acostumado com nossas linguagens imperativas vai demorar um pouco para se convencer disso.
Outra coisa é que o tipo é definido depois e não antes como fazíamos. Confesso que é algo que a gente se acostuma com o tempo para ler um código e entendê-lo logo de cara.
No exemplo acima não deu para ver mais uma característica interessante que é a questão de tornar concisa a escrita de sistemas. Veja os dois trechos de código abaixo
Classe em Java
class Pessoa {
private String nome;
private String sobrenome;
public Pessoa (String nome,String sobrenome){
this.nome = nome;
this.sobrenome = sobrenome;
}
}
Mesma classe escrita em Scala
class Pessoa (nome : String, sobrenome: String)
Bem por hoje paramos por aqui, no próximo artigo da séria continuamos daqui para falarmos mais
De acordo com o livro Programming in Scala, escrito pelos criadores da linguagem – , o nome Scala vem da combinação das palavras em inglês Scalable Lang (Linguagem escalável), e foi chamada assim pois foi desenhada para crescer com a demanda de seus usuários (nós programadores). É possível usá-la em um grande espectro de atividades: desde de pequenos scripts a aplicações web ou GUI com alto tráfico e acesso (ou carga de processamento). Ela é simples para começar, principalmente para o pessoal que já usa o Java pois roda dentro da JVM e tem integração bem próxima das APis e bibliotecas Java.
Uma primeira coisa que podemos dizer que a linguagem é uma mistura com sabor funcional e orientado a objeto e isso será notado a medida que for avançando em seu aprendizado. O interessante é que ao fundir essas duas característica, tendo como objetivo pegar o melhor de cada, Scala acabou se tornando uma boa escolha frente as todas as da moda hoje e atingindo a meta geral de ser altamente capaz de escalar: a parte funcional torna fácil a missão de construir coisas rapidamente com código de alta legibilidade; a parte OO permite a manipulação fácil de dados e sua adaptabilidade.
A Catedral e a Bazar
Eric Raymond fez a metáfora da Catedral e Bazar para construção de sistemas. A catedral, segundo ele, é um tipo de construção próxima “a perfeição” que leva muito tempo para ser construída. Uma vez que tenha sido construída, pouco coisa resta para fazer ou modificar (pelo menos eu não vejo grandes obras, além das de restauro, dentro de igrejas antigas e catedrais). Já os bazares, pelo contrário, são feitos muito rápido, simples e adaptáveis mudando todos os dias para atender e superar as expectativas dos clientes. Scala é algo mais próximo do Bazar.
Primeiro programa
object HelloWorld{
def main (args : Array[String]) : Unit ={
println (“Hello World, ou em português, Olá Mundo”)
}
}
Nesse programa já podemos ver algumas das características interessantes da linguagem. Embora ela se proponha ser da família das dinâmicas, ela é estaticamente tipada: os tipos das variáveis devem ser definidos em tempo de compilação (não existe o famoso duck type como o Python). Com isso mesmo que não defina o tipo, o compilador vai definir um por inferência. Outra característica interessante é forma que declaramos a classe e seus métodos.
Em Scala, tudo é dado, inclusive as funções ( para quem já trabalhou com Haskell ou Lisp isso é mais simples de entender). Assim as funções tem os seus “valores” (o código) passado como numa variável : algo = valor . Isso é algo que o pessoal está muito acostumado com nossas linguagens imperativas vai demorar um pouco para se convencer disso.
Outra coisa é que o tipo é definido depois e não antes como fazíamos. Confesso que é algo que a gente se acostuma com o tempo para ler um código e entendê-lo logo de cara.
No exemplo acima não deu para ver mais uma característica interessante que é a questão de tornar concisa a escrita de sistemas. Veja os dois trechos de código abaixo
class Pessoa
{
private String nome
;
private String sobrenome
;
public Pessoa
(String nome,
String sobrenome
){
this.
nome = nome
;
this.
sobrenome = sobrenome
;
}
}
Mesma classe escrita em Scala
Bem por hoje paramos por aqui, no próximo artigo da séria continuamos daqui para falarmos mais