Ceylon: nova linguagem de Gavin King para a JVM

Então coletores de lixo, Hotspot, software transacional, tudo isso restringe o programador? Que coisa hein… :roll: [/quote]
Sim. Por exemplo, não é possível fazer um SO complemente em Java, a não ser que haja uma camada de software ou hardware que suporte suas funcionalidades.

[]'s

Eu fico no aguardo…

Vejo que a JBoss está fechando de forma excelente toda uma série de ferramentas para o desenvolvedor… Vejo que aqui está o motivo de uma nova Linguagem… deve ser a linguagem que fecha todo o círculo de ferramentas JBoss para a plataforma Java…

Agora, além dos Frameworks, poderemos programar em uma linguagem suportada pela JBoss, que tem o costume de manter todos os seus Projetos nas mãos da comunidade… Gostei da notícia, já entrou na minha fila e empurrou o Python pra baixo…

É simples, quem não quiser, não usa… Nem estuda pra ser mais prático…

Abs []

Olá

Primeira coisa que pensei quando li a notícia: Até que ponto vai a rivalidade entre a RedHat e a Oracle…

Depois pensei: se roda na JVM e é mais poderosa do que o Java, quem sabe um JBoss feito com ela pode ser ainda melhor.

Bem, na minha lista de coisas para estudar nos próximos 10 anos talvez esta nova linguagem entre logo depois que terminar um curso de APL e um dojo de JCL

Abraços
Luca Bastos

Então coletores de lixo, Hotspot, software transacional, tudo isso restringe o programador? Que coisa hein… :roll: [/quote]
Sim. Por exemplo, não é possível fazer um SO complemente em Java, a não ser que haja uma camada de software ou hardware que suporte suas funcionalidades.

[]'s[/quote]

Eu citei Java mas poderia ter sido qualquer outra linguagem (aliás garbage collection surgiu primeiro em Lisp, não em Java) porque estamos falando de LINGUAGENS DE ALTO NÍVEL. Linguagens de alto nível não se resume a Java ok?

Então coletores de lixo, Hotspot, software transacional, tudo isso restringe o programador? Que coisa hein… :roll: [/quote]
Sim. Por exemplo, não é possível fazer um SO complemente em Java, a não ser que haja uma camada de software ou hardware que suporte suas funcionalidades.

[]'s[/quote]

Eu citei Java mas poderia ter sido qualquer outra linguagem (aliás garbage collection surgiu primeiro em Lisp, não em Java) porque estamos falando de LINGUAGENS DE ALTO NÍVEL. Linguagens de alto nível não se resume a Java ok?
[/quote]

Ok, mas java também é linguagem de alto nível.
O interesse em subir o nível de uma linguagem se resume apenas em criar uma ferramenta de uso específico. Isso é ruim? Não se o uso for empregado para a solução do problema em específico. Eu mesmo seria o primeiro a usar se fosse ganhar produtividade com JEE.

Agora de um mode geral restringe (e não restringe pouco). Os coletores de lixo impedem que você desenvolva softwares que precisam trabalhar em tempo crítico, a não ser que você possa customizar a maneira que eles funcionam.

Hotspot não tem nada com linguagens. Ele é um conjunto de ferramentas como compilador e otimizador de assembly.

Isso é simplesmente uma questão de necessidade. Se por um lado ajuda para JEE ela não servirá em outros casos. Foi isso que citei no post acima.

Agora é muito interessante a jvm possuir vários tipos de ferramenta e não apenas uma.

Pegando o gancho do último post, a existe uma especificação para Real Time (RTSJ) onde o garbage collector é acionado em tempos pré determinados, mantendo um ciclo constante - http://jcp.org/en/jsr/detail?id=282 .

A JRockit é uma das melhores implementações e quando se usa soluções de CEP (Complex Events) onde a baixa latência é regra, a solução para frameworks em Java é utilizar uma VM Real Time.

Com relação à linguagem do Gavin King, acredito que ele vem estudando uma série de linguagens como Scala, C#, Ruby, Closure, Erlang; e está tentando criar um bom mix entre features e sintaxe.

Scala é uma linguagem muitíssimo bem desenhada, entretanto a sintaxe dela arde os olhos ! Se o programador não sente prazer em programar, fica difícil algo ir pra frente.

