C'è molto clamore intorno a Haskell, tuttavia, è difficile ottenere informazioni su come viene utilizzato nelle applicazioni del mondo reale. Quali sono i progetti / gli usi più popolari di Haskell e perché eccelle nel risolvere questi problemi?
C'è molto clamore intorno a Haskell, tuttavia, è difficile ottenere informazioni su come viene utilizzato nelle applicazioni del mondo reale. Quali sono i progetti / gli usi più popolari di Haskell e perché eccelle nel risolvere questi problemi?
Risposte:
Quali sono alcuni usi comuni di questa lingua?
Sviluppo rapido di applicazioni.
Se vuoi sapere "perché Haskell?", Allora devi considerare i vantaggi dei linguaggi di programmazione funzionale (presi da https://c2.com/cgi/wiki?AdvantagesOfFunctionalProgramming ):
I programmi funzionali tendono ad essere molto più concisi rispetto alle loro controparti in lingua imperativa. Spesso questo porta ad una maggiore produttività del programmatore
FP incoraggia la prototipazione rapida. In quanto tale, penso che sia il miglior paradigma di progettazione software per ExtremeProgrammers ... ma che ne so?
FP è modulare nella dimensione della funzionalità, dove ObjectOrientedProgramming è modulare nella dimensione di diversi componenti.
La possibilità di avere la tua torta e mangiarla. Immagina di avere un sistema OO complesso che elabora i messaggi - ogni componente potrebbe apportare cambiamenti di stato a seconda del messaggio e quindi inoltrare il messaggio ad alcuni oggetti a cui ha collegamenti. Non sarebbe troppo bello essere in grado di ripristinare facilmente ogni modifica se un oggetto nella gerarchia delle chiamate decidesse che il messaggio è difettoso? Che ne dici di avere una storia di stati diversi?
Molte attività di pulizia fatte per te: decostruzione di strutture di dati (PatternMatching), memorizzazione di associazioni variabili (LexicalScope con chiusure), digitazione forte (TypeInference), GarbageCollection, allocazione di archiviazione, se usare boxed (puntatore-valore) o unboxed (valore direttamente ) rappresentazione ...
Multithreading sicuro! Le strutture di dati immutabili non sono soggette alle condizioni di competizione dei dati e, di conseguenza, non devono essere protette da blocchi. Se si allocano sempre nuovi oggetti, anziché manipolare in modo distruttivo quelli esistenti, il blocco può essere nascosto nel sistema di allocazione e GarbageCollection.
Oltre a questo, Haskell ha i suoi vantaggi come:
1 / 0
come primo elemento di un elenco e funzionerà comunque se si utilizza solo il secondo elemento.Puoi controllare i seguenti link:
x = 5;
garantisce che dopo l'esecuzione, x
contiene il valore 5
.
operator =
si chiama. E garantisce cosa succede se non si definisce unoperator =
Penso che alle persone in questo post manchi il punto più importante per chiunque non abbia mai usato un linguaggio di programmazione funzionale: espandere la tua mente. Se non conosci la programmazione funzionale, Haskell ti farà pensare in modi che non avevi mai pensato prima. Di conseguenza, la tua programmazione in altre aree e in altre lingue migliorerà. Quanto? Difficile da quantificare.
C'è una buona risposta a cosa serve una lingua per scopi generici come Haskell: scrivere programmi in generale.
Per quello che viene utilizzato in pratica, ho tre approcci per stabilire che:
Indica che è buono per la grafica, il networking, la programmazione dei sistemi, le strutture dati, i database, lo sviluppo, l'elaborazione del testo ...
E infine, la mia opinione su ciò che è veramente forte in:
Spero che ciò ti dia un'idea di quanto sia ampia la tua domanda, se si deve rispondere con qualsiasi specificità.
Un esempio di Haskell in azione è xmonad , un "gestore di finestre ricco di funzionalità in meno di 1200 righe di codice".
Dal wiki di Haskell :
Haskell ha una vasta gamma di usi commerciali, dall'aerospaziale e della difesa, alla finanza, alle startup web, alle aziende di progettazione hardware e ai produttori di tosaerba. Questa pagina raccoglie risorse sull'uso industriale di Haskell.
Secondo Wikipedia, il linguaggio Haskell è stato creato dall'esigenza di consolidare i linguaggi funzionali esistenti in un linguaggio comune che potrebbe essere utilizzato per future ricerche nella progettazione del linguaggio funzionale.
È evidente in base alle informazioni disponibili che ha superato il suo scopo originale e viene utilizzato per molto più della ricerca. Ora è considerato un linguaggio di programmazione funzionale per tutti gli usi.
Se ti stai ancora chiedendo "Perché dovrei usarlo?", Allora leggi Perché usarlo? sezione della introduzione al wiki di Haskell.
Haskell è un linguaggio di programmazione generico. Può essere utilizzato per qualsiasi cosa tu usi in qualsiasi altra lingua. Non sei limitato da altro che dalla tua stessa immaginazione. Per cosa è adatto? Bene, praticamente tutto. Esistono poche attività in cui un linguaggio funzionale non eccelle.
E sì, sono il Rayne di Dreamincode. :)
Vorrei anche ricordare che, nel caso non abbiate letto la pagina di Wikipedia, la programmazione funzionale è un paradigma come la programmazione orientata agli oggetti è un paradigma. Nel caso non lo sapessi. Haskell è anche funzionale nel senso che funziona; funziona abbastanza bene.
Solo perché una lingua non è una lingua orientata agli oggetti non significa che la lingua sia limitata da nulla. Haskell è un linguaggio di programmazione generico, ed è altrettanto generico di Java.
Ne ho uno bello, Facebook ha creato uno strumento automatizzato per riscrivere il codice PHP. Analizzano la sorgente in un albero di sintassi astratto, fanno alcune trasformazioni:
if ($f == false) -> if (false == $f)
Non so perché, ma quello sembra essere il loro stile particolare e poi lo stampano piuttosto.
https://github.com/facebook/lex-pass
Usiamo haskell per creare linguaggi specifici per piccoli domini. Enormi quantità di elaborazione dei dati. Sviluppo web. Ragni web. Test delle applicazioni. Scrittura di script di amministrazione del sistema. Script back-end, che comunicano con altre parti. Script di monitoraggio (abbiamo un DSL che funziona bene insieme a Munin, rende molto più facile scrivere il codice di monitoraggio corretto per le tue applicazioni.)
Tutti i tipi di cose in realtà. È solo un linguaggio di uso generale di tutti i giorni con alcune caratteristiche molto potenti e utili, se sei un po 'matematicamente incline.
false
a sinistra, non vedo il punto di usare uno strumento per farlo automaticamente: se hai già un ==
operatore allora sai già che non hai il bug di cui quella parte lex-pass è pensato per catturare, e se hai un =
invece non c'è modo sicuro di dire se è deliberatamente così.
Da Haskell :
Haskell è un linguaggio di programmazione standardizzato, puramente funzionale , con semantica non rigorosa e una forte tipizzazione statica. Prende il nome dal logico Haskell Curry.
Fondamentalmente Haskell può essere usato per creare praticamente tutto ciò che normalmente creeresti usando altri linguaggi di uso generale (es. C #, Java, C, C ++, ecc.).
Questa è una fonte abbastanza buona per informazioni su Haskell e sui suoi usi: