Usem linguagens dinâmicas

August 11th, 2009 § 46 comments

Senhoras e senhores da classe de 2009:

Usem linguagens dinâmicas.

Se eu pudesse lhes oferecer somente um conselho para suas carreiras futuras de programação, seria o de usar linguagens dinâmicas. Os benefícios a longo prazo das linguagens dinâmicas já foram provados por milhares de programadores enquanto o resto dos meus conselhos não tem qualquer outra base se não minha própria conturbada experiência.

Eu lhes darei esses conselhos agora.

Aproveite o poder e expressividade de uma linguagem homoicônica. Ou esqueça que elas existem. Você nunca vai entender o poder e expressividade de uma linguagem homoicônica até passar quarenta horas acordado depurando um heisenbug. Mas acredite quando eu digo que, daqui a vinte anos, você vai olhar para trás, para todo código que você escreveu e desejar que ele tivesse sido escrito em uma linguagem homoicônica. Seu código atual é elegante, mas nem tanto.

Não se preocupe com a quantidade de linhas que você escreve. Ou preocupe-se, mas saiba que contar linhas de código é tão efetivo quando tentar contar parênteses em Lisp. O tipo de métrica que realmente vai lhe trazer problemas é a quantidade de declarações de tipo presente em seu código–justamente o código que vai falhar em uma madrugada movida a cafeína e fazer você amaldiçoar o compilador com todas as suas forças pelo pretenso sistema de tipagem segura.

Escreva uma linha de código a cada dia que assuste outros programadores.

Comente.

Seja cuidadoso com o código das outras pessoas. Não tolere pessoas que não são cuidadosas com seu código e introduzem problemas de manutenção nas elegantes estruturas que você construiu.

Não use marcações TODO, HACK ou FIXME em seu código.

Não perca tempo em discussões sobre linguagens de programação. Algumas vezes a sua está à frente no índice TIOBE, outras vezes ela está atrás. A corrida para entrega do código é longa e, no final das contas, suas linhas são as únicas quem contam.

Lembre-se dos forks e patches que seu repositório recebeu. Esqueça os comentários sobre a qualidade do código. Se conseguir fazer isso, me diga como.

Jogue fora a documentação obsoleta. Guarde o código antigo.

Faça forks do código alheio.

Não se sinta culpado por ainda não ter aprendido Assembly. Os melhores programadores que eu conheço não aprenderam até precisarem. Alguns dos mais excepcionais programadores que eu conheço preferem não aprender.

Beba café em quantidades moderadas. Seja bondoso com suas mãos. Você vai sentir falta delas quando a LER atacar.

Talvez você escreva um compilador, talvez não. Talvez você escreva um driver para o kernel do Linux, talvez não. Talvez você programe sistemas de inteligência artifical em ML, talvez não. O que quer que você faça, lembre-se que isso é tão relevante quando decidir se você vai usar o Emacs ou o Vi.

Aproveite bem os testes que você escreveu. Use-os da melhor maneira que puder. Não tenha medo dos que os outros dizem sobre TDD ou o que as pessoas pensam sobre BDD. Sanidade no desenvolvimento é a maior ferramenta que você vai ter em toda sua carreira.

Comemore cada build bem sucedido mesmo que você esteja sozinho no datacenter e ninguém mais possa compartilhar sua alegria.

Escreva um Makefile pelo menos uma vez, mesmo que depois nunca mais você vá usar algo similar.

Não leia revistas sobre tecnologias da Microsoft. Elas somente vão deprimir você pela pura estupidez da re-implementação.

Conheça os luminares de programação. Você vai sentir falta de saber o que Alan Turing e Donald Knuth fizeram algum dia. Seja gentil com seus colegas programadores. No futuro, eles são aqueles que provavelmente vão lhe apontar para o código que você precisar no momento certo.

Entenda que linguages aparecem, se tornam populares e desaparecem com a mesma facilidade mas há algumas que você deve prezar. Trabalhe muito para reconhecer as características boas de cada linguagens que você usa porque, quanto mais tempo de programação você tiver, mais vai precisar reconhecer quando e para quê certas técnicas e linguagens servem.

Programe em C durante um tempo, mas abandone a linguagem antes que ela lhe convença que controle manual de memória é uma coisa boa. Programe em Haskell algum tempo, mas abandone a linguagem antes que ela lhe convença que mensagens de erro absurdas são parte do fluxo normal de programação. E lembre-se de aprender uma nova linguagem de quando em quando.

Aceite certas verdades inalienáveis: linguagens do mercado como Java e C# são uma porcaria, tipagem dinâmica é melhor do que tipagem estática e sua carreira de programação vai terminar um dia. E quando ela terminar, você vai fantasiar que, quando você era um pogramador hot shot, linguagens de mercado eram boas–mas só pelo dinheiro–, que tipagem estática era mais segura e que sua carreira não terminaria nunca.

