[SP-pm] Map Reduce

Alexei Znamensky russoz at gmail.com
Thu Jan 13 03:51:37 PST 2011


2011/1/13 Eden Cardim <edencardim em gmail.com>

> >>>>> "Alexei" == Alexei Znamensky <russoz em gmail.com> writes:
>
>    Alexei> Não exatamente, Eden.
>
>    Alexei> As JVMs de hoje, quase todas, têm algum mecanismo de
>    Alexei> "recompilação" do bytecode para opcodes nativos da
>    Alexei> plataforma onde a JVM é executada. As JVMs da Sun^ WOracle
>    Alexei> fazem isso adaptativamente, enquanto que as da IBM compilam
>    Alexei> TUDO para nativo, e a execução ocorre em opcodes nativos,
>    Alexei> não nos virtuais.
>
> Bom, disso eu não sabia, mas, se tudo é compilado e executado
> nativamente, qual o objetivo de se usar uma VM?
>

<disclaimer type="somente uma opiniao, inventada agora, de ressaca e com
sono">
Bom, se olharmos a história da computação, geralmente caminhamos em direção
a padronizações.

Se olharmos como era compilação de aplicativos em C/C++, Pascal, etc...
(todas as linguagens "não-script"), vamos notar que sempre houve um grande
problema de compatibilidades entre fontes escritos para uma plataforma e
fontes escritos para outras. Basta pegar o código fonte de um software de
certo porte, já portado para diversas plataformas, escrito em C/C++ e olhar
a quantidade de diretivas #if / #include / #endif que é necessária para
fazer o mesmo ser multi-plataforma, multi-compilador, etc...

Eu sei que o Java não inventou nada, do ponto de vista técnico.
Praticamente, senão todas, as tecnologias utilizadas em uma JVM já existiam
antes. Mas o maior mérito do Java, IMHO, foi justamente *padronizar* (de
fato, não de direito), para as massas, o uso de uma VM, e os benefícios
associados a isso: padronizou-se os compiladores e outras ferrametnas de
desenvolvimento, padronizou-se binários, etc..

O meu cotidiano no trabalho, right now, consiste, dentre outras coisas, de
instalar binários (.class compilados em máquinas Windows/Intel de
desenvolvimento) para executar em JVMs que rodam em AIX/PowerPC. Seria muito
difícil ter isso sem VMs. Sem VMs, todos os developers (quase
que-independentemente da linguagem a ser escolhida) seriam obrigados a usar
algum servidor AIX para compilar e testar seu código. Como os ciclos de
desenvolvimento, hoje, estão extremamente calcados em tentativa-e-erro (por
vários motivos que não vou entrar no mérito agora), o tempo gasto para
desenvolver o mesmo código caiu drasticamente, pois o developer pode usar
sua CPU e SO baratos para malhar o código e rodar testes unitários, e o
binário que ele gera localmente pode ser simplesmente copiado para o
servidor de testes, onde será novamente, e mais duramente, sabatinado. Não é
preciso recompilar (ou, não seria, mas nunca subestime a estupidez humana).

Por outro lado, VMs têm o custo de performance associado à
interpretação/execução dos opcodes virtuais, então com o tempo, os
implementadores de JVMs acabaram fazendo essas "traduções" de opcodes
virtuais para nativos em tempo de execução, para melhorar esse ponto. Me
parece uma evolução quase que "natural" do conceito.

Assim, meio que respondendo ao email que o Otávio mandou enquanto escrevo
este, a JVM já está caminhando para ser mais do que "a VM para rodar Java",
e está se tornando "a 'Java' (as in 'um nome qualquer') VM, que roda
programas em diversas plataformas físicas, em qualquer linguagem original
que elas tenham sido feitas". Hence, temos JRuby, Scala, Jython, etc...

Digo mais (sob o risco de polemizar ainda mais o tópico): se o Perl tivesse
uma versão que gerasse bytecode no padrão de JVM, aí sim a linguagem iria
abocanhar de volta uma gorda e suculenta fatia do mercado (claro que não
seria somente isso, não é bala de prata, mas isso ajudaria bastante, IMHO).
</disclaimer>

   Alexei> O que não invalida totalmente o seu ponto, pois o
>    Alexei> programador não tem controle sobre os opcodes nativos
>    Alexei> gerados (mas até aí, eu faço esse trade-off any day, sem
>    Alexei> pestanejar).
>
> Realmente, fica difícil um humano escrever código com desempenho melhor
> em tempo hábil.
>

;-)

-- 
Alexei Znamensky [russoz_gmail_com] [russoz.wordpress.com] [
www.flickr.com/photos/alexeiz]
«Only love / Can bring the rain / That makes you yearn to the sky»
-------------- Pr�xima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20110113/707950e8/attachment.html>


More information about the SaoPaulo-pm mailing list