2013-04-11 12 views
14

Provenendo da Scala (e da Akka), di recente ho iniziato a studiare altri linguaggi progettati pensando al calcolo distribuito, vale a dire Erlang (e un pezzettino di Oz e Bloom). Sia Erlang che Oz sono digitati dinamicamente e, se ricordo male (cercherò di trovare il link), le persone hanno provato ad aggiungere tipi a Erlang e sono riusciti a digitare una buona porzione di esso, ma non sono riusciti a forzare il sistema per adattarlo ultimo bit?Sistemi di dattilografia e programmazione dinamici

Oz, sebbene sia un linguaggio di ricerca, è sicuramente interessante per me, ma è anche digitato dinamicamente.

L'implementazione corrente di Bloom è in Ruby ed è pertanto digitata in modo dinamico.

Per quanto ne so, Scala (e suppongo che Haskell, anche se credo che sia stato inizialmente costruito più come un'esplorazione in puri linguaggi funzionali pigri rispetto ai sistemi distribuiti) è l'unico linguaggio che è tipizzato staticamente e offre un livello di linguaggio astrazioni (per mancanza di un termine migliore) nel calcolo distribuito.

Mi chiedo se ci siano vantaggi intrinseci della digitazione dinamica rispetto alla tipizzazione statica, , in particolare nel contesto della fornitura di astrazioni a livello di linguaggio per la programmazione di sistemi distribuiti.

+1

L'attuale implementazione di Akka è attualmente non tipizzata (utilizza Any per i messaggi). L'avvento delle macro in Scala 2.10 semplifica l'implementazione di una versione tipizzata. Vedi questo video da nescala 2013: http://nescala.org/#t-14537068 –

risposta

14

Non proprio. Ad esempio, lo stesso gruppo che ha inventato Oz in seguito ha lavorato su Alice ML, un progetto la cui missione era ripensare Oz come linguaggio funzionale e scritto. E anche se è rimasto un progetto di ricerca, direi che è stato sufficiente una dimostrazione del concetto per dimostrare che la stessa funzionalità di base può essere supportata in tale contesto.

(Full disclosure:. Ero uno studente di dottorato in quel gruppo, al momento, e il sistema di tipi di Alice ML era la mia tesi)

Edit: Il problema con l'aggiunta di tipi di Erlang non è la distribuzione, è semplicemente un'istanza del problema generale che aggiunge tipi a una lingua dopo che il fatto non funziona mai bene. D'altra parte, c'è ancora Dialyzer per Erlang.

Modifica 2: dovrei menzionare che c'erano altri progetti di ricerca interessanti per i linguaggi distribuiti tipizzati, ad es. Acute, con un ambito simile a Alice ML o ML5, che utilizzava tipi modali per consentire un controllo più efficace delle caratteristiche di mobilità. Ma sono sopravvissuti solo sotto forma di documenti.

+0

Alice ML sembra certamente interessante, anche se sembra che non ci sia stata alcuna attività dal 2007? Sai se ci sarà del lavoro futuro su di esso? Sembra che Oz (in particolare Mozart) stia progettando una versione 2 della piattaforma, almeno secondo l'attività di GitHub. – adelbertc

+0

@adelbertc, Alice è ancora utilizzata nell'insegnamento alle matricole, ma purtroppo non sono a conoscenza di piani per ulteriori sviluppi. Re Mozart 2: la maggior parte del consorzio originale non è più coinvolto, e non sono sicuro che ci sia anche una linea temporale concreta. –

+0

(affrontando anche la tua seconda modifica) ah, queste lingue sembrano tutte interessanti, ma sfortunatamente tutte sembrano essere cadute nella stessa sorte in cui ho visto cadere altri progetti di ricerca .. forse Bloom sarà il prossimo concorrente? – adelbertc

10

Non ci sono vantaggi intrinseci della digitazione dinamica rispetto alla tipizzazione statica per i sistemi distribuiti. Entrambi hanno i loro vantaggi e svantaggi in generale.

Erlang (Akka è ispirato al modello di attore di Erlang) è digitato in modo dinamico. Dynamic typing in Erlang è stato scelto storicamente per ragioni semplici; quelli che implementarono Erlang inizialmente provenivano principalmente da lingue dinamicamente tipizzate, in particolare Prolog, e come tali, avere la dinamica di Erlang era l'opzione più naturale per loro. Erlang è stato costruito pensando al fallimento.

La tipizzazione statica aiuta a cogliere molti errori durante il tempo di compilazione stesso piuttosto che in fase di esecuzione come nel caso della digitazione dinamica. La tipizzazione statica è stata provata in Erlang ed è stato un fallimento. Ma la digitazione dinamica aiuta nella prototipazione più rapida. Check this link for reference which talks a lot about the difference.

Soggettivamente, preferirei pensare alla soluzione/all'algoritmo di un problema piuttosto che pensare al tipo di ciascuna variabile che uso nell'algoritmo. Aiuta anche nel rapido sviluppo.

Questi sono alcuni collegamenti che potrebbero aiutare

BenefitsOfDynamicTyping

static-typing-vs-dynamic-typing

BizarroStaticTypingDebate

+1

potresti per favore approfondire "Erlang è stato costruito pensando al fallimento"? –

+4

Erlang si basa sul concetto che l'errore in uno dei componenti non dovrebbe influire sull'intero sistema. Errori di programmazione, guasti hardware o guasti di rete, ecc. Sono tenuti in considerazione: il linguaggio include funzionalità come albero di supervisione, monitoraggio dei processi di Erlang, ecc. Che consentiranno il ripristino da errori, la distribuzione a nodi diversi, la gestione di errori imprevisti e l'interruzione dell'attività. Sebbene la maggior parte dei linguaggi e dei sistemi di tipi mirano a rendere un programma privo di errori, Erlang presume che gli errori si verifichino comunque e si occuperà di coprire questi casi.Ref: http: //learnyousomeerlang.com/types-or-lack-thereof – Vinod

0

Cloud Haskell sta maturando in fretta, staticamente tipizzato, e impressionante. L'unica cosa che non presenta è lo scambio di hot code in stile Erlang - questa è la vera "caratteristica killer" dei sistemi distribuiti tipizzati dinamicamente (l '"ultimo bit" che ha reso Erlang difficile da scrivere in modo statico).

+0

Quando I sembrava di recente, inoltre non includeva i supervisori, che sono una delle migliori idee che Erlang porta in tavola. È cambiato di recente? Ovviamente, dopo averlo presentato, ciò non implica che i linguaggi dinamici abbiano un vantaggio qui - Akka li fornisce per Scala (e Java), quindi chiaramente non c'è alcuna limitazione intrinseca. –

+1

La supervisione viene fornita nel cloud haskell, non dalla libreria del processo distribuito ma dalla sua piattaforma di processo distribuita super-impostata. Questo non è stato ancora rilasciato per hackage, ma fornisce supporto per gen-server e supervisori insieme ad altre utili astrazioni prese in prestito da OTP. La prima uscita pubblica è prevista per questa estate - aggiornerò questo thread quando succederà. – hyperthunk

+0

@hyperthunk: fantastico, buono a sapersi! Stavo leggendo il giornale Cloud Haskell l'altro giorno e mancava la supervisione di stile di Erlang, in attesa dell'uscita estiva. – adelbertc

Problemi correlati