A próxima linguagem a aprender

January 21st, 2008 § 10 comments

O Daniel Martins elegeu Python como a linguagem que vai aprender durante esse ano. Ele é fã de Java, que eu não tolero, e acho que Python é uma boa escolha depois de uma linguagem estática em todos os sentidos.

Mas, mesmo sendo um fã de Java, o Daniel tem um ponto legal em seu texto:

Felizmente, não me arrependo de nenhum programa que fiz, de nenhuma certificação que tirei e de nenhum livro que li. O simples uso do Java me ensinou coisas que eu provavelmente nunca aprenderia caso escolhesse outra linguagem. Em outras palavras, Java me ensinou uma coisa que poucos sabem (ou muitos ignoram): é difícil fazer software.

Isso é algo que eu sempre repito quando estou falando de linguagens: todas são valiosas e você pode aprender alguma coisa com qualquer uma delas desde que procure problemas interessantes para resolver. Embora eu respeito muito o trabalho de Edsger W. Dijkstra, eu discordo completamente de sua asserção de que aprender Basic mutila a mente de um programador–principalmente depois de começar a ler Beautiful Code, onde um dos capítulos mais interessantes (o de número 30; veja o sumário no endereço anterior) usa Visual Basic 6 como ferramenta primária.

Mas estou me desviando do que eu queria escrever. Embora eu também defenda a prática de aprender uma nova linguagem por ano, nos últimos três anos, principalmente por causa do meu trabalho primário na minha própria empresa, eu me limitei a incrementar o meu conhecimento de C# e Ruby. Já está passando da hora de progredir em algum outro campo.

O ano passado me deixou bem interessado em Erlang, Scala e Io. As três são boas opções e estão ganhando momentum entre os partidários de linguagens dinâmicas, o que significa que material bom está começando a aparecer.

O foco de Erlang é em processamento multi-tarefa e de alta disponibilidade. É um campo interessante, e eu tenho um certo interesse nas possibilidades por trás do mesmo e até algumas aplicações possíveis para a parte de multi-tarefa escalável.

Scala é uma linguagem derivada do Java, o que tira um pouco a graça da mesma. Mas o fato de ter características funcionais e ser mais parecida com Ruby do que Java nesse sentido é um bom atrativo. Rodando sobre a JVM, provavelmente oferece a melhor possibilidade de ser usada como uma linguagem de scripting e integração com bibliotecas externas.

Io é bem interessante, sendo baseada em protótipos e contendo uma série de características fascinantes com um interpretador bem pequeno e extensível. Além disso, tanto a extrema reflexibilidade como a forte meta-programabilidade são atrativos enormes. A sintaxe não é lá essas coisas, mas dá para agüentar. Eu tolero Ruby, com seus sublinhados e inconsistências e poderia muito bem tolerar Io cuja BNF é minúscula.

Além dessas três, há Haskell que eu comecei a aprender há dois anos e acabei deixando de lado também quando o .NET se tornou o foco principal do meu trabalho. Haskell me atrai por ser puramente funcional mas a dificuldade que a mesma tem de servir como uma linguagem genérica é um pequeno empecilho.

Io me parece a mais interessante no momento porque parece oferecer a maior possibilidade de trabalhar as idéias sobre DSL e meta-programação que estão aparecendo em meu radar agora. Por outro lado, é bem imperativa e eu gostaria de algo um pouco mais funcional. Mas a parte de meta-programação deve vencer.

Algo que eu gostaria de ter também é a possibilidade de escrever uma GUI portável sem maiores problemas. Nesse quesito eu não sei absolutamente nada sobre as linguagens mas é o que pretende explorar agora.

Outras opções são Lua, Rebol e Objective-C mas essas provavelmente só se eu acabar rejeitando as opções anteriores. Hora de estudar um pouquinho mais.

§ 10 Responses to A próxima linguagem a aprender"

  • Luiz Rocha says:

    Se você quer aprender uma linguagem funcional e não quer deixar metaprogramação de lado, a resposta que você está procurando é LISP.

  • Eu também me interessei bastante pelo lado funcional da coisa após rodar alguns exemplos em Erlang (cujo livro eu comecei a ler, mas não levei adiante). Sem falar no Smalltalk, que eu comecei a ver só por curiosidade e acabei adorando.

    No entanto, quando eu volto ao “mundo real”, eu vejo que tais opções estão tão longe de um uso prático que acabo desanimando. Claro que sempre há benefícios em se aprender linguagens ou ferramentas que nos fazem pensar de um jeito diferente, mas esse motivo por si só não basta.

    Por isso, dentre as opções viáveis do ponto de vista prático, eu optei pelo Python. 😀

  • Ronaldo says:

    Luiz, você não vai ficar surpreso quando eu disser que foi essa a conclusão à qual cheguei depois de pensar um pouco mais sobre o assunto. Eu já tinha trabalhado com Lisp durante uns quatro ou cinco meses anteriormente, mais precisamente elisp no emacs, mas acho que é hora de dedicar uum ano à mesma.

    Daniel, como eu sempre tenho vários projetos rodando em paralelo e muitos deles são exclusivamente internos, eu confesso que ignoro completamente essa parte de mundo real. Para isso eu acabo ficando com o .NET mesmo que está pragmaticamente suprindo as necessidades dos clientes.

    Fazer cada projeto interno em uma linguagem diferente é algo factível agora e pode não ser no futuro mas é algo bem divertido. :-)

  • Quero aprender Ruby! E Lua!

  • Luiz Rocha says:

    Não, não vou ficar surpreso não. :-) Acho que, levando em consideração seus objetivos, é a linguagem ideal.

  • Ronaldo says:

    Lucas, ambas são linguagens muito boas para evoluir o aprendizado. Como o Ruby tem o Rails, provavelmente seria legal você dar uma atenção maior a ele esse no mometo. :-)

    Luiz, o “On Lisp” já foi baixado e estou compilando o CLisp / SBLC. :-)

  • Fausto says:

    E ai Ronaldo, tudo certo?
    Bem que você poderia fazer um post indicando alguns livros interessantes, como esse “Beatiful code”, para iniciantes na área. Como eu, sei que tem muitos que ainda estão nas universidades (alguns amigos meus inclusive) que acompanham seu blog e por isso seria muito legal algumas indicações de livros (e dicas próprias) que você, como empresário e programador, citaria para os que estão “cheirando leite” na area.
    O que você acha?
    Fica a sugestão e o pedido meu e de alguns amigos que acompanham seu blog.
    Abração.

  • Ronaldo says:

    Bom saber sobre você e os outros que estão acompanhando o blog. Sobre a lista de livros e material para iniciantes, prometo escrever alguma coisa sobre isso em breve. Só precisa de um tempinho para organizar as idéias e colocar em uma forma mais acessível.

  • […] disse o Ronaldo, em seu post APróxima Linguagem a Aprender, neste ano, pretendo aprender Ruby, com o framework […]

  • […] A próxima linguagem a aprender – Que linguagem você aprenderá em […]

Leave a Reply

Your email address will not be published. Required fields are marked *

What's this?

You are currently reading A próxima linguagem a aprender at Superfície Reflexiva.

meta