5 funksjonelle programmeringsspråk du bør vite
Annonse
Hvis du bruker litt tid på å lese deg opp om programmeringstrender på internett, har du hørt om funksjonell programmering. Begrepet kastes ganske ofte, men hva betyr det?
Selv om du er klar over hva funksjonell programmering er, er du kanskje uklar på hvilke språk som er best egnet for det. Tross alt er ikke alle programmeringsspråk skapt like. Selv om du kan bruke funksjonelle programmeringsparadigmer på mange språk, er det fremdeles noen der du vil føle deg mye mer komfortabel.
Hva er funksjonell programmering?
Hvis du har bakgrunn i matematikk, har du et forsprang på funksjonell programmering. Dette er fordi det funksjonelle programmeringsparadigmet behandler databehandling som matematiske funksjoner. Hvis du ikke har en matematisk bakgrunn, kan dette føre til at du føler deg forvirret.
I utgangspunktet behandler funksjonell programmering funksjoner og data som uforanderlige. Du overfører data til en funksjon, og det returnerer generelt at data transformert eller annen type data. Ved funksjonell programmering skal funksjonen aldri endre de opprinnelige dataene eller programtilstanden.
Det er en likhet med Unix-filosofien at hvert program skal gjøre en ting godt. En funksjon skal ikke berøre forskjellige deler av programmet ditt. I stedet bør den ta sine innspill og gi deg en utgang.
Ideelt sett bør funksjoner være rene når det er mulig i funksjonell programmering. Dette betyr at gitt samme inngang, vil funksjonens utgang alltid være den samme.
Funksjonell kontra objektorientert programmering
Dette er et dramatisk avvik fra noe som objektorientert programmering. I objektorientert programmering har du ofte et basisobjekt med forskjellige metoder dedikert til å endre enten data eller tilstand som er en del av dette objektet. En metode kan til og med endre data eller oppgi hvis ikke eksplisitt er angitt.
Noen ganger gir dette mening i praktiske programmer. Når det er sagt, kan det gjøre programmer vanskeligere å vedlikeholde, siden det ikke alltid er klart hva som endrer tilstand eller data. Funksjonell programmering ble opprinnelig brukt i akademiske miljøer, men kan også bidra til å forhindre slike problemer.
1. JavaScript
Noen programmeringsspråk tillater funksjonell programmering, mens andre enten oppmuntrer eller til og med håndhever det. JavaScript faller i den første kategorien. Mens du kan bruke funksjonelle programmeringsparadigmer på språket, kan du like gjerne bruke en objektorientert tilnærming.
Når det er sagt, er det nok av funksjonelle programmeringsparadigmer innebygd i JavaScript. Ta for eksempel funksjoner med høyere ordre. Dette er funksjoner som kan ta andre funksjoner som argumenter.
JavaScript har flere funksjoner som fungerer med matriser som map()
, reduce()
, filter()
og andre, som alle er av høyere ordre. Dette lar deg kjede dem sammen for raskt å gjøre alle slags ting med en matrise.
Mens tidlig JavaScript hadde noen problemer med mutabilitet, gir nyere versjoner av ECMAScript-standarden rettelser. I stedet for søkeordet for å definere variabler, har du nå const
og let
. Den første lar deg definere konstanter, som navnet tilsier. Den andre, let
, begrenser omfanget av en variabel til funksjonen den er deklarert i.
2. Python
Som JavaScript er Python et generalisert språk som du kan bruke et hvilket som helst antall programmeringsparadigmer med. Python kan ha sine ulemper 4 grunner til at Python ikke er programmeringsspråket for deg 4 grunner til at Python ikke er programmeringsspråket for deg. Python-programmeringsspråket er ekstremt populært, men her er noen få grunner til at du kanskje vil unngå Python . Les mer, men funksjonell programmering er ikke en av dem. Det er til og med en introduksjon til funksjonell programmering i den offisielle Python-dokumentasjonen.
For å starte, vil du finne mange av det samme map()
, filter()
, reduce()
og lignende funksjoner som er nevnt over innebygd. Som med JavaScript, er dette funksjoner med høyere ordre, ettersom de tar andre funksjoner som argumenter. I Python har funksjonell programmering en fordel i form av lambda
nøkkelordet.
Du kan bruke lambda-uttrykk på noen få måter. En måte å bruke den på er like kortfattet for enkle funksjoner. Når du er tilordnet en variabel, kan du ringe lambda-uttrykk nøyaktig som du ville gjort for en standard Python-funksjon. Den virkelige fordelen med lambda-uttrykk kommer når du bruker dem som anonyme funksjoner.
Anonyme funksjoner fungerer også i JavaScript og andre språk på denne listen. De er spesielt nyttige når de brukes med funksjoner med høyere ordre, siden du kan definere dem på stedet. Uten anonyme funksjoner, må du forhåndsdefinere selv enkle tillegg som skreddersydde funksjoner.
3. Clojure
I motsetning til JavaScript og Python, er det ikke sikkert at Clojure er et husholdningsnavn, selv ikke blant programmerere. I tilfelle du ikke er kjent, er Clojure en dialekt av Lisp-programmeringsspråket, som kan dateres tilbake til slutten av 1950-tallet. Dette gir en veldig spesifikk måte å gjøre ting på som er perfekt for funksjonell programmering.
Som andre Lisp-dialekter behandler Clojure kode som data. Dette betyr at koden effektivt kan endre seg selv. I motsetning til andre Lisp-dialekter, kjører Clojure på Java-plattformen og er kompilert til JVM-bytekode. Dette betyr at det kan fungere med Java-biblioteker, enten de er skrevet i Clojure eller ikke.
I motsetning til tidligere språk på denne listen, er Clojure et funksjonelt programmeringsspråk fra grunnen av. Det betyr at den tar til orde for uforanderlighet der det er mulig, spesielt innen datastrukturer.
Clojure forventer ikke at alle programmene er matematisk "beviselige", men oppfordrer til å bruke rene funksjoner der det er mulig.
4. Elm
Et av de nyere språkene på denne listen, Elm, er et rent funksjonelt språk opprinnelig designet av Evan Czaplicki i 2012. Språket har fått popularitet blant webutviklere, spesielt for å lage brukergrensesnitt.
I motsetning til alle tidligere oppføringer på denne listen, bruker Elm kontroll av statisk type. Dette bidrar til å sikre ingen unntak av kjøretid, med feil i stedet fanget på kompileringstidspunktet. Dette betyr mindre synlige feil for brukere, noe som er et stort pluss.
Elm-kompilatoren er målrettet mot HTML, CSS og JavaScript. På samme måte som du kan bruke Clojure til å skrive programmer som kjører på Java, kan du skrive apper som bruker JavaScript-biblioteker i Elm.
En stor forskjell mellom Elm og andre språk her er at du ikke finner generisk filter()
, map()
og lignende funksjoner. I stedet er disse definert av datatype som List.map
eller Dict.map
.
5. Haskell
Haskell er et annet statisk typisk, rent funksjonelt språk. I motsetning til Elm, har Haskell eksistert en stund. Den første versjonen av språket ble designet i 1990. Den siste standarden er Haskell 2010, mens den neste versjonen er planlagt i 2020.
Som vi allerede har utforsket, betyr Haskells rent funksjonelle natur at funksjoner ikke bør ha bivirkninger ved design. Dette gjør det godt egnet til å løse problemer i den virkelige verden til tross for funksjonell programmerings røtter i akademia.
Til tross for sin mangel på mainstream-popularitet, har Haskell vært ansatt i noen mye brukte prosjekter. Xmonad-vindusjefen er skrevet helt i Haskell. Pandoc, som konverterer forskjellige typer markup til og fra andre formater, bruker også språket.
Standardkartet map()
, filter()
, reduce()
og andre høyere ordensfunksjoner er til stede, noe som skal la deg ta konsepter fra JavaScript eller Python til Haskell. Hvis du vil lære mer om språket, er Learn You a Haskell for Great Good et populært utgangspunkt.
Er du ny på programmering?
Noen av de ovennevnte vilkårene og språkene kan virke noe esoteriske hvis du ennå ikke er en erfaren koder. Det er bra, for å vite det du ikke vet er et av de første trinnene for å bli en bedre elev.
Noen av språkene oppført ovenfor er bedre for nybegynnere enn andre. Ta en titt på listen vår over de beste programmeringsspråk for nybegynnere. Du vil merke at det er noe overgang mellom de to listene.
Og hvis du er interessert, kan du sjekke guiden vår for å bygge et enkelt PHP-nettsted Hvordan bygge et enkelt PHP-nettsted Hvordan bygge et enkelt PHP-nettsted Vil du bygge et nettsted, men vet ikke hvor du skal starte? Å lage et grunnleggende PHP-nettsted vil bringe deg på vei til webutvikling. Les mer .
Utforsk mer om: Funksjonell programmering, JavaScript, Python.