2012-06-18 2 views
5

Mi chiedevo se ci sono alternative a Scala che tentano di offrire un sistema di tipi più potente e sintassi. Sono a conoscenza di alternative funzionali come Haskell, ma ce ne sono davvero che spingono il lato OO statico delle cose, ad esempio in aree del genere, in cui mancano Scala come classi virtuali, ereditarietà multipla completa e sintassi del costruttore più flessibile, static controllo del contratto, dipendenza del percorso più potente, MyTypes, modificatore di amici, importazioni di prima classe, o forse qualche strumento di battitura esoterico, non ho nemmeno pensato e sentito parlare.Alternative statiche multi paradigma orientate OO statiche a Scala

OO e in misura minore Static non sembrano essere alla moda in questi giorni. Tuttavia, mi sembra che il potere dei computer moderni consenta la creazione di compilatori statici ben oltre i sogni degli scrittori di compilatori nei decenni precedenti.

Presumo che non mi sia capitato di trovare nulla, non c'è alternativa che io possa voler mettere fuori uso il codice di produzione in qualsiasi momento presto. Ma anche se sono ancora molto lingue accademiche, mi piacerebbe ancora tenerle d'occhio e magari giocare con loro. Sono particolarmente alla ricerca di quelle che potrebbero essere chiamate alternative di campo sinistro a Scala. Quindi non Ceylon o Kotlin che stanno cercando di dare priorità alla semplicità rispetto al potere. Eiffel non sembra andare da nessuna parte in questi giorni. Mi sono imbattuto in gBeta e Ceasar ma non sono riuscito a capire se ci sono aree in cui si perdono a Scala. Ci sono altre possibilità?

+0

Penso che il sistema di tipo Scala non sia secondo a nessuno, ma nell'interesse di provare alternative, dare un'occhiata a [Ioke] (http://ioke.org/). – opyate

+0

@opyate Ah è dinamico. –

+2

Oops, ho letto "multi paradigm" e mi sono emozionato nel mostrarti Ioke :) – opyate

risposta

4

In una parola, no. Non ci sono alternative OO popolari che si avvicinino al sistema di tipi di Scala. Date le caratteristiche desiderate, ti suggerirei di dare un'occhiata a C++, D e Go.

Se ti senti avventuroso e non sei completamente legato all'idea di OO, dai un'occhiata a Typed Racket. Coq, Idris e Agda offrono accessori tipicamente tipizzati che sono piuttosto intriganti. O semplicemente girare su popolari linguaggi FP come Haskell, F # e OCaml.

C'è qualche ragione particolare per cui vuoi un linguaggio OO? Ancora una volta, Scala è probabilmente buono come adesso se vuoi un sistema di tipo fresco e OO.

+0

Tutto il mio tempo con C# volevo più tipi di ereditarietà e tipi di percorso dipendenti, anche se non conoscevo il nome. Dopo aver eliminato la mia applicazione di tipi di auto e iniziato a utilizzare i classici diamanti MI, mi sembra abbastanza buono. Le cose che mi piacerebbe di più sono essere in grado di creare classi che estendano tipi dipendenti dal percorso al di fuori del percorso, nel modo in cui estendi una classe generica senza chiudere la funzione di costruzione del tipo e la facile compilazione del runtime. –

+0

Attualmente mi sto concentrando su Scala; provengono dal paradigma di programmazione orientato agli oggetti e cercano di cogliere il paradigma della programmazione funzionale. Apprezzo la tua risposta alla mia domanda su http://stackoverflow.com/questions/11162743/haskell-scala-interoperability. Sono pronto a lasciarmi alle spalle le conoscenze OO. Scala può essere completamente sostituita con Haskell per ERP (Enterprise Resource Planning) come applicazione distribuita multiposizione su larga scala? – Optimight

+0

@Optimight sicuro. Potresti voler esaminare [Industrial Haskell Group] (http://industry.haskell.org/), vedere esempi di [Haskell nell'industria] (http://www.haskell.org/haskellwiki/Haskell_in_industry), e parlare con le persone sul [canale #haskell irc] (http://www.haskell.org/haskellwiki/IRC_channel) per i dettagli. –

1

D (in particolare, D versione 2, alias D2) è praticamente la lingua che stai cercando.

Ci sono video su Youtube che introducono D, IDE/plugin come Visual D (plugin per Visual C++), Mono-D (plugin per MonoDevelop) e DDT (plugin per Eclipse).

Il sito principale a dlang.org ha un riferimento completo biblioteca, sintassi del linguaggio, tutorial, forum per principianti/discussioni avanzati, ecc

Per una GUI, guarda GtkD. Credo che tu debba usare il compilatore DMD per questo, al momento.

dsource.org e github hanno molte altre librerie/codice di terze parti, ma scoprirete che la libreria principale include tutte le nozioni di base, come parser JSON, parser XML, ecc., E il linguaggio principale ha molte cose hai bisogno di built-in, come hashmaps, array dinamici, design per contratto, template/espressioni valutati staticamente, ecc.

Con D2, puoi collegare direttamente a C e C++ e associare a codice Python/LUA, ecc. È capace come un linguaggio di sistema (puoi scrivere un sistema operativo con esso, se vuoi), ma funziona anche come un moderno, di alto livello, elegante, rapido linguaggio applicativo con supporto per cose come il codice concorrente e sicuro.

Tutto sommato, è molto impressionante.Triste che non è più popolare, dato che Scala è un maiale lento della memoria per confronto;)