V8 x Tracemonkey
Ok, depois de compilar o v8, eu pensei: e agora? Após ler sobre o tracemonkey, minha idéia caiu no seguinte: eu compilo o tracemonkey e faço testes com ambos.
Eu adaptei o shell script que roda o benchmark do tracemonkey para rodar o mesmo benchmark, só que usando o v8.
Sobre as duas VMS:
- O líder do desenvolvimento do V8 é Lars Bak, que foi o líder técnico do Strongtalk e do HotSpot (Java) e também um grande contribuidor da maquina virtual original do Self. Segundo o projeto, o V8 é otimizado para acesso de propriedades e tem um coletor de lixo agressivo.
- O Tracemonkey usa código do Tamarin, a máquina virtual de JavaScript da Adobe, que doou o código para a Mozilla Foundation. A otimização e o JIT é feito usando um processo chamado Tracing Trees. Se você estiver disposto a ler um paper comprido, complicado e interessante, pode ler o Incremental Dynamic Code Generation With Trace Trees.
No geral, o tempo total dos testes foi menor para o tracemonkey, embora comparando os quadros, não teve uma máquina virtual que tenha vencido em todos os testes.
Os testes foram feitos usando a revisão 110 do v8 (disponível em http://v8.googlecode.com/svn/trunk) e a revisão db4260e7ee13 do tracemonkey (disponível em http://hg.mozilla.org/tracemonkey/), e foi usado o próprio benchmark do tracemonkey para testar as duas VMs.
Agora a pouco, eu refiz os testes com as últimas versões das máquinas virtuais, e os resultados se alteraram um pouco:
Diferente do teste do Brendan Eich, foi testado apenas VM e não o desempenho dela dentro do navegador, mas no geral, os resultados do meu teste aqui condizem com o dele.
Mais sobre o v8 e assuntos relacionados
- Benchmarks no Google Chrome (Alexander Limi)
- Ruby rodando no V8
- Tentando aplicar várias técnicas dos novos runtimes de JS para as linguagens dinâmicas da JVM - discussão na lista JVM-Languages, uma lista que agrega muitas pessoas que estão trabalhando em linguagens dinâmicas na JVM (JRuby, Jython, Scala e muitas outras).
- Lua JIT x Javascript
Squeak no Debian: num apt perto de você!
O Squeak é uma implementação do smalltalk, uma das mais famosas. Desde março desse ano, a máquina virtual foi adicionada ao Debian. A questão com o squeak era uma licença, que não era compatível com o DFSG. Agora está tudo resolvido.
Vale lembrar que o pacote está disponível para usuários do unstable por enquanto, e que foi apenas a máquina virtual. Você ainda vai ter de correr atrás de imagens por aí, mas existem boas imagens aqui: http://damien.cassou.free.fr/squeak-dev.html
As doze mais
Link: http://montegasppa.blogspot.com/
Recentemente o sítio NotíciasLinux.com.br divulgou uma lista das «10 linguagens de programação que você deveria aprender agora mesmo».
Nós (Rodrigo Cacilhas e Walter Cruz) conversamos e decidimos fazer nossas próprias lista. Qual não foi nossa surpresa ao descobrir que estas só divergiam em duas linguagens!
Então resolvemos escrever um artigo sobre as «12+». =)
Segue então a lista em ordem alfabética.
C
rank Cacilhas: 1
rank Walter: 3
C é a raiz de todas as linguagens modernas. Ninguém que precise de desempenho e confiabilidade abre mão de C.
Apesar de ser uma linguagem de alto nível - não confunda notação matemática com baixo nível! -, proporciona um melhor entendimento sobre o funcionamento do sistema, ajudando o programador a ter um pensamento menos dependente das peculidades de cada linguagem. É muito boa para explicar sobre o funcionamento de um computador nos seus detalhes.
C#
rank Cacilhas: 4
rank Walter: 10
É a melhor coisa que a Microsoft já fez. Tem lá seus problemas - como não poderia deixar de ser -, mas é uma linguagem eficiente e a melhor escolha para programação .NET.
Sem falar que é um plágio de Java.
C++
rank Cacilhas: -
rank Walter: 4
É uma linguagem importante devido à quantidade de aplicações desenvolvidas e também porque é a mais neutra das linguagens orientadas a objeto.
Ocupou um lugar relativamente importante na história da orientação a objetos, e foi mercadologicamente suplantada por Java.
Assim como C, ajuda o programador a ter um pensamento mais livre, a livrar-se da escravidão imposta por outras linguagens, apesar de não passar de um «C mais lento».
Cobol
rank Cacilhas: 10
rank Walter: -
Há um mercado legado muito grande de aplicações Cobol no Brasil que necessitam de manuteção - e constantes reindexações de bases de dados. =P
Em cinco ou dez anos talvez esta realidade mude, mas atualmente programadores Cobol são necessários e estão se tornando raros.
Fortran
rank Cacilhas: 9
rank Walter: -
Um linguagem antiga e ultrapassada sim, mas muito usada em ambiente acadêmico: pós-graduação e pesquisas.
Seu foco em análise numérica é perfeitamente conveniente para satisfazer as necessidades da Computação Científica e dificilmente outra linguagem conseguirá tomar seu lugar.
Portanto, para quem não quer ser mais uma batata no saco, é importante conhecer Fortran.
Java
rank Cacilhas: 2
rank Walter: 5
Java foi o que na verdade trouxe a orientação a objetos para a boca dos programadores.
Traz em seu bojo uma cultura que muitos chegam a pensar que é originada de Java, mas isso é um engano. Poderíamos citar dentre eles: Design Patterns, máquina virtual (já presente no Smalltalk na década de 80), refatoração (outro que nasceu na comunidade Smalltalk) e Programação Extrema (outro filho do Smalltalk).
O que mais dizer de Java? Não é lá grande coisa, nem se compara a C ou Fortran, mas funciona e bem.
Quando o front-end é mais importante que o back-end, Java é o que há. E ainda trabalha bem em aplicações de back-end - não tão bem quando as outras, mas a homogeneidade com o front-end compensa.
Um dos grandes problemas que eu vejo em Java é sua quase onipresença. Tem um problema? Não importa qual, mas a solução é Java. Outro grande diferencial é que essa é a linguagem que fala empresariês. É a linguagem que tem mais siglas, mais nomes e expressões complicadas, que no final acabam por se mostrar coisas simples na maioria dos casos. Não me entendam mal - depois de anos, resolvi aprender Java, e de fato estou até gostando. Existem na verdade duas coisas chamadas Java: a plataforma Java (JVM) e a linguagem Java. Apenas recentemente, com o advento do .NET a comunidade Java se tocou que nem todos gostavem de Java e passaram a alardear que outras linguagens poderiam rodar na JVM. Será que isso veio tarde demais? Espero que não.
(Walter)
Lua
rank Cacilhas: 8
rank Walter: 6
A linguagem de extensão por excelência! Combinada a C é imbatível.
Como se já não bastasse dizer que Lua conquistou seu nicho no mercado de animação, nós brasileiros temos um compromisso patriótico com esta linguagem (em vez de tratá-la com ignorância sistemática, como temos feito).
Sem contar que Lua tem méritos próprios. Metatabelas e orientação a objetos em Lua são coisas totalmente originais.
(Walter)
Perl
rank Cacilhas: 5
rank Walter: 8
Perl é uma linguagem pra gente grande. Uma das mais eficientes, não deixando a desejar a nenhuma outra.
É uma linguagem de propósito geral, mas se dá muito bem na Computação Científica, e serve como base de entendimento para outras linguagens mais modernas nela baseadas.
Outra curiosidade de Perl é ter a capacidade de irritar os trolls defensores de verdades absolutas, já que, sendo uma linguagem estrutura de tipagem fraca e orientada a objetos - ao contrário do que dizem os trolls -, é mais eficiente e aplicável do que qualquer linguagem da moda.
Python
rank Cacilhas: 3
rank Walter: 1
Python é tudo o que Java e Ruby pretendem ser.
Simples, clara, multipropósito, fortemente orientada a objetos, fortemente tipada e explícita. Sua sintaxe é clara e fácil, permitindo que iniciantes possam aprender Python rapidamente mesmo sem ter conhecimento algum de programação, mas ao mesmo tempo possui recursos avançados, como metaclasses, e incontáveis módulos, o que permite o desenvolvimento de aplicações complexas, como o Zope.
Assim temos uma linguagem - talvez a única - que faz a ponte entre o iniciante e o programador avançado.
Para saber mais veja Introducing Python.
Na minha opnião, é uma das melhores linguagens pra ensino.
(Walter)
Ruby
rank Cacilhas: 7
rank Walter: 7
Vem ganhando um certa importância atualmente, principalmente por causa dos programadores Java frustrados, mas que não querem dar o braço a torcer para Python e não aguentam esperar pelo Groovy, que é uma mistura de Ruby e Java, só que abençoada pelo JCP.
É uma linguagem da moda, mas faz coisas legais, como Ruby on Rails.
Embora seja muito semelhante a Python na superfície, são bichos de espécies diferentes. Ruby nasce do cruzamento de Perl com Smalltalk, e Python herda da linguagem ABC. Isso é algo importante de se lembrar.
(Walter)
Smalltalk
rank Cacilhas: -
rank Walter: 9
É a orientação a objetos por excelência. Mais antiga que C, quase todos os paradigmas que têm sua criação erroneamente atribuída a Java foram desenvolvidos no Smalltalk (vide seção sobre Java).
É uma linguagem de propósito geral, mas focada na interface com o usuário, há ferramentas profissionais interessantes, como Cincom VisualWorks.
Considero uma ironia que PHP tenha tido um grande sucesso e Smalltalk tenha ficado sempre em segundo plano. É particularmente chatinha de aprender - eu tentei fazer qualquer coisinha aqui e sempre me atrapalho. Isso porque a mente da maioria dos programadores já está viciada em sintaxes C-like. A história da informática seria certamente muito diferente se Smalltalk tivesse alcançado o merecido sucesso. Mas isso é díficil para quem está sempre um passo à frente.
(Walter)
SQL
rank Cacilhas: 6
rank Walter:2
É impossível manter e interfacear uma base de dados sem conhecer seu funcionamento, e nada melhor para isso do que conhecer ANSI-SQL.
Considerando os principais bancos livres, podemos subdividir este tópico em três:
ANSI-SQL
Cobertor curto, mas conhecendo - e entendendo - o ANSI-SQL, é possível entender qualquer querência estruturada.
MySQL
O MySQL implementa um SQL ligeiramente diferente, mas nada de assustar. =)
PL/pgSQL
Sem o conhecimento das funções e peculiaridades do PostgreSQL, ele não passa de uma alterativa gorda e gulosa ao MySQL.
Mas com o entendimento do PL/pgSQL, o PostgreSQL se torna a mais poderosa das ferramentas de banco de dados.
Omissões Notáveis.
PHP
PHP é na minha opinião uma linguagem de desenho ruim, e que o passar do tempo apenas acentua isso.JavaScript
Embora seja praticamente impossível desenvolver para a web sem ela, creio que ela já fica coberta pelo tópico Lua. Lua é muito semelhante à JavaScript, com objetos de primeiro nível, closures, e sintaxe parecida.
(Walter)






