Vraag Haskell versus procedurele programmering in de echte wereld [gesloten]


Tegenwoordig word ik serieus bezig met functioneel programmeren.

Hoewel ik erg enthousiast ben over Haskell en de mogelijkheden die het lijkt te bieden, kan ik nu ook zien dat het me enige tijd kost om het te leren. In een SO-vraag op Hoe Haskell te leren een antwoord zegt dat het maanden of zelfs jaren zal duren om het echt te 'beheersen'.

Nu, ik ken C, PHP, wat objectgeoriënteerde dingen, enz. En heb ik te horen gekregen dat Haskell daar niet veel wordt gebruikt in "de echte wereld", zal ik dan beter mijn vaardigheden kunnen verbeteren in de reguliere talen die ik ken? Is Haskell de moeite waard?

In deze vraag op Waarom mensen denken dat functioneel programmeren zal aanslaan de conclusie lijkt te zijn dat functionele programmering "aanslaat". Maar zeker blijft procedurele programmering bovenaan, toch?

EDIT: keparo verduidelijkt mijn vraag op een mooie manier aan: Is het, in tegenstelling tot proceduretalen, waardevol om de Haskell- en functionele programmeerparadigma's te bestuderen?


41
2018-06-21 19:24


oorsprong


antwoorden:


Haskell is niet zo moeilijk als mensen graag willen leren. Haskell opent een nieuwe wereld waarvan je nooit wist dat die voor jou bestond. Het is net zo waardevol om te leren als elke andere taal. Je zult misschien geen baan vinden waarvoor je Haskell-programmering moet doen, maar betekent dat echt dat een taal niet waardevol is?

Haskell leert je veel nieuwe dingen en het zal je laten zien hoe je nog beter kunt programmeren in de talen waarmee je werkt / werkt / werkt. Je kunt er in je vrije tijd je eigen projecten mee doen.

Haskell wordt niet echt veel gebruikt in de 'echte wereld' als je 'echte wereld' definieert als 'kasstroomgenerator'. Dus als dat je doel is, dan moet je misschien opnieuw nadenken over doelstellingen: p

Ik hou ook niet zo van dat deel van het gekozen antwoord "hoe leer je haskell". Het kost maanden tot jaren om elke taal onder de knie te krijgen, niet alleen Haskell. Afhankelijk van hoe u "master" definieert. Ik kan Haskell behoorlijk efficiënt gebruiken en ik heb het maar een maand leren kennen, en ik heb het zelfs langzaam gedaan.


49
2018-06-22 04:56



Als er niets anders is, zal de verandering in mindset die het leren van Haskell biedt, u helpen wanneer u terug moet gaan naar het gebruik van die proceduretalen die nog steeds op de werkplek worden gebruikt.

Het functionele paradigma begint zijn weg te vinden in verschillende reguliere applicaties en talen - zelfs C ++ zal een (kreupele) lambda toevoegen in C ++ 0x.

Misschien wilt u ook kijken naar enkele van de hybride talen zoals Scala of OCaml. Scala wordt gebruikt op Twitter en OCaml wordt gebruikt op Jane's Street in een financieel handelsplatform.


18
2018-06-21 19:37



Je moet waarschijnlijk niet verwachten dat Haskell overal in een professionele omgeving bijna net zo vaak als een C-familietaal zal worden gebruikt. Als de vraag is of het waardevol voor u zal zijn om Haskell en functionele programmeerparadigma's te bestuderen, is het antwoord ja. Je kunt je verrijkte kennis van programmeren toepassen op al je werk.


10
2018-06-21 19:34



Ik heb Haskell leren kennen omdat het verreweg de beste functionele taal is die ik heb uitgeprobeerd uit Scala, Clojure, OCaml en Scheme, maar ik had niet echt verwacht het te gebruiken voor werk.

Het blijkt dat het perfect is voor die klusjes die te klein zijn voor een team en te veel tijd kosten in Java. Tot nu toe heb ik het gebruikt voor ad-hoc datamigraties, dat wil zeggen CSV-export naar een ander formaat meeluisteren, batchconversies van XML (HXT is beknopter en krachtiger dan XSLT), screen-scraping van het internet en het schatten van software-projecten inclusief modellering riskeren van het gebruik van de waarschijnlijkheidsmonade en het produceren van optimale gantt-diagrammen met behulp van backtracking. Dit is allemaal echt werk dat gedaan moest worden, dat ik niet eens zou hebben geprobeerd om te proberen en te doen op Java, omdat het een meerdaagse onderneming zou zijn.

Ik gebruik het nu in plaats van Excel voor iets vaags wiskundig, omdat het weinig moeite kost om een ​​lijst met waarden in de haskell-bron in een teksteditor te maken dan om ze in Excel te typen. Eenmaal in de haskell kan ik allerlei soorten magie doen, zoals backtracking, kansverdelingen enz. Die Excel niet kan doen. Als ik een grafiek nodig heb, spuw ik de waarden uit als CSV (2 regels code) en laad ik ze in Excel.

