[Cascavel-pm] Transformando em objeto

Adriano Ferreira a.r.ferreira em gmail.com
Quinta Novembro 30 09:05:16 PST 2006


On 11/30/06, Nilson Santos Figueiredo Junior <acid06 em gmail.com> wrote:
> On 11/30/06, Luis Motta Campos <luismottacampos em yahoo.co.uk> wrote:
> >   Perl não tem suporte a orientação à objetos.
> >   Perl tem, sim, um "syntatic sugar" que permite ao programador se
> > iludir, acreditando piamente que está trabalhando sobre o paradigma de
> > orientação à objetos. Mas é pura ilusão de óptica.
>
> Erm, eu *não* vou iniciar um flame war. ;-)
> Mas digamos que eu não concordo com você.

Concordo com o Nilson. Se uma linguagem permite você escrever uma coisa assim

      my $mech = WWW::Mechanize->new;
      $mech->get($url);
      my $html = $mech->content;

você está fazendo programação com objetos. Você tem aqui criação de
objetos, encapsulamento de dados, polimorfismo, herança, etc. Mas aí
você vai me dizer que dá para fazer isso em C? Dá mesmo. Mas com muito
mais trabalho. Você vai dizer que dá para olhar debaixo da mesa. Sim.
Em Smalltalk, o código está lá para você olhar também das janelas até
as operações com inteiro (se o leitor conseguir entender). O ponto é
que não precisa entender para fazer muito como usuário dos objetos ou
"objetos".

> > "package" é uma diretriz de programação do Perl que serve para definir
> > que o código e as declarações que aparecerem naquele arquivo, daquele
> > ponto em diante, estão associadas com o "namespace" declarado na
> > diretriz "package". NADA MAIS.
>
> Na verdade não tem a ver com arquivos e sim, somente com os
> namespaces. Todas as declarações daquele ponto em diante serão
> compiladas sob aquele namespace. Isso tem implicações em vários níveis
> diferentes.

Concordo. Está havendo confusão entre package e módulo (que é o
package em um arquivo segundo determinadas regras de localização para
o interpretador Perl).

> >   Perl não suporta "métodos", no sentido estrito da palavra: não é
> > possível separar a interface do código que uma determinada chamada
> > executa, e, mesmo que alguém consiga algum recurso para isso, não vai
> > passar de um hack sujo ou uma brincadeira habilidosa sobre os
> > /namespaces/ do Perl.

Purismo. Para fazer as coisas (no melhor estilo Perl), ajuda mais pragmatismo.


Mais detalhes sobre a lista de discussão Cascavel-pm