Quali sono i vantaggi di Ceylon su Java? [chiuso]


11

Alla ricerca dei recenti e potenti imminenti linguaggi di programmazione su rete, mi sono imbattuto in Ceylon. Sono arrivato su ceylon-lang.org e dice:

Ceylon è profondamente influenzato da Java. Vedete, siamo fan di Java, ma ne conosciamo i limiti. Ceylon mantiene le parti migliori di Java ma migliora le cose che nella nostra esperienza sono fastidiose, noiose, frustranti, difficili da capire o prive di bug.

Quali sono i vantaggi di Ceylon su Java?


1
Hmmmm, ho controllato sul loro sito e non ho trovato alcuna spiegazione convincente del perché vorrei passare a Ceylon da Java ... abbastanza giusto, sono ancora nella fase iniziale, quindi forse non vogliono aumentare l'hype troppo presto e poi deludi ...
Péter Török,

1
Mmm, ho pensato che fosse un altro linguaggio di un programmatore troppo entusiasta (non che ci sia qualcosa di sbagliato in questo: P), ma vedo che la fama di Gavin King of Hibernate è nella squadra, il che è rassicurante. Tuttavia, non vedo chi sceglierebbe Ceylon rispetto ad altre lingue come Scala, Groovy o Clojure.
Andres F.


1
@AndresF. sembra che sia un progetto Red Hat. Dovrebbe giustificare un po 'di trazione, ma come sempre è difficile dire se questo sarà mantenuto fino a quando il resto di noi lo vorrà. Java ha dimostrato di essere retrocompatibile negli ultimi 16 anni - per ora è difficile da battere.

Risposte:


27

Ceylon sembra un bel linguaggio divertente ma direi che ha relativamente pochi "vantaggi" rispetto a Java.

Penso che abbia una sintassi migliore e alcune caratteristiche del linguaggio più "moderne" - sebbene questo sia soggettivo e direi che dovrebbero essere fattori relativamente minori nella scelta di un linguaggio di programmazione.

