Vill du veta mer om programmering?  Det är värt att lära sig om funktionell programmering och vilka programmeringsspråk som stöder det.

5 Funktionella programmeringsspråk som du bör veta

Annons Om du lägger ner lite tid på att läsa upp programtrender på internet har du hört talas om funktionell programmering. Termen kastas ganska ofta, men vad betyder det? Även om du är medveten om vad funktionell programmering är, kanske du är oklar om vilka språk som passar bäst för det. När allt k

Annons

Om du lägger ner lite tid på att läsa upp programtrender på internet har du hört talas om funktionell programmering. Termen kastas ganska ofta, men vad betyder det?

Även om du är medveten om vad funktionell programmering är, kanske du är oklar om vilka språk som passar bäst för det. När allt kommer omkring skapas inte alla programmeringsspråk lika. Även om du kan tillämpa funktionella programmeringsparadigmer på många språk, finns det fortfarande några där du känner dig mycket mer bekväm.

Vad är funktionell programmering?

Om du har en bakgrund i matematik har du ett försprång på funktionell programmering. Detta beror på att det funktionella programmeringsparadigmet behandlar databehandling som matematiska funktioner. Om du inte har en matematisk bakgrund kan det göra att du känner dig förvirrad.

I grund och botten behandlar funktionell programmering funktioner och data som oföränderliga. Du skickar data till en funktion, och det returnerar i allmänhet den omvandlade datan eller någon annan typ av data. Vid funktionell programmering bör funktionen aldrig ändra originaldata eller programtillstånd.

Det finns en likhet med Unix-filosofin att varje program ska göra en sak bra. En funktion bör inte beröra olika delar av ditt program. Istället borde den ta sin inmatning och ge dig en utgång.

Idealt bör funktionerna vara rena när det är möjligt i funktionell programmering. Detta betyder att med tanke på samma ingång, kommer funktionens utgång alltid att vara densamma.

Funktionell kontra objektorienterad programmering

Detta är en dramatisk avvikelse från något som objektorienterad programmering. I objektorienterad programmering har du ofta ett basobjekt med olika metoder som är dedikerade till att ändra antingen data eller tillstånd som är en del av detta objekt. En metod kan till och med ändra data eller ange om den inte uttryckligen anges.

I praktiska program är det ibland vettigt. Som sagt kan det göra program svårare att underhålla, eftersom det inte alltid är tydligt vad som förändrar tillstånd eller data. Funktionell programmering användes ursprungligen i akademiska miljöer, men kan också hjälpa till att förhindra sådana problem.

1. JavaScript

JavaScript-logotyp

Vissa programmeringsspråk tillåter funktionell programmering medan andra antingen uppmuntrar eller ens tillämpar det. JavaScript tillhör den första kategorin. Medan du kan använda funktionella programmeringsparadigmer på språket, kan du lika enkelt använda ett objektorienterat tillvägagångssätt.

Som sagt, det finns gott om funktionella programmeringsparadigmer inbyggda i JavaScript. Ta till exempel funktioner med högre ordning. Det här är funktioner som kan ta andra funktioner som argument.

JavaScript har flera funktioner som fungerar med matriser som map(), reduce(), filter() och andra, som alla är högre ordningsfunktioner. Detta låter dig kedja dem för att snabbt göra alla slags saker med en matris.

Medan tidiga JavaScript hade några problem med mutabilitet, ger nyare versioner av ECMAScript-standarden korrigeringar. I stället för nyckelordet catch-all var för att definiera variabler har du nu const och let . Den första låter dig definiera konstanter, som namnet antyder. Den andra let oss begränsa en variabelns omfattning till den funktion där den deklareras.

2. Python

Python-logotyp

Precis som JavaScript är Python ett generaliserat språk som du kan använda valfritt antal programmeringsparadigmer med. Python kan ha sina nackdelar 4 skäl till varför Python inte är programmeringsspråket för dig 4 skäl till varför Python inte är programmeringsspråket för dig. Python-programmeringsspråket är extremt populärt, men här är några orsaker till att du kanske vill undvika Python . Läs mer, men funktionell programmering är inte en av dem. Det finns till och med en introduktion till funktionell programmering i den officiella Python-dokumentationen.

Till att börja med hittar du många av samma map(), filter(), reduce() och liknande funktioner som nämns ovan inbyggda. Liksom med JavaScript är dessa funktioner av högre ordning eftersom de tar andra funktioner som argument. I Python har funktionell programmering en fördel i form av lambda nyckelordet.

