** FLAME WARRRRRR*** C++ e Delphi ? linus torvalds discorda disso!
http://article.gmane.org/gmane.comp.version-control.git/57918 2014-04-29 20:02 GMT-03:00 Aureliano Guedes <[email protected]>: > >ter Perl como primeira linguagem > Esse foi meu feliz erro. > Sofro com alguns problemas de boas praticas mas em questão de logica pura > eu m dou bem. > Eu diria que quem quer aprender logica deveria aprender Perl. > Agora aprendi C VB.net e mais recentemente C++ e Delphi pra tentar > aprender boas praticas. > > > > Blabos de Blebe <[email protected]> escreveu: > > Mas ok, não é uma boa prática... > > > 2014-04-29 19:15 GMT-03:00 Blabos de Blebe <[email protected]>: > > > café deve ser 'duro' > > TimToady!!! > > > 2014-04-29 19:12 GMT-03:00 Renato Santos <[email protected]>: > > Cara, café não se pode ferver! seu café deve ser 'duro' > > > 2014-04-29 19:01 GMT-03:00 Blabos de Blebe <[email protected]>: > > Enquanto meu café ferve, aqui vale uma reflexão: > > "Boas práticas" é um conceito flutuante. > > Perl é uma linguagem extremamente rica e se desenvolvimento bastante > dinâmico. O que era boa prática quando eu aprendi, já não é boa prática > hoje. As coisas mudam. > > http://perldoc.perl.org/perlhist.html > > Embora muita gente fale que Perl é pré-histórico, a versão mais atual > foi lançada em janeiro. Se você bobear, você que fica pré-histórico. > > []'s > > > > > 2014-04-29 18:52 GMT-03:00 Blabos de Blebe <[email protected]>: > > Pacman, copião :) > > > 2014-04-29 18:50 GMT-03:00 Blabos de Blebe <[email protected]>: > > > que Modulo::funcao dispensa declarar o construtor. > > Não dispensa. Não tem nada a ver. Não misture as coisas. > > Construtor é um conceito associado a um método especial utilizado para > inicializar objetos, ou seja, quando você está utilizando uma interface > orientada a objetos. > > Em C++, o Construtor tem que ser um método cujo nome é o nome da classe. > > Em Python é outro padrão. > > Em Perl isso é livre, um construtor, ou seja um inicializador de objetos > pode ser qualquer método que eventualmente invoque a sub bless(). > > http://perldoc.perl.org/functions/bless.html > > Em Perl convencionamos, pra ninguém ficar louco, que o construtor > chama-se new. Mas não existe palavra reservada ou obrigatoriedade nisso. > > Modulo::funcao() é uma chamada 'procedural' aplicando o namespace > completo FQN. Não tem nada a ver com objetos, ou construtores. > > *** > > No seu caso, como bem observado pelo Junior, o que você quer é não ter > que passar o namespace completo, por isso o uso do Exporter, que nada mais > faz do que tornar a sua função conhecida no namespace atual. > > Exporter também não tem nada a ver com objetos. > > A boa prática é usar @EXPORT_OK pra não exportar todos os símbolos por > default. Nesse caso, ao usar o seu módulo você precisa fazer: > > use Modulo qw{ funcao }; > > Aqui, "boa prática" significa basicamente, "vou tormar o cuidado de > exportar apenas o necessário pra não correr risco de dar conflito com outra > função de mesmo nome de outro módulo". > > Mas é só uma politica de boa vizinhança, não quer dizer, > necessariamente, errado. Depende do seu contexto. > > *** > > Como em Perl as coisas são mais livres, você vai ver casos de um package > que tem construtor, métodos *E* funções comuns, ou seja, tanto uma > interface OO quanto procedural. Exemplo: > https://metacpan.org/pod/String::Trigram > > Antigamente, quando OO era 'novidade', o pessoal costumava publicar uma > interface OO *E* uma interface procedural, pra ficar ao gosto do cliente > escolher. Outro exemplo: https://metacpan.org/pod/CGI > > Por essas e outras, *EU*, acho meio confuso ter Perl como primeira > linguagem, pois ela te dar liberdades que em não tendo todos os conceitos > bem sedimentados, *pode* confundir. > > O importante é, em estar estudando, não parar no estágio "ah consegui > fazer" mas sim prosseguir pelo menos até o "ah, entendi como funciona". > > []'s > > > > > 2014-04-29 18:32 GMT-03:00 Aureliano Guedes <[email protected]>: > > Funcionou da forma que o Junior passou. > > Obrigado. > > Experimentei fazer o dumper como o Bablos falou. Realmente são formas > diferentes, sendo que Modulo::funcao dispensa declarar o construtor. > > ------------------------------ > From: [email protected] > Date: Tue, 29 Apr 2014 18:15:00 -0300 > > To: [email protected] > Subject: Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor > > Hi. > > Em 29 de abril de 2014 18:07, Blabos de Blebe <[email protected]> escreveu: > > Só mais uma coisa, > > Isso não tem nada a ver com Exporter. > > []'s > > > Eu acho que ele tá perguntando mesmo como exportar uma sub e torná-la > possível ser chamada à partir de outro script bastando dar um use no > módulo, e não como invocar um método estaticamente como eu pensei. > > Creio que o jeito mais roots seria: > > > > > > > > > *package Modulo::Modulo; use vars qw(@ISA @EXPORT); @ISA = > (qw(Exporter)); @EXPORT = qw(acp); sub acp {* > > *... * > *}* > 1; > > Deste modo, Aureliano, bastará dar um *use* em Modulo::Modulo e a função > acp() estará acessível, assim como no Math::Prime::Util. > > []'s > > _______________________________________________ > > Rio-pm mailing list > [email protected] > http://mail.pm.org/mailman/listinfo/rio-pm > > > > _______________________________________________ Rio-pm mailing list > [email protected] http://mail.pm.org/mailman/listinfo/rio-pm > > _______________________________________________ > Rio-pm mailing list > [email protected] > http://mail.pm.org/mailman/listinfo/rio-pm > > > > > > _______________________________________________ > Rio-pm mailing list > [email protected] > http://mail.pm.org/mailman/listinfo/rio-pm > > > > > -- > Saravá, > Renato CRON > http://www.renatocron.com/blog/ > @renato_cron <http://twitter.com/#!/renato_cron> > > _______________________________________________ > Rio-pm mailing list > [email protected] > http://mail.pm.org/mailman/listinfo/rio-pm > > > > > _______________________________________________ > Rio-pm mailing list > [email protected] > http://mail.pm.org/mailman/listinfo/rio-pm > -- Saravá, Renato CRON http://www.renatocron.com/blog/ @renato_cron <http://twitter.com/#!/renato_cron>
_______________________________________________ Rio-pm mailing list [email protected] http://mail.pm.org/mailman/listinfo/rio-pm
