Aprendendo Scala, sentindo-se desencorajado [fechado]

9

Estou vindo de Java e tentando aprender Scala. No momento, eu estou me sentindo bastante sobrecarregado, parece haver muito mais para aprender com Scala, tantas maneiras diferentes de fazer a mesma coisa.

Fiquei me perguntando se alguém tem algum conselho sobre por onde começar e quanto tempo levou para se sentirem razoavelmente competentes no idioma.

Até pequenas coisas, como a compreensão de loop, parecem realmente poderosas, mas é apenas mais um pedaço da sintaxe que você precisa lembrar!

jcm
fonte
Scala é, na maioria das contas, uma linguagem complexa, portanto, não desanime! Curiosamente, sou um programador Haskell bastante competente e achei que Scala era muito mais complexo :) A melhor maneira que encontrei para aprender alguma coisa é alternar entre um livro e um projeto. Para Scala eu sugiro um compilador ea escadaria livros, mas cada um na sua
Daniel Gratzer
Obrigado pelo incentivo! Qual é o livro da escada?
jcm
leitura recomendada: por onde começar?
Gnat
Eu tentei o Scala há alguns anos atrás de uma perspectiva Java e realmente não entendi. Recentemente, iniciei um curso no coursera.org sobre programação funcional em Scala. É uma abordagem bastante drasticamente diferente que meu histórico em Java não atrapalhou. Em vez disso, estou (re) aprendendo a pensar em estruturas de dados imutáveis, raciocínio sobre algoritmos, teoria dos conjuntos, teoria dos tipos e todas as outras coisas divertidas que eu não pratico em um trabalho real. Não se preocupe; ainda existe utilidade real de Scala no mundo real.
precisa saber é o seguinte
2
O Scala é um grande ecossistema novo para captar (a linguagem principal em si não é tão grande - são principalmente as bibliotecas e conceitos). Se você mantiver o lado mais raso das coisas por um tempo e escolher um conceito de cada vez, as coisas realmente começarão a se unir. Coisas que parecem bizarras com sintaxe especial cozida geralmente acabam caindo em alguma categoria mais genérica de coisas que podem ser abstraídas em todo o idioma. Mas definitivamente é preciso jogar e ler para descobrir o que são essas coisas.
KChaloux

Respostas:

11

Estive onde você está e quase desisti algumas vezes. Embora de maneira alguma seja um desenvolvedor especialista em Scala, sinto que agora tenho uma compreensão firme da linguagem - certamente o suficiente para que ela tenha envenenado completamente meu relacionamento com Java.

A primeira coisa que fiz foi passar algumas semanas brincando, lendo vários blogs e introduções ao idioma. Isso foi um erro, eu não aprendi (ou pelo menos entendi) muito que era útil e me senti totalmente fora do meu alcance.

A segunda coisa foi passar algum tempo resolvendo problemas que eram tecnicamente simples, mas me forçaram a explorar aspectos específicos da sintaxe Scala por conta própria:

Embora isso não tenha me transformado em um especialista da noite para o dia, ele me deu familiaridade suficiente com o idioma que não parecia mais tão impossível.

Com esse impulso de confiança, finalmente fiz o que deveria ter começado: obter Programação em Scala de Martin Odersky e tentar ler um capítulo inteiro a cada dois dias. É um livro bem escrito e abrangente, e se você já possui um bom histórico de programação, não deve ser muito assustador. Não há necessidade de tornar sua primeira leitura muito dolorosa: pule as partes marcadas como opcionais, certifique-se de entender os conceitos, mas não fique atolado nos detalhes (em particular, acho que os capítulos das coleções são um exagero e podem ser desnatado). Saber que um conceito existe e onde ler uma explicação abrangente de como ele funciona é uma tremenda ajuda.

Uma alternativa à leitura do livro é assistir à aula do Coursera - é muito menos abrangente, mas cobre a maioria dos pontos cruciais e é dividida em unidades lógicas gerenciáveis. Por outro lado, não sei se é possível acessar as lições após a conclusão da aula e também descobri que estava muito menos envolvido enquanto ouvia alguém (mesmo alguém obviamente tão inteligente e conhecedor como Martin Ordesky) do que ao ler um livro.

Outro problema com o Scala é a quantidade de vocabulário que você precisa ingerir - parâmetros por nome? para compreensão? fecho? Se você se sentir impressionado com isso, descobri que uma boa mistura do Glossário Scala e das pesquisas direcionadas de estouro de pilha me ajudou muito (procure respostas de Daniel Sobral e Travis Brown). Na verdade, fui ao ponto de criar um baralho Anki com o glossário e senti que era uma grande ajuda.

Finalmente, isso é provavelmente óbvio, mas código, código, código. Encontre um projeto paralelo no qual possa trabalhar, mesmo que seja algo trivial. O que fiz foi escrever um rastreador da Amazon muito simples que me enviava um tweet sempre que um autor que eu estava interessado em lançar um novo livro. Demorou mais tempo do que provavelmente deveria ter, mas foi quando me apaixonei pelo idioma.

Se você chegar tão longe, provavelmente não precisará de mais ajuda, mas uma boa sugestão, depois de entender a linguagem, é aprofundar-se nos conceitos subjacentes. Você está familiarizado com o POO, tente ler sobre programação funcional - posso dizer com absoluta certeza que isso vai surpreender sua mente. A programação funcional no Scala deve ser lançada em breve (ish), mas a edição de acesso antecipado já é excelente. Outra resposta sugere a Programação Funcional para Desenvolvedores Java , com a qual eu não estou familiarizado, mas estou inclinado a acreditar que é bom (quando um livro de O'Reilly não vale pelo menos uma leitura?).

Espero que isso não fique muito longo e óbvio, e sinceramente desejo o melhor para você. Scala tem seus defeitos, mas é uma linguagem maravilhosa e levará seu cérebro a direções que você nunca soube que existiam. E procurarei o seu "Learning Haskell, me sentindo desencorajado" em um ano :)

Nicolas Rinaudo
fonte
3

Scala é uma maneira muito diferente de pensar em Java, então não desanime! Eu provavelmente começaria com Programação Funcional para desenvolvedores Java, para que você possa entrar no modo de pensar funcional.

Existe um grupo de usuários Java e / ou Scala por perto? É sempre mais fácil aprender um novo idioma com um colega.

Boa sorte e continue perseverando nisso!

Martijn Verburg
fonte
Além disso, eu recomendaria dar uma olhada no Scala Frameworks ou Toolkits sobre áreas de seu interesse. Na minha experiência, ter um projeto no qual você gosta de trabalhar facilita as coisas. Confira o Lift or Play Framework, por exemplo, quando você estiver no desenvolvimento da Web ou na Akka, se os aplicativos simultâneos ou distribuídos são a sua cara.
22414 juji