CajuScript - Nova Versão! Um grande salto

:arrow: http://www.cajuscript.org/

Olá a todos,

Depois de muito trabalhinho e muitos testes, finalmente esta pronta a versão 0.2, com muitas novidades:

:arrow: Muito mais rápido como podem ver no gráfico.

:arrow: A Syntax pode ser custumizada, até é possível fazer uma syntax em português, código que o cliente pode mexer pode ser útil, mas também para quem não aprecia a syntax padrão pode criar a sua.

:arrow: Suporte a Try/Catch, com a possibilidade de usar a variável da exception no finally.

:arrow: E no loop agora é suportado o Break e o Continue.

:arrow: Também é suportado o conceito de contexto global e local nas funções.

E de ter algum orgulho nacional… onde as duas linguagens mais rápidas para Java são feitas por brasileiros! :stuck_out_tongue:

Outras caracteristicas do CajuScript podem ser conferidas no post de lançamento aqui no forum:

:arrow: http://www.guj.com.br/posts/list/79718.java

E mais uma vez faço o convite para quem estiver interesse em participar de alguma forma com o projeto, será muito bem vindo pois temos muito mais desafios pela frente.

Aguardo ai sugestões, dúvidas e críticas.

Abraço.

Como eu disse em outro post preferiria que fosse em portugues, algo do tipo aon invés de try um tentar, ao invés de um catch um pegar… aí sim seria uma linguagem realmente brasileira.

Assim me parece uma linguagem feita por brasileiros tentando ser americana.

Com isso teria uma grande utilidade nas aulas de algoritmos das universidades, que utilizam o antigo visualg.

E esse tipo de comparação não engana ninguém, vc não pode comparar uma linguagem 0.2 com uma outra 1.0. Conforme sua linguagem crescer ela vai ficar mais lenta. Compara quando vc tiver uma versão 1.0. Aí vamos ver essa tal velocidade.

E como ter “orgulho nacional” se até o site do projeto é todo em inglês? :oops:

Acho que não entendeu ou eu não fui claro o suficiente, custumizar a syntax é criar a syntax como quiser, inclusive fazer uma syntax em português, veja com atenção este link:

http://code.google.com/p/cajuscript/wiki/sampleSyntax

Outra quanto a velocidade não é bem assim, pois o loop não muda! Por mais que a linguagem cresça isto não influencia no desempenho em loop e a qualidade do parser. :wink:

A syntax é totalmente custumizável, para Inglês, Português, Espanhol, Russo, Japonês, etc :stuck_out_tongue:

[quote=onolox]Como eu disse em outro post preferiria que fosse em portugues, algo do tipo aon invés de try um tentar, ao invés de um catch um pegar… aí sim seria uma linguagem realmente brasileira.

Assim me parece uma linguagem feita por brasileiros tentando ser americana.

Com isso teria uma grande utilidade nas aulas de algoritmos das universidades, que utilizam o antigo visualg.

E esse tipo de comparação não engana ninguém, vc não pode comparar uma linguagem 0.2 com uma outra 1.0. Conforme sua linguagem crescer ela vai ficar mais lenta. Compara quando vc tiver uma versão 1.0. Aí vamos ver essa tal velocidade.

E como ter “orgulho nacional” se até o site do projeto é todo em inglês? :oops: [/quote]

Qual o problema do site ser em inglês? Acho legal uma pessoa da comunidade desenvolver um projeto como este e entendo que como a maioria dos desenvovledores do mundo não falam português, o cara queira deixar o site em inglês para mais pessoas teram acesso ao mesmo. E é até melhor que ele mantenha apenas um site em inglês e se concentre em melhorar o projeto dele do que ficar gastando tempo em traduzir para português. Inclusive quem se incomodar tanto com isso pode ajudar o cara traduzindo o site.

Agora, linguagem em portugues? Isso iria limitar muito o uso da linguagem.

Edu, parabéns. Ainda não testei o caju mas é muito legal ver gente fazendo algo em áreas mais complexas do que webapps.

Obrigado pelo apoio Rubem, e é isto mesmo, o teu ponto de vista é mais ou menos o meu, em inglês o público alvo é maior, e infelizmente o pessoal reclama que o Brasil tem poucos projetos opensource e quando alguem toma iniciativa recebe pouco apoio, mas isto não importa por que independente disto o projeto foi pra frente e esta indo, e minhas razões e motivações para este projeto são outras, se alguém vai usar não sei, eu sei q eu e minha empresa usamos e muito, e é isto q interessa.

Mas quanto a tradução para o portugues era interessante alguem que tiver disponibilidade fazer isto, pois eu não sou dois nem 3, e não consigo fazer tudo, e como ja convidei, volto a convidar, quem estiver interessado as portas estão abertas.

