5 Funktionelle programmeringssprog, du burde kende
Reklame
Hvis du bruger noget tid på at læse om programmeringstendenser på internettet, har du hørt om funktionel programmering. Udtrykket kastes temmelig ofte rundt, men hvad betyder det?
Selv hvis du er opmærksom på, hvad funktionel programmering er, er du måske uklar på, hvilke sprog der er bedst egnet til det. Når alt kommer til alt oprettes ikke alle programmeringssprog lige. Mens du kan anvende funktionelle programmeringsparadigmer på mange sprog, er der stadig nogle, hvor du føler dig meget mere komfortabel.
Hvad er funktionel programmering?
Hvis du har en baggrund i matematik, har du et forspring med funktionel programmering. Dette skyldes, at det funktionelle programmeringsparadigme behandler computing som matematiske funktioner. Hvis du ikke har en matematisk baggrund, kan dette give dig følelse af forvirring.
Grundlæggende behandler funktionel programmering funktioner og data som uforanderlige. Du videregiver data til en funktion, og det returnerer generelt, at data transformeret eller en anden type data. Ved funktionel programmering skal funktionen aldrig ændre de originale data eller programtilstand.
Der er en lighed med Unix-filosofien, at hvert program skal gøre en ting godt. En funktion bør ikke berøre forskellige dele af dit program. I stedet skal det tage sit input og give dig et output.
Ideelt set skal funktioner være rene, når det er muligt i funktionel programmering. Dette betyder, at hvis den samme input kommer, forbliver funktionens output altid den samme.
Funktionel vs. objektorienteret programmering
Dette er en dramatisk afvigelse fra noget som objektorienteret programmering. I objektorienteret programmering har du ofte et basisobjekt med forskellige metoder dedikeret til at ændre enten data eller tilstand, der er en del af dette objekt. En metode kan endda ændre data eller angive, hvis ikke eksplicit angivet.
I praktiske programmer giver det undertiden mening. Når det er sagt, kan det gøre programmer sværere at vedligeholde, da det ikke altid er klart, hvad der ændrer tilstand eller data. Funktionel programmering blev oprindeligt brugt i akademiske miljøer, men kan også hjælpe med at forhindre denne slags problemer.
1. JavaScript
Nogle programmeringssprog tillader funktionel programmering, mens andre enten tilskynder eller endda håndhæver det. JavaScript falder inden for den første kategori. Mens du kan bruge funktionelle programmeringsparadigmer på sproget, kan du lige så let bruge en objektorienteret tilgang.
Når det er sagt, er der masser af funktionelle programmeringsparadigmer indbygget i JavaScript. Tag for eksempel funktioner med højere orden. Dette er funktioner, der kan tage andre funktioner som argumenter.
JavaScript har flere funktioner, der fungerer med arrays som map()
, reduce()
, filter()
og andre, som alle er af højere ordens funktioner. Dette giver dig mulighed for at kæde dem sammen for hurtigt at gøre alle slags ting med en matrix.
Mens tidlige JavaScript havde nogle problemer med mutabilitet, giver nyere versioner af ECMAScript-standarden rettelser. I stedet for catch-all var
nøgleordet til at definere variabler, har du nu const
og let
. Den første lader dig definere konstanter, som navnet antyder. Den anden, let
, begrænser omfanget af en variabel til den funktion, hvori den er deklareret.
2. Python
Ligesom JavaScript er Python et generaliseret sprog, som du kan bruge et vilkårligt antal programmeringsparadigmer med. Python kan have sine ulemper 4 grunde til, at Python ikke er programmeringssproget for dig 4 grunde til, at Python ikke er programmeringssproget for dig Python-programmeringssprog er ekstremt populært, men her er et par grunde til, at du måske ønsker at undgå Python . Læs mere, men funktionel programmering er ikke en af dem. Der er endda en introduktion til funktionel programmering i den officielle Python-dokumentation.
For at starte, finder du mange af det samme map()
, filter()
, reduce()
og lignende funktioner nævnt ovenfor indbygget. Som med JavaScript er dette højere ordensfunktioner, da de tager andre funktioner som argumenter. I Python har funktionel programmering en fordel i form af lambda
nøgleordet.
Du kan bruge lambda-udtryk på et par måder. En måde at bruge det på er som kortfattede funktioner til enkle funktioner. Når du er tildelt en variabel, kan du kalde lambda-udtryk nøjagtigt, som du ville gøre en standard Python-funktion. Den virkelige fordel ved lambda-udtryk kommer, når du bruger dem som anonyme funktioner.
Anonyme funktioner fungerer også i JavaScript og andre sprog på denne liste. De er især nyttige, når de bruges med højere ordensfunktioner, da du kan definere dem på stedet. Uden anonyme funktioner skulle du forud definere endda enkle tilføjelser som skræddersyede funktioner.
3. Clojure
I modsætning til JavaScript og Python er Clojure muligvis ikke nøjagtigt et husnavn, selv ikke blandt programmerere. I tilfælde af at du ikke kender, er Clojure en dialekt af Lisp-programmeringssprog, som stammer tilbage til slutningen af 1950'erne. Dette bringer en meget specifik måde at udføre ting på, som tilfældigvis er perfekt til funktionel programmering.
Som andre Lisp-dialekter behandler Clojure kode som data. Dette betyder, at koden effektivt kan ændre sig selv. I modsætning til andre Lisp-dialekter kører Clojure på Java-platformen og er kompileret til JVM-bytecode. Dette betyder, at det kan arbejde med Java-biblioteker, hvad enten de er skrevet i Clojure eller ej.
I modsætning til tidligere sprog på denne liste er Clojure et funktionelt programmeringssprog fra bunden af. Det betyder, at det går ind for uforanderlighed, hvor det er muligt, især inden for datastrukturer.
Clojure forventer ikke, at alle programmer skal være matematiske "beviselige", men tilskynder til at bruge rene funktioner, hvor det er muligt.
4. Elm
Et af de nyere sprog på denne liste, Elm er et rent funktionelt sprog oprindeligt designet af Evan Czaplicki i 2012. Sproget har vundet popularitet blandt webudviklere, specielt til at skabe brugergrænseflader.
I modsætning til alle forudgående poster på denne liste bruger Elm kontrol af statisk type. Dette hjælper med at sikre, at der ikke er undtagelser fra runtime, med fejl i stedet fanget på kompileringstidspunktet. Dette betyder mindre synlige fejl for brugerne, hvilket er et stort plus.
Elm-kompilatoren er målrettet mod HTML, CSS og JavaScript. På samme måde som du kan bruge Clojure til at skrive programmer, der kører på Java, kan du skrive apps, der bruger JavaScript-biblioteker i Elm.
En vigtig forskel mellem Elm og andre sprog her er, at du ikke finder generiske filter()
, map()
og lignende funktioner. I stedet defineres disse af datatype som List.map
eller Dict.map
.
5. Haskell
Haskell er et andet statisk typisk, rent funktionelt sprog. I modsætning til Elm har Haskell været i et stykke tid. Den første version af sproget blev designet i 1990. Den seneste standard er Haskell 2010, mens den næste version er planlagt til 2020.
Som vi allerede har udforsket, betyder Haskells rent funktionelle karakter, at funktioner ved design ikke bør have bivirkninger. Dette gør det velegnet til at løse problemer i den virkelige verden trods funktionel programmerings rødder i akademien.
På trods af sin mangel på mainstream-popularitet har Haskell været ansat i nogle meget anvendte projekter. Xmonad-vinduesadministratoren er skrevet helt i Haskell. Pandoc, der konverterer forskellige typer markup til og fra andre formater, bruger også sproget.
Standardkortet map()
, filter()
, reduce()
og andre højere ordensfunktioner er til stede, som skal lade dig tage koncepter fra JavaScript eller Python til Haskell. Hvis du vil lære mere om sproget, er Learn You a Haskell for Great Good et populært udgangspunkt.
Er du ny med programmering?
Nogle af ovenstående udtryk og sprog kan virke noget esoteriske, hvis du endnu ikke er en erfaren koder. Det er godt, da det at vide, hvad du ikke ved, er et af de første skridt i at blive en bedre lærer.
Nogle af de sprog, der er anført ovenfor, er bedre for begyndere end andre. Se på vores liste over de bedste programmeringssprog for begyndere. Du vil bemærke, at der er noget overgang mellem de to lister.
Og hvis du er interesseret, så tjek vores guide til opbygning af et simpelt PHP-websted Sådan oprettes et simpelt PHP-websted Sådan oprettes et simpelt PHP-websted Vil du oprette et websted, men ved ikke, hvor du skal starte? Oprettelse af et grundlæggende PHP-websted vil sætte dig på vejen til webudvikling. Læs mere .
Udforsk mere om: Funktionel programmering, JavaScript, Python.