Samenvatting: /me doet zijn uiterste best om het nut en de elegantie van functioneel programmeren in te zien, maar het wil hem maar niet lukken. Wie helpt?
Een paar maanden geleden hoorde ik voor het eerst iets over functioneel programmeren. Geïntrigeerd door de mystiek van een compleet andere manier van kijken naar programma's, algoritmes, en hogere abstracties ben ik vervolgens allerlei functioneel-programmeren-papers en -advocacy gaan lezen.
Tot mijn grote teleurstelling lukte het me echter geheel niet om het nut of de elegantie van functioneel programmeren in te zien; het lukte me niet om in de genoemde argumenten iets te zien waarvan ik dacht: "ja, met die feature of op die manier kan ik mooiere (elegantere) programma's schrijven", en gegeven voorbeelden spraken me absoluut niet aan (het leek alsof recursie voor het minste of geringste geheel werd verkracht, en alsof alles ERG omslachtig werd geprogrammeerd).
Ondanks mijn negatieve eerste indruk ben ik toch wat met Haskell gaan spelen. Functioneel programmeren bleek me echter ook in de praktijk zeker niet zonder problemen te vergaan, het lukte me simpelweg niet om mijn gedachtengang zover te krijgen dat 'ie Haskell code genereerde
. Het leek heel.. onnatuurlijk. Ik besef me dat ik flink imperatief ben geindoctrineerd, maar ondanks dat lukt het me niet om enigszins in te zien waarom het functionele perspectief beter beter zou zijn dan het imperatieve.
Waarvoor is functioneel programmeren nou eigenlijk geschikt? In andere P&W topics zie ik mbravenboer vaak langskomen met z'n parsers en compilers, is functioneel programmeren misschien eigenlijk alleen geschikt voor het omgaan met sommetjes en grammatica? Kan het zijn dat functioneel programmeren gewoon niet echt geschikt is om ingewikkelde systemen en applicaties in te schrijven?
Wat overigens niet meehelpt is dat ik vrijwel nooit hoor dat functionele programmeertalen ergens serieus worden gebruikt. Het schijnt zo te zijn dat universiteiten en professors zwaar op functioneel programmeren geilen (
), maar daar hecht ik bij een gebrek aan praktijkvoorbeelden eigenlijk niet veel waarde aan.
Dus, voor de functioneel programmeurs onder ons: wat doe je ermee? Had je in het begin ook dergelijke problemen met het waarderen van het paradigma? (En zo ja: was er een bepaald kwartje dat moest vallen?) Kloppen mijn vermoedens over de zeer beperkte toepasbaarheid van functioneel programmeren? (En zo ja: hoe ga je daarmee om?) Kortom: alle ervaringen zijn welkom.
Een paar maanden geleden hoorde ik voor het eerst iets over functioneel programmeren. Geïntrigeerd door de mystiek van een compleet andere manier van kijken naar programma's, algoritmes, en hogere abstracties ben ik vervolgens allerlei functioneel-programmeren-papers en -advocacy gaan lezen.
Tot mijn grote teleurstelling lukte het me echter geheel niet om het nut of de elegantie van functioneel programmeren in te zien; het lukte me niet om in de genoemde argumenten iets te zien waarvan ik dacht: "ja, met die feature of op die manier kan ik mooiere (elegantere) programma's schrijven", en gegeven voorbeelden spraken me absoluut niet aan (het leek alsof recursie voor het minste of geringste geheel werd verkracht, en alsof alles ERG omslachtig werd geprogrammeerd).
Ondanks mijn negatieve eerste indruk ben ik toch wat met Haskell gaan spelen. Functioneel programmeren bleek me echter ook in de praktijk zeker niet zonder problemen te vergaan, het lukte me simpelweg niet om mijn gedachtengang zover te krijgen dat 'ie Haskell code genereerde
Waarvoor is functioneel programmeren nou eigenlijk geschikt? In andere P&W topics zie ik mbravenboer vaak langskomen met z'n parsers en compilers, is functioneel programmeren misschien eigenlijk alleen geschikt voor het omgaan met sommetjes en grammatica? Kan het zijn dat functioneel programmeren gewoon niet echt geschikt is om ingewikkelde systemen en applicaties in te schrijven?
Wat overigens niet meehelpt is dat ik vrijwel nooit hoor dat functionele programmeertalen ergens serieus worden gebruikt. Het schijnt zo te zijn dat universiteiten en professors zwaar op functioneel programmeren geilen (
Dus, voor de functioneel programmeurs onder ons: wat doe je ermee? Had je in het begin ook dergelijke problemen met het waarderen van het paradigma? (En zo ja: was er een bepaald kwartje dat moest vallen?) Kloppen mijn vermoedens over de zeer beperkte toepasbaarheid van functioneel programmeren? (En zo ja: hoe ga je daarmee om?) Kortom: alle ervaringen zijn welkom.