Han börjar med att nämna att funktionell programmering är populärt just nu, antingen via funktionella programmeringsspråk eller via specialfunktioner i mer traditionella språk.
Men det är hög tid att ta en paus och reflektera över hur lämpligt det är med funktionell programmering i olika lägen.
Till att börja med, vad är funktionell programmering? Enkelt uttryckt innebär funktionell programmering att all kod är en matematisk funktion. Funktionella språk kan ha objekt, men de kan för det mesta inte ändras efter att de skapats. Det finns inga for-slingor, eftersom de skulle innebära att värden ändras. Man använder i stället rekursion och skickar funktioner som argument.
Förespråkarna hävdar ofta att funktionell programmering leder till mer effektiv mjukvara, medan motståndarna hävdar motsatsen. Ett problem är att det blir svårare att skriva kompilatorer för funktionella språk eftersom kopplingen mellan språket och hårdvaran är svagare än för mer traditionella, imperativa språk. Men det bör gå att skriva kompilatorer som hanterar funktionell kod på ett bra sätt.
Det finns många tillfällen när funktionell programmering passar bra. Ett exempel är matematiska beräkningar. För sådana är funktionell kod mer begriplig än imperativ kod.
Men för vanliga generella applikationer gäller motsatsen. Eller för att citera Martin Fowler: ”Vilken idiot som helst kan skriva kod som en dator förstår. Bra programmerare skriver kod som människor förstår.”
Vilken skaplig programmerare som helst kan för det mesta snabbt förstå avsikten med imperativ kod, även om han eller hon inte kan språket den är skriven i.
Visst går det att första vad funktionell kod gör genom att titta på dem, men det kanske inte går så fort. I motsats till imperativ kod är inte funktionell kod baserad på enkla språkkonstruktioner, utan i stället på mattematiska konstruktioner.
Efter flera år av framsteg i arbetet med att göra programmeringsspråk mer lättbegripliga för människor innebär funktionell programmering ett steg tillbaka i utvecklingen. Med funktionella språk hanteras problem med samtidighet i program, men på bekostnad av läsbarheten för koden. Svår syntax gör att de är mindre lämpade för utveckling av generella applikationer.
”Hoppa inte på den här trenden än, speciellt inte för högriskprojekt”, avslutar Andrew Oliver.