Respeite aqueles cujas carreiras já terminaram porque eles contribuíram bastante para o lugar em que você está.

Não espere que ninguém lhe ensine como programar melhor. Talvez você tenha um bom mentor. Talvez você tenha acesso a bons livros e documentação. Mas você nunca sabe quando essas coisas vão desaparecer.

Tenha uma biblioteca reusável mas não coloque coisa demais nela ou, quando você precisar, vai descobrir que a maioria do código lá está obsoleto ou é horrível demais para ser usado.

Seja cuidadoso com os algoritmos de terceiros que você usa, mas seja paciente com aqueles que os criaram. Algoritmos são como bichos de estimação. As pessoas que os criaram sempre pensam que eles são confiáveis, limpos e rápidos mas a verdade é sempre diferente e eles raramente valem o bytecode que geram.

Mas confie em mim quando eu falo de linguagens dinâmicas.


Melhor desfrutado ao som de “Wear Sunscreen” do qual é uma óbvia paródia.

Tagged

§ 46 Responses to Usem linguagens dinâmicas"

  • Obrigado por mais esta peça de arte.

  • Ronaldo says:

    Obrigado, Thiago! Foi divertido. :)

  • Tailor Fontela says:

    Excelente paródia! Meus Parabéns! 😀

  • TaQ says:

    Novamente, muito bom!
    Fico pensando no que estão colocando na água aí da Abril ehehehe. :-)
    Abraço!

  • Luca Bastos says:

    “… Aceite certas verdades inalienáveis: linguagens do mercado como Java e C# são uma porcaria, tipagem dinâmica é melhor do que tipagem estática… ”

    Apesar de não ter entendido direito o que é uma verdade alienável ou inalienável, fiquei curioso.

    Nos meus 40 e poucos anos escrevendo programas, já codifiquei em Fortran (enormes e até hoje ainda codifico), Cobol, Pl/1, APL, Assembler (de várias máquinas inclusive main frame), Basic, gwbasic, Visual Basic, C, C++, Clipper, DBase, Visual FoxPro, PowerBuilder, Java, Ruby, Python (tiquinho, exemplos de livro), Erlang (tiquinho, só um servidorzinho), Scala e um monte de linguagens de script.

    Acho que não conseguiria resumir um pensamento deste jeito: tal linguagem é uma porcaria. Estou certo que cada uma tem ou teve sua vantagem no determinado tempo e pelo mercado parece que Java e C# ainda tem a preferência da maioria.

    Qual dificuldade você teve? Falta de bons livros? Bons professores? Bons projetos? Pode explicar melhor seu pensamento?

    E explique também eventuais vantagens de tipagem dinâmica de forma teórica porque se houvesse consenso entre os estudiosos todas as linguagens seriam assim. Porque não são?

  • Mereghost says:

    E bota obra de arte nisso!

  • andré says:

    opa. tudo bem? o que quer dizer homoicônica?

    []’s

  • Ronaldo says:

    TaQ, eu também, eu também. :)

    Taylor, Mereghost, thanks!

    André, tirei daqui: http://en.wikipedia.org/wiki/Homoiconicity. Deve ter um termo em português mas não achei.

    Luca, o texto é uma paródia (com algumas verdades embutidas como toda paródia que se preze). Programei profissionalmente em C# por vários anos.

  • PotHix says:

    Æ!!

    haha! Que legal!
    Como você disse, uma paródia com algumas ( muitas? ) verdades embutidas! Bem interessante os pontos de vistas sobre muitas coisas, são textos que me fazem pesquisar sobre várias coisas novas! :)

    Parabens pelo post Ronaldo!

    Há braços

  • Fala Ronaldo!

    Um post no mínimo bem divertido, meu caro. Você é um artista. :)

  • Luiz Rocha says:

    Se estão colocando alguma coisa na água da Abril, eu certamente preciso descobrir que bebedouro é esse. 😛

    Muito bom mesmo! Estava sentindo falta desses seus textos…

  • Gabriel Corpse says:

    Cara, cuidado com o nível de álcool ingerido antes de escrever um post, ok.
    A probabilidade de escrever besteiras, mesmo levando em consideração que é uma “paródia”, é muito maior.

    Abraço.

  • Puxa vida. Isso realmente é coisa de artista. E ficou melhor que o “Filtro Solar” 😛

  • “Não use marcações TODO, HACK ou FIXME em seu código.”

    Faltou o complemento: “…e não lance nada nunca!”

    No mundo real o ótimo é inimigo do bom e se vc não deixar alguns caprichos para futuras iterações, alguém que consegue conviver com um hack aqui e outro acolá vai sempre estar na sua frente, lançando e recolhendo feedback.

    Eu prefiro um hack documentado do que um não documentado. É por isso que sou favorável a marcaçoes com HACK, TODO, e similares, em maiúscula mesmo, que é para causar constrangimento. :)

  • Ronaldo says:

    PotHix, Leandro, Weldys, obrigado!

    Rocha, eu estou suspeitando daquele bebedouro do oitavo andar, aquele que só solta água quente. :)

    Gabriel, quanta mágoa no coração. Primeiro, eu não bebo. Segundo, paródia significa 1) algo imitando o estilo de um artista, escritor, gênero com exageros deliberados para efeito cômico; 2) uma imitação ou versão de algo que não atende os mesmos critérios da coisa real. Eu sinto muito se isso é difícil para você entender. :)

    Zuardi, claro, claro. Eu não discuto isso e, pelo contrário, uso essas marcações o tempo todo. Como forte proponente de TDD, XP, Agile, etc, eu sou pragmático ao extremo. O texto não é uma manual–embora, depois de alguns comentários, eu estou percebendo de que há pessoas achando que os “conselhos” são para serem seguidos literalmente. :)

  • Véio Nakamura says:

    Twitter, twitter, twitteeer: @PedroBial, grave a paródia Usem Linguagens Dinâmicas!!! #gravaBial
    ahahaha
    Parabéns, ficou ótimo! :)

  • Flavio Duarte says:

    podia rolar uma versão em áudio agora 😀

  • Hugo says:

    Excelente! Engraçado que ainda aparecem pessoas para discutir o que você colocou.
    E minha pergunta, sua carreira de programador está se encerrando? :)

    Eu não hesitaria em comprar um livro do Ronaldo envolvendo ficção e programação.

  • Rafael Souza says:

    Ótima paródia mesmo! Parabéns!!

    (Véio Nakamura: fiquei lendo imaginando a voz dele, ia ser no mínimo engraçado! haha)

  • Parabéns pelo execellente texto!

    Eu admiro sua paciêcia para responder certos comentários. Parece que algumas pessoas tem preguiça de pensar por si próprios e tomam conselhos como ordens.

  • Lorn says:

    Excelente texto, parabéns.
    Mas pelos comentaŕios, as pessoas devem estar usando muito filtro solar ultimamente :)

  • Quanta gente sem senso de humor. 8)

    A quem está questionando os conselhos do texto: não levem as coisas muito a sério. Esse stress todo deve ser efeito colateral de programar demais com linguagens estáticas… *foge, bem rápido*

  • Roger Leite says:

    Sensacional!
    Estava pensando aqui … transformar este texto num “clip” (tipo o do filtro solar), poderia ser passado na abertura do Rails Summit este ano. Ficaria show!

    Talvez eu tente … a licença é commons? 😀

    Sucesso!

  • Ronaldo says:

    Véio Nakamura, Rafael, Lorn, Nivaldo, obrigado!

    Flávio, eu não sou muito bom nisso e minha voz não presta para esse tipo de coisa. Mas se alguém quiser fazer, tranqüilo. :)

    Hugo, obrigado, principalmente pela parte do livro. Quem sabe um dia a oportunidade aparece. :) Sobre a carreira, de certa forma, sim.

    Marcos, obrigado! Realmente, algumas pessoas tem preguiça. E, aliás, é só olhar um pouco do meu blog para ver o estilo que eu uso normalmente. :)

    Eduardo, hehehe, é melhor fugir mesmo porque já tem nego na cola. :)

    Roger, obrigado! Seria bacana ter um vídeo e se quiser tentar, fique à vontade. A licença é CC by-na (livre para modificações, share-alike).

  • Leocadio A. de Melo says:

    olá, paz e bem! boas práticas disfarçadas em mais um belo texto de sua lavra.

    []s livres,

  • Ary Junior says:

    Emocionante.

  • Gabriel_Araujo says:

    Nossa.. matou a pau… muito bom! foi pro mural da sala ! 😀

    ***SOH LEMBRANDO…
    “…linguagens do mercado como Java e C# são uma porcaria, tipagem dinâmica é melhor do que tipagem estática…”

    C# 4.0 já é uma linguagem dinamica (na verdade hibrida entre estatica e dinamica, vc usa como achar melhor, eu achei uma boa forma de introduzir isso no mercado), eu sei q o texto faz uma brincadeira, no entanto, o texto da a entender que isso foi desconsiderado…

    *sobre java whatever, dead is dead…

  • Samir Mamude says:

    Parabéns Ronaldo!

    Gostei muito dessa frase:
    “Não leia revistas sobre tecnologias da Microsoft. Elas somente vão deprimir você pela pura estupidez da re-implementação.”

    É a mais pura verdade!

    Abraços

  • Marcelo says:

    Boa noite Ronaldo vi em um forum que vc chegou fazer algum framework para delphi no patterns do activrecord, trabalho em um grupo que desenvolve um framework para delphi para que possamos trabalhar com ele OO , temos o ORM , OPF e tava pensando em fazer AR gostaria de saber se vc ainda tem este projeto e se vc pode fornecer.

    att

  • Cara, muita loucura. Estou aqui sentado no banco da igreja esperando o culto começar e decidi pegar meu celular e navegar. Pensei, deixa eu ir ver qual é a última pérola sua. Ao entrar aqui me deparo com um post desse. Enquato lia chorava de rir aqui. Acho que o pessoal estava pensando que sou louco, mas chorei mais ainda com os comentários. Tem uns que são dureza. Parabéns, meu velho.

  • Ronaldo says:

    Ary, obrigado!

    Gabriel, obrigado! Sobre o C#, com certeza. Eu gosto muito da versão 4.0. Ainda está longe de ser algo como um Lisp, Ruby, Eiffel ou Smalltalk mas pelo menos não ficou parado (morto!) como o Java.

    Samir, obrigado! Sobre a frase, foi uma das primeiras que veio da minha cabeça quando pensei no post. :)

    Marcelo, sorry, mas o código se foi há muito em uma das falhas de backup que eu sofri há alguns anos.

    Renato, opa, velho! Muito obrigado!

    Honestamente, só de saber que deu para você rir tanto com o post já fico super-contente de ter escrito. :)

  • Muito legal. E bom poder perceber que foi escrito por alguém que manja do assunto.
    Seria legal alguém fazer o vídeo com a música ao fundo. E chamar o Bial para narrar, haha.
    Parabéns.

  • Tetsuo says:

    Era pra ser sério ou sarcástico? Se era pra ser sério, o autor é um imbecil, porque tem uma série de péssimos conselhos. Se era pra ser sarcástico, o autor é um imbecil, porque tem uma série de bons conselhos. Bem, ou então, eu sou um imbecil, porque não entendi porra nenhuma…

  • Ronaldo says:

    Élcio, o Bial está bem cotado pelo visto. :)

    Tetsuo, ambos? :) E, sim, eu sou considerado um imbecil por vários dos meus conhecidos. Não adianta muito porque eu continuo fazendo besteira. :)

  • Reitero as vantagens do aprendizado de metaprogramação com linguagens homoicônicas mas discordo do uso impensado de tipagem dinâmica o tempo todo. Inferência de tipos como faz Haskell ao usar uma variação de Hindley-Milner tem a vantagem de deixar declarações de tipos opcionais mas ainda mantendo garantias de tipagem estática forte. Se o compilador pode fazer verificação pra você em tempo de compilação, melhor. Se você pode garantir propriedades sobre o seu programa mapeando-as no sistema de tipos, você perde menos tempo caçando bugs em runtime, além de estabelecer um contrato mais estrito na sua API.

  • Derick says:

    Não poderia deixar de dar os parabéns!

  • […] Texto original, escrito no blog “Superfície Reflexiva”: Usem linguagens dinâmicas. […]

  • […] Ronaldo, em Usem linguagens dinâmicas Deixe um […]

  • Cara, volto aqui novamente para falar que você deve escvrever uma livro de “paróquias”, ops paródias. rsrsrs

    Velho, relendo os cometários aqui, você é muito paciente. Eu já tinha xingado vários neguinhos de cabeça fechada e que querem dar uma de sabichão. Eu ainda vou fazer um vídeo disso. Só preciso de uma boa voz.
    😀

  • Ronaldo says:

    Diógenes, Derick, obrigado!

    Ricardo, não vamos entrar nessa discussão, please. O texto é claramente feito para ser levado “tongue-in-cheek”. Eu programo a mais de uma década e meia e já usei todo tipo de linguagens, profissionalmente ou por hobby e estou bem ciente das vantagens e desvantagens dos sistemas de tipos.

    Rena, eu tenho é que tomar vergonha na cara e terminar os livros que estou devendo para a Alessandra. :) Faz o vídeo aí e usa aquele cara que você comentou. 😉

  • OJr says:

    Todo mundo está certo, a não ser que confiar de cara no que dizem ou escrevem por aí!

  • Hi, this weekend is nice designed for me, aas this occasion i am reading this fantastic educational piece of writing here at my
    house.

Leave a Reply

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

What's this?

You are currently reading Usem linguagens dinâmicas at Superfície Reflexiva.

meta