A comunidade Ruby hoje é forte, exatamente pela flexibilidade e sintaxe.

O Gavin tem créditos por ter criado o melhor framework do java (IMHO) - Hibernate e descascou um abacaxi - JSF + EJB (Aff) com o Seam. Acredito que ele realmente tem condições de fazer algo diferente e que a comunidade adote como padrão.

Não concordo com a afirmação sobre linguagens de alto nível restringir o que pode ser feito com elas. Isso parece ser uma discussão sobre as limitações de implementação e design - e isso pode acontecer em linguagens de qq nivel. O fato da linguagem oferecer recursos mais interessantes e podemos programar mais próximo de um idioma natural não restringe, pelo contrário, alavanca algumas coisas. Um bom exemplo é o computador de bordo das naves Apolo que possuiam um conjunto limitado de operações porém sobre ela rodava uma maquina virtual feita pelo mit que suportava operações vetoriais.

GC é um exemplo prático de inovação trazida por linguagens de alto nível, pergunta pra qualquer programador Java se ele gostaria de gerenciar memoria manualmente, como pode ver de um modo geral liberta, pode ser que não exista hoje uma solução para o caso que você descreve, mas isso não impede ums solução customizada quando o caso é específico.

Acho que é exatamente o oposto. Quanto mais baixo nível, mais restrito será seu uso. Por que será necessário uma maior quantidade de código e trabalho braçal para se fazer algo relativamente simples.

Um nível de abstração maior permite alcançar resultados mais rápido, logo tornando seu uso mais amplo.

Hibernate é a reinvenção da roda. Existe uma tecnologia muito mais flexível chamada SQL.

O que ele fez foi contribuir para o XML hell do Java.

Apenas como info, quem esta implementando o compilador é Andrew Haley, membro do OpenJDK team.
O Andrew tem uma bagagem excelente em linguagens e compiladores: http://www.jboss.com/about/leadership/jsr/haley.html

Ele estando no time do Ceylon é mais um motivo para acreditar que o projeto tem tudo para decolar.

[quote=Longino][quote=Kenobi]
O Gavin tem créditos por ter criado o melhor framework do java (IMHO) - Hibernate
[/quote]

Hibernate é a reinvenção da roda. Existe uma tecnologia muito mais flexível chamada SQL.

O que ele fez foi contribuir para o XML hell do Java.

[/quote]

Não, desculpe-me amigo, mas você tem idéia de como é trabalhoso fazer Queries na mão - JDBC e encapsular com DAOS à cada Entidade do sistema ? Sem contar a tradução do modelo relacional para OOP.

O Hibernate é um mapeador do modelo relacional para orientado a objetos e possui uma série de features interessantes, como Lazyload, cacheamento etc.

Não sei quantos anos de experiência você tem com Java, mas vale à pena estudar um pouco a solução.

PS: Estou dando uma olhada na sua implementação de Lisp, parece muitíssimo interessante ! :slight_smile:

Um abraço,

Felipe Oliveira - @scaphe (twitter) - SOA|EXPERT

[quote=Kenobi]
Não, desculpe-me amigo, mas você tem idéia de como é trabalhoso fazer Queries na mão - JDBC e encapsular com DAOS à cada Entidade do sistema ? Sem contar a tradução do modelo relacional para OOP.

O Hibernate é um mapeador do modelo relacional para orientado a objetos e possui uma série de features interessantes, como Lazyload, cacheamento etc.

Não sei quantos anos de experiência você tem com Java, mas vale à pena estudar um pouco a solução.

PS: Estou dando uma olhada na sua implementação de Lisp, parece muitíssimo interessante ! :slight_smile:

Um abraço,

Felipe Oliveira - @scaphe (twitter) - SOA|EXPERT [/quote]

O problema do Java é que as pessoas não utilizam as suas features. Por isso tudo requer 3 frameworks e 10 arquivos XML para se fazer.

Apenas utilizando reflection mais metadados do JDBC é possível povoar um bean com valores lidos de um DB automaticamente, e sequer é necessário gastar tempo fazendo isso pois as libs estão disponíveis no Apache: http://commons.apache.org/dbutils/

Uma API escondendo os detalhes do DB utils apenas para ler e gravar objetos e você nunca mais passará perto de um ResultSet. Simples, fácil e sem DAOs e nem XML.

