APP-Notes

Introductie - Learning Haskell

Voor mijn laatste semester (ASD) op de Hogeschool van Arnhem en Nijmegen is het de bedoeling dat ik een vreemde programmeertaal ga leren. Hierbij heb ik de keuze uit de talen Prolog, Erlang, Clojure, Scala en Haskell. Stuk voor stuk zijn dit talen met eigen specialiteiten en unieke eigenschappen.

Prolog

Zo lost Prolog problemen op een manier waarbij er veel met regels wordt gewerkt. Er wordt een situatie beschreven en vervolgens kan er gevraagd worden wat het antwoord is op een bepaald probleem.

Erlang

Erlang is van oorsprong een taal voor embedded software, ontwikkeld door Ericsson. Tegenwoordig wordt deze taal ook gebruikt voor het schrijven van applicaties. RabbitMQ is hier een leuk voorbeeld van. Tijdens de minor die ik vorig semester gevolgd heb (.NET minor van InfoSupport), heb ik hier veel mee gewerkt. RabbitMQ is een eventbus implementatie waarbij de server in Erlang geschreven is.

Clojure

Clojure heb ik minder over gehoord. Wel weet ik dat Clojure een backend taal is. Daarnaast is er een dialect op Clojure genaamd ClojureScript. ClojureScript compileert naar JavaScript en draait dus in de browser. In dit geval kan er dus in zowel de frontend als backend Clojure geprogrammeerd worden.

Scala

Scala hoor ik de laatste jaren steeds meer over. Veel bedrijven doen onderzoek naar de overstap van Java naar Scala, omdat Scala ook op de JVM draait. Dit feit maakt het mogelijk om libraries en dergelijke uit Java te gebruiken, terwijl er gebruikt gemaakt kan worden van Scala als taal.

Elm & Haskell

Op mijn werk heb ik kennis gemaakt met de programmeertaal Elm. Elm is een functionele taal die compileert naar JavaScript. Wat Elm krachtig maakt, is het feit dat er door het sterke type systeem geen runtime-errors bestaan. Runtime-errors (‘undefined is not a function’) is een groot probleem in JavaScript. Daarnaast worden er in JavaScript weinig restricties gelegd op het benaderen van variabelen. Globale variabelen worden geregeld gebruikt, terwijl er in Elm geen variabelen bestaan. Alle state is immutable. Functies zijn puur en hebben een (of meerdere) input en een output. Functies hebben geen side-effects. Zie deze link voor meer informatie over Elm.

Elm is sterk gebaseerd op de taal Haskell. Daarnaast staat Haskell bekend als een van de meest pure functionele talen. Omdat ik graag dieper in ga op het functionele paradigma, lijkt mij Haskell de beste keuze. Ik zal hier ook onderzoek naar gaan doen

Hoe ga ik onderzoek doen?

Een paar weken geleden kwam de ‘The Humble Book Bundle: Functional Programming by O’Reilly’ voorbij. Via deze bundle waren een hoop boeken te koop voor erg weinig geld. Een boek in deze bundle is het boek ‘Real World Haskell’, geschreven door Bryan O’Sullivan, John Goerzen en Don Stewart (ISBN 978-0-596-51498-3). Dit boek legt aan de hand van real-world voorbeelden Haskell uit. Ik wil dit boek (of delen van dit boek) door gaan werken. Tijdens het doorwerken van dit boek, houd ik een blog bij met mijn ervaringen en met code voorbeelden. Uiteindelijk wil ik een of meerdere applicaties schrijven waarin veel elementen uit dit boek samen komen. Ik ga een aantal van de opdrachten uit de APP lessen gebruiken als code voorbeelden.