O monge e o macaco

February 15, 2009 · Posted in Contos, Perl 

Era uma vez um rapaz que gostava de programar. Ele descobriu a programação por acaso e se encantou com a idéia de transformar as idéias na sua cabeça em software para que outras pessoas pudessem usar. Então ele começou uma jornada em busca da linguagem que fosse capaz de expressar exatamente o que ele pensava.

Ele começou com Pascal e aprendeu que com ela poderia iterar e recursar, modularizar e estruturar. E viu que isso era bom, e estudou mais e mais, e naquela época ele foi feliz. Porém o excesso de restrições começou a travar o seu pensamento e nessa época ele foi infeliz.

Então ele decidiu que queria algo que melhor e procurou Java. E então ele aprendeu que poderia orientar a objeto sem se preocupar com a coleta de lixo. E viu que isso era bom e nessa época ele foi feliz. Mas chegou um dia que o excesso de camadas começou a travar o seu pensamento e nessa época ele foi infeliz.

Então ele decidiu que se quisesse ser um programador de vedade teria que aprender C e Assembly. Ele estudou e estudou, e descobriu que podia fazer tudo que sua mente imaginava, inclusive besteiras. E nessa época ele foi feliz. Ele tinha para si todo o controle da máquina e assumiu a responsabilidade sobre esse poder. Ele percebeu que poderia ter o que tinha em Pascal, com C e ele foi feliz. Ele percebeu que poderia ter o que tinha em Java, com C++ e ele foi feliz. E ele percebeu que poderia ter o que quisesse se estivesse disposto a pagar o preço em Assembly, e ele foi muito feliz.

Mas algo faltava que ainda o incomodava e ele não sabia explicar o porquê. Tentou escrever um programa que explicasse o que faltava, mas não conseguiu resolver. Então, nessa época, ele foi infeliz. Ele se desesperou, e procurou apender todas as linguagens do mundo, mas nenhuma era suficiente para explicar o que estava faltando. Tentou VB, C#, Python, Lisp e nada. Nem mesmo Brainfuck conseguia explicar o que faltava. E ele era infeliz, e até a sua infelicidade era incompleta. Ele pensou em desistir, mas até esse pensamento era incompleto.

Então um dia ele conheceu um monge e esse monge lhe apresentou uma nova linguagem não muito conhecida. Ele viu mas não ficou interessado, pois nenhuma linguagem até ali havia mostrado o que lhe faltava. Mas o monge insistiu e ele aceitou, e então ele começou a estudar Perl.

Então ele viu que a linguagem era cheia de símbolos e construções estranhas e aquilo não era bom. Era feio e esquisito, e ele continuava sem saber o que lhe faltava. Sua mente já estava cansada e seus pensamentos minguavam, mas algo o impelia a continuar e estudar.

Um dia, ele não sabe qual, aconteceu algo e ele não soube o quê. Veio um estalo e tudo se tornou claro. Seu mundo de sombras teve luz. E ele não sabia explicar o que era, mas isso era bom e ele foi feliz.

Então ele procurou fazer um retrospecto de seu caminho até ali para descobrir o que lhe acontecera. Ele olhou para si e descobriu que podia ver coisas que não via antes. Ele olhou para Pascal e resolveu problemas que não tinham solução naquela época. Ele olhou para Java e entendeu quais eram as camadas necessárias e quais eram as barreiras. Ele olhou para C e percebeu que a linguagem era tão poderosa que ele deixou-a amarrar suas mãos e prender sua mente, e ele entendeu como utilizar por completo esse poder a seu favor. Ele olhou para VB, C# e todo o .NET e aceitou que era melhor mesmo deixar pra lá… Então ele olhou para Lisp e viu como realmente eram escritas as linhas de código do universo, e que tinha Perl colando as coisas.

Então ele olhou para Perl, e notou que os símbolos estranhos eram só atalhos para abstrações e que a linguagem era muito mais que isso. Era grande, poderosa, flexível e bela, muito bela.

E foi aí que ele descobriu o que lhe faltava, e isso não era uma linguagem de programação. Perl lhe trouxe uma nova forma de olhar para o mundo e perceber coisas que antes ele não percebia. Perl o iluminou e libertou sua mente, e ele entendeu que até ali tinha sido apenas um macaco, repetindo comandos e algoritmos sem entender o seu real significado. Não importava qual era a linguagem, ele era somente um macaco, e antes desse estalo, mesmo com Perl ele não compreendia. Mesmo com Perl ele continuava a ser um macaco, e teria sido assim se ele não tivesse compreendido. Não importaria qual a nova linguagem, ele continuaria a ser um macaco.

Ele percebeu que sua mente estava escravizada por mecanismos que a obrigavam a não pensar, e quanto mais linguagens ele aprendia, mais e mais mecanismos apareciam para oprimir e degradar seu pensamento.

Então agora finalmente ele havia descoberto que o que lhe faltava não era uma tecnologia, mas sim era libertar a sua mente. Ele tornou-se um monge. E ele se libertou dos mecanismos de opressão, e todas as linguagens que ele conhecia passaram a se completar e fazer sentido. Ele não mais programava, mas falava Perl, então ele foi capaz de expressar completamente seus pensamentos em qualquer linguagem, e assim ele foi finalmente feliz.

