Fördelar med Haskell
Hej.
Jag pluggar just nu programmeringsspråket Haskell på min högskola och finner det verkligen vara en utmaning. En nackdel med haskell är att det verkligen supersvårt att lära sig. Jag antar att det pga att det är uppbyggt annorlunda och fungerar på ett helt annat sätt än de vanligare programmeringsspråken. En annan nackdel är att det finns mycket mindre information och hjälp att hitta på nätet, t.ex. på stackoverflow och youtube.
Men vad är egentligen fördelarna med haskell gentemot vanligare språk som Python, Java osv?
Jag har inte själv fastnat för Haskell, men idén som den drar till sin spets, funktionell programmering, är en användbar och sympatisk idé. Ett lite mer jordnära språk i samma familj är Scheme. Även i Python kan man skriva i en funktionell stil om man vill, men det går inte lika smidigt av syntaktiska skäl.
Nån som faktiskt förstår sig på Haskell får fylla på med nåt vettigt.
Får jag gissa att det är i Göteborg? Man intresserade sig mycket för typteori på Chalmers, och jag tror det passar ihop med Haskell.
Min Haskell-älskande son svarar att den stora fördelen är att det är kul, Haskell används inte så mycket i verkligheten.
Det är faktiskt i Uppsala.
Jag hittade den här sidan på stackoverflow där dom går igenom en del för och nackdelar med haskell. Verkar som att det är väldigt bra när man väl kan det men att det är svårt att lära sig plus att det är generellt ganska få som skriver i haskell så det finns mindre hjälp att få och färre projekt som görs med haskell.
En fördel (om än subjektiv i viss mån) är att Haskell har ett väldigt startk typsystem. Detta innebär att om kompilatorn släpper igenom ditt program så är det stor sannolikhet att du i alla fall inte gör något 'dumt' fel som kan hända i mindre starka typsystem.
Men Haskell är verkligen svårt. Jag kan varmt rekommendera online-boken http://learnyouahaskell.com/chapters
Den är verkligen jättebra och går igenom Haskell från grunderna och ganska djupt medans den fortfarande är rolig!
En pedagogisk fördel med haskell kan vara att eleverna hamnar på en mer jämlik nivå oberoende av tidigare programmeringserfarenhet eftersom få har programmerat funktionellt innan universitetet. Det stämmer sämre nu jämfört med tidigare när "vanligare" språk, som används mer i arbetslivet, har lånat in flera funktionella konstruktioner så att det, precis som Laguna skriver, går att programmera mer funktionellt i de språken också.
Generellt så är det sällan som ett koncept där man har dragit något till sin spets, är det bästa valet för att lösa verkliga problem. Däremot kan man hitta mycket användbara guldkorn som man kan importera till andra språk.