Quanto a linguagem em português, fazer um motor de scripts só para uma syntax em Português seria algo que não vingaria com certeza, por isso a Syntax é dinâmica, é customizavél, é possível criar a syntax que quiser, como já expliquei acima, claro que em alguns casos isto pode ser muito útil.

Por exemplo o cliente que entende pouco de programação poderá ter a liberdade de fazer pequenas alteraçõe quando precisar e ai convém ter um código em português por exemplo, e o CajuScript esta pronto para isto! Imagina uma regra para calcular as notas de cada curso, ou para calcular o imposto dos produtos, são regras que mudam e é interessante o cliente ter esta liberdade com uma linguagem feita a sua medida, é um ponto que pode fazer a diferença com a concorrência.

As linguagens de script tem muitas saídas, o problema é até as vezes falta alguma criatividade. No CajuScript o objetivo é ser o mais dinâmico, leve e fácil de usar e se adaptar as situações, mantendo sempre a simplicidade. E há muitos cenários em que o CajuScript pode ser usado com algumas caracteristicas mais fortes que outras linguagens.

Obrigado, mas… o CajuScript esta a ser usado em Web :stuck_out_tongue:

Foi até para este fim que foi feito :lol:

O CajuScript faz parte de outros porjetos voltados para Webapps usando linguagens de scripts e muito mais, é toda uma plataforma de desenvolvimento que tenho vindo a trabalhar a cerca de 5 anos, e o CajuScript é a ponta de um iceberg, vou abrir outros projetos também, mas talvez 1 deles se eu conseguir o patrocinio ideal vai ser comercial, e este é que une todos os outros projetos. O CajuScript foi o último a nascer e foi o que saio pra fora primeiro, espero dentro em breve lançar os outros 4 projetos.

E ja há alguns sites pequenos usando CajuScript, em breve terá um site de uma multinacional também com CajuScript, que é o qual estamos trabalhando no momento, quando o site estiver pronto e no ar eu anuncio aqui, para ficarem por dentro :wink:

onolox, fiz este exemplo pra ti:

Sintaxe em Português usando o CajuScript:

http://eduveks.blogspot.com/2008/03/que-tal-uma-sintaxe-em-portugues.html

Só fazer o download do arquivo, extrair, e depois fazer o download do CajuScript também, colocar tudo dentro da mesma pasta, e ai é só executar o .bat.

:wink:

[quote=onolox]
Assim me parece uma linguagem feita por brasileiros tentando ser americana.[/quote]
Não sabia que o único lugar do mundo onde se fala inglês é nos EUA. :roll:

Parabéns, eduveks. Ainda não tive oportunidade de testar, mas parece bem interessante.

algum motivo especial para a classe CajuScriptEngine não implementar Compilable??

falta de tempo mesmo, mas não achei q fosse tão importante para já, e não dei prioridade, infelizmente… tb fica a disposição para alguém tomar a iniciativa :wink:

Eu acho interessante essa área, porem ainda não vi nenhuma vantagem na criação de uma linguagem de script.
Porem queria parabenizar o eduveks , pelo trabalho feito. Só falta melhorar a documentação, porque eu nem sei como fazer funcionar o o caju script. Se alguem puder me ajudar eu agradeço.

E tem mais, parabenizo o eduveks , pelo fato de estar criando algo diferente dentro da plataforma aqui bo Brasil, e não é mais um framework mvc.

Abraços

Obrigado pelo apoio, e para te ajudar, tem este codigo na homepage:

javax.script.ScriptEngine caju = new org.cajuscript.CajuScriptEngine(); String javaHello = "Java: Hello!"; caju.put("javaHello", javaHello); String script = "$java.lang;"; script += "System.out.println(javaHello);"; script += "cajuHello = 'Caju: Hi!';"; caju.eval(script); System.out.println(caju.get("cajuHello"));

Isto ja ´e um começo, repare q o Java manda um objeto para o Caju e pega um Objeto do Caju, depois tem o resumo da Syntax:

http://code.google.com/p/cajuscript/wiki/tutorialSyntax

E nesta pagina da Syntax tem o link para mais detalhes de cada bloco.

Claro q isto tudo da syntax ´e mais para a syntax padrao, se for uma syntax personalizada ´e outra historia…

Mas ´e muito simples, em 10 minutos dedicando atençao se aprende CajuScript.

Gosteido CajuScript to começando a testar.

E só uma ideia porque não cria algo para sobrecarregarmos operadores?

Obrigado, mas… o CajuScript esta a ser usado em Web :stuck_out_tongue:

Foi até para este fim que foi feito :lol:
[/quote]

Acho que o que ele quiz dizer (e como eu tb penso) é que vc está fazendo um projeto que é mais do que um simples sistema Web, por mais complexa que esta WebApp possa ser… sacou?!? Vc está desenvolvndo uma coisa que fomenta a curiosidade e o estudo nas pessoas, o que evolui o simples desenvolvedor…
Ah, meus parabêns tb!!!

