Quels sont les avantages de Ceylan sur Java? [fermé]

11

À la recherche des langages de programmation récents et puissants à venir sur Internet, je suis tombé sur Ceylan. Je suis tombé sur ceylon-lang.org et ça dit:

Ceylan est profondément influencé par Java. Vous voyez, nous sommes fans de Java, mais nous connaissons ses limites à l'envers. Ceylan conserve les meilleurs morceaux de Java mais améliore les choses qui selon notre expérience sont ennuyeuses, fastidieuses, frustrantes, difficiles à comprendre ou sujettes aux bogues.

Quels sont les avantages de Ceylan sur Java?

Anuj Balan
la source
1
Hmmmm, j'ai vérifié sur leur site et je n'ai trouvé aucune explication convaincante pour expliquer pourquoi je voudrais passer à Ceylan de Java ... assez bien, ils sont encore au début, alors peut-être qu'ils ne veulent pas augmenter le battage médiatique trop tôt et puis décevoir ...
Péter Török
1
Mmm, je pensais que c'était un autre langage d'un programmeur trop enthousiaste (pas qu'il y ait quelque chose de mal à cela: P), mais je vois que la renommée de Gavin King of Hibernate est dans l'équipe, ce qui est rassurant. Pourtant, je ne vois pas qui choisirait Ceylan par rapport à d'autres langues telles que Scala, Groovy ou Clojure.
Andres F.
1
@AndresF. on dirait que c'est un projet Red Hat. Cela devrait justifier une certaine traction, mais comme toujours, il est difficile de dire si cela sera maintenu aussi longtemps que le reste d'entre nous le voudra. Java s'est avéré être rétrocompatible au cours des 16 dernières années, ce qui est difficile à battre pour l'instant.

Réponses:

27

Ceylan semble être un joli langage amusant, mais je dirais qu'il a relativement peu d '"avantages" par rapport à Java.

Je pense qu'il a une syntaxe plus agréable et des fonctionnalités de langage plus "modernes" - bien que cela soit subjectif et je dirais que les facteurs devraient être relativement mineurs dans le choix d'un langage de programmation.

Facteurs beaucoup plus importants lors du choix d'une langue / plateforme pour un projet sérieux:

  • Cela vous permet-il de développer un meilleur paradigme pour votre problème donné? (non - Ceylan est clairement encore un autre langage dans l'espace OOP de type Java surpeuplé statiquement. Contrairement à par exemple Clojure qui cible l'espace de langage fonctionnel ou Groovy qui est un langage JVM OOP très dynamique donc ils s'adressent à des niches différentes )
  • At-il un meilleur écosystème de bibliothèques? (aucune chance .... Java est inégalé à cet égard. Au mieux, vous finirez probablement par utiliser les bibliothèques Java de Ceylan)
  • Pouvez-vous obtenir des développeurs plus qualifiés? (peu probable, peu de gens utilisent actuellement Ceylan et même s'ils le faisaient, il y aurait une grande courbe d'apprentissage à grimper)
  • At-il de meilleurs outils? (non - les outils Java sont très complets et matures)
  • Cela vous rend-il plus productif? (discutable - il a de belles fonctionnalités de langage productif, mais combiné avec la courbe d'apprentissage et les effets d'outils, il pourrait en fait se retrouver derrière)
  • Fournit-il de meilleures performances? (non - la JVM est extrêmement bien optimisée pour Java, c'est un appel difficile à tout autre langage JVM pour le battre. Scala se rapproche, mais c'est après de nombreuses années de réglage fin ...)
  • Prend-il en charge davantage de plateformes cibles? (non - c'est un langage JVM donc exactement le même que Java)
  • Le code sera-t-il plus facile à maintenir? (probablement pas - Java a résisté à l'épreuve du temps ici précisément parce qu'il est relativement stable, mature et n'a pas beaucoup de fonctionnalités de langage avancées qui pourraient dérouter les futurs responsables)
  • Y a-t-il une grande communauté active et serviable? (non, du moins pas comparé à Java ou aux autres gros langages JVM comme Scala, Clojure, Groovy etc.)

Dans l'ensemble, j'encouragerais certainement les gens à expérimenter Ceylan et à s'amuser avec dans une perspective d'apprentissage.

Mais je ne vois actuellement aucun avantage convaincant qui inciterait un grand nombre de personnes à y basculer (ou à le choisir avant d'autres langages JVM comme Clojure, Scala, JRuby ou Groovy).

mikera
la source
2
"prend-il en charge davantage de plateformes cibles?" OUI - vous pouvez compiler Ceylan en Javascript.
Chochos
1
De plus, je pense que votre évaluation de certains points n'est pas vraiment valable car Ceylan n'est même pas encore terminé, il est donc inutile de le comparer à d'autres langues qui existent depuis des années.
Chochos
5
@Chochos - vous pouvez également compiler Java en JavaScript (Google Web Toolkit le fait) donc ce n'est rien en plus de ce que Java fait. Je suis d'accord que Ceylan n'est clairement pas terminé, mais je pense que tous mes points sont valables maintenant et ne changeront probablement pas au moins dans les 5 prochaines années (même si l'équipe de Ceylan a terminé toute sa feuille de route actuelle).
mikera
1
@mikera Chochos a tout à fait raison. Ceylan prend en charge la compilation en JS par conception / natif. Il peut également être compilé en code natif. Je pense que c'est une grande différence alors "il y a quelque part un outil, par quelqu'un, qui fait la même chose, si .."
Gundon
5
@mikera - Le "y at-il une grande communauté" est, bien sûr, un argument de tueur pour chaque langue à venir. Cela étant dit, une petite communauté est souvent plus réactive et compétente. (Regardez quel morceau concernant Java est écrit toute la journée là-bas à SO ....)
Ingo
3

Il a de belles fonctionnalités introuvables en java:

  1. Génériques réifiés
  2. Inférence de type
  3. Mixins (bien que cela arrive en JDK8)
  4. Types d'union et d'intersection (ce qui est vraiment cool et introuvable dans de nombreuses langues)
  5. "Fonctions d'ordre supérieur" (bien qu'elles ne fonctionnent pas tout à fait comme des objets de première classe)
  6. Fermetures (également en JDK8)
MebAlone
la source
3. Les méthodes Defender dans JDK8 peuvent fournir certaines des fonctionnalités des mixins, mais elles ne sont pas proches des mixins ni des traits. 4. Les types d'union et d'intersection sont un concept étrange pour moi. J'ai du mal à comprendre la valeur ajoutée. AFAIK, il vous permet d'économiser un peu d'effort de frappe lorsque vous n'avez pas à définir une interface qui combine deux autres interfaces. En dehors de cela, je suis sûr que Java n'aura jamais de fonctionnalité avancée trouvée dans Scala / Kotlin / Ceylon / quoi que ce soit qui soit un problème de compatibilité descendante binaire. L'abandon de Java comme à Ceylan a donc une justification.
OlliP
@OlliP Vous ne voudriez vraiment pas définir tous les types d'union et d'intersection générés par le compilateur. Java a des types d'intersection, mais uniquement comme arguments génériques. Il convertit les types d'union en un supertype commun, ce qui conduit à des messages de compilation amusants ("& capture of?"). Les types d'union sont également utilisés pour la nullité, qui est assez supérieure à la fois à la valeur Java nulle et à l'option.
maaartinus
2

D'après ce que j'ai remarqué, l'une des plus grandes différences entre Ceylan et les autres langages JVM "créés par les loisirs" est qu'il sera soutenu par Red Hat / JBoss. Donc, ça va avoir un ensemble d'outils vraiment sympa intégré dans JBoss Tools / Developer Studio, de bonnes interactions avec JBoss AS / Gatein Portal et tous les Midleware / JEE 6 / BRMS. Donc, vous pourriez à un moment donné développer des applications Ceylan à part entière dans JSF, des portlets très productifs avec un PHP "changer et rafraîchir les cycles" et quoi de plus.

Comme la plupart des langages basés sur JVM, je ne le vois pas comme un remplacement de Java pour les projets nécessitant d'énormes bases de code, mais pour certains projets de petite à moyenne taille, en particulier une fois qui sont très modulaires (comme CRUD-intensive, portlets, etc. ). Je pense que ça va être extrêmement bien reçu dans le monde du web, en particulier par les fans de JBoss.

Eduard Korenschi
la source
1
"Ceylan et autres" langages JVM "créés par les loisirs". Alors Scala et Kotlin sont des langages créés par passe-temps?
OlliP
Je pense que la façon dont l'IDE de Ceylan crée des définitions de modules pour vous lorsque vous créez un projet Ceylan est une inspiration pour Jigsaw. Ils Ceylon IDE, il est facile pour l'utilisateur d'avoir la modularisation. Avec OSGi, c'est très lourd car vous devez jouer avec les plugins maven et divers paramètres. Je suppose que les gens de Jigsaw chez Oracle prendront note de l'intégration d'outils conviviaux intelligents dans l'IDE de Ceylan et essaieront de produire quelque chose de similaire pour Jigsaw.
OlliP
1

Je pense que Ceylan est intéressant à bien des égards. Et peut-être qu'ils ont raison dans la manière dont vous devez vous écarter de Java à certains égards si vous souhaitez laisser certains problèmes de Java derrière vous. Ceylan semble avoir un certain nombre de fonctionnalités de langage et j'espère que cela rend le compilateur lent comme dans Scala ou pire, car les temps de construction ne correspondent pas à la taille du code (voir Deux ans de retour d'expérience Scala ). Le rythme de l'équipe de développement de Ceylan est assez impressionnant.

Kotlin est toujours à 0,6 et, à en juger par leur vitesse de développement au cours de la dernière année, je dirais à environ un an de 1,0. Il n'a pas beaucoup de fonctionnalités de langage comme Ceylan (mais ces importantes java manquent comme les traits et les méthodes d'extension) et semblent être plus une sorte de Scala sans les problèmes. Je suppose que les temps de construction évolutifs ne seront pas un problème. Mais Kotlin ne peut être qu'un Java plus agréable comme Groovy. Il ne peut pas fournir un moyen de sortir de la programmation Java avec la dépendance XML, le code passe-partout, la manipulation de code d'octet, etc. C'est quelque chose comme Java et Scala bien fait. Reste à voir si Kotlin ou Ceylan pourront faire la différence. Je pense que les deux tentatives en valent la peine et je leur souhaite bonne chance.

OlliP
la source
-2

Ceylan produit une spécification au cours de son développement, comme tous les gros langages JVM (c'est-à-dire tous ceux mentionnés ci-dessus sauf Groovy) ...

Ceylan (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)

JRuby suit les spécifications de Ruby qui doivent être payées (http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=59579).

Vorg van Geir
la source