Cada macaco no seu galho

Postado por Osvaldo Santana

Resolvi escrever esse post hoje depois de ler os comentários de uma pessoa que já programa em C/C++ e resolveu aprender a programar em Python

Linguagens de programações diferentes são isso mesmo: diferentes. Você não pode esperar que uma linguagem que você está aprendendo agora seja igual à que você usava anteriormente. Se fosse assim você não estaria aprendendo uma linguagem nova, não é?

Se você usa Java (ou C, ou Pascal, ou …) e gosta muito das características dela, use-a. Se você gosta somente de um subconjunto de características busque uma linguagem que tenha esse mesmo subconjunto de qualidades e que acrescente algo de bom.

Se você gosta da performance obtida com um programa em C e está disposto a pagar o preço de ter que gerenciar memória “na mão”, cuidar da portabilidade de seu código “na mão”, lidar com ponteiros voadores e vazamentos de memória, colocar “;” no final de cada linha do código fonte, declarar o tipo das variáveis e usar braces, fique com C. Se você gosta disso tudo significa que você não precisa de outra linguagem de programação para trabalhar.

Se você usa Java, está interessado em empregabilidade, gosta de usar um palavreado recheado de buzzwords, acha que certificações são importantes, gosta de declarar tipo de tudo, gosta de lutar contra o compilador, usa XML até em cartão de visita e gosta de empilhar 50 decorators para abrir um arquivo texto, continue com Java.

Python é uma linguagem de programação diferente de C e de Java. Até tem algumas semelhanças, mas são poucas. Portanto se quiser aprendê-la tenha isso em mente e não fale mal dela porque ela é diferente.

Em Python você não usa braces como em C ou Java e isso não faz dela nem melhor e nem pior que outras linguagens. Em Python você também recebe “self” como parâmetro dos métodos e isso não a torna menos OO ou mais OO do que as outras. Também não precisa de “;” no fim de cada linha (e dai?).

Em Python não precisamos declarar o tipo dos identificadores porque a resolução de tipos é feita em tempo de execução. Isso é diferente de Java, por exemplo, e é pior para alguns casos e melhor para outros. Tem gente que gosta e tem gente que não gosta. Se você não gosta, paciência, porque eu gosto. Java também tem seus “privates“, “protecteds” e “publics” e Python não tem. É pior? É melhor? Nada disso. É diferente.

Enfim, Python tem seus defeitos e suas virtudes e esse conjunto de características que fazem dela “Python”. Se ela tivesse todas as características de C ela se chamaria “C” e se as caracterísicas fossem de Java ela se chamaria “Java”.

Além das características sintáticas e semânticas as linguagens carregam consigo uma certa carga de “estilo de programação”. Se você usar o “estilo de programação” C para programar em Python você não vai aproveitar as vantagens dessa linguagem nova.

Dependendo do caso você vai ter a sensação de que a linguagem é ruim onde na verdade você é que não está utilizando-a corretamente. Portanto antes de criticar a linguagem que você está aprendendo agora, pergunte-se se você está usando ela corretamente. Talvez você esteja martelando um prego com alicate e reclamando que o alicate é uma porcaria.


