Ceylon: nova linguagem de Gavin King para a JVM

63 respostas
Paulo_Silveira

Gavin King, da Red Hat, divulgou a linguagem Ceylon no QCon Beijing.

Uma linguagem estaticamente tipada para rodar em cima da JVM, e facilitar o desenvolvimento enterprise. Possuindo higher order functions, properties, nullable types, type inference e muitos outros recursos que sempre foram aguardados para o Java 7, e talvez só teremos no Java 8. Ha uma similaridade com Scala.

Será que Gavin King vai também acertar esse projeto, depois dos hits Hibernate e Seam?

mais informacoes:


http://in.relation.to/Bloggers/Ceylon

63 Respostas

rael_gc

Do blog do autor, tirado do post acima: All we have right now is a specification, an ANTLR grammar, and an incomplete type checker. Work on the backend bytecode generation is just beginning (though we’ll be able to reuse a bunch of code from javac).

Roger75

Outra linguagem pra aprender? :frowning:

Sombriks

pode ser, mas ele já tem o slide de apresentação todo pronto, :wink:

M

Paulo Silveira:

Será que Gavin King vai também acertar esse projeto, depois dos hits Hibernate e Seam?

Acho que tem chances sim porque scala não pegou entre quem prefere linguagens estatica e o Gavin King parece entender melhor a comunidade, ao invés de querer sair implementando qualquer tendência na linguagem como o sr. Ordesky faz.

Kanin_Dragon

Paulo Silveira:
Gavin King, da Red Hat, divulgou a linguagem Ceylon no QCon Beijing.

Uma linguagem estaticamente tipada para rodar em cima da JVM, e facilitar o desenvolvimento enterprise. Possuindo higher order functions, properties, nullable types, type inference e muitos outros recursos que sempre foram aguardados para o Java 7, e talvez só teremos no Java 8. Ha uma similaridade com Scala.

Será que Gavin King vai também acertar esse projeto, depois dos hits Hibernate e Seam?

mais informacoes:


http://in.relation.to/Bloggers/Ceylon

Ótima noticia Paulo.

Tenho acompanhado com muito carinho o assunto acima. Em relação ao tomar o café juntos seria um imenso prazer. Mas como informei via MP estarei
ausente durante 10 dias, mas podemos marcar sim em outra ocasião e discutiremos novas ideia e projetos em comum.

Abraço, meu grande amigo.

M

Desenvolvimento iterativo faz parte do processo de criação tecnologica. O google não está reescrevendo o Android agora?

Adelar

Legal. Parece interessante. :smiley:

marcusmage

Este projeto parece promissor. Vendo os slides das apresentações é possível identificar várias características de outras linguaguens, principalmente do Scala (do modelo de programação funcional). Espero que essas novidades se tornem realidade logo. Pq Já tem mta gente cansado da verbosidade do Java.

“É só isso!”

saulods

Boa noticia, gosto muito de novas linguagens mas essa não conhecia…

Uma pergunta paralela ao topico, alguem ja trabalhou ou trabalha com Jython, Rhino ou Scala? ainda mais paralelo ao topico, o que vcs acham sobre o mercado de trabalho com linguagem pyhton?

Abraço a todos.

fabiocsilva

marcosvinicius.rj:
Paulo Silveira:

Será que Gavin King vai também acertar esse projeto, depois dos hits Hibernate e Seam?

Acho que tem chances sim porque scala não pegou entre quem prefere linguagens estatica e o Gavin King parece entender melhor a comunidade, ao invés de querer sair implementando qualquer tendência na linguagem como o sr. Ordesky faz.

Quem disse que Scala não pegou? Estive recentemente na Europa é lá é bem usada sim. Fui num evento de Java lá e o segundo dia foi dedicado a Scala. Pode não ser muito usada no Brasil…

M

fabiocsilva:
marcosvinicius.rj:
Paulo Silveira:

Será que Gavin King vai também acertar esse projeto, depois dos hits Hibernate e Seam?

Acho que tem chances sim porque scala não pegou entre quem prefere linguagens estatica e o Gavin King parece entender melhor a comunidade, ao invés de querer sair implementando qualquer tendência na linguagem como o sr. Ordesky faz.

Quem disse que Scala não pegou? Estive recentemente na Europa é lá é bem usada sim. Fui num evento de Java lá e o segundo dia foi dedicado a Scala. Pode não ser muito usada no Brasil…

Sim, estava me referindo ao Brasil.

Felagund