Hibernate é um desgraça, assim como a maior parte dos frameworks do Java.

Interessante: Ceylon: Interesting for the Wrong Reasons

GC é um exemplo prático de inovação trazida por linguagens de alto nível, pergunta pra qualquer programador Java se ele gostaria de gerenciar memoria manualmente, como pode ver de um modo geral liberta, pode ser que não exista hoje uma solução para o caso que você descreve, mas isso não impede ums solução customizada quando o caso é específico.[/quote]

Existem vários de casos em que o gc não é um exemplo prático. Um deles é o desenvolvimento de jogos. Se o GC fosse útil em todos eles java não precisaria de mapeamentos para o direct3d e opengl.

É isso mesmo. Uma questão de desenho. Para que são criadas linguagens de alto nível? Justamente para resolver problemas específicos.
Prolog é um caso voltado a IA, Lisp, Java, e por aí vai.

Um exemplo prático, que provavelmente pessoas aí vão me apedrejar é o java para desktop. Existem meia dúzia de “aplicações” que são usadas amplamente no dia-dia de um usuário comum. Para aplicações desktop c++(também é alto nível) sempre será amplamente utilizada(muito mais) em relação as demais linguagens. Essas linguagens tem ergonomias diferentes, como alguns dizem aqui no guj.

[quote=Longino]
Acho que é exatamente o oposto. Quanto mais baixo nível, mais restrito será seu uso. Por que será necessário uma maior quantidade de código e trabalho braçal para se fazer algo relativamente simples.

Um nível de abstração maior permite alcançar resultados mais rápido, logo tornando seu uso mais amplo.[/quote]

É justamente o contrário. Quanto mais próximo da máquina, maior será a sua liberdade por não ter a abstração dos detalhes. Mas muito maior será o seu trabalho. Claro que não tem cabimento escrever softwares de alto nível como aplicações em assembly.

[quote=Kenobi]Pegando o gancho do último post, a existe uma especificação para Real Time (RTSJ) onde o garbage collector é acionado em tempos pré determinados, mantendo um ciclo constante - http://jcp.org/en/jsr/detail?id=282 .

A JRockit é uma das melhores implementações e quando se usa soluções de CEP (Complex Events) onde a baixa latência é regra, a solução para frameworks em Java é utilizar uma VM Real Time.
[/quote]

A jrockit é um caso específico para alguns hardwares. A maioria das empresas que desenvolvem hardware não vão desenvolver uma máquina virtual e uma linguagem para ela.

A solução para esses problemas de desempenho é usar uma real machine como o SunSpot, mas como ela e muito cara acaba inviável para o mercado se comparada aos outros microprocessadores.

Se alguém perguntar sobre, eu concordo que meu comentário inicial não tem nada haver com o assunto discutido no tópico. Vou voltar a conversar com vocês sobre a utilidade dessas novas linguagens.

Que lugar da Europa o Scala eh bastante usado? A Europa eh grande! :wink:

Pelo menos por aqui, quase ninguem conhece, eu gosto bastante do Scala e quando eu comento sobre Scala quase ninguem ouviu falar os que ouviram falam, nao sabem exatamente do que se trata. =/

Vou acompanhar o Ceylon! :slight_smile:

//Daniel

Hibernate não é um amontoado de xmls, basta ver o Hibernate Annotations

http://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/

Agora, querer comparar uma solução de ORM com diversas features como second level cache, lazy fetching, controle de transações com algo que simplesmente gera beans - que pode ser bem util - é forçar a barra. Afinal poderiamos simplesmente serializar os objetos em disco se fosse o caso.

Mas acho interessante estas linguagens que rodam sob a jvm: por seleção natural as mais uteis vão sobrevivendo.

O grande problema do Hibernate, assim como de muitas outras ferramentas, é que muitas vezes eh usado quando nao se precisa dele.

Hibernate eh uma ferramenta de mapeamento objeto-relacional, nao um gerador de insert e update sql. É impensavel trabalhar com heranca, composicao, cache, lazy loading, sem ele.

Agora, se voce nao tem um modelo de objetos para ser convertido para o modelo relacional, ele so vai atrapalhar mesmo, criar uma camada desnecessaria e extremamente chata que voce nao precisa.

Nesses casos um MyBatis ja resolve, ou um arquivo de properties com os sqls