6 Responses to “Cada macaco no seu galho”

  1. jorgepereira Says:

    Cara,

    Pena que nem todo mundo entende este conceito, não somente com linguagens de programação, e até mesmo com sistemas operacionais.
    A ultima frase ficou muito bem explicada.

    “Dependendo do caso você vai ter a sensação de que a linguagem é ruim onde na verdade você é que não está utilizando-a corretamente. Portanto antes de criticar a linguagem que você está aprendendo agora, pergunte-se se você está usando ela corretamente. Talvez você esteja martelando um prego com alicate e reclamando que o alicate é uma porcaria.”

    []s

  2. juracy Says:

    Parabéns Osvaldo, gostei muito. Sempre indicarei o seu post para ajudar aos não iniciados a seguir o conselho de Morpheus: “Open your mind !”.

    Valeu !

  3. Kalaky Says:

    Olá,

    Parece que quando alguem critica a utilização de tab/espaço para identação, o self, etc, isso ativa alguem trigger maluco nos pythoneiros de plantão.

    Essas características sintáticas e semânticas compoõem a linguagem, logo, são passíveis de críticas. Linguagens de programação existem pra se integrarem, não para os programadores se intragarem a elas. Se você quer que o programador mude, você tem que apontar vantagens em vez de ficar reclamando. Nós somos as experiências que vivemos, não tem como trocar de linguagens sem carregar manias e preferências.

    Seu post seria muito mais produtivo se você aponta-se ao querido as vantagens e desvantagens de se usar tabs/espaço para identação, do self, etc.

    Quando alguem criticar a linguagem, aponte pra ele as vantagens e desvantangens ao invés de “porque é python! ou porque é outra linguagem, blah blah blah”

  4. Osvaldo Santana Neto Says:

    Se você tivesse lido corretamente o texto e interpretado-o de maneira correta teria percebido que eu não disse em momento algum os programadores tinham que se adaptar à linguagem.

    Eu disse que a linguagem não vai se adaptar ao programador porque isso é impossível de ser feito. Se fosse feito correria-se o risco da linguagem deixar de ser ela mesma e passaria a ser outra.

    Agora, se por uma questão pessoal você não gostar da linguagem, mude e use outra. Não fique propagando sua raiva em posts sem fundamentação. Quer um exemplo? Eu não gosto dos @, $, ! e ? de Ruby. E eu não gosto disso porque pra mim isso prejudica a leitura do código. Mas isso é uma opinião pessoal e não conseguiria fundamentá-la tecnicamente, então, não fiz até agora uma crítica à Ruby (e não farei até que consiga fundamentá-la adequadamente).

    Essas características específicas que você citou são, sim, passíveis de crítica quando acompanhadas de argumentos fundamentados e não simplesmente de opiniões estéticas pessoais. Eu mesmo já descrevi aqui neste blog que Python tem seus defeitos mas fundamentei as minhas opiniões.

    Quanto à carregar as nossas manias para outras linguagens: Se fizéssemos isso com tudo em nossa vida certamente quando fôssemos falar em inglês falaríamos um inglês “half mouth”.

  5. Simples Idéias. Por Nando Vieira. » Arquivo » E aí, vou de Ruby ou Python? Says:

    [...] Update: Tinha esquecido deste post do Osvaldo. Surgiu na lista "rails-br" hoje. Vale a pena dar uma lida. [...]

  6. Kalaky Says:

    Se você usar o “estilo de programação” C para programar em Python você não vai aproveitar as vantagens dessa linguagem nova.

    Isso quer dizer que a pessoa tem que se adaptar. A maioria das questões relacionadas às linguagens são pessoais, uns gostam, outros não de cada mínima porcaria em uma linguagem. Algumas precisam de desempenho, outras não. Algumas precisam de carinho, outras não, e assim por diante. Tanto que você não gostou do Ruby por questões pessoais e você pode corretamente utilizar isso como crítica à linguagem, não há nada de errado nisso. Pessoas tem preferencias diferentes desde que o mundo existe. Provavelmente tem algum rubyzeiro em outro lado do mundo que escreveu um post igual ao seu criticando a mesma coisa.

    A parte de sintaxe da linguagem é uma parte estética (salvo alguns quesitos de parsing). Quando o arquiteto da linguagem resolve usar “#” no lugar de “;” é uma escolha puramente pessoal e sem fundamento. Não adianta ficar fingindo que tem fundamento.

    Muito bom o exemplo do inglês, quando alguem entra numa escola de inglês já sai com o pleno domínio da lingua ? Não. Ele tenta aportuguesar o inglês ? Sim. Demora tempo pra começar a “pensar” em inglês, nem por isso saímos por ai enchendo o saco de todo mundo que está aprendendo inglês.

    Quanto a questão da raiva, se você tivesse lido corretamente meu posto e interpretado-o de maneira correta não teria percebido raiva nele :-)

Deixe um comentário