Scalando (2)

Então, apesar de jurar para mim que eu não tinha tempo para mais nada (e apesar de achar [ter sido convencido] que o tempo que eu tinha deveria ser dedicado a alguma atividade física), resolvi me inscrever no curso Functional Programming Principles in Scala do Coursera (e apesar de ter dito que não sou tão fã do design dessa linguagem, e apesar de ter esbarrado em bugs do compilador nos primeiros minutos de uso, e apesar de não ver para que eu usaria o conhecimento do curso, nem saber o quanto vou aprender de verdade e o quanto vai ser só revisão). Depois de sair no news.ycombinator.com a notícia de que o curso estava começando, serviu como um sinal, haha.

Está ainda na primeira semana e a data limite dos primeiros exercícios está longe, então se algum (raro) leitor deste blog estiver a fim, dá tempo. Por enquanto os exercícios estão bem tranqüilos, dá pra fazer até sem assistir às aulas pra quem sabe essas coisas de fatorial ou fibonacci recursivos (nenhum desses é o exercício de verdade). Não chega a ser possível fazer “sem pensar”, mas a dificuldade está OK. É como voltar ao início da faculdade, mas com “macete” (↑↓←→ A+Start) de já ter terminado uma antes, hahaha.

Anúncios

7 pensamentos sobre “Scalando (2)

  1. OK, OK, tenho que admitir que escrever uma função anônima com _ + _ é muito mais legal do que function(x, y) { return x + y; }…

    E é legal que a linguagem tenta expor um monte de funcionalidades ao usuário sem deixar os detalhes como “mágica do compilador”. Ou seja, se a linguagem tem uma certa construção, você pode criar a sua biblioteca com construções indistinguíveis daquelas definidas pela linguagem. Claro que aí vem um monte de regras complicadas, como conversões implícitas, precedência de operadores, passagem de parâmetros por nome, operadores com símbolos malucos, sistema de tipos complexo, mas é o preço que se paga…

  2. Fala, Marcus!
    Beleza?

    Boa, cara, vai nos contando aí as experiências com Scala!
    Eu não conheço nada do sistema de tipos de Scala, mas pelo que me falam, só fico com mais medo…

    Eu particularmente tenho mais curiosidade sobre Clojure, estou louco pra dar uma estudada. :)

    Abraço!
    Elias

    • Bom, o que eu posso dizer é que agora eu entendo o que quer dizer:

      trait Function1[-T1, +R] extends AnyRef

      e

      abstract class List[+A] … {
      def ::[B >: A](x: B): List[B]

      }

      (bom, pelo menos ontem eu entendi, acho que ainda lembro :-p)

      É uma pena que o def ::[B >: A](x: B): List[B] esteja escondido sob “Full signature”, enquanto outras coisas mais complicadas estão bem à vista. Quer dizer que ainda tem mais coisas a aprender, haha, mas também quer dizer que eles estão se esforçando para deixar a documentação mais entendível à primeira vista.

  3. Não sei se o curso vai se aprofundar no sistema de tipos, ou se vai ficar mais na área “algorítmica” mesmo. Se bem que, se eu aprender a ler o http://www.scala-lang.org/api/current/index.html já está bom, haha. Por enquanto já aprendi que tem que alternar entre a “class” e o “object” de mesmo nome para ver todas as operações, e que tem coisas importantes no objeto Predef. Ainda não sei como funcionam coisas como =:= e CanBuildFrom…

    O Clojure eu também baixei e testei algumas coisas básicas e parece ser legal. Só tem aquele “degrau” no aprendizado onde a gente decide parar de brincar e começar a aprender de verdade, e eu ainda não subi esse degrau, hehehe.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s