Domanda Quali sono le somiglianze e le differenze essenziali tra Scala e Gosu (correlate a Java)?


sto studiando Scala in questo momento, e lo hanno fatto per l'ultimo mese. Oggi, (via Twitter) Sono incappato in un altro linguaggio che sembra essere abbastanza simile, Gosu.

Quali sono le somiglianze e le differenze essenziali tra Scala e Gosu rispetto al loro genitore più influente, Java? Esistono siti Web che confrontano e contrappongono queste due lingue?


18
2018-02-12 00:27


origine


risposte:


Sì, nostro tabella di confronto linguistico è in gran parte uno scherzo. Soprattutto la riga "Non Lisp". :)

Come ha sottolineato Stephen C dal mio post originale, in generale, Gosu è più semplice di Scala, mentre Scala ha caratteristiche più avanzate di Gosu.

Scala e Gosu hanno molte somiglianze:

  • Entrambi sono tipizzati staticamente, ma utilizzare l'inferenza di tipo per ridurre il numero di caratteri

  • Entrambe le chiusure di supporto e una programmazione più funzionale

  • Entrambi forniscono funzionalità aggiuntive sulle librerie java esistenti, specialmente attorno alle raccolte.

E qui ci sono alcune differenze:

  • Gosu non supporta l'overloading generale dell'operatore

  • Gosu non fornisce supporto sintattico per Monads

  • I generici in Gosu sono più semplice che in Java (a costo di correttezza) dove sono più (o almeno altrettanto) complicati in Scala (anche se Scala fa un lavoro molto migliore con correttezza.)

  • Gosu non supporta le cose come l'argomento implicito di Scala in "closures": è più esplicito in casi come questo.

  • Le estensioni di Gosu alle librerie Java principali sono meno drammatiche. Saldiamo metodi aggiuntivi su tipi java esistenti, piuttosto che introdurre una nuova gerarchia di tipi.

C'è uno grande differenza tra Gosu e Scala dal lato della funzionalità: Gosu ha quello che chiamiamo un sistema di tipo aperto. Ciò consente alle persone di collegare risorse arbitrarie al compilatore Gosu. Come esempio: Gosu (a partire da 0.8.5) supporta i file XSD e WSDL come cittadini di prima classe:

http://lazygosu.org/xml.html

Il sistema Open Type è, dal lato delle funzionalità, il vero differenziatore tra Gosu e altri linguaggi JVM staticamente tipizzati.

Detto ciò, la sfortunata realtà in questo momento è che Scala è molto più maturo di Gosu in alcune aree, specialmente in strumenti. C'è un grande supporto IDE per Scala in tutti i principali IDE. Abbiamo un plugin Eclipse per Gosu, ma è ancora agli inizi. Allo stesso modo il nostro plugin IntelliJ è molto nuovo.

Scala ha un framework web molto completo, Lift. Non sono un grande fan del loro approccio, ma è completo e piace a molte persone.

Gosu ha anche una struttura web:

http://ronin-web.org

Adoro l'approccio di Ronin, ma poi lo farei, no? Ronin viene costruito da ragazzi che conoscono molto bene Gosu e, quindi, sfrutta un sacco di funzionalità nella lingua.

Spero possa aiutare. Realisticamente, se stessimo iniziando un progetto oggi, probabilmente andrei con Scala solo per il supporto degli strumenti. Tuttavia, se vuoi andare in un'altra direzione, in particolare se il tuo progetto riguarda servizi web o gestione XSD, Gosu potrebbe essere un linguaggio gratificante da utilizzare. A lungo termine, spero che Gosu sarà la scelta pragmatica per gli sviluppatori di JVM, ma solo il tempo lo dirà.


26
2018-02-12 04:36



Il Tabella di confronto Gosu è in qualche modo ingiusto con Scala: la transizione da Java è facile (non lo fai avere per usare tutte le fantastiche cose di Scala all'inizio), e per i generici reificati Scala non ha una soluzione perfetta, ma praticabile chiamata Manifesti. Ovviamente categorie in cui Scala brilla (modelli abbinati, tipi più alti ...)


15
2018-02-12 10:24



In questo thread sulla lista di gosu-lang, Carson Gross lo riassumeva come segue:

La risposta breve è che Gosu è più semplice di Scala (generici più semplici, sovraccarico dell'operatore limitato) ma è tipicamente un po 'più saldamente staticamente di, diciamo, Groovy.

C'è anche questo tavolo, ma è uno di quei confronti "il nostro prodotto è migliore del tuo prodotto"; cioè intrinsecamente prevenuto.


1
2018-02-12 01:23