Haskell vs Erlang per i servizi web

29

Sto cercando di avviare un progetto sperimentale usando un linguaggio funzionale e sto cercando di decidere tra l'Erlang e Haskell, ed entrambi hanno alcuni punti che mi piace davvero.

Mi piace il sistema di tipo strong di Haskell e la sua purezza. Ho la sensazione che renderà più facile scrivere codice veramente affidabile. E penso che il potere di Haskell renderà alcune delle cose che voglio fare molto più facilmente.

Dal lato negativo ho la sensazione che alcuni dei framework per fare roba web su Haskell come Yesod non siano così avanzati come i loro contatori Erlang.

Mi piace l'approccio di Erlang ai thread e alla tolleranza ai guasti. Ho la sensazione che la scalabilità di Erlang potrebbe essere un vantaggio importante.

Che porta alla mia domanda, che cosa ha avuto l'esperienza delle persone nell'implementazione di back-end di applicazioni Web sia in Haskell che in Erlang. Ci sono pacchetti per Haskell per fornire alcuni dei thread e degli attori leggeri che si hanno in Erlang?

    
posta Zachary K 06.03.2011 - 13:29
fonte

3 risposte

16

L'unica domanda che ho è che cosa sta facendo il tuo servizio web? Se il servizio web è davvero un problema funzionale, allora Haskell sarà più adatto.

Erlang non è necessariamente un linguaggio funzionale. È un linguaggio procedurale con un modello di esecuzione molto strong per sistemi massivamente paralleli. È stato progettato per l'industria delle telecomunicazioni, e sarebbe sicuramente perfetto per rispondere alle richieste di servizi web.

Vedi questa pagina * per una panoramica delle differenze tra programmazione procedurale e funzionale. (Mi scuso in anticipo per il brutto nero sulla pagina ciano).

Se il tuo servizio web sta eseguendo una discreta quantità di corrispondenza e applicazione delle regole, allora Haskel è la tua scelta. Se desideri solo un'infrastruttura scalabile che non sia troppo diversa dalle lingue che probabilmente conosci già, scegli Erlang.

(* collegamento tramite Wayback machine. Il file originale è stato rimosso)

    
risposta data 17.03.2011 - 18:15
fonte
11

Tra i due che hai menzionato, Haskell è decisamente accademico, mentre Erlang è utilizzato in progetti di scalabilità ad alta risoluzione. Quindi, tra i due per i servizi web, sceglierei Erlang.

Ma direi che hai una terza scelta: Scala , una lingua che è pesante influenzato sia da Haskell che da Erlang. È usato per creare servizi web di prima qualità come Twitter o Foursquare. Esiste anche Lift , un framework web ispirato a Rails e Django, sebbene con un approccio leggermente diverso e più funzionale. Foursquare sta usando Lift.

    
risposta data 16.03.2011 - 13:47
fonte
7

Di solito dico: "impara le cose il più lontano possibile dalla tua zona di conforto, ti renderà un programmatore migliore anche se non lo usi mai nella pratica".

In questo caso, probabilmente potrebbe significare Haskell; ma Erlang non sta diventando solo quasi socialmente accettabile; ma i punti principali (processi di luce, passaggio di messaggi, enorme scalabilità) stanno arrivando su molte altre piattaforme "pratiche", quindi le lezioni apprese hanno una grande e immediata applicabilità su un lavoro più "reale".

il mio consiglio: se è per divertimento, fai Haskell. se è per l'allenamento, vai Erlang.

    
risposta data 13.03.2011 - 15:58
fonte

Leggi altre domande sui tag