[Cascavel-pm] "Debugando" debugando o perl

Breno G. de Oliveira breno em clavis.com.br
Sexta Setembro 30 11:18:19 PDT 2005


Nilson Santos Figueiredo Junior wrote:
> 
> A melhor resposta que você pode dar é que Perl é tão compilado quanto
> Java. Com isso, você mata dois coelhos com uma cajadada só.
> 
> O que acontece é que Perl é compilado para um bytecode e depois é
> executado na máquina virtual do perl. Exatamente como ocorre com a
> JVM. Com a diferença de que Java é uma linguagem completamente
> irritante e a JVM gasta pelo menos 8x mais memória que o perl.
> 

O Nathan Torkington deu uma palestra no YAPC 2000 chamada "Stages of a
Perl Programmer" (http://prometheus.frii.com/~gnat/yapc/2000-stages/) em
que um dos tópicos aborda a diferença entre linguagens interpretadas e
compiladas, e faz um paralelo entre as técnicas utilizadas em Perl e Java.

Segundo ele, o interpretador Perl lê o código fonte do seu programa e
constrói uma árvore de parsing interna. Então ele interpreta a árvore,
evitando trabalhar em cima de seu código fonte original e assim fazendo
com que o Perl seja mais rápido que a maioria das linguagens interpretadas.

Já o código fonte Java passa por um compilador que o transforma em
executável para a máquina virtual do Java (JVM), uma camada de abstração
acima do hardware da máquina. Esse executável, na linguagem aceita pela
JVM é então interpretada pelo Java runtime (JRE).

Assim, ambas são interpretadas, mas possuem abordagens diferentes para
tal (Lembrando que o modelo clássico de linguagem interpretada é ler o
código fonte e executar cada instrução a medida que a mesma é lida, e é
extremamente lento).

Confesso que não tenho idéia de qual abordagem é a mais rápida, embora a
primeira vista código Java pareça mais lento que código Perl. Sei que
existem diversos outros fatores envolvidos na velocidade além da técnica
de interpretação, mas adoraria ver resultados de benchmarks de programas
que façam exatamente a mesma coisa, tenham sido escritos de maneira
similar (para evitar benefícios quaisquer de algoritmo que uma ou outra
linguagem possa oferecer) e executados na mesma máquina, em Perl e Java.


[]s

breno



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