Du kan använda lambda-uttryck på några sätt. Ett sätt att använda det är lika kortfattat för enkla funktioner. När du tilldelas en variabel kan du ringa lambda-uttryck exakt som du skulle göra med en standard Python-funktion. Den verkliga fördelen med lambda-uttryck kommer när du använder dem som anonyma funktioner.

Anonyma funktioner fungerar också i JavaScript och andra språk på den här listan. De är särskilt praktiska när de används med högre ordning eftersom du kan definiera dem på plats. Utan anonyma funktioner skulle du behöva fördefiniera till och med enkla tillägg som skräddarsydda funktioner.

3. Clojure

Clojure programmeringsspråk logotyp

Till skillnad från JavaScript och Python kanske Clojure inte exakt är ett hushållsnamn, inte ens bland programmerare. Om du inte är bekant är Clojure en dialekt av Lisp-programmeringsspråket, som går tillbaka till slutet av 1950-talet. Detta ger ett mycket specifikt sätt att göra saker som råkar vara perfekt för funktionell programmering.

Liksom andra Lisp-dialekter behandlar Clojure kod som data. Detta innebär att koden effektivt kan förändra sig själv. Till skillnad från andra Lisp-dialekter körs Clojure på Java-plattformen och kompileras till JVM-bytekod. Detta betyder att det kan fungera med Java-bibliotek, oavsett om de har skrivits i Clojure eller inte.

Till skillnad från tidigare språk på denna lista är Clojure ett funktionellt programmeringsspråk från grunden. Det betyder att den förespråkar oföränderlighet när så är möjligt, särskilt inom datastrukturer.

Clojure förväntar sig inte att alla program ska vara matematiskt "provbara", men uppmuntrar att använda rena funktioner där det är möjligt.

4. Elm

Elm programmeringsspråk logotyp

Ett av de nyare språken på denna lista, Elm, är ett rent funktionellt språk som ursprungligen designades av Evan Czaplicki 2012. Språket har vunnit popularitet bland webbutvecklare, speciellt för att skapa användargränssnitt.

Till skillnad från alla tidigare poster på denna lista använder Elm statisk typkontroll. Detta hjälper till att säkerställa inga undantag från runtime, med fel som istället fångas vid sammanställningstiden. Detta betyder mindre synliga fel för användare, vilket är ett stort plus.

Elm-kompilatorn riktar sig mot HTML, CSS och JavaScript. På samma sätt som du kan använda Clojure för att skriva program som körs på Java kan du skriva appar som använder JavaScript-bibliotek i Elm.

En viktig skillnad mellan Elm och andra språk här är att du inte hittar generiska filter(), map() och liknande funktioner. Istället definieras dessa av datatyp som List.map eller Dict.map .

5. Haskell

Haskell-programmeringsspråkets logotyp

Haskell är ett annat statiskt typiskt, rent funktionellt språk. Till skillnad från Elm har Haskell funnits ett tag. Den första versionen av språket designades 1990. Den senaste standarden är Haskell 2010, medan nästa version planeras för 2020.

Som vi redan har utforskat innebär Haskells rent funktionella natur att funktioner genom design inte borde ha biverkningar. Detta gör det väl lämpat för att lösa problem i verkligheten trots funktionell programmerings rot i akademin.

Trots sin brist på mainstream-popularitet har Haskell anställts i vissa allmänt använda projekt. Xmonad-fönsterhanteraren är helt skriven i Haskell. Pandoc, som konverterar olika typer av markeringar till och från andra format använder också språket.

Standardkarta map(), filter(), reduce() och andra högre ordningsfunktioner finns, vilket bör låta dig ta koncept från JavaScript eller Python till Haskell. Om du vill lära dig mer om språket är Learn You a Haskell for Great Good en populär utgångspunkt.

Är du ny med att programmera?

Vissa av ovanstående termer och språk kan verka något esoteriska om du ännu inte är en erfaren kodare. Det är bra, eftersom att veta vad du inte vet är ett av de första stegen för att bli en bättre elev.

Några av de språk som anges ovan är bättre för nybörjare än andra. Ta en titt på vår lista över de bästa programmeringsspråken för nybörjare. Du kommer att märka att det finns en del övergång mellan de två listorna.

Och om du är intresserad, kolla in vår guide för att bygga en enkel PHP-webbplats Hur man bygger en enkel PHP-webbplats Hur man bygger en enkel PHP-webbplats Vill du bygga en webbplats men vet inte var du ska börja? Genom att skapa en grundläggande PHP-webbplats kommer du på väg till webbutveckling. Läs mer .

Utforska mer om: Funktionell programmering, JavaScript, Python.