Finalmente esta oficialmente lançado, e anuncio aqui no GUJ em primeira mão, mais uma linguagem de script para o Java
As principais vantagens do CajuScript é:
:arrow: Fácil aprendizagem.
:arrow: Jar com menos de 60k.
:arrow: Muito fácil de usar com Java e implementa as interfaces de Script do Java 6.
:arrow: Sintax inovadora.
A sintax poderá ser um choque a primeira vista, mas reparem bem e verão que faz todo sentido. Menos teclas para declarar um if, while, funções e imports.
O CajuScript nasceu agora, ainda tem muito o que amadurecer, mas para começar já vem com tudo o que é mais necessário, está bem completo para o início.
Conto com a ajuda de todos, críticas e sugestoes sempre serão bem vindas.
Que bacana cara, sabe: de uns tempos pra cá tenho me dedicado a escrever código com o menor footprint possível (por diversão).
Bacana ver uma linguagem com 60 Kb.
Rodrigo.Lima
Parabéns, belo nome.
saoj
Que doideira! Quer dizer que agora qualquer um pode fazer o sua própria linguagem de script compatível com o Java?
Dei uma ollhada nos fontes. Parece que vc faz o parser na unha. Até outro dia isso era uma coisa bastante não-trivial (consulte um livro de compiladores e parsers). E agora? Ficou mais acessível? Como vc aprendeu isso?
Parabéns pela iniciativa!
davidbuzatto
Parabéns!
Só não gostei de uma coisa… CAJU (odeio para ser sincero, mas gosto muito da castanha hehehe).
Até mais!
louds
Pelos exemplos notei que instanciação usa a mesma notação que ativação. Isso é problemático se existir contexto implícito como toda linguagem OO possui. Como fica isso no CAJU?
eduveks
saoj:
Que doideira! Quer dizer que agora qualquer um pode fazer o sua própria linguagem de script compatível com o Java?
Dei uma ollhada nos fontes. Parece que vc faz o parser na unha. Até outro dia isso era uma coisa bastante não-trivial (consulte um livro de compiladores e parsers). E agora? Ficou mais acessível? Como vc aprendeu isso?
Parabéns pela iniciativa!
Pois é, acho qualquer um pode fazer qualquer coisa :roll:
As vezes pode não fica perfeito mas que chega lá, chega
Bem eu tenho noção disto que disseste, que existe melhores maneiras de fazer a interpretação, mas primeiramente resolvi fazer um interpretador que funcionasse, agora começa a faze de otimizações, trabalhar em cima de um bom parser, mas primeiro queria algo que funcionasse e que servisse de base para o aperfeiçoamento, uma idéia por onde começar.
S
soudaniel_01
legal, parabens !!!
hoje atarde vou fazer algo com ele…
eduveks
Bem sinceramente não entendi bem a tua pergunta, mas se for no sentido de como diferenciar uma nova instância da classe de apenas uma chamada a uma class estática é assim:
java.lang.String() -> Nova intância
java.lang.System -> Classe estática
A difernaça é nos ( )…
Depois para chamar por exemplo o String.replaceAll(CharSequence, CharSequence) em vez do String.replaceAll(String, String):
Usando o caju.cast( OBJECT, "CLASS" ) para chamar um método ou contrutor especifico que tenha múltiplas definições.
Não sei se isto responte a tua pergunta, mas se tiver um exemplozinho da situação específica agradecia :roll:
T
Tecnoage
Gostei da iniciativa!!! parabéns
louds
Bem sinceramente não entendi bem a tua pergunta, mas se for no sentido de como diferenciar uma nova instância da classe de apenas uma chamada a uma class estática é assim:
java.lang.String() -> Nova intância
java.lang.System -> Classe estática
A difernaça é nos ( )…
Depois para chamar por exemplo o String.replaceAll(CharSequence, CharSequence) em vez do String.replaceAll(String, String):
Usando o caju.cast( OBJECT, "CLASS" ) para chamar um método ou contrutor especifico que tenha múltiplas definições.
Não sei se isto responte a tua pergunta, mas se tiver um exemplozinho da situação específica agradecia :roll:
Ativação -> chamada de um método.
Instanciação -> criar um novo objeto.
Contexto implícito -> o this é métodos é um exemplo disso.
Queria saber se existe algum contexto implicito e, se existir, como diferencia String() ser ativação ou instanciação.
eduveks
Bem sinceramente não entendi bem a tua pergunta, mas se for no sentido de como diferenciar uma nova instância da classe de apenas uma chamada a uma class estática é assim:
java.lang.String() -> Nova intância
java.lang.System -> Classe estática
A difernaça é nos ( )…
Depois para chamar por exemplo o String.replaceAll(CharSequence, CharSequence) em vez do String.replaceAll(String, String):
Usando o caju.cast( OBJECT, "CLASS" ) para chamar um método ou contrutor especifico que tenha múltiplas definições.
Não sei se isto responte a tua pergunta, mas se tiver um exemplozinho da situação específica agradecia :roll:
Ativação -> chamada de um método.
Instanciação -> criar um novo objeto.
Contexto implícito -> o this é métodos é um exemplo disso.
Queria saber se existe algum contexto implicito e, se existir, como diferencia String() ser ativação ou instanciação.
Ok acho q agora chegamos lá
Não há contexto implícito, há apenas um contexto q é o contexto global da execução do script, variáveis definidas dentro de funções como fora estão no mesmo contexto, ou seja dentro de uma função pode se usar uma variavel de fora e uma variavel criada dentro de uma função fica acessível para fora, ou sejá só existe o contexto global, por enquanto!
CajuScript não é orientado a objeto, por enquanto.
Esta variável “str” estará disponível para ser usada no código que segue, podendo a seguir fazer: str.replaceAll(“o”, “o…”)
Ser fizer:
str = String
Isto não faz nada! Classes estáticas teem que ser usadas assim: System.out.println(“xpto…”)
Tem que executar alguma coisa, só System não faz nada, é preciso um caminho completo para uma variável publica, ou construtor ou método, para usar isto como valor de uma variável.
Claro que quero melhorar isto, passando a ser uma linguagem OO também, mas isto no momento não, isto esta pendente para as versões futuras.
O objetivo agora foi fazer uma linguagem simples para usar classes Javas e trocar Objetos entre Java e CajuScript, suportando tudo que é preciso para programar, ifs, while, arrays, funções, cast e variaveis, isto é o básico e tentei fazer da maneira mais simples e facíl de usar, agora o próximo passo é melhorar o que já existe e começar a evoluir a linguagem para o suporte de Classes e tudo mais.
Os objetivos do CajuScript é ter o core pequeno, ter fácil aprendizagem, e fácil de usar no dia-a-dia.
Se tem algo que não agrada e tem idéia de como melhorar, e se tem algum recurso que acha que faz falta e quer que seja implementado, é só dizer que vamos trabalhar para isto.
E quem quiser participar no desenvolvimento do projeto será bem vindo.
dlt
o contexto implícito é o contexto ‘dentro’ de um objeto instanciado? como se ele fosse um programa separado?
jjose
Que nomico
pior soh jBanana
fcoury
Amigo, parabéns pela iniciativa! Só um toque: sintaxe em inglês é syntax e não sintax como está no site beleza?
Abração e novamente, parabéns!
eduveks
fcoury:
Amigo, parabéns pela iniciativa! Só um toque: sintaxe em inglês é syntax e não sintax como está no site beleza?
Abração e novamente, parabéns!
Oppsss, obrigado pela correção, nem demos por isso, valew mesmo
peczenyj
A sintaxe é realmente diferente.
Ainda não saquei como se faz um else … depois vou praticar com cuidado
Parabéns!
eduveks
peczenyj:
A sintaxe é realmente diferente.
Ainda não saquei como se faz um else … depois vou praticar com cuidado
Parabéns!
x = 1
// IF
x = 1 ?
System.out.println("X = 1")
// ELSE IF
? x = 2 ?
System.out.println("X = 2")
// ELSE
??
System.out.println("X = "+ x)
?
If é quando tem o “?” no fim da linha:
… ?
Else If é quando tem “?” no começo e no fim da linha:
? … ?
Interessante essa sintaxe do IF. Você que criou ou viu em outra linguagem?
Parabéns pelo projeto.
Fui eu q criei mesmo, conforme fui fazendo foi surgindo as idéias, mas talvez tenha me baseado em algo q entrou no meu subconciente
A ideia quando resolvi “desenhar” a sintax seria criar uma linguagem sem keywords, apenas usando caracteres que não usamos normalmente nas linguagens, e fui buscar os caracteres que achei mais intuitivos para:
If = ?
While = @
Fuction = #
Return/Break = ~
Include/Import/Null = $
E usar estes caracteres para substituir os { }, estando com um codigo longo de whiles com ifs, da para ver logo onde termina cada um vendo os @ e ? mesmo sem ver a linha onde começa, acaba por ser intuitivo, com uma boa tabulação, além de poupar os dedos digitando menos, como tenho problemas de tendinite, odeio ter que ficar digitando caracteres a mais e repetitivos.
Em linguagem de script ficar usando == também acho sem noção se esta dentro de um if deveria ser apenas o = e o != apenas !, e foi o q fiz também, é muito raro as vezes que se usa o = dentro de um if, por isso não faz sentido ficar usando == e !=.
O que tentei foi simplificar ao máximo tudo, e facilitar o trabalho do dia-a-dia.
C
carneiro
eduveks
Parabéns, muito jóia o seu projeto. Já baixei os fontes e estou dando uma olhada.
Show de bola!
jopss
parabens!!!
Nao li todo o site… mas… do geito que está hoje, oq se pode fazer com o CajuScript ??
jopss
eduveks
jopss:
parabens!!!
Nao li todo o site… mas… do geito que está hoje, oq se pode fazer com o CajuScript ??
jopss
Bem o q se faz com uma linguagem de script?
Muita gente nem sabe pra que serve, e não sabe bem em que situações usar, é uma pena, mas com o CajuScript vc pode fazer tudo que vc faz com outra linguagem de script, de uma maneira ou de outra.
Linguagem de Script é mais uma questão de gosto e facilidades que cada uma oferece, o CajuScript é mais uma opção, com alguns pontos positivos e outros negativos, assim como qualquer outra linguagem de script.
A escolha em se adotar uma linguagem ou outra varia com o gosto e necessidade de cada um.
Alexandre_Gazola
Cara, muito massa! Parabéns pelo projeto!
PS.: Gostei do nome da linguagem!
O
onolox
Vai haver documentaçao em portugues tb, brevemente…
O que eu quiz dizer foi que a sintaxe deveria ser em português, ao invés de if um se, else um senao e por aí vai…