Fattori molto più importanti nella scelta di una lingua / piattaforma per un progetto serio:

  • Ti consente di sviluppare un paradigma migliore per il tuo problema? (no - Ceylon è chiaramente ancora un'altra lingua nello spazio OOP Java affollato tipicamente sovraffollato. Contrasto con ad esempio Clojure che si rivolge allo spazio linguistico funzionale o Groovy che è un linguaggio JVM OOP molto dinamico, quindi si stanno indirizzando a nicchie diverse )
  • Ha un ecosistema di biblioteche migliore? (nessuna possibilità .... Java non ha eguali in questo senso. Nel migliore dei casi probabilmente finiresti per usare le librerie Java di Ceylon)
  • Puoi ottenere sviluppatori più abili? (è improbabile che poche persone stiano attualmente usando Ceylon e anche se lo facessero ci sarebbe una grande curva di apprendimento da scalare)
  • Ha strumenti migliori? (no - Gli strumenti Java sono molto completi e maturi)
  • Ti rende più produttivo? (discutibile - ha alcune caratteristiche linguistiche produttive interessanti, ma in combinazione con la curva di apprendimento e gli effetti degli strumenti potrebbe effettivamente finire dietro)
  • Fornisce prestazioni migliori? (no - JVM è estremamente ben ottimizzato per Java, è una dura chiamata per qualsiasi altro linguaggio JVM per batterlo. Scala si avvicina, ma dopo molti anni di perfezionamento ...)
  • Supporta più piattaforme target? (no - è un linguaggio JVM quindi esattamente uguale a Java)
  • Il codice sarà più gestibile? (probabilmente no - Java ha superato la prova del tempo proprio perché è relativamente stabile, maturo e non ha molte funzionalità linguistiche avanzate che potrebbero confondere i futuri manutentori)
  • Esiste una community ampia, attiva e disponibile? (no, almeno non rispetto a Java o agli altri grandi linguaggi JVM come Scala, Clojure, Groovy ecc.)

Nel complesso, incoraggerei sicuramente le persone a sperimentare con Ceylon e divertirmi da una prospettiva di apprendimento.

Ma al momento non vedo alcun avvincente vantaggio che induca un gran numero di persone a passare ad esso (o sceglierlo prima di altre lingue JVM come Clojure, Scala, JRuby o Groovy).


2
"supporta più piattaforme target?" SÌ: è possibile compilare Ceylon in Javascript.
Chochos,

1
Inoltre, penso che la tua valutazione di alcuni punti non sia davvero valida poiché Ceylon non è ancora finito, quindi non ha senso confrontarlo con altre lingue che esistono da anni.
Chochos,

5
@Chochos: puoi anche compilare Java in JavaScript (Google Web Toolkit fa questo) quindi non è nulla in aggiunta a ciò che fa Java. Sono d'accordo che Ceylon non è chiaramente finito, tuttavia penso che tutti i miei punti siano validi ora e che difficilmente cambieranno nei prossimi 5 anni (anche se il team Ceylon finirà tutto il loro attuale percorso).
Mikera,

1
@mikera Chochos ha perfettamente ragione. Ceylon supporta la compilazione in JS di progettazione / nativamente. Può anche essere compilato in codice nativo. Penso che questa sia una grande differenza quindi "c'è da qualche parte uno strumento, da parte di qualcuno, che fa lo stesso, se .."
Gundon,

5
@mikera - Il "c'è una grande comunità" è, ovviamente, un argomento killer per ogni lingua imminente. Detto questo, una piccola comunità è spesso più reattiva e competente. (Guarda quali frammenti riguardanti Java sono scritti tutto il giorno lì a SO ....)
Ingo

3

Ha alcune belle funzionalità che non si trovano in Java:

  1. Generici reificati
  2. Inferenza di tipo
  3. Mixin (anche se questo sta arrivando in JDK8)
  4. Tipi di unione e intersezione (che è davvero interessante e non si trovano in molte lingue)
  5. "Funzioni di ordine superiore" (anche se non abbastanza come oggetti di prima classe)
  6. Chiusure (anche in arrivo nel JDK8)

3. I metodi di difesa in JDK8 possono offrire alcune delle funzionalità dei mixin, ma non si avvicinano né ai mixin né ai tratti. 4. I tipi di unione e di intersezione sono un concetto strano per me. Ho problemi a capire il valore aggiunto. AFAIK ti risparmia solo qualche sforzo di battitura quando non devi definire un'interfaccia che combini altre due interfacce. A parte questo, sono sicuro che Java non troverà mai alcuna funzionalità avanzata in Scala / Kotlin / Ceylon / qualunque sia un problema per la compatibilità binaria all'indietro. Abbandonare Java come con Ceylon ha quindi qualche giustificazione.
OlliP,

@OlliP Non vorresti davvero definire tutti i tipi di unione e intersezione generati dal compilatore. Java ha tipi di intersezione, ma solo come argomenti generici. Converte i tipi di unione in un supertipo comune, che porta a divertenti messaggi del compilatore ("e cattura di?"). I tipi di unione vengono anche usati per nullabilità, che è abbastanza superiore sia a null sia a Java opzionale.
maaartinus,

2

Per quanto ho notato, una delle maggiori differenze tra Ceylon e altre lingue JVM "create da hobby" è che sarà supportato da Red Hat / JBoss. Quindi otterrà un set di strumenti davvero bello integrato in JBoss Tools / Developer Studio, buone interazioni con JBoss AS / Gatein Portal e tutto il Midleware / JEE 6 / BRMS. Quindi, in alcuni casi, potresti sviluppare applicazioni Ceylon a pieno titolo in JSF, portlet molto produttivi con "cicli di modifica e aggiornamento" PHP e cosa no.

Come la maggior parte dei linguaggi basati su JVM, non lo vedo come un sostituto di Java per progetti che necessitano di enormi basi di codice, ma per alcuni progetti di piccole e medie dimensioni, specialmente una volta che sono molto modulari (come CRUD ad alta intensità, portlet, ecc. ). Penso che sarà accolto molto bene nel mondo web, specialmente dai fan di JBoss.


1
"Ceylon e altre" lingue JVM "create da hobby. Quindi Scala e Kotlin sono lingue create da hobby?
OlliP,

Penso che il modo in cui l'IDE di Ceylon crei le definizioni dei moduli per te quando crei un progetto Ceylon è una fonte d'ispirazione per Jigsaw. L 'IDE di Ceylon semplifica la modularizzazione per l'utente. Con OSGi è molto ingombrante in quanto devi giocare con plugin Maven e vari parametri. Suppongo che il personale di Jigsaw di Oracle noterà l'integrazione intelligente degli strumenti intuitivi nell'IDE di Ceylon e proverà a produrre qualcosa di simile per Jigsaw.
OlliP

1

Penso che Ceylon sia interessante in molti modi. E forse sono proprio nel modo in cui devi allontanarti da Java in qualche modo se vuoi lasciarti alle spalle alcuni problemi di Java. Ceylon sembra avere alcune funzionalità linguistiche e spero che questo rallenti il ​​compilatore come in Scala o, peggio ancora, causi tempi di costruzione che non si adattano alle dimensioni del codice (vedi Due anni di feedback sull'esperienza di Scala ). Il ritmo del team di sviluppo di Ceylon è piuttosto impressionante.

Kotlin è ancora 0,6 e, a giudicare dalla sua velocità di sviluppo nell'ultimo anno, direi a circa un anno dall'1,0. Non ha molte caratteristiche linguistiche come Ceylon (ma quelle importanti mancano come tratti e metodi di estensione) e sembra essere più una sorta di Scala senza i suoi problemi. Immagino che i tempi di costruzione scalabili non saranno un problema. Ma Kotlin può essere solo un Java più bello come Groovy. Non può fornire una via d'uscita dalla programmazione delle merci Java con dipendenza XML, codice boilerplate, manipolazione del codice byte, ecc. È qualcosa come Java e Scala fatto bene. Resta da vedere se Kotlin o Ceylon saranno in grado di fare la differenza. Penso che entrambi i tentativi valgano lo sforzo e auguro a entrambi buona fortuna.


-2

Ceylon sta producendo una specifica durante il suo sviluppo, come tutti i grandi linguaggi JVM (cioè tutti quelli sopra menzionati tranne Groovy) ...

Ceylon (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 segue le specifiche di Ruby che devono essere pagate (http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=59579).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.