Het enige nadeel is dat het enkele maanden duurt om bekwaam te worden, maar de moeite waard IMHO.


8
2018-02-14 22:07



Is het, in tegenstelling tot proceduretalen, waardevol om de Haskell- en functionele programmeerparadigma's te bestuderen?

Als het hebben van een uitgebreide vaardigheden waardevol is, dan: ja.

Een voordeel dat u zou kunnen oppikken: parallelle en gelijktijdige programmering. Proceduretalen uit het verleden hebben vaak geen duidelijke notie van bijwerkingen, waardoor het schrijven van parallelle programma's moeilijk is. Functionele talen (in het bijzonder die welke bijwerkingen zoals Haskell beperken) hebben veel meer te zeggen over productieve parallelle programmering.

Het hebben van die vaardigheid voor de boeg kan geen kwaad.


7
2018-06-21 20:37



Ik zie dat functioneel programmeren een voordeel kan zijn in een productieomgeving als het heel gemakkelijk te gebruiken is door niet-functionele code. MS kon dat ook zien toen ze met F # kwamen, denk ik.

Omdat ze allebei compileren tot IL, kun je problemen die vragen om een ​​functionele aanpak functioneel behandelen en deze oplossingen heel gemakkelijk gebruiken in je procedurele code.

Op die manier kan functionele code gemakkelijk zijn weg vinden in een productieomgeving beetje bij beetje

Daarom, en omdat de gebruikersbasis van MS zo groot is, denk ik dat als F # niet in de zeer nabije toekomst zal aanslaan, Haskell dat ook niet zal doen.


5
2018-06-21 19:40



Ik denk dat het de moeite waard is. Het helpt u te begrijpen hoe problemen zijn opgelost en niet alleen hoe een computer werkt.

Misschien is een bepaald probleem Haskell zelf - als een puur functionele taal, het is nogal "hardcore", dat kan aan de andere kant zelfs dingen compliceren.

Functioneel programmeren kan in plaats daarvan zeer nuttig zijn op een zeer pragmatische manier - Veel OO / imperatieve talen hebben nu om deze reden functionele elementen opgenomen (Linq, anonieme functies, alleen-lezen waarden, functie-aanwijzers / gedelegeerden, type gevolgtrekking): je kunt je concentreren op wat moet worden gedaan waarmee je meer kunt uitdrukken in minder code (dat is nog minder foutgevoelig).

Niet-puur functionele talen (standaard functionele talen) zoals Scala of F # kunnen eenvoudig worden geïntegreerd in bestaande Java- of .NET-projecten, zodat u de voordelen van beide paradigma's kunt combineren waar ze nodig zijn. Zie voor de typische voordelen van functionele talen deze draad. Denk maar aan extreem krachtige parsing (Monadic parser combinators / Parsec) of gelijktijdige programmering die mogelijk is met functionele talen en je zult zien hoe nuttig ze zijn.


5
2018-06-24 19:30



Is het, in tegenstelling tot proceduretalen, waardevol om de Haskell- en functionele programmeerparadigma's te bestuderen?

Niet tenzij je ellendig wilt zijn. Luke Plant zegt, in Waarom je Haskell / Python leert, maakt je een slechtere programmeur:

Dus, het leren van Python en Haskell heeft me gedemoraliseerd en aangemoedigd   ik schrijf code die bizar en moeilijk te begrijpen is ...

(Dit is niet helemaal een grap.)


4
2018-06-24 19:15



Door je horizon te verruimen, ben je een betere programmeur, ongeacht welke taal je op dit moment gebruikt. Je zult nooit kijken naar het programmeren op dezelfde manier nadat je bijvoorbeeld Lisp-macro's hebt geschreven. Nadat u in Haskell-termen bent gaan denken, zult u merken dat u functies samenstelt en sluitingen wenst in minder geavanceerde talen.

Afgaande op goodies in C # zoals lambda's, type gevolgtrekking, sluitingen, enzovoort, leren Haskell geeft je een voorsprong op de voorhoede van morgen in de reguliere talen.


2
2018-06-21 19:37



Sommige mensen houden van programmeren in Haskell. Als je je omgeving kunt kiezen en genieten is een overweging, dan moet je er misschien in springen.

Veel programmeurs zijn niet in de positie om hun tools te kiezen en plezier is geen factor voor hun keuzes. Velen van hen krijgen C / Java / etc op hun werkplek voor de "bron van het kernproject", maar kiezen of moeten ook Python gebruiken voor "scripts", zoals build-scripts met SCons, andere scripts die Java / etc genereren code, testsystemen, proof-of-concepts, enz. En op andere plaatsen wordt Python ook gebruikt in het "kernproject".

Over 8 jaar zal Haskell, en niet Python, "naar je toe komen". Maar je kunt er eerder aan komen.


1
2018-06-21 19:49



U kunt het gebruik van functioneel programmeren combineren en wees pragmatisch over de taal.

Alle moderne scriptingtalen s.a. JavaScript of Lua staan ​​het gebruik van het functionele paradigma toe.


1
2018-06-30 11:27