[quote=peerless][quote=neófito]Bom, a princípio, parabéns.
Mas você não acha covardia comparar a performance do cajuScript com groovy sendo que o último tem muito mais features do que o primeiro?
[/quote]
mas a comparação é performance e não quantidade de features! [/quote]
Exatamente!
Num ambiente onde a performance conta, principalmente em produção, você vai preferir ter uma solução rápida ou uma com features?
O que o CajuScript propõe pra já é ser um complemento ao Java, tentando ter o menor impacto possível na performance.
O que devem levar em conta também é que o CajuScript é um projeto do zero, tem pouco tempo de vida comparado as outras linguagens de script, e não quer dizer que não venhamos a ter muitas das features que as outras linguagens tem. Em cada versão acrescentamos mais algum recurso.
Para a versão 4, o principal objetivo é um melhor tratamento de arrays, collections e maps.
Agora se querem dizer que o CajuScript tem menos recursos que o Groovy e por isso é mais rápido. Isto não é verdade. O que o Groovy faz num loop por exemplo? Por que ele demora tanto a inicializar? Isto são problemas básicos que o CajuScript já tem ultrapassado, mas normalmente é por que a maioria das linguagens de script usam parsers e interpretadores de terceiros, no CajuScript foi feito tudo do zero, a medida, isto nos da muito mais liberdade para fazermos o que quisermos, e por isso também conseguimos fazer a sintaxe dinâmica.
Por exemplo o Marcos fez este recurso:
http://code.google.com/p/cajuscript/wiki/tutorialOperable
Para ajuda-lo a realizar calculos em 2D e 3D, ele viu o projeto, foi ver o código para ver se dava para fazer isto, e em poucas horas me mandou esta idéia!
Você consegue ter esta facilidade em outros motores?
O que quero dizer é que o CajuScript não é nenhum bicho de sete cabeças, é simples, e fácil de fazer certas features. Só é preciso ter criatividade.
Neste momento CajuScript tem 3 opções para executar um script:
:arrow: Normal, mais lento, uso de regular expression para interpretar o script com a feature de sintaxe dinâmica o que torna pesado.
:arrow: Cache, um pouco mais lento na primeira vez, mas depois mantem o parser em memória tornando as próximas execuções muito mais rápidas, em scripts mais longos faz muita diferença comparado com execuções em modo normal, a desvantagem é que consome memória.
:arrow: Compile, compila o script em uma class Java, bytecode, primeira vez demora mais, pois tem que interpretar e compilar, mas as próximas vezes extremamente rápido. O objetivo para as próximas versões também é melhor ainda mais.
O Groovy por exemplo tem estes recursos de exeução? Então até que ponto performance é importante para você ou para o teu projeto? Que opções você tem no Groovy de otimizações?
Mas como já disse o gosto conta muito, e o hábito também, quem esta hábituado a trabalhar com uma linguagem que é “mão na roda” dificilmente vai largar mão para ter mais performance, ai se ficar lento vai precisar de mais hardware, mas quanto mais hardware você colocar, talvez se você tivesse uma solução mais performática seria sempre mais rápido, com mais hardware mais rápido ainda. E não quer dizer que o CajuScript não venha a ter muitos das facilidades do Groovy e companhia, estamos tentando caminhar para isto.
Java tem uma má fama, é pesado, pois consome muita memória, e o CajuScript é uma maneira de minimizar este impacto. Como eu já disse em outra altura, eu usava LuaJava por ser muito mais rápida que as outras linguagens, só que como o projeto esta abandonado e tem alguns bugs cruciais pra mim, fui forçado a procurar alternativa melhor, e cada vez que ia testando uma nova linguagem ficava decepcionado, me vi forçado a fazer algo a medida para o que eu precisava.
Como já disse estamos abertos a idéias, qualquer sugestão que acham que o CajuScript deveria focar para as próximas versões, que vejam que seria muito útil e que faz falta, só dizerem e vamos colocar na nossa lista de prioridades.