Necessità di apprendere l'estensione del linguaggio haskell per la produzione


10

Il linguaggio di base di Haskell è davvero semplice. Proveniente da un background OO, la principale difficoltà è quella di adattarsi al paradigma funzionale puro.

Durante l'apprendimento di Haskell "di base", ho sempre considerato le estensioni del linguaggio come giocattoli per persone CS o come esperimenti per le versioni future del linguaggio (come from future import ???in Python).

Tuttavia, quando ho iniziato a guardare framework web come Yesod, ho scoperto che molti file sorgente richiedono tra 3 e 4 estensioni. Alcuni sembrano abbastanza semplici (StringOverload). Altri sono davvero intimidatori (GADT, Type Famillies, Template Haskell). La loro documentazione si collega a documenti di ricerca, il che fa paura a qualcuno che si aspetta di imparare "solo" una nuova biblioteca.

È necessario imparare le estensioni del linguaggio GHC per essere produttivi in ​​Haskell? Se dovessi assumere uno sviluppatore Haskell per un'applicazione di produzione, chiederesti tale conoscenza?


Risposte:


7

È necessario imparare le estensioni del linguaggio GHC per essere produttivi in ​​Haskell?

Sì. E questo è vero per qualsiasi lingua / strumento. Con le conoscenze di base / di base è possibile risolvere i problemi del concorso online, può essere un piccolo progetto universitario, ma sicuramente non un'applicazione reale.

Se dovessi assumere uno sviluppatore di haskell per un'applicazione di produzione, chiederesti tale conoscenza?

Questo ora dipende dal fatto che hai una persona con te che può condividere questa conoscenza. Se sì, allora quella persona può aumentare il nuovo impiegato. In caso contrario, è necessario prima ottenere tale persona con conoscenza. E ancora questo è vero per le nuove tecnologie.

Ovviamente potresti anche provare ad assumere persone con una conoscenza così profonda a Haskell. Ma essendo Haskell relativamente nuovo nel settore e considerando pochissimi progetti commerciali, è stato difficile trovare tale persona. Il modo più efficace per formare un team di professionisti a Haskell sarà quello di assumere persone che sapessero di base e desiderose di lavorare a Haskell, e poi di educarle.


Stavo per protestare, ma poi ho visto che Real World Haskell insegna molte estensioni linguistiche. La ringrazio per la risposta.
Simon Bergot,

2
"E questo è vero per qualsiasi linguaggio / strumento" - è completamente falso. Supponiamo che utilizzi linguaggi come Java, C #, C ++: nessuno di questi ha estensioni di linguaggio che si trovano comunemente nel codice delle applicazioni del mondo reale. Se devi usare le estensioni di lingua ogni volta che devi scrivere qualcosa di meno banale delle "soluzioni di problemi di contest online", secondo me, c'è qualcosa di molto sbagliato nelle specifiche della lingua.
Malcolm,

@Malcolm Perché trovi "Se devi usare le estensioni di lingua ogni volta che devi scrivere qualcosa di meno banale delle" soluzioni di problemi di contest online ", secondo me, c'è qualcosa di molto sbagliato nelle specifiche del linguaggio." per essere vero? Qual è la caratteristica di un'estensione che la rende negativa? Uso ghc e le estensioni fornite. L'aggiunta di un'estensione a un progetto esistente sembra tanto gravosa quanto l'aggiunta di un'altra libreria.
Davorak,

2
@Davorak Perché invece di una sola lingua abbiamo milioni di combinazioni di estensioni diverse e non sai nulla sul fatto che il codice verrà compilato su un determinato compilatore. Le estensioni rendono il codice non portatile. E anche questo rende la lingua una fatica da imparare perché invece di un singolo set di funzionalità che tutti usano lì c'è un'enorme quantità di funzionalità aggiuntive, e non hai idea di quali devi conoscere e usare e quali esistono solo perché i ricercatori si stanno divertendo.
Malcolm,

2
@Davorak Questo è esattamente il problema di cui sto parlando: tutti usano GHC, perché questo è l'unico compilatore ancora attivo. Gli altri compilatori non riescono a tenere il passo, quindi nessuno può usarli e ci sono poche ragioni per investirci. Per quanto riguarda le librerie: scegli le librerie per il problema e lavori solo con esse. Ad esempio, se è necessario leggere XML, è necessaria solo una libreria di lettura XML. Con le estensioni, tuttavia, non è ovvio quando hai bisogno di quale. Anche se c'è un problema anche con le librerie. Diciamo, in Java ci sono solo array e raccolte, e in Haskell c'è un carico di librerie di array.
Malcolm,
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.