No keynote ele fala bastante de alguns problemas que levam muitos a migrarem do java para outras plataformas, mas eu fico me pensando, o que leva ele a criar uma nova linguagem? será que Scala, Clojure ou outra linguagem não atenderiam as necessidades dele?

fredferrao

Felagund:
No keynote ele fala bastante de alguns problemas que levam muitos a migrarem do java para outras plataformas, mas eu fico me pensando, o que leva ele a criar uma nova linguagem? será que Scala, Clojure ou outra linguagem não atenderiam as necessidades dele?

Mesmo que pensei, e vendo varios twits da galera, e os comentarios la no blog mesmo da noticia, todos estão falando que pega muitos conceitos de Scala, ou seja, Scala tem tudo que ela tem, e talvez até mais, então pra que inventar outra linguagem?

Ele disse: http://www.infoq.com/news/2011/04/ceylon

Na boa, linguagens ja temos aos rodos, se todo mundo que achar que alguma coisinha aqui ou acolá, deveria ser diferente, for inventar uma linguagem nova, estamos fritos.

Mas, vamos ver o quanto de marketing eles vão fazer/conseguir.

narciso.benigno

Coisa nova para aprender é sempre legal (como se já não tivessemos coisas para aprender).

Só espero que ele não tenha exagerado como fez com o JPA 2.

Abraço!

J

Vale lembrar que quanto mais alto o nível da linguagem mais restrito é o seu uso.

thiagobaptista

Não tenho nada contra o surgimento de outras linguagens. Vejo com muito bons olhos essa proliferação de novas linguagens que há um tempo acontece, e fiquei curioso para conhecer mais essa.

É papel de um bom programador não somente buscar conhecer novas linguagens como também ser fluente em qualquer uma delas.

Só gostaria, como disse em um outro tópico, que o suporte a múltiplas linguagens na JVM fosse mais “nativo” e mais transparente, como acontece hoje na plataforma dotNot.

narciso.benigno

thiagobaptista:
Não tenho nada contra o surgimento de outras linguagens. Vejo com muito bons olhos essa proliferação de novas linguagens que há um tempo acontece, e fiquei curioso para conhecer mais essa.

É papel de um bom programador não somente buscar conhecer novas linguagens como também ser fluente em qualquer uma delas.

Só gostaria, como disse em um outro tópico, que o suporte a múltiplas linguagens na JVM fosse mais “nativo” e mais transparente, como acontece hoje na plataforma dotNot.


Acho que isso estará mais próximo de acontecer com o invokedynamic. Por que por exemplo ruby não terá que fazer mais algum tipo de simulação para fazer o link dinâmico. E a geração do byte code pode ser direta.

Abraço!

Adelar

No Brasil Scala ainda vai demorar para ser popular, principalmente pela falta de cultura com linguagens funcionais. Uma das medidas de popularidade de uma tecnologia é a quantidade de empregos para ela. Pelo que percebo aqui levará até uns 2 anos pra começar a ter alguma demanda.

M

Então coletores de lixo, Hotspot, software transacional, tudo isso restringe o programador? Que coisa hein… :roll:

Adelar

Então coletores de lixo, Hotspot, software transacional, tudo isso restringe o programador? Que coisa hein… :roll:
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

adriano_si

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 []

Luca

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

M

Então coletores de lixo, Hotspot, software transacional, tudo isso restringe o programador? Que coisa hein… :roll:
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 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?

J

Então coletores de lixo, Hotspot, software transacional, tudo isso restringe o programador? Que coisa hein… :roll:
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 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?

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.

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.

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.

peczenyj

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.

M

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.

L

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.

L

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.

Alessandro_Lazarotti

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.

Kenobi

Longino:
Kenobi:

O Gavin tem créditos por ter criado o melhor framework do java (IMHO) - Hibernate

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.

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

L

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

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.

fredferrao

Interessante: Ceylon: Interesting for the Wrong Reasons

J

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.

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.

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.

É 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.

J

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.

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.

W

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

peczenyj

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.

Y

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.

peczenyj

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

L

peczenyj:
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.

Sabe aquela grana pesada que gastaram nas licenças do Oracle ou do DB2? Que tal começar a utilizá-los? Cache, transações, etc são problemas do DB e não da aplicação. Para que se dar ao trabalho de fazer isso em software se o servidor de DB foi feito exclusivamente para isso? É uma incoerência trazer funções de um DB para o software.

Simples SQL com uma API que utilize DBUtils já dá conta do recado para a maior parte das aplicações Java. E assim seria possível utilizar os próprios componentes da sua lógica de negócio, sem DAOs ou coisa que o valha.

