[SP-pm] [Rio-pm] Compilação

Fernando Oliveira fernandocorrea em gmail.com
Domingo Novembro 18 11:48:40 PST 2007


Isso depende...

se nos seus módulos vc chama outros módulos através de "use", ele vai ser
carregado logo no inicio do carregamento do programa, como se estivesse
dentro do bloco BEGIN... agora, se vc usar um "require" os modulos serão
carregados sob demanda...

Fiz um pequeno teste cara comprovar isso:

fernando em ubuntu:~$ for i in teste.pm teste2.pm teste3.pm teste4.pm; do echo
"#$i"; cat $i; echo; done
#teste.pm
package teste;
print "teste$/";
use teste2;

#teste2.pm
package teste2;
print "teste2$/";
use teste3;

#teste3.pm
package teste3;
print "teste3$/";
use teste4;

#teste4.pm
package teste4;
print "teste4$/";

fernando em ubuntu:~$ perl -Mteste -e ''
teste4
teste3
teste2
teste
fernando em ubuntu:~$ perl -i -pe 's/use/require/g;' teste*.pmfernando em ubuntu:~$
for i in teste.pm teste2.pm teste3.pm teste4.pm; do echo "#$i"; cat $i;
echo; done
#teste.pm
package teste;
print "teste$/";
require teste2;

#teste2.pm
package teste2;
print "teste2$/";
require teste3;

#teste3.pm
package teste3;
print "teste3$/";
require teste4;

#teste4.pm
package teste4;
print "teste4$/";

fernando em ubuntu:~$ perl -Mteste -e ''
teste
teste2
teste3
teste4
fernando em ubuntu:~$

isso prova q qdo se usa o "use", ele carrega o módulo mesmo antes do
print... por isso a ordem é "invertida" agora, qdo uso o require, ele faz
"na" ordem, primeiro o print e depois o carregamento do modulo...

espero q tenha podido sanar algumas dúvidas...

Em 18/11/07, Blabos de Blebe <blabos em gmail.com> escreveu:
>
> Na mosca, Fernando.
> Era exatamente nisso que eu queria chegar. Perdoem-me pela falta de
> clareza.
>
> Num projeto gigante, mas bem feito em perl, separado em módulos, etc
> cada módulo seria compilado de acordo com a demanda, mesmo depois de subir
> o script principal, ou seria compilado tudo de uma vez, pra depois
> subir o sistema?
>
>
> Obrigado
>
>
> On Nov 17, 2007 11:29 AM, Fernando Oliveira <fernandocorrea em gmail.com>
> wrote:
> > Eu acho q a pergunta dele foi a seguinte:
> >
> > se existem programas q levam dias p/ compilar, um equivalente a um
> desses
> > programas em uma linguagem q compila o código em tempo real, levaria
> dias p/
> > rodar? e teria q se esperar dias toda vez q se quisesse rodar esse
> programa?
> >
> > foi isso q vc quis perguntar locão (wesley)?
> >
> > Em 17/11/07, Frederico Recsky <frederico em gmail.com> escreveu:
> >
> > > Olá
> > >
> > > On Nov 15, 2007 3:32 PM, Blabos de Blebe < blabos em gmail.com> wrote:
> > > > Boa tarde a todos,
> > > >
> > > > Ultimamente andam me rodeando assuntos como interoperabilidade,
> > > > máquina virtual, compilação, etc.
> > > >
> > > > Cenário:
> > > >
> > > > Tem uma pessoal aí que diz que pra ser portável tem que ter máquina
> > > > virtual, "porque vc compila pra um e
> > > > roda em todos". Outros dizem que para ser portável, basta ser
> > > > compilável em qualquer plataforma. Os
> > > > adeptos das máquinas virtuais respondem que grandes sistemas demoram
> > > > muito pra compilar, gerando
> > > > custos extras, etc.
> > >
> > > "Maquina virtual, compila em um e roda em todas" é um puta engano. No
> > > caso do java você roda em todos que a sun quer com ressalvas em
> > > algumas. Alias, não existe almoço gratis.
> > >
> > > > A pergunta é: Dado um sistema que demore dias pra compilar numa
> > > > linguagem qualquer. Dado que
> > > > esse sistema tenha sido re-escrito em "Elegante Perl". Como Perl se
> > > > comporta ao levantar um
> > > > sistema gigante? Ou seja, quais as dificuldades que Perl poderia
> > > > enfrentar nesse cenário ou em
> > > > algum semelhante?
> > >
> > > Demorar dias para compilar não quer dizer nada. Quando voce muda
> > > somente um pedaço do codigo fonte, voce não compila tudo novamente,
> > > pois já inventaram o linker e etc.. Normalmente na entrega final se
> > > faz um grande build. Porém existem n formas de se distribuir grandes
> > > programas compilados e suas atualizações sem recompilar tudo. Patches
> > > de binarios por exemplo.
> > >
> > > Olha, dos sistemas de dias para compilar, eu vi servidores e sistemas
> > > operacionais e suites office/graficas.  O corel draw deve levar dias
> > > para compilar por exemplo. Porém normalmente você trabalha com pedaços
> > > de um sistema. Você não vai fazer um oracle nem compilar seu proprio
> > > oracle para entregar para o cliente, você faz um aplicativo
> > > (relativamente pequeno) que usa o oracle existente e entrega tudo.
> > >
> > > >
> > > > Eu tenho lá minhas especulações sobre o que aconteceria, mas já que
> > > > não tenho como testar,
> > > > gostaria das opiniões dos grandes mestres.
> > >
> > > Just for fun eu gerei um script perl de somente 20 megas, e ele ta
> > > "abrindo" no meu micro faz uns 40 minutos:
> > >
> > > ps aux |grep gigante.pl
> > > ibm       8840 92.2  7.2 153616 150460 pts/1   R+   22:21  42:58 perl
> > gigante.pl
> > >
> > > Obviamente um script monolitico de 20mb não é "Elegante Perl" :) ;)
> > >
> > > --
> > > ____________________________
> > > Frederico Recsky
> > > Linux User: #253572
> > > http://www.fred.eti.br
> > > http://www.perl.org.br
> > > _______________________________________________
> > > SaoPaulo-pm mailing list
> > > SaoPaulo-pm em pm.org
> > > http://mail.pm.org/mailman/listinfo/saopaulo-pm
> > >
> >
> >
> >
> > --
> > []'s Fernando
> > _______________________________________________
> > Rio-pm mailing list
> > Rio-pm em pm.org
> > http://mail.pm.org/mailman/listinfo/rio-pm
> >
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm em pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>



-- 
[]'s Fernando
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://mail.pm.org/pipermail/saopaulo-pm/attachments/20071118/3542da14/attachment.html 


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