Wilt u meer weten over programmeren?  Het is de moeite waard om te leren over functioneel programmeren en welke programmeertalen dit ondersteunen.

5 functionele programmeertalen die u moet kennen

Advertentie Als u tijd besteedt aan het lezen van programmatrends op internet, hebt u gehoord over functioneel programmeren. De term komt vrij vaak voor, maar wat betekent het? Zelfs als u weet wat functioneel programmeren is, is het misschien onduidelijk welke talen hiervoor het meest geschikt zijn

Advertentie

Als u tijd besteedt aan het lezen van programmatrends op internet, hebt u gehoord over functioneel programmeren. De term komt vrij vaak voor, maar wat betekent het?

Zelfs als u weet wat functioneel programmeren is, is het misschien onduidelijk welke talen hiervoor het meest geschikt zijn. Niet alle programmeertalen zijn immers gelijk. Hoewel je functionele programmeerparadigma's in veel talen kunt toepassen, zijn er toch nog enkele waar je je veel comfortabeler zult voelen.

Wat is functioneel programmeren?

Als je een achtergrond in wiskunde hebt, heb je een voorsprong op functioneel programmeren. Dit komt omdat het functionele programmeerparadigma computers als wiskundige functies behandelt. Als je geen wiskundige achtergrond hebt, kun je je verward voelen.

Kortom, functioneel programmeren beschouwt functies en gegevens als onveranderlijk. U geeft gegevens door aan een functie en deze retourneert in het algemeen die getransformeerde gegevens of een ander type gegevens. Bij functioneel programmeren mag de functie nooit de oorspronkelijke gegevens of programmastatus wijzigen.

Er is een overeenkomst met de Unix-filosofie dat elk programma één ding goed moet doen. Een functie mag verschillende delen van uw programma niet raken. In plaats daarvan zou het zijn input moeten nemen en u een output moeten geven.

In het ideale geval moeten functies waar mogelijk puur zijn bij functioneel programmeren. Dit betekent dat bij dezelfde invoer de uitvoer van de functie altijd hetzelfde zal blijven.

Functioneel versus objectgericht programmeren

Dit is een dramatische afwijking van zoiets als objectgericht programmeren. In objectgeoriënteerd programmeren hebt u vaak een basisobject met verschillende methoden om gegevens of status die deel uitmaken van dat object te wijzigen. Een methode kan zelfs gegevens wijzigen of een status aangeven als deze niet expliciet wordt vermeld.

In praktische programma's is dit soms logisch. Dat gezegd hebbende, het kan programma's moeilijker maken om te onderhouden, omdat het niet altijd duidelijk is wat de status of gegevens verandert. Functioneel programmeren werd oorspronkelijk gebruikt in academische omgevingen, maar kan ook helpen om dit soort problemen te voorkomen.

1. JavaScript

JavaScript-logo

Sommige programmeertalen staan ​​functioneel programmeren toe, terwijl anderen dit aanmoedigen of zelfs afdwingen. JavaScript valt in de eerste categorie. Hoewel u functionele programmeerparadigma's in de taal kunt gebruiken, kunt u net zo gemakkelijk een objectgerichte benadering gebruiken.

Dat gezegd hebbende, er zijn tal van functionele programmeerparadigma's ingebouwd in JavaScript. Neem bijvoorbeeld functies van een hogere orde. Dit zijn functies die andere functies als argumenten kunnen aannemen.

JavaScript heeft verschillende functies die werken met arrays zoals map(), reduce(), filter() en andere, allemaal functies van een hogere orde. Hiermee kun je ze aan elkaar koppelen om snel allerlei dingen met een array te doen.

Hoewel vroege JavaScript enkele problemen had met veranderbaarheid, bieden nieuwere versies van de ECMAScript-standaard oplossingen. In plaats van het catch-all var trefwoord voor het definiëren van variabelen, hebt u nu const en let . Met de eerste kunt u constanten definiëren, zoals de naam al aangeeft. De tweede, let, beperkt het bereik van een variabele tot de functie waarin deze wordt gedeclareerd.

2. Python

Python-logo

Net als JavaScript is Python een algemene taal waarmee je een willekeurig aantal programmeerparadigma's kunt gebruiken. Python heeft misschien zijn nadelen 4 redenen waarom Python niet de programmeertaal voor jou is 4 redenen waarom Python niet de programmeertaal voor jou is De programmeertaal Python is enorm populair, maar hier zijn een paar redenen waarom je Python wilt vermijden . Lees meer, maar functioneel programmeren is daar niet een van. Er is zelfs een inleiding tot functioneel programmeren in de officiële Python-documentatie.

Om te beginnen, vindt u veel van dezelfde functies map(), filter(), reduce() en soortgelijke functies die hierboven zijn ingebouwd. Net als bij JavaScript zijn dit functies van een hogere orde omdat ze andere functies als argumenten beschouwen. In Python heeft functioneel programmeren een voordeel in de vorm van het lambda trefwoord.