O argumento “mas e os Annotations…” é sinal de desespero. Em primeiro lugar que eles não desfazem anos de XML hell, e segundo que ainda há a necessidade de configuração, apenas mudaram-na de lugar.

L

Eu acredito que a maioria dos frameworks são assim, não só Hibernate. As pessoas acabam utilizando-os por causa da moda e para colocar no currículo.

Y

Eu acredito que a maioria dos frameworks são assim, não só Hibernate. As pessoas acabam utilizando-os por causa da moda e para colocar no currículo.

Sim, utilizam-no por causa da moda ou do curriculo, sem duvidas.

Mas isto nao quer dizer que automaticamente estas ferramentas sao inuteis. Como eu disse, se voce tem um modelo de negocios implementado seguindo as praticas OO, o Hibernate, ou outra ferramenta ORM, será indispensavel.

M

Eu acredito que a maioria dos frameworks são assim, não só Hibernate. As pessoas acabam utilizando-os por causa da moda e para colocar no currículo.

Sim, utilizam-no por causa da moda ou do curriculo, sem duvidas.

Mas isto nao quer dizer que automaticamente estas ferramentas sao inuteis. Como eu disse, se voce tem um modelo de negocios implementado seguindo as praticas OO, o Hibernate, ou outra ferramenta ORM, será indispensavel.

Se uma moda depender de outra moda elas se anulam? Acho que não.

Sem explicar porque modelo de negócio deve ser OO (e não funcional, estruturado ou relacional) estamos falando de outra moda, senão a maior delas!

Y

Eu acredito que a maioria dos frameworks são assim, não só Hibernate. As pessoas acabam utilizando-os por causa da moda e para colocar no currículo.

Sim, utilizam-no por causa da moda ou do curriculo, sem duvidas.

Mas isto nao quer dizer que automaticamente estas ferramentas sao inuteis. Como eu disse, se voce tem um modelo de negocios implementado seguindo as praticas OO, o Hibernate, ou outra ferramenta ORM, será indispensavel.

Se uma moda depender de outra moda elas se anulam? Acho que não.

Sem explicar porque modelo de negócio deve ser OO (e não funcional, estruturado ou relacional) estamos falando de outra moda, senão a maior delas!

O problema nao eh ser ou nao moda, o problema eh usar sem saber porque, só porque eh moda.

peczenyj

Annotations é sinal de desespero? cache deveria ser apenas pelo Database? :shock:

M

Eu acredito que a maioria dos frameworks são assim, não só Hibernate. As pessoas acabam utilizando-os por causa da moda e para colocar no currículo.

Sim, utilizam-no por causa da moda ou do curriculo, sem duvidas.

Mas isto nao quer dizer que automaticamente estas ferramentas sao inuteis. Como eu disse, se voce tem um modelo de negocios implementado seguindo as praticas OO, o Hibernate, ou outra ferramenta ORM, será indispensavel.

Se uma moda depender de outra moda elas se anulam? Acho que não.

Sem explicar porque modelo de negócio deve ser OO (e não funcional, estruturado ou relacional) estamos falando de outra moda, senão a maior delas!

O problema nao eh ser ou nao moda, o problema eh usar sem saber porque, só porque eh moda.

Mas a questão é que hibernate é inútil porque é desnecessário transformar em modelo de objetos na maioria das vezes. Mas em java seria uma heresia já que tudo é objeto, então cria-se frameworks para vários problemas que antes não existiam.

L

marcosvinicius.rj:

Mas a questão é que hibernate é inútil porque é desnecessário transformar em modelo de objetos na maioria das vezes. Mas em java seria uma heresia já que tudo é objeto, então cria-se frameworks para vários problemas que antes não existiam.

É isso mesmo. Não poderia ter explicado melhor.

Henrique.tenorio

Paulo Silveira:
Gavin King, da Red Hat, divulgou a linguagem Ceylon no QCon Beijing.

Uma linguagem estaticamente tipada para rodar em cima da JVM, e facilitar o desenvolvimento enterprise. Possuindo higher order functions, properties, nullable types, type inference e muitos outros recursos que sempre foram aguardados para o Java 7, e talvez só teremos no Java 8. Ha uma similaridade com Scala.

Será que Gavin King vai também acertar esse projeto, depois dos hits Hibernate e Seam?

mais informacoes:


http://in.relation.to/Bloggers/Ceylon

Desculpe a pergunta, más o que é uma linguagem estaticamente tipada?

dizanorton

esse cara parece k concorre p um grammie ou coisa parecida

Felagund

