Quais são as vantagens do Ceilão sobre Java? [fechadas]

11

Procurando pelas recentes e poderosas futuras linguagens de programação pela net, me deparei com o Ceilão. Entrei no ceylon-lang.org e diz:

O Ceilão é profundamente influenciado pelo Java. Veja bem, somos fãs de Java, mas sabemos suas limitações de dentro para fora. O Ceilão mantém os melhores bits de Java, mas melhora coisas que, em nossa experiência, são irritantes, tediosas, frustrantes, difíceis de entender ou sujeitas a erros.

Quais são as vantagens do Ceilão sobre Java?

Anuj Balan
fonte
1
Hmmmm, eu verifiquei o site deles e não encontrei uma explicação convincente sobre por que gostaria de mudar para o Ceilão do Java ... é justo, eles ainda estão na fase inicial, então talvez eles não queiram aumentar o hype cedo demais e depois decepcionar ...
Péter Török
1
Mmm, eu pensei que era mais um idioma de um programador entusiasmado (não que haja algo errado nisso: P), mas vejo que a fama de Gavin King of Hibernate está na equipe, o que é tranquilizador. Ainda assim, não vejo quem escolheria o Ceilão em relação a outros idiomas, como Scala, Groovy ou Clojure.
Andrés F.
1
@AndresF. parece que é um projeto da Red Hat. Deveria justificar alguma tração, mas, como sempre, é difícil dizer se isso será mantido enquanto o resto de nós quiser. O Java provou ser compatível com versões anteriores nos últimos 16 anos - que é difícil de superar por enquanto.

Respostas:

27

O Ceilão parece uma linguagem divertida, mas eu diria que ele tem relativamente poucas "vantagens" sobre o Java.

Eu acho que tem uma sintaxe melhor e alguns recursos de linguagem mais "modernos" - embora isso seja subjetivo e eu diria que devem ser fatores relativamente menores na escolha de uma linguagem de programação.

Fatores muito mais importantes ao escolher um idioma / plataforma para um projeto sério:

  • Isso permite que você desenvolva um paradigma melhor para o seu problema? (não - o Ceilão é claramente mais uma linguagem no espaço OOP do tipo estaticamente sobrecarregado e superlotado. Contraste com, por exemplo, o Clojure, que está direcionado ao espaço da linguagem funcional ou o Groovy, que é uma linguagem OOP JVM muito dinâmica, para que eles abordem nichos diferentes )
  • Possui um ecossistema de bibliotecas melhor? (sem chance .... Java é incomparável a esse respeito. Na melhor das hipóteses, você provavelmente acabaria usando as bibliotecas Java do Ceilão)
  • Você pode obter desenvolvedores mais qualificados? (improvável, atualmente poucas pessoas estão usando o Ceilão e, mesmo se o fizessem, haveria uma grande curva de aprendizado a subir)
  • Tem ferramentas melhores? (não - as ferramentas Java são muito abrangentes e maduras)
  • Isso o torna mais produtivo? (discutível - possui alguns recursos interessantes de linguagem produtiva, mas combinado com a curva de aprendizado e os efeitos das ferramentas, pode acabar ficando para trás)
  • Fornece melhor desempenho? (não - a JVM é extremamente bem otimizada para Java, é uma decisão difícil para qualquer outra linguagem da JVM superá-la. Scala chega perto, mas isso é depois de muitos anos de ajuste fino ...)
  • Ele suporta mais plataformas de destino? (não - é uma linguagem JVM exatamente igual à Java)
  • O código será mais sustentável? (provavelmente não - o Java resistiu ao teste do tempo aqui precisamente porque é relativamente estável, maduro e não possui muitos recursos avançados de linguagem que podem confundir futuros mantenedores)
  • Existe uma comunidade grande, ativa e prestativa? (não, pelo menos não em comparação com Java ou outras grandes linguagens da JVM, como Scala, Clojure, Groovy etc.)

No geral, eu certamente incentivaria as pessoas a experimentar o Ceilão e se divertir com ele do ponto de vista da aprendizagem.

Mas atualmente não vejo vantagens convincentes que façam com que um grande número de pessoas queira mudar para ele (ou o escolha antes de outros idiomas da JVM, como Clojure, Scala, JRuby ou Groovy).

Mikera
fonte
2
"suporta mais plataformas de destino?" SIM - você pode compilar Ceilão para Javascript.
Chochos 17/05
1
Além disso, acho que sua avaliação de alguns pontos não é realmente válida, pois o Ceilão ainda nem terminou, então não faz sentido compará-lo com outros idiomas que já existem há anos.
Chochos
5
@Chochos - você também pode compilar Java para JavaScript (o Google Web Toolkit faz isso), para que não seja nada além do que o Java faz. Concordo que o Ceilão claramente ainda não terminou, mas acho que todos os meus pontos são válidos agora e provavelmente não serão alterados nos próximos cinco anos (pelo menos, mesmo que a equipe do Ceilão termine todo o seu roteiro atual).
Mikera
1
@mikera Chochos está completamente certo. O Ceilão suporta a compilação para JS por design / nativamente. Também pode ser compilado no código nativo. Penso que esta é uma grande diferença, em seguida, "existe algum lugar uma ferramenta, por alguém, que faz o mesmo, se .."
Gundon
5
@mikera - O "existe uma grande comunidade" é, é claro, um argumento matador para cada idioma que está por vir. Dito isto, uma pequena comunidade geralmente é mais receptiva e competente. (Veja que recado referente a Java está escrito o dia todo no SO ...).
Ingo
3