U kunt lambda-expressies op verschillende manieren gebruiken. Een manier om het te gebruiken is als afkorting voor eenvoudige functies. Wanneer toegewezen aan een variabele, kunt u lambda-expressies exact aanroepen zoals u een standaard Python-functie zou doen. Het echte voordeel van lambda-expressies komt wanneer u ze als anonieme functies gebruikt.

Anonieme functies werken ook in JavaScript en andere talen op deze lijst. Ze zijn vooral handig wanneer ze worden gebruikt met functies van een hogere orde, omdat u ze ter plaatse kunt definiëren. Zonder anonieme functies zou u zelfs eenvoudige toevoegingen vooraf moeten definiëren als op maat gemaakte functies.

3. Clojure

Clojure programmeertaal logo

In tegenstelling tot JavaScript en Python is Clojure misschien niet echt een begrip, zelfs niet onder programmeurs. In het geval dat u niet bekend bent, is Clojure een dialect van de Lisp-programmeertaal, die dateert uit de late jaren 1950. Dit brengt een zeer specifieke manier van doen met zich mee die toevallig perfect is voor functioneel programmeren.

Net als andere Lisp-dialecten, behandelt Clojure code als gegevens. Dit betekent dat de code zichzelf effectief kan veranderen. In tegenstelling tot andere Lisp-dialecten, werkt Clojure op het Java-platform en is het gecompileerd naar JVM bytecode. Dit betekent dat het kan werken met Java-bibliotheken, of ze nu in Clojure zijn geschreven of niet.

In tegenstelling tot eerdere talen op deze lijst, is Clojure een functionele programmeertaal vanaf het begin. Dat betekent dat het waar mogelijk onveranderlijkheid bepleit, vooral binnen datastructuren.

Clojure verwacht niet dat alle programma's wiskundig 'aantoonbaar' zijn, maar moedigt het gebruik van pure functies waar mogelijk aan.

4. Iep

Elm programmeertaal logo

Een van de nieuwere talen op deze lijst, Elm is een puur functionele taal die in 2012 door Evan Czaplicki is ontworpen. De taal is populair geworden bij webontwikkelaars, met name voor het maken van gebruikersinterfaces.

In tegenstelling tot alle eerdere vermeldingen in deze lijst, gebruikt Elm statische typecontrole. Dit helpt om geen runtime-uitzonderingen te garanderen, met fouten die tijdens het compileren worden vastgelegd. Dit betekent minder zichtbare fouten voor gebruikers, wat een groot pluspunt is.

De Elm-compiler richt zich op HTML, CSS en JavaScript. Op dezelfde manier waarop u Clojure kunt gebruiken om programma's te schrijven die op Java worden uitgevoerd, kunt u apps schrijven die JavaScript-bibliotheken in Elm gebruiken.

Een groot verschil tussen Elm en andere talen is dat u geen generieke filter(), map() en vergelijkbare functies zult vinden. In plaats daarvan worden deze gedefinieerd door het gegevenstype zoals List.map of Dict.map .

5. Haskell

Haskell programmeertaal logo

Haskell is een andere statisch getypeerde, puur functionele taal. In tegenstelling tot Elm bestaat Haskell al een tijdje. De eerste versie van de taal is ontworpen in 1990. De nieuwste standaard is Haskell 2010, terwijl de volgende versie is gepland voor 2020.

Zoals we al hebben onderzocht, betekent het puur functionele karakter van Haskell dat functies door ontwerp geen bijwerkingen mogen hebben. Dit maakt het geschikt voor het oplossen van echte problemen, ondanks de wortels van functioneel programmeren in de academische wereld.

Ondanks het gebrek aan mainstream populariteit is Haskell in enkele veel gebruikte projecten werkzaam geweest. De Xmonad-vensterbeheerder is volledig in Haskell geschreven. Pandoc, dat verschillende soorten markeringen van en naar andere formaten converteert, gebruikt ook de taal.

De standaard map(), filter(), reduce() en andere functies van hogere orde zijn aanwezig, waarmee u concepten van JavaScript of Python naar Haskell kunt brengen. Als je meer wilt weten over de taal, is Learn You a Haskell for Great Good een populair startpunt.

Ben je nieuw in programmeren?

Sommige van de bovenstaande termen en talen kunnen enigszins esoterisch lijken als je nog geen ervaren coder bent. Dat is goed, want weten wat je niet weet, is een van de eerste stappen om een ​​betere leerling te worden.

Sommige van de hierboven genoemde talen zijn beter voor beginners dan andere. Bekijk onze lijst met de beste programmeertalen voor beginners. U zult merken dat er een kruising is tussen de twee lijsten.

En als je geïnteresseerd bent, bekijk dan onze gids voor het bouwen van een eenvoudige PHP-website Hoe een eenvoudige PHP-website te bouwen Hoe een eenvoudige PHP-website te bouwen Wil je een website bouwen maar weet je niet waar je moet beginnen? Door een eenvoudige PHP-website te maken, gaat u op weg naar webontwikkeling. Lees verder .

Ontdek meer over: Functioneel programmeren, JavaScript, Python.