Comments

  • Luciana

    Apaixonado como nunca vi, aberto e confesso…

    “tudo está conectado”

  • Luciana

    Apaixonado como nunca vi, aberto e confesso…

    “tudo está conectado”

  • thiago

    pois eh.. isso ate parece historia da china antiga.. so faltou chutes e ponta pes.. rs
    ate fiquei interessado.

  • thiago

    pois eh.. isso ate parece historia da china antiga.. so faltou chutes e ponta pes.. rs
    ate fiquei interessado.

  • http://blog.sourcecraft.info Thiago Silva

    Perl? Mesmo?

  • http://blog.sourcecraft.info Thiago Silva

    Perl? Mesmo?

  • http://claudionevaes.wordpress.com/2009/02/17/o-monge-e-o-macaco/ O monge e o macaco « Claudio Novaes

    [...] Fonte : Blog do Blabos de Blebe [...]

  • Leonardo

    corrija o erro de ortografia: ” … todas as lingugems que ele …”

    Texto bacana =)

  • Leonardo

    corrija o erro de ortografia: ” … todas as lingugems que ele …”

    Texto bacana =)

  • http://hcalves.tumblr.com Henrique

    Putz… Perl nem linguagem é.

  • http://hcalves.tumblr.com Henrique

    Putz… Perl nem linguagem é.

  • http://www.aondeandei.com.br Leonardo Saraiva

    Nossa, perl? hahaha

  • http://www.aondeandei.com.br Leonardo Saraiva

    Nossa, perl? hahaha

  • http://duard.com.br/blog duard

    Paia !

  • http://duard.com.br/blog duard

    Paia !

  • http://osvaldofilho.wordpress.com/2009/02/17/programacao-e-suas-linguagens/ Programação e suas Linguagens « TI – Technology Innovation

    [...] aqui o link para o texto na [...]

  • Álvaro Guimarães

    Perl? Só não entendi essa parte!

  • Álvaro Guimarães

    Perl? Só não entendi essa parte!

  • Daniel Hoisel

    Se ainda fosse Ruby…

  • Daniel Hoisel

    Se ainda fosse Ruby…

  • http://tecnocracia.eti.br Júlio Cesar

    Bom, aguardo o sorteio e espero poder ganhar uma das assinaturas!

  • http://tecnocracia.eti.br Júlio Cesar

    Bom, aguardo o sorteio e espero poder ganhar uma das assinaturas!

  • vits

    estória bacana…
    quase uma fábula,
    passa um corretor ortográfico que ficará “da hora”.

  • vits

    estória bacana…
    quase uma fábula,
    passa um corretor ortográfico que ficará “da hora”.

  • luiz

    Se ainda fosse ASP…

  • luiz

    Se ainda fosse ASP…

  • Pablo

    Texto bem escrito, que nos lembra de longe um texto bíblico (a parte de “e ele viu que era bom” ficou realmente engraçada).

    Adorei a parte onde as linguagens parecem-se com “óculos” através dos quais traduzimos nossos pensamentos. Perl, como todas as outras, é mais uma perspectiva.

    Só o desfecho que não ficou muito bom, pois o comportamento de escolher uma linguagem como “iluminada” em detrimento de todas as outras não é diferente do comportamento de um fanático religioso que vê em sua própria religião “A” verdade.
    No final das contas, esse comportamento acaba sendo um encarceramento auto-imposto e não uma libertação ;-)

  • Pablo

    Texto bem escrito, que nos lembra de longe um texto bíblico (a parte de “e ele viu que era bom” ficou realmente engraçada).

    Adorei a parte onde as linguagens parecem-se com “óculos” através dos quais traduzimos nossos pensamentos. Perl, como todas as outras, é mais uma perspectiva.

    Só o desfecho que não ficou muito bom, pois o comportamento de escolher uma linguagem como “iluminada” em detrimento de todas as outras não é diferente do comportamento de um fanático religioso que vê em sua própria religião “A” verdade.
    No final das contas, esse comportamento acaba sendo um encarceramento auto-imposto e não uma libertação ;-)

  • Araujo

    Texto tosco, tente fazer algo mais produtivo.

  • Araujo

    Texto tosco, tente fazer algo mais produtivo.

  • http://blabos.org blabos

    Parabéns FZero. Você foi o primeio e único esperto a ser moderado, por não conseguir escrever um comentário civilizado.

    Antes de você a moderação era meramente um ajuste fino anti-spam. Você acabou de inaugurá-l como dispositivo de bloqueio. :)

  • http://blabos.org blabos

    Parabéns FZero. Você foi o primeio e único esperto a ser moderado, por não conseguir escrever um comentário civilizado.

    Antes de você a moderação era meramente um ajuste fino anti-spam. Você acabou de inaugurá-l como dispositivo de bloqueio. :)

  • Eder

    Para os que não entenderam porque “Perl”.
    Se você for pesquisar sobre o assunto, vai usar o que? Google? Ah tah.. Agora usa o Google e pesquisa “em que ele é concebido”!…

  • Eder

    Para os que não entenderam porque “Perl”.
    Se você for pesquisar sobre o assunto, vai usar o que? Google? Ah tah.. Agora usa o Google e pesquisa “em que ele é concebido”!…

  • sombriks

    eu pogamu em peu…. eu pogamu em peu…

    hahahahah…

  • sombriks

    eu pogamu em peu…. eu pogamu em peu…

    hahahahah…

  • http://blabos.org blabos

    @Araujo:

    Comentário tosco. Tente ler algo mais produtivo…

  • http://blabos.org blabos

    @Araujo:

    Comentário tosco. Tente ler algo mais produtivo…

  • http://blabos.org blabos

    Ele não escolheu uma linguagem como “iluminada”. Depois que ele venceu os próprios preconceitos, ele foi capaz de ver outras qualidades nas outras linguagens e tornou-se um programador melhor em cada um delas.

  • http://blabos.org blabos

    Ele não escolheu uma linguagem como “iluminada”. Depois que ele venceu os próprios preconceitos, ele foi capaz de ver outras qualidades nas outras linguagens e tornou-se um programador melhor em cada um delas.

  • http://blabos.org blabos

    @Henrique:

    Tem razão. Perl é uma filosofia de vida :)

  • http://blabos.org blabos

    @Henrique:

    Tem razão. Perl é uma filosofia de vida :)

  • http://blabos.org blabos

    Obrigado Leonardo! Fico te devendo uma cerveja no próximo ES.

  • http://blabos.org blabos

    Obrigado Leonardo! Fico te devendo uma cerveja no próximo ES.

  • http://s-ware.nosso.org/postroll/2009/02/o-monge-e-o-macaco/ O monge e o macaco @ Blabos de Blebe | postroll

    [...] O monge e o macaco @ Blog do Blabos de Blebe [...]

  • http://blog.gustavohenrique.net Gustavo Henrique

    Muito legal o texto. acredito que se houvesse uma continuação, seria +/- assim:
    “…assim ele foi finalmente feliz…”
    …até o dia em que ele percebeu que tal felicidade era apenas um estado momentâneo de espírito. Que a verdadeira felicidade encontra-se nas coisas mais simples da vida. Eis então que ele ouviu falar sobre python. Descobriu que poderia produzir maravilhas de forma mais ágil e sem xingamentos.
    Agora sua vida havia mudado. Conceitos foram quebrados. Ele aprendeu que apesar de tudo que já havia visto, agilidade, organização, poder e simplicidade, realmente poderiam caminhar juntas. Então, nesse momento, ele descobriu a verdadeira felicidade.

  • http://blog.gustavohenrique.net Gustavo Henrique

    Muito legal o texto. acredito que se houvesse uma continuação, seria +/- assim:
    “…assim ele foi finalmente feliz…”
    …até o dia em que ele percebeu que tal felicidade era apenas um estado momentâneo de espírito. Que a verdadeira felicidade encontra-se nas coisas mais simples da vida. Eis então que ele ouviu falar sobre python. Descobriu que poderia produzir maravilhas de forma mais ágil e sem xingamentos.
    Agora sua vida havia mudado. Conceitos foram quebrados. Ele aprendeu que apesar de tudo que já havia visto, agilidade, organização, poder e simplicidade, realmente poderiam caminhar juntas. Então, nesse momento, ele descobriu a verdadeira felicidade.

  • http://perl-e.org SmokeMachine

    Ótimo texto! Conseguiu traduzir bem a agonia anterior ao estalo, a agonia da mente aprisionada.
    Perl é uma das maiores linguagens libertadoras de mente que eu já conhecí… Claro, qualquer linguagem (qq coisa) pode libertar sua mente. Mas existem linguagens mais propicias a isso.
    Agora, lendo essa estória, parece que eu já ví isso acontecer… e mais de uma vez!

  • http://perl-e.org SmokeMachine

    Ótimo texto! Conseguiu traduzir bem a agonia anterior ao estalo, a agonia da mente aprisionada.
    Perl é uma das maiores linguagens libertadoras de mente que eu já conhecí… Claro, qualquer linguagem (qq coisa) pode libertar sua mente. Mas existem linguagens mais propicias a isso.
    Agora, lendo essa estória, parece que eu já ví isso acontecer… e mais de uma vez!

  • http://blabos.org blabos

    Bom, Em primeiro lugar agradeço pelas opiniões distintas.

    Como escritor, você sabe que está tocando (ui!) o leitor, quando recebe feed-back com opiniões contrárias às suas. Isso significa que alguém que pensa diferente, parou pra ler o que você escreveu. Opiniões divergentes das minhas são muito bem vindas.

    Por outro lado, agressões, xingamentos e outros tipos de gracinha serão (como foram) ignorados. Quem quiser fazer isso fique à vontade para xingar a Sra, sua imagem no espelho ;)

    Eu não sei como anda o ensino médio ultimamente, mas na minha época ensinava-se Português desde a alfabetização até à faculdade. Infelizmente parece que o pessoal que andou sendo moderado matou essas aulas.

    Mas vamos lá, me dá a sua mãozinha que o Tio Blabos explica:

    Traduzindo (conforme comentários moderados), o texto é um conto, no qual é narrada uma história sobre uma busca, que finda quando o personagem principal descobre que a resposta não era uma linguagem de programação, mas um nova forma e olhar o mundo.

    Tem gente revoltadinha me atacando porque eu estou falando bem de algumas linguagens. Ok, tudo bem, eu devia ter avisado que o blog é para quem tem um mínimo de cultura.

  • http://blabos.org blabos

    Bom, Em primeiro lugar agradeço pelas opiniões distintas.

    Como escritor, você sabe que está tocando (ui!) o leitor, quando recebe feed-back com opiniões contrárias às suas. Isso significa que alguém que pensa diferente, parou pra ler o que você escreveu. Opiniões divergentes das minhas são muito bem vindas.

    Por outro lado, agressões, xingamentos e outros tipos de gracinha serão (como foram) ignorados. Quem quiser fazer isso fique à vontade para xingar a Sra, sua imagem no espelho ;)

    Eu não sei como anda o ensino médio ultimamente, mas na minha época ensinava-se Português desde a alfabetização até à faculdade. Infelizmente parece que o pessoal que andou sendo moderado matou essas aulas.

    Mas vamos lá, me dá a sua mãozinha que o Tio Blabos explica:

    Traduzindo (conforme comentários moderados), o texto é um conto, no qual é narrada uma história sobre uma busca, que finda quando o personagem principal descobre que a resposta não era uma linguagem de programação, mas um nova forma e olhar o mundo.

    Tem gente revoltadinha me atacando porque eu estou falando bem de algumas linguagens. Ok, tudo bem, eu devia ter avisado que o blog é para quem tem um mínimo de cultura.

  • http://blog.perl-e.org/2009/02/o-monge-e-o-macaco-escrito-em-perl/ O monge e o macaco, escrito em Perl | perl-e: Perl pra quem tem pressa

    [...] é uma linguagem tão flexível, que com ela podemos escrever até um conto: #!/usr/bin/perl -l *Im = *Monkey; Belive_me… Yes, $Im = "Monkey"; my @prog_lang = [...]

  • http://marcioandreyoliveira.blogspot.com/ Marcio Andrey Oliveira

    Gostei do conto, mas o final proposto pelo Gustavo Henrique é muito melhor ;) .

    Para ser excelente mesmo, só se ele terminasse o conto usando o C.

  • http://marcioandreyoliveira.blogspot.com/ Marcio Andrey Oliveira

    Gostei do conto, mas o final proposto pelo Gustavo Henrique é muito melhor ;) .

    Para ser excelente mesmo, só se ele terminasse o conto usando o C.

  • http://www.i-diggers.net/ ijuy

    “… aprendeu Perl com Pai Mei, mas até hoje ninguém entende seus scripts. Em dois meses, ele também não. Em seis, nem o próprio Pai Mei…”

    xD

  • http://www.i-diggers.net/ ijuy

    “… aprendeu Perl com Pai Mei, mas até hoje ninguém entende seus scripts. Em dois meses, ele também não. Em seis, nem o próprio Pai Mei…”

    xD

  • http://blabos.org blabos

    @ Marcos & Gustavo Henrique:

    Fiquem à vontade, os textos do blog estão sob esta variante da CC: http://creativecommons.org/licenses/by-nc-sa/2.5/legalcode

    Portanto, divirtam-se e me enviem os links das suas variantes.

    Já os direitos sobre quaisquer outros recursos no site pertencem aos seus respectivos donos.

    Abraços

  • http://blabos.org blabos

    @ Marcos & Gustavo Henrique:

    Fiquem à vontade, os textos do blog estão sob esta variante da CC: http://creativecommons.org/licenses/by-nc-sa/2.5/legalcode

    Portanto, divirtam-se e me enviem os links das suas variantes.

    Já os direitos sobre quaisquer outros recursos no site pertencem aos seus respectivos donos.

    Abraços

  • kleiton

    Perl…e se fosse FLEX!!!
    hehehheheh
    =)

  • kleiton

    Perl…e se fosse FLEX!!!
    hehehheheh
    =)

  • http://www.uol.com.br Rafael Mezenga

    I´m prouid

  • http://www.uol.com.br Rafael Mezenga

    I´m prouid

  • http://www.uol.com.br Rafael Mezenga

    I´m proud to be a perl monger! I´m proud to use perl to pay my bills.

  • http://www.uol.com.br Rafael Mezenga

    I´m proud to be a perl monger! I´m proud to use perl to pay my bills.

  • http://blog.perl-e.org/2009/02/o-monge-e-o-macaco-em-perl6/ O Monge e o Macaco – em perl6 | perl-e: Perl pra quem tem pressa

    [...] (baseado no post “O monge e o macaco, escrito em Perl” que é baseado no conto “O monge e o macaco“) [...]

  • http://blog.fshark.com Fabiano Shark

    Sou programador web então só falo PHP MySQL XHTML CSS e JavaScript mas mesmo assim gostei do conto, PHP usa muito Perl ;)

  • http://blog.fshark.com Fabiano Shark

    Sou programador web então só falo PHP MySQL XHTML CSS e JavaScript mas mesmo assim gostei do conto, PHP usa muito Perl ;)

  • http://blabos.org blabos

    Na verdade o PHP é uma espécie de descendente do Perl. O cara que criou o PHP estava com umas dificuldades com o pré-histórico Perl 4. Aí resolveu o que tinha que resolver direto no apache, nasceu então o PHP.

    PHP é facílimo de aprender. Foi minha primeira e por muito tempo única linguagem web. Eu resisti muito a aprender Perl, mas depois que eu vi certas facilidade, passei a dar mais atenção à linguagem até que finalmente comecei a entender as coisas.

    Acho que o ponto crucial foi quando eu precisei de um spider e não tava saindo em PHP, aí me mostraram isso http://search.cpan.org/~petdance/WWW-Mechanize-1.54/lib/WWW/Mechanize.pm.

    Dá uma olhada no site do CPAN, de repente vocÊ fica interessado, de repente, não…

  • http://blabos.org blabos

    Na verdade o PHP é uma espécie de descendente do Perl. O cara que criou o PHP estava com umas dificuldades com o pré-histórico Perl 4. Aí resolveu o que tinha que resolver direto no apache, nasceu então o PHP.

    PHP é facílimo de aprender. Foi minha primeira e por muito tempo única linguagem web. Eu resisti muito a aprender Perl, mas depois que eu vi certas facilidade, passei a dar mais atenção à linguagem até que finalmente comecei a entender as coisas.

    Acho que o ponto crucial foi quando eu precisei de um spider e não tava saindo em PHP, aí me mostraram isso http://search.cpan.org/~petdance/WWW-Mechanize-1.54/lib/WWW/Mechanize.pm.

    Dá uma olhada no site do CPAN, de repente vocÊ fica interessado, de repente, não…

  • http://www.infoopen.com.br Luma

    Caramba muleque mandou bem no texto, inclusive eu já tinha ouvido essa história, hehehehe.

  • http://www.infoopen.com.br Luma

    Caramba muleque mandou bem no texto, inclusive eu já tinha ouvido essa história, hehehehe.

  • http://livewalk.org/blog Mauricio

    Bom demais..
    E cômico; a parte do ‘era melhor deixar pra lá mesmo’ foi ótima!
    kkkkkkk

    Abração!

  • http://livewalk.org/blog Mauricio

    Bom demais..
    E cômico; a parte do ‘era melhor deixar pra lá mesmo’ foi ótima!
    kkkkkkk

    Abração!

  • http://livewalk.org/blog/?p=132 Life On The Fly » O monge e o macaco

    [...] Um dos melhores posts que já vi sobre programação. Criativo e bem-humorado. Atente para o comentário final sobre algumas lingüagens proprietárias.. ;-) Fonte: Blog do Blablos de Blebe [...]

  • thunder

    Muito bom ! Pena que o monge não começou com BASIC, ainda bem que ele chegou ao Perl.
    Resolução de 2009 : aprender Perl…

  • thunder

    Muito bom ! Pena que o monge não começou com BASIC, ainda bem que ele chegou ao Perl.
    Resolução de 2009 : aprender Perl…

  • http://claionovaes.wordpress.com/2009/02/17/o-monge-e-o-macaco/ O monge e o macaco « Claudio Novaes

    [...] seus pensamentos em qualquer linguagem, e assim ele foi finalmente feliz. [ Referência : Blog do Blabos de Blebe [...]

    [WORDPRESS HASHCASH] The comment’s server IP (74.200.247.246) doesn’t match the comment’s URL host IP (74.200.243.251) and so is spam.

  • Alan

    Seria uma fábula se as respectivas linguagens “falassem”! ;)

  • http://kad-kun.com wKad

    Belo conto :D Apesar de não conhecer realmente Pearl, qualquer um que não seja xiita apreciaria a arte acima.

    Vou seguir o blog o/

  • ♣♦ Cheshire Hime ♥♠

    Realmente gostei do texto, exceto a parte do Perl… Já que realmente não entendi esta parte…

    Já programei em C, C++, Php (com Javascript, Ajax e etc) e nunca em Perl… Mas, pelo que eu estudei (em Teoria e Linguagens de Programação na faculdade de Ciência da Computação), ela nem mesmo enquadra-se no paradigma lógico ou funcional…

    Acho que eu terminaria no assembly, onde você é capaz de fazer qualquer coisa e com o mínimo de processamento… Além disso, Perl tem gerenciamento de memória automático e tipagem dinâmica… argh… não parece ser realmente possível existir uma linguagem eficiente desta forma.

    Na linha de Perl, eu conheço Oz ( http://www.mozart-oz.org ) que eu estudei apenas para fazer um trabalho e me pareceu legal também, com muitos conceitos, até então, desconhecidos pra mim. É uma linguagem bastante singular, recomendo a leitura da questão.

    Mas, não é que eu queira discutir sobre o quão boa a linguagem é (já que eu não conheço praticamente nada dela).. é só que eu acho que eu não te entendi por que o texto deixou bem vaga a parte do porquê ele havia usado Perl para libertar sua mente…

    Existe uma resposta específica do porquê do Perl?

  • http://blabos.org Blabos de Blebe

    Você está viajando na maionese…

    Perl é uma multi-paradigma (o que não quer dizer todos os paradigmas) de propósito geral, que você certamente usa (embora não programe) sem saber.

    O que você diz sobre eficiência simplesmente não procede, ainda mais depois de vc ter estudado teoria de linguagens de programação. Estranho isso! Matou essa aula né ;)

    Quanto a libertar sua mente, te convido despir-se de seus preconceitos e vir nos conhecer melhor.

    Perl é como coração de mãe!

    http://sao-paulo.pm.org

  • http://blabos.org Blabos de Blebe

    Agradeço pelo elogio!Perl é bem flexível e vai desde aplicações de brinquedo até coisas bem mais sérias. Venha conhecer!O blog está meio parado mas não está morto! Eu também ando aparecendo por aqui:http://sao-paulo.pm.org/equinocio/2010/set/7http://sao-paulo.pm.org/equinocio/2010/set/15

  • ♣♦ Cheshire Hime ♥♠

    Hmm… XD
    Estudando TPLP (Teoria e Linguagem de Programação) e tendo a maior nota da sala, sem faltar nenhuma aula ;) eu aprendi como qualquer linguagem que gerencia a memória automaticamente e tem tipagem dinâmica precisa funcionar. Usando tabelas hash, verificando se as variáveis serão usadas ainda e etc… Nada nada eficiente.

    Mas, despir-me dos meus pré-conceitos foi exatamente o meu propósito ao fazer a pergunta… “por que perl liberta mentes?”… Eu agradeceria se você fosse capaz de me esclarecê-la

  • http://blabos.org Blabos de Blebe

    Parabéns pela nota, mas isso é completamente irrelevante. Sem querer ser metido e com todo o respeito, eu tiro as maiores notas da sala desde a pré-escola e isso não faz de mim um profissional competente. Só diz que eu fui capaz de responder o que os professores queriam ouvir!

    Houve uma época em que eu também achava que minha nota me dava autoridade sobre determinado assunto. Besteira, o mundo é muito maior que isso.

    Você está falando de eficiência, mas está medindo e comparando com o quê? Qual o critério? Qual a métrica? Qual a metodologia?

    Ao perguntar “por que Perl liberta mentes” assim tão ansiosamente (cuidado com as figuras de linguagem), parece-me que você não visitou o link que eu deixei mas vou deixar outros tão interessantes quanto:

    http://rio.pm.org/mitos.pl
    http://graphcomp.com/pogl.cgi?v=0111s3m3&r=s1m1

    Embora eu sempre fique com o pé atrás com benchmarks. Você sabe das aulas de estatística que basta torturar os números o suficiente que eles te dirão o que você quiser.

    Olha, eu não estou tentando fazer você amar Perl, mas o que você diz simplesmente não procede e é muito preconceituoso, principalmente porque você (diz que) não experimentou e ainda não apresenta provas ou demonstrações formais do que diz.

    P.S.: Gostei do seu site

  • http://twitter.com/edenc Eden Cardim

    Que bom ver uma pessoa dedicada ao estudo, é uma coisa rara de se ver. Realmente, linguagens com tipagem dinâmica são menos eficientes do que linguagens com tipagem estática. Mas não é sempre que gerenciar de memória automaticamente é ineficiente, lembra da aula sobre imutabilidade? Continue com a sua dedicação quando você estudar engenharia de software e arquitetura de computadores, lá vão te ensinar que nem todas as partes de um sistema computacional precisam ser eficientes, senão estaríamos todos programando com ferros de solda bem caros.
    Em termos de “libertar mentes”, a questão é que perl fornece recursos para lidar com três paradigmas diferentes de programação, além de te dar acesso a uma implementação de máquina de estados através do interpretador de regexes, por isso, em geral, a comunidade é bastante diversificada na forma de pensar a respeito de programação, enquanto que as escolas mais tradicionais tendem a focar mais no paradigma imperativo.

  • http://kad-kun.com wKad

    Ahm, senhor Blebe (não encontrei seu nome ou apelido), desculpe a interrupção, mas se me recordo bem, foi o senhor que puxou o assunto “sala de aula”. Se tirar boas notas não implica ser um profissional competente, que relação faltar às aulas teria a ver com a questão?

    Admito que achei essa colocação bastante grosseira de sua parte, especialmente por ser em relação à uma pessoa que você conhece por apenas cinco parágrafos, e estava apenas perguntando o motivo da sua escolha pelo Perl.

  • http://blabos.org Blabos de Blebe

    Não foi a intenção ser grosseiro. Até porque continuo respondendo.

    Você está sendo impreciso. Foi ela que tocou no assunto de estudar primeiro (!?), e não, uma coisa não tem nada a ver com a outra foi só uma provocaçãozinha. Não sejam tão sensíveis :)

    Você está certo. Cinco parágrafos é pouco para se conhecer uma pessoa, assim como um “ouvi falar” é pouco para conhecer uma tecnologia, principalmente quando você sai afirmando certas coisas por “achar”, já que afirma que não conhece.

    Como a minha provocação não foi tão eficaz, vou ser mais direto. Entrem nas listas de email de São Paulo e/ou Rio e venham ver com seus próprios olhos para entender do que eu estou falando. É grátis.

  • http://kad-kun.com wKad

    Continuar respondendo é uma coisa boa. A quantidade de blogueiros que filtram comentários para evitar certas conversas é assustadora…

    Hmm, a respeito de ser sensível, eu queria deixar claro que o meu comentário refletiu a minha opinião, e não a nossa. Ela ainda não viu as suas respostas anteriores, e virá continuar a conversa assim que ver, talvez hoje, provavelmente na semana que vem.

    Eu imagino que você não quis ofender com o que disse (afinal, se quisesse, haveria modos bem mais eficazes – quem realmente mata aula não se envergonha por isso), então estava apenas escrevendo que achei o comentário desnecessário.

    E voltando ao tópico principal, o Perl, eu agradeço o link (o “Rio”, a propósito, veio vazio), está anotado nos meus favoritos para quando eu quiser me aprofundar um pouco em programação. Eu, particularmente, achei uma resposta curiosa para uma pergunta do gênero “Por que você prefere Perl?”. Mas você escreve suas opiniões lá, é isso?

    Ah, e sim, o blog está um pouco parado, mas ainda aguardo novos posts.

    Abraços e bom final de semana.

  • http://blabos.org Blabos de Blebe

    Link corrigido. Obrigado!

    Eu não vou responder aqui. A resposta está lá, só que você ao invés de conferir do que eu estou falando, guardou o link no favoritos porque acha que sabe do que estou falando. Um preconceito.

    Denovo, este post não é sobre programação, ele é sobre cultura. A maioria que leu o post não entendeu isso até hoje.

    Que pena!

    P.S.: Quanto a moderar, este post é justamente o que detém o único caso de moderação no blog. Eu só modero o que considero ofensa, e isso é muito pessoal.

  • ♣♦ Cheshire Hime ♥♠

    quando falei das minhas notas, eu não estava discutindo sobre ser ou não competente… Por que isto seria, completamente, patético.
    Apenas estava respondendo ao seu “matou essa aula,ne?” já que nunca matei aula e me orgulho disso ^_^x

    Nunca disse que sabia mais ou menos que outra pessoa… Por isso mesmo, vim aqui tentando aprender e perguntei por que não entendia o texto.

    E eu realmente esperava uma resposta rápida e, por isso, perguntei ao invés de ir procurar; já que você parecia saber o porquê do Perl. Eu iniciei a leitura de um dos links que você passou e percebi que, na verdade, ele apenas diz por que Perl não é ruim, ao invés de dar motivos pra ele ser bom. Ele não parece útil pra mim, já que eu realmente nunca achei que Perl fosse ruim (como venho comentando aqui desde o começo, não conheço nada de Perl). Apenas tenho interesse em saber quais motivos o tornam bom (e não por que ele não é ruim).

    Porém, ao ler o texto, cheguei a uma parte “Módulos utilizando XS, SWIG e Inline ajudam a gerar código C (ou mesmo Assembly) em partes do programa em que velocidade é realmente crítica, acessíveis (e de fato utilizadas!) de dentro de seu programa Perl. ” e, logo após, “sem diferenças estatísticas na perfomance geral em relação à mesma implementação em C, e até mesmo superando C em determinadas operações!”.
    Agora, eu me pergunto, como é possível que utilizando C, Perl seja superior ao próprio C? Eu realmente não saberia responder a esta pergunta, já que eu não conheço as propriedades dos compiladores da linguagem e/ou como ele trabalha. Mas, eu realmente gostaria de obter esta resposta, afinal, você tem que concordar comigo que é uma questão, aparentemente, impossível. (digo “aparentemente”, pois, é o que aparenta a mim e não, necessariamente, a realidade).

    Mesmo que isto seja possível, ser mais eficiente que assembly é, completamente, impossível, já que geradores de código nunca serão, nem sequer, iguais a programadores. E mesmo que o fossem, o limite da eficiência é o assembly, sem qualquer dúvida. Afinal, como todo código é convertido a ele, o máximo que um código pode ser é tão eficiente quanto.

    E eu gostaria de pedir que me citasse onde fui preconceituosa para que eu me desculpasse com os atingidos, já que eu não encontrei nada preconceituoso em meu texto e eu, realmente, detesto preconceitos.

    Aguardo resposta.

  • ♣♦ Cheshire Hime ♥♠

    Eu lembro bem das aulas de Engenharia de Software e entendo que a maioria das pessoas realmente dispensa a eficiência na maioria dos sistemas e concordo plenamente que Perl não precisa ser o mais eficiente para libertar mentes; mas, eu gostaria de saber por que ele liberta.

    Citei eficiência por que, na minha humilde opinião, o que liberta a mente é tornar o sistema tão eficiente quanto possível usando todas habilidades que tenho para economizar as habilidades do computador. Já que a programação só será feita uma vez e o programa irá rodar, toda a vida, com aquele mesmo código. Se é possível ser eficiente, por que não o ser?

    Sobre Perl, os 3 paradigmas é realmente interessante. Por isto, citei Oz (com a implementação pelo Mozart) ( http://www.mozart-oz.org/ ) que utiliza os paradigmas e conceitos: lógico, funcional, imperativo, orientado a objetos, de restrições (que é realmente, muito interessante), distribuído e concorrente.

    Então, mesmo se formos analisar o quesito multi-paradigma, eu acredito que teríamos que nos perguntar “Perl ou Oz”, pelo menos. Isto sem falar das outras linguagens multiparadigma. Então, olhando apenas para este quesito, minha pergunta se torna “Por que Perl e não Oz?”.

  • http://blabos.org Blabos de Blebe

    Denovo, o post é sobre cultura, não técnica (embora a técnica sej suficiente) e cultura vc tem que ver e sentir vc mesma.

    Entretanto, segue mais uma provocação:

    Como pode um código em Perl ser mais rápido que um código em C?

    Considere:

    http://gist.github.com/590957

    Como pode um loop ser mais rápido que outro?

    A resposta é óbvia, claro. Não necessariamente algo escrito na linguagem X tem que ser mais rápido que algo escrito na linguagem Y.

    Denovo, eu estou falando sobre cultura. Não importa o que eu diga, vc não vai entender se não experimentar.

  • http://twitter.com/edenc Eden Cardim

    Depende, talvez um algoritmo individual sim, mas um *sistema* não irá rodar “toda vida”. O ciclo de vida de um sistema de software envolve atualização, manutenção, homologação e implantação. Na maior parte dos projetos com relevância econômica/científica o ciclo se repete em intervalos bem pequenos e se o software for otimizado excessivamente, perde-se o poder de fazer modificações com agilidade (você leu o artigo que eu citei anteriormente?). “Libertar mente” nesse contexto significa facilitar o processo de atualização invés de ter que lembrar como funcionam as otimizações low-level para todos os casos onde houver atualização. Parafraseando Knuth: “We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil”. O que se faz com perl geralmente envolve programação a nível de sistema, não de algoritmo então as ineficiências são toleradas em favor da flexibilidade. Quando se precisa desse tipo de eficiência minuciosa da qual você fala, pode-se usar a interface com C que se chama XS. Tipicamente, isso se faz nos gargalos do sistema depois que você já sabe onde estão. C oferece esse mesmo tipo de acesso low-level, mas em termos de linguagem de máquina.
    Além disso, a grande vantagem de perl em relação às outras linguagens é o CPAN, que é o maior (em termos de número de bibliotecas) e, na minha opinião, o mais bem-gerenciado repositório de bibliotecas open-source em existência na atualidade. Então desenvolver sistemas com perl na maior parte dos casos se trata meramente de integrar soluções que já estão prontas de forma a aplicá-las ao domínio de atuação do sistema em questão. A linguagem de certa forma evoluiu em torno desse repositório e oferece muitos recursos de integração. Assim, você não precisa se preocupar em reimplementar problemas que já tem soluções conhecidas e a sua mente fica livre para pensar sobre o problema novo que o sistema irá resolver.
    A respeito de “Por que Perl e não Oz?”, gosto bastante desse tipo de pergunta, mas infelizmente não tenho informação suficiente para responder, pois não tenho informação suficiente sobre Oz. Mas, desde já eu acho que se tiver uma gama boa de bibliotecas disponíveis, portáveis, homologadas, e uma comunidade ativa para dar suporte às mesmas, além do que você citou anteriormente, não vejo porque não qualificá-la como uma boa linguagem também.

  • http://twitter.com/edenc Eden Cardim

    É possível sim que um programa em C seja mais eficiente que outro programa também escrito em C, basta você utilizar algoritmos menos eficientes. Decorre disso que, pressupondo que todos estejam nivelados em termos de conhecimento, quando você tem uma implementação em que várias pessoas estão trabalhando a vários anos, como é o caso de Perl e qualquer biblioteca implementada numa linguagem qualquer, é pouco provável que você consiga implementar algo significativamente mais eficiente por conta própria num espaço de tempo aceitável, mesmo que seja na mesma linguagem. Em várias linguagens, as rotinas built-in são implementadas e otimizadas em low-level com C, assembly ou qualquer outra coisa. Por exemplo, quando você invoca uma função como sort() em perl, isso vai invocar um merge sort escrito em C, que para boa parte dos casos, é o algoritmo mais eficiente que existe. Se você re-escrever e invocar esse mesmo algoritmo em C, a diferença de eficiência vai ser mínima e não justifica o re-trabalho. Isso sem contar as ocasiões onde você *não* conhece o algoritmo mais eficiente e além de ter que re-escrever, vai ter que pesquisar antes.
    Outro ponto onde eu discordo de você é que um humano é sempre mas eficiente que uma máquina. Um caso onde isso é notável é nos compiladores, dado um programa grande o suficiente, a alta complexidade envolvida no mapeamento desse programa para linguagem de máquina inviabiliza a atuação eficiente de um ser humano. Seres humanos se estressam, se confundem, erram, sentem sono e morrem, e é justamente por isso que existem compiladores, porque colocar uma equipe de seres humanos para compilar manualmente algo como o kernel do linux é uma tarefa que provavelmente nunca terminaria e se terminasse a quantidade de erros humanos no processo provavelmente fariam com que o software resultante fosse mais lento do que um software compilado por uma máquina.

  • ♣♦ Cheshire Hime ♥♠

    Quando eu falei da impossibilidade de C ser mais eficiente que o próprio C, referi-me à linguagem (nosso atual objeto de discussão) e não aos programas (já que eu posso fazer o programa mais ineficiente do mundo em qualquer linguagem; mas, não posso fazer o mais eficiente em qualquer uma).

    Pressupondo que Perl tenha o código mais possivel eficiente em C, ele ainda é generalizado (já que toda linguagem precisa generalizar para ter um número aceitável de funções), por exemplo, se eu tenho uma função que troca o primeiro parâmetro pelo segundo numa cadeia de caracteres e, apenas, preciso trocar todos os “(” por “[“, eu consigo ser mais eficiente se usar diretamente a linguagem C; já que eu evitaria chamadas em cadeia de função (uma função chamando outra e outra e outra), execução de código interpretado (que, por definição, influencia na eficiência).

    Quando você fala “Por exemplo, quando você invoca uma função como sort() em perl, isso vai invocar um merge sort escrito em C, que para boa parte dos casos, é o algoritmo mais eficiente que existe.”. Mesmo que seja o algoritmo mais eficiente para “boa parte dos casos”, programar em C me dá possibilidade de usá-lo, mas também, de usar outros métodos caso eles sejam mais eficientes em determiando caso.

    Não conhecer o algoritmo mais eficiente na hora apenas nos eleva e nos “abre os olhos” para que tentemos criá-lo sozinhos, não? Eu considero isto o maior avanço possível do programador (embora, isto estenda o prazo para criação do programa).

    Sobre o ser humano ser sempre mais eficiente que a máquina, eu também não concordo… Já que “sempre” é um absurdo, considerando que existem seres humanos que não aproveitam suas capacidades mentais da melhor forma ou mesmo que não têm tempo para programar a melhor solução sempre. Mas, o ser humano tem capacidade de ser melhor que a máquina, já que a máquina não pode tomar decisões sozinha e não pode negar o que lhe foi dito conforme sua vontade (já que ela não tem vontade).

    Criar grandes sistemas em linguagem baixa é realmente uma tarefa árdua, senão impossível. Mas, se o objetivo é “libertar mentes”, nós não deveríamos caminhar para isto? Para a compreensão completa do código, exibindo a perfeição máxima do programa valorizando a grande capacidade intelectual da nossa espécie?

    Acreditar que é difícil apenas nos coloca num mundo assim… onde programas e websites são escritos usando ferramentas de terceiros, geradores de código e onde os computadores precisam ter 1GB de memória RAM e/ou 2 núcleos de processamento para rodar qualquer coisa de forma decente… Coisa que, o melhor computador da época onde o fortran ou o assembly eram utilizados não sonharia em ter.

  • ♣♦ Cheshire Hime ♥♠

    Realmente, se cultura eu mesma tenho que sentir, qual o sentido em ler o texto se eu não irei entender de qualquer forma?

    Sobre o código em Perl ser mais rápido que em C, claro que pode ocorrer, o pior programa pode ser escrito em qualquer linguagem (basta ficar criando loops ou ifs inúteis indefinidamente). Mas, o programa mais eficiente do mundo fica mais eficiente a cada degrau descido na escala de linguagens.

  • ♣♦ Cheshire Hime ♥♠

    Acredito ter entendido sua visão do texto. Mas, neste sentido, “Libertar mentes” é torná-las livres da dificuldade de implementação?

    Mas, elas não tornam-se escravas da sua limitação, já que não são capazes de compreender o que está sendo feito por baixo dos panos?

    Não são escravas da linguagem que acaba por fazer a maior parte do trabalho por elas? Se elas precisarem fazer algo que a linguagem não cubra (algo inusitado, novo e diferente), elas saberão como fazê-lo?

    Quando ele fala no texto “Ele percebeu que sua mente estava escravizada por mecanismos que a obrigavam a não pensar”; os “mecanismos que a obrigavam a não pensar” não seriam justamente as bibliotecas e funções “já prontas”?

    Eu entendo que em Perl possa haver mais liberdade que em Java, por exemplo, que eu considero bastante restrito. Mas, a liberdade por si própria no sentido de “dar a possibilidade de criar”, na minha opinião, é tanto maior quanto mais baixo o nível da linguagem; já que, se todas as outras foram escritas na linguagem de máquina, o que se pode fazer com as outras, se pode fazer com a linguagem de máquina.

  • http://blabos.org Blabos de Blebe

    É para entender um conto precisa ter um pouco de tato mesmo…

    Pelo que você diz, você não entendeu *do que* eu estou falando, não procurou entender e quer uma resposta 1+1 que te dê uma justificativa técnica para a opinião que eu ponho num conto. Caríssima, não há nada que eu fale aqui que vá ser suficiente, você não está disposta a entender que eu estou falando de coisas num outro aspecto.

    Quanto aos motivos técnicos, você não respondeu à minha pergunta, o que me faz acreditar que ou você nem olhou para o código, ou não sabe porque acontece essa anomalia. Em ambos os casos não há sentido em continuar nem com a argumentação técnica, nem com a filosófica, já que você ficou me devendo, certo?

    Você parece se esquecer que um sistema computacional é muito mais complexo que simplesmente código. Algumas técnicas tiram vantagens de determinados recursos enquanto outras técnicas tiram vantagens de outros. É assim com as linguagens de programação também.

    É besteira dizer que algo é mais ou menos eficiente só por causa de um “degrau”. Os dois loops do exemplo acima estão matematicamente corretos, não há código porco ali, no entanto apresentam comportamentos distintos e resultados *iguais*. Isso porque um deles utiliza propriedades especiais do sistema computacional e o outro não. Simples assim. Não há erro de algoritmo, se é essa a justificativa para ineficiências, E aí?

    É besteira afirmar que uma determinada linguagem não é capaz de gerar código mais eficiente que um código em C. Até parece que o compilador C é o deus da performance! Sem nem entrar no mérito de produtividade, custo-benefício, etc.

    Pra finalizar, deixo mais dois links para serem ignorados também:

    http://en.wikipedia.org/wiki/Lisp_machine
    http://en.wikipedia.org/wiki/Java_processor

  • http://twitter.com/edenc Eden Cardim

    Repetindo, “libertar mentes” significa não ficar preso em problemas que já tem solução, e usar a mente para resolver novos problemas. As novas soluções acabam obsoletando as soluções antigas naturalmente. Um bom exemplo disso é o surgimento de armazenamento SSD, onde a fragmentação da memória não causa impacto de performance. Se invés de procurar uma nova tecnologia, ficássemos tentando inventar novas formas de minimizar/otimizar a fragmentação, é possível que demoraria mais para surgir a tecnologia SSD. Ficar preso tentando otimizar soluções já conhecidas em busca de termos como “perfeição máxima” e “compreensão completa” é um grande exercício em futilidade e coisa com a qual só pessoas sem experiência perdem seu tempo.

  • http://twitter.com/edenc Eden Cardim

    “Não são escravas da linguagem que acaba por fazer a maior parte do trabalho por elas?”

    Não, na definição que eu conheço, “escravo” é sempre quem faz a maior parte do trabalho.

    A questão é que uma coisa é saber como funcionam as coisas por dentro, chegar a executar a implementação é outra coisa completamente diferente. Se eu te der 100g de silício, os demais ingrediantes, e o equipamento necessário, você consegue montar um processador “perfeito” sozinha? Você consegue escrever um sistema operacional “perfeito” sozinha, com uma linguagem qualquer? Você consegue projetar uma linguagem “perfeita” e escrever um compilador/interpretador “perfeito” pra ela sozinha? Caso tenha respondido “sim” para qualquer pergunta dessas, você entraria num avião autônomo que utilizasse as soluções anteriores? Você é escrava por ter respondido “não”? O que é mais “libertador”, usar um processador pronto pra abrir a porta da garagem pra você, ou usar o mesmo tempo pra montar um processador “perfeito” que ainda não faz nada?

  • Thiago F Macedo

    Você é um bom pregador, Jesus precisa de vc! hauhauhau
    WWW/Mechanize parece bom :-o
    E o Perl tb.. interessante conhecer o pai do PHP. Preciso estudar origem das linguagens.. encorajador.
    Valeu!

  • Eliana

    muito bom!

blog comments powered by Disqus