Possui alguns recursos interessantes não encontrados em java:

  1. Genéricos Reified
  2. Inferência de tipo
  3. Mixins (embora isso esteja chegando no JDK8)
  4. Tipos de união e interseção (o que é muito legal e não é encontrado em muitos idiomas)
  5. "Funções de ordem superior" (embora não funcionem exatamente como objetos de primeira classe)
  6. Encerramentos (também disponíveis no JDK8)
MebAlone
fonte
3. Os métodos do Defender no JDK8 podem oferecer algumas das funcionalidades dos mixins, mas eles não se aproximam dos mixins nem das características. 4. Tipos de união e interseção são um conceito estranho para mim. Tenho problemas para entender o valor agregado. No AFAIK, você economiza algum esforço de digitação quando não precisa definir uma interface que combine duas outras interfaces. Fora isso, tenho certeza de que o Java nunca terá nenhum recurso avançado encontrado no Scala / Kotlin / Ceylon / o que for um problema para compatibilidade com versões binárias de versões anteriores. Portanto, abandonar o Java como no Ceilão tem alguma justificativa.
Olá
@OlliP Você realmente não gostaria de definir todos os tipos de união e interseção que o compilador gera. Java possui tipos de interseção, mas apenas como argumentos genéricos. Ele converte tipos de união em algum supertipo comum, o que leva a mensagens engraçadas do compilador ("& captura de?"). Os tipos de união também são usados ​​para anulabilidade, o que é bastante superior ao Java nulo e opcional.
Maaartinus 28/11
2

Até onde eu notei, uma das maiores diferenças entre o Ceilão e outras linguagens JVM "criadas por hobby" é que elas serão apoiadas pelo Red Hat / JBoss. Portanto, ele terá um conjunto de ferramentas muito bom integrado ao JBoss Tools / Developer Studio, boas interações com o JBoss AS / Gatein Portal e todo o Midleware / JEE 6 / BRMS. Portanto, você pode, de alguma forma, desenvolver aplicativos de Ceilão completos no JSF, portlets muito produtivos com um "ciclo de atualização e atualização" do PHP e outras coisas.

Como a maioria das linguagens baseadas em JVM, não a vejo como um substituto do Java para projetos que precisam de grandes bases de código, mas para alguns projetos de pequeno a médio porte, especialmente aqueles que são muito modulares (como CRUD, portlets etc.) ) Eu acho que será extremamente bem recebido no mundo da web, principalmente pelos fãs do JBoss.

Eduard Korenschi
fonte
1
"Ceilão e outras" linguagens JVM criadas por hobby. Então Scala e Kotlin são linguagens criadas por hobby?
Olá
Acho que a maneira como o IDE do Ceilão cria definições de módulo para você quando você cria um projeto do Ceilão é uma inspiração para o Jigsaw. O IDE do Ceilão facilita a modularização do usuário. Com o OSGi, é muito complicado, pois você precisa brincar com plug-ins e vários parâmetros. Acho que o pessoal da Jigsaw da Oracle notará a integração inteligente de ferramentas amigáveis ​​ao usuário no IDE do Ceilão e tentará produzir algo semelhante para o Jigsaw.
Olá
1

Eu acho que o Ceilão é interessante de várias maneiras. E talvez eles estejam certos da maneira que você precisa se afastar do Java de alguma maneira, se desejar deixar alguns problemas do Java para trás. O Ceilão parece ter muitos recursos de linguagem e espero que isso torne o compilador lento como no Scala ou, pior ainda, causar tempos de construção que não são dimensionados com o tamanho do código (consulte Dois anos de feedback da experiência do Scala ). O ritmo da equipe de desenvolvimento do Ceilão é bastante impressionante.

O Kotlin ainda é 0,6 e, a julgar pela velocidade de desenvolvimento no ano passado, eu diria cerca de um ano a partir do 1,0. Ele não possui muitos recursos de linguagem como o Ceilão (mas faltam aqueles importantes como características e métodos de extensão) e parece ser mais algum tipo de Scala sem os problemas. Acho que os tempos de construção escaláveis ​​não serão um problema. Mas o Kotlin só pode ser um Java melhor como o Groovy. Ele não pode fornecer uma saída da programação de commodities Java com dependência de XML, código padrão, manipulação de código de bytes, etc. É algo como Java e Scala corretamente. Ainda não se sabe se Kotlin ou Ceilão poderão fazer a diferença. Acho que as duas tentativas valem o esforço e desejo a ambos boa sorte.

OlliP
fonte
-2

O Ceilão está produzindo uma especificação durante seu desenvolvimento, como todas as grandes linguagens da JVM (ou seja, todas as mencionadas acima, exceto o Groovy) ...

Ceilão (http://ceylon-lang.org/documentation/1.0/spec)

Clojure (http://clojure.org/Reference)

Scala (www.scala-lang.org/docu/files/ScalaReference.pdf)

Java (http://docs.oracle.com/javase/specs/jls/se7/html/index.html)

O JRuby segue as especificações de Ruby que devem ser pagas (http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=59579).

Vorg van Geir
fonte