Henrique.tenorio:
Paulo Silveira:
Gavin King, da Red Hat, divulgou a linguagem Ceylon no QCon Beijing.

Uma linguagem estaticamente tipada para rodar em cima da JVM, e facilitar o desenvolvimento enterprise. Possuindo higher order functions, properties, nullable types, type inference e muitos outros recursos que sempre foram aguardados para o Java 7, e talvez só teremos no Java 8. Ha uma similaridade com Scala.

Será que Gavin King vai também acertar esse projeto, depois dos hits Hibernate e Seam?

mais informacoes:


http://in.relation.to/Bloggers/Ceylon

Desculpe a pergunta, más o que é uma linguagem estaticamente tipada?

Herique, estaticamente tipada é como o java onde vc deve informar o tipo, obrigatoriamente por exemplo

//Tipo  Nome     Valor
   int    codigo = 0;
   codigo = "asdasd"; //erro

Em ruby, por exemplo, vc não precisa definir o tipo.

codigo = 0
codigo = "adasdasd"

O tipo e definido em tempo de execução.

fredferrao

Felagund:
Henrique.tenorio:
Paulo Silveira:
Gavin King, da Red Hat, divulgou a linguagem Ceylon no QCon Beijing.

Uma linguagem estaticamente tipada para rodar em cima da JVM, e facilitar o desenvolvimento enterprise. Possuindo higher order functions, properties, nullable types, type inference e muitos outros recursos que sempre foram aguardados para o Java 7, e talvez só teremos no Java 8. Ha uma similaridade com Scala.

Será que Gavin King vai também acertar esse projeto, depois dos hits Hibernate e Seam?

mais informacoes:


http://in.relation.to/Bloggers/Ceylon

Desculpe a pergunta, más o que é uma linguagem estaticamente tipada?

Herique, estaticamente tipada é como o java onde vc deve informar o tipo, obrigatoriamente por exemplo

//Tipo  Nome     Valor
   int    codigo = 0;
   codigo = "asdasd"; //erro

Em ruby, por exemplo, vc não precisa definir o tipo.

codigo = 0
codigo = "adasdasd"

O tipo e definido em tempo de execução.

Muita calma nesta hora, o que voce acabou de explicar foi Inferencia de Tipos;

Scala é estaticamente tipada, e isto funciona perfeitamente, devido ao type inference:

Estaticamente tipada, o tipo é definido em compile-time, e nao pode ser mais alterado
Dinamicamente, é definido em runtime, e o tipo pode mudar.

Basicamente é isto.

Felagund

fredferrao:

Muita calma nesta hora, o que voce acabou de explicar foi Inferencia de Tipos;

Scala é estaticamente tipada, e isto funciona perfeitamente, devido ao type inference:

Estaticamente tipada, o tipo é definido em compile-time, e nao pode ser mais alterado
Dinamicamente, é definido em runtime, e o tipo pode mudar.

Basicamente é isto.

Digamos que só quis ilustrar pra ficar mais facil o entendimento do cara.

Nunca mechi com Scala, e esse val é o mesmo do C#? uma keyword pra inferencia de tipos?

fredferrao

Felagund:
fredferrao:

Muita calma nesta hora, o que voce acabou de explicar foi Inferencia de Tipos;

Scala é estaticamente tipada, e isto funciona perfeitamente, devido ao type inference:

Estaticamente tipada, o tipo é definido em compile-time, e nao pode ser mais alterado
Dinamicamente, é definido em runtime, e o tipo pode mudar.

Basicamente é isto.

Digamos que só quis ilustrar pra ficar mais facil o entendimento do cara.

Nunca mechi com Scala, e esse val é o mesmo do C#? uma keyword pra inferencia de tipos?

Não, o val não tem haver com inferencia em scala.

a keyword “val” serve para definir variaveis imutaveis, ou read-only.
ja o “var” para mutaveis.

Agora algo muito legal de scala, que deixa o código limpo se comparado com ruby, que é dinamicamente tipado, é o forte type inference que ela possui, inclusive para métodos, não somos obrigados a definir o tipo de retorno.

val a = 1
var b = "asdf"

//um metodo
def umMetodo = {
   println("teste")
}

def outroMetodo = {
  "retorno"
}
//aqui ele sabe que o retorno do metodo é uma string, e tambem nao precisamos do "return", em scala, a ultima instrução do metódo é o seu retorno.
Felagund

Mas em ruby vc não precisa do return ele é opcional

def outro_metodo
  "retorno"
end

Muito interessante essa abordagem de read-only :), preciso tirar um tempo pra dar uma olhada em scala :stuck_out_tongue:

