Haskell vs Erlang per i servizi web


30

Sto cercando di iniziare un progetto sperimentale usando un linguaggio funzionale e sto cercando di decidere tra Erlang e Haskell, ed entrambi hanno alcuni punti che mi piacciono molto.

Mi piace il sistema di tipo forte e la purezza di Haskell. Ho la sensazione che renderà più facile scrivere codice veramente affidabile. E penso che il potere di Haskell renderà molto più facile ciò che voglio fare.

Sul lato negativo ho la sensazione che alcuni dei Frameworks per fare cose sul web su Haskell come Yesod non siano così avanzati come le loro controparti Erlang.

Mi piace piuttosto l'approccio Erlang ai thread e alla tolleranza agli errori. Ho la sensazione che la scalabilità di Erlang potrebbe essere un grande vantaggio.

Il che porta alla mia domanda: qual è stata l'esperienza della gente nell'implementazione di backend di applicazioni Web sia in Haskell che in Erlang. Ci sono pacchetti per Haskell per fornire alcuni dei fili e attori leggeri che uno ha in Erlang?


4
Se non si specificano i requisiti, è impossibile dirlo. Lancia una moneta o qualcosa del genere.
Vitor Py,

1
Non ho prove di questa conclusione, ma l'uso di Erlang da parte di Facebook mi indica che è sia potente che affidabile.
Matteo Leggi il

1
@Matthew: Facebook usa Erlang per il suo sistema di chat, presumibilmente per le sue qualità massicciamente parallele.
Robert Harvey,

3
Sì, usa Lisssssssp .
Segna C

8
In una vecchia rivista di Commodore 64, avevano un articolo su lingue false. Il migliore era "Lithp", che era esattamente come Lisp, tranne per il fatto che il carattere "s" era escluso. Ciò ha costretto tutti gli sviluppatori di "lithp" a sostituire una "th" con la "s". :)
Berin Loritsch,

Risposte:


17

L'unica domanda che ho è cosa sta facendo il tuo servizio web? Se il servizio web è veramente un problema funzionale, allora Haskell si adatterà meglio.

Erlang non è necessariamente un linguaggio funzionale. È un linguaggio procedurale con un modello di esecuzione molto forte per sistemi fortemente paralleli. È stato progettato per il settore delle telecomunicazioni e si adatterebbe perfettamente per rispondere alle richieste del servizio 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 buona dose di pattern matching e applica 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 la macchina Wayback. Il file originale è stato rimosso)


Sarà qualcosa che assomiglia molto a un social network. A questo punto c'è una probabilità del 90% che venga fatto in haskell.
Zachary K,

12
Erlang è un linguaggio funzionale, non un linguaggio procedurale. Ha un ottimo supporto per la corrispondenza dei modelli ed è una corrispondenza dei modelli unica per bit, che è molto utile quando si eseguono servizi di rete.
Jonas,

@Berin come è sempre il problema con i collegamenti esterni, ora è morto.
thoshoshman,

@thecoshman, Le mie scuse ... Dopo 3 anni non riesco nemmeno a ricordare i contenuti di quello che era nella pagina.
Berin Loritsch,

Nessun problema: D ¬_¬ non lasciare mai che accada di nuovo. (prima che la gente impazzisca, sto scherzando)
signore

11

Tra le due citate, sicuramente Haskell è accademico, mentre Erlang è utilizzato in progetti di alta scalabilità nella vita reale. Quindi tra i due servizi web sceglierei Erlang.

Ma direi che hai una terza scelta: Scala , una lingua fortemente influenzata sia da Haskell che da Erlang. Viene utilizzato per creare servizi Web di prim'ordine come Twitter o Foursquare. C'è anche Lift , un framework web ispirato a Rails e Django, sebbene con un approccio un po 'diverso e più funzionale. Foursquare sta usando Lift.


2
Accetto la tua risposta, fatta eccezione per l'ultima frase. L'ascensore è molto diverso da Rails. Rails è modulare, Lift è monolitico. Rails è un framework MVC, Lift no. Rails è orientato agli oggetti, Lift è più funzionale.
dbyrne,

@dbyrne: ok, modificato
vartec

3
Il problema con Scala per i servizi Web è che i server delle applicazioni Java più diffusi scalano davvero male rispetto ai server scritti in Erlang e Haskell.
Jonas,

1
@Jonas: c'è ad esempio vert.x vertx.io
vartec il

Lift non è più il quadro di fatto per Scala. E 'ora di gioco , che è completamente MVC e apolidi. Sono d'accordo con la risposta. Scala è una scelta migliore per il mondo reale. È più facile ottenere sviluppatori Scala che Erlang e Haskell.
Jus12

7

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

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

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


è per un progetto tipo di lavoro. Penso che probabilmente sarà Erlang ma potrei fare haskell.
Zaccaria K,
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.