Obrigado, mas… o CajuScript esta a ser usado em Web :stuck_out_tongue:

Foi até para este fim que foi feito :lol:
[/quote]

Acho que o que ele quiz dizer (e como eu tb penso) é que vc está fazendo um projeto que é mais do que um simples sistema Web, por mais complexa que esta WebApp possa ser… sacou?!? Vc está desenvolvndo uma coisa que fomenta a curiosidade e o estudo nas pessoas, o que evolui o simples desenvolvedor…
Ah, meus parabêns tb!!![/quote]

Sim sim, eu entendi, mas tb só quiz explicar que o CajuScript esta sendo também usado em projetos web, só por informação…

Mas obrigado pelo exclarecimento e nesta sua última frase:

Nunca tinha pensado neste sentido, mas a minha intensão de fazer uma sintaxe custumizável também é de ser um recurso de auxílio em aulas de iniciação a programação, podendo ter a sintaxe em português, onde o professor pode definir a sua sintaxe para melhor explicar ao aluno, fazendo com que o aprendizado seja muito mais fácil e mais intuitivo… e também para quem já entende bem o que é um if, um while, uma function, pra que digitar palavras tão longas, e pode ter uma sintaxe mais geek, e isto faz alguma diferença :wink:

[quote=Mark_Ameba]Gosteido CajuScript to começando a testar.

E só uma ideia porque não cria algo para sobrecarregarmos operadores?[/quote]

Isto é algo muito importante, os únicos que são suportados no momento são:

+= -= *= /= %=

Para o resto temos ainda muito por onde pegar neste sentido…

Se esta usando, e esta gostando, e tem idéias, que tal participar do projeto? Fica ai o convite, seria muito bom :wink:

O jfbarro entrou para o projeto e tem uma tarefa importantissima que vai melhorar e muito a customização da sintaxe.

Se quiser um desafiozinho para ir “brincando” de vez em quando, seria muito bem vindo, assim como qualquer outro com interesse em ajudar o projeto.

Eu digo sobrecarregar operadores nas classes
Algo como no C

Por exemplo numa classe Vector3d (Comum em programas 3D)

Voce tem algo assim

public Vector3d add(Vector3d other){
return new Vector3d(x+other.x,y+other.y,z+other.z);
}

Minha ideia é em script não ter que chamar assim

var vec1 = Vector(0.f,0.f,0.f);
var vec2 = Vector(.5f,.5f,.5f);
var vec = vec1 + vec2;

Entende?

Mas é claro precisaria implementar os métodos certos na classe.

Isto é um conceito interessante, somar objetos baseado no construtor/objeto? Se for o mesmo objeto e tiver o mesmo construtor faz a soma?

O problema é definir o padrão, por exemplo, como vou pegar os valores do obj1 + obj2 = obj3? Seria por métodos get? Variáveis públicas?

Meio complicado definir um padrão, só se estas classes implementassem uma interface, ou se o cajuscript tivesse um objeto especifico para este fim e fizesse isto automaticamente para este determinado objeto…

O que quero fazer ainda é suportar a soma de arrays do tipo int/long/float/double fazer as somas de cada posição…

a = array.create(“int”, 2)
array.set(a, 0, 1)
array.set(a, 1, 2)
b = array.create(“int”, 2)
array.set(b, 0, 1)
array.set(b, 1, 2)
c = b + a

o C seria igual a {2, 4}…

e também o objetivo nas próximas versões é acabar com o objeto “array.*” e sim ser como em outras linguagens de script […]

com a funcionalidade de somar arrays já não resolveria o teu problema? quando tiver suportando isto das somas do array claro :stuck_out_tongue:

vou tentar acrescentar este recursos para a próxima versão do CajuScript.

Acho que oque falei seria algo assim:

Em java

public class Vector3d{
private double x,y,z;
public Vector3d(double x, double y, double z){
this.x = x;
this.y = y;
this.z = z;
}

//Método necessário para rodar o script
public Vector3d operatorAdd(Vector3d vec){
return new Vector3d(x+vec.x,y+vec.y,z+vec.z);
}
}

no CajuScript

var vec1 = Vector3d(0.0d,0.0d,0.0d);   
var vec2 = Vector3d(0.5d,0.5d,0.5d);   
var vec = vec1 + vec2; //Essa linha chamaria o método sobrecarregado operatorAdd

O mesmo para os operadores - , * e / substituindo por operatorMinus, operatorTimes, …

Entende?

Eu queria tentar implementar mas acho muito complicado pegar todos os sources pelo SVN Repository e sempre me complico, se voce tiver um modo mais fáçil de baixar as fontes eu posso tentar fazer.