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!
Respostas:
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 :)
fonte
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!
fonte