Cristiano_de_Barros

Achei uma pena ele ter tomado a decisão de não suportar sobrecarga em sua linguagem. :cry:

fredferrao

Felagund:
Mas em ruby vc não precisa do return ele é opcional

def outro_metodo
  "retorno"
end

Legal, eu só estava mostrando o type inference de scala. Em ruby, eu não sabia!

Sim, e o “val” é extremamente indicado nas “best practices”, devido a imutabilidade, e como Scala é OO e Funcional, eles pregam uso maximo de imutabilidade, para se evitar os side-effects, sendo mutabilidade um dos BIG problems de multithreading.

Adelar

:shock: ++

Y

Eu acredito que a maioria dos frameworks são assim, não só Hibernate. As pessoas acabam utilizando-os por causa da moda e para colocar no currículo.

Sim, utilizam-no por causa da moda ou do curriculo, sem duvidas.

Mas isto nao quer dizer que automaticamente estas ferramentas sao inuteis. Como eu disse, se voce tem um modelo de negocios implementado seguindo as praticas OO, o Hibernate, ou outra ferramenta ORM, será indispensavel.

Se uma moda depender de outra moda elas se anulam? Acho que não.

Sem explicar porque modelo de negócio deve ser OO (e não funcional, estruturado ou relacional) estamos falando de outra moda, senão a maior delas!

O problema nao eh ser ou nao moda, o problema eh usar sem saber porque, só porque eh moda.

Mas a questão é que hibernate é inútil porque é desnecessário transformar em modelo de objetos na maioria das vezes. Mas em java seria uma heresia já que tudo é objeto, então cria-se frameworks para vários problemas que antes não existiam.

Esta é a sua opinião, meu amigo, e que está longe de ser opinião da maioria. Os problemas que o Hibernate tenta resolver (tenta, porque nao resolve de todo) são problemas tão antigos quanto a proposta de objetos.

Acho curioso voce apontar como inutil algo que nos auxilia, sem apresentar nada em troca para aqueles, que como eu, e diferentemente de voce, acreditam e usam os objetos.

Grinvon

Gavin King sem dúvida é uma pessoa com bastante mérito. O Hibernate pode não ser o ideal, mas é um dos frameworks que mais trouxe avanços no desenvolvimento de aplicações com ORM.

Vendo uma entrevista de Gavin na InfoQ, ele disse que Scala influenciou demais o design da Ceylon, mas que a própria Ceylon vai para um caminho diferenciado. E que a Ceylon será uma linguagem também para desenvolvedores de UI (fazedo menção ao falecido JavaFX).

Vasculhei algumas coisas sobre a linguagem e vejamos um pouco de sua definição:

Concatenação

Em várias linguagens, temos… "meu nome é " + nome + “!”

Em Ceylon será assim:

String nome;
writeLine("Meu nome é " nome "!");

Construtor

Difere de linguagens como Java e C# onde você define o escopo da classe e dentro desse escopo, define o construtor. Em Ceylon temos algo do tipo:

class MinhaClasse (String cNome, Int cIdade) {
	variable String nome := cNome;
	...

assign

Essa keyword represeta “get” e “set”, funciona para ambos os papéis.

Depois posto mais…

Adelar

O que eu mais gostava no JavaFX era o binding http://jfx.wikia.com/wiki/Introduction_to_Binding_in_JavaFX. Espero que nesta Ceylon tenha algo assim. :smiley:

Alessandro_Lazarotti

A InfoQ-BR publicou o conteúdo da entrevista com o Gavin King traduzido.
Para quem se interessar:

L

YvGa:

Esta é a sua opinião, meu amigo, e que está longe de ser opinião da maioria. Os problemas que o Hibernate tenta resolver (tenta, porque nao resolve de todo) são problemas tão antigos quanto a proposta de objetos.

Acho curioso voce apontar como inutil algo que nos auxilia, sem apresentar nada em troca para aqueles, que como eu, e diferentemente de voce, acreditam e usam os objetos.

A pergunta não foi para mim, mas isso já foi dito há algumas mensagens atrás. Uma simples API utilizando-se DBUtils já dá conta do recado. As transações são feitas no servidor de DB, onde sempre estiveram.

Hibernate é uma das razões do porque Java está perdendo o fôlego em comparação com outras linguagem. Complica demais o desenvolvimento sem acrescentar nada de valor.

Grinvon

Para quem quer ver mais detalhes sobre o Ceylon…

Criado 13 de abril de 2011
Ultima resposta 20 de abr. de 2011
Respostas 63
Participantes 27