Development

Software-ontwikkeling
pizza

Zo ga je programmeren in de toekomst

Binnen enkele jaren verandert het karakter van programmeren.

© CC0 - Unsplash Alexandra Gorn
27 oktober 2017

Binnen enkele jaren verandert het karakter van programmeren.

Ontwikkelaars zijn nu vooral gewend te denken in 'doe dit en dan doe dat'. Dat idee gaat op de schop met functioneel programmeren.

Een functionele programmeertaal definieert het resultaat. Simon Peyton Jones, hoofdonderzoeker bij Microsoft, maakt in een interview bij TechRepublic de vergelijking met Excel. "Een formule in Excel heeft geen serie van stappen, maar zegt gewoon 'de waarde van deze cel is dit'."

Functioneel programmeren bestaat al lang. Het is al vaak voorgekomen dat nieuwe eigenschappen werden ontwikkeld in een functionele programmeertaal zoals Haskell of OCaml en daarna zijn weg vond naar de reguliere programmeertalen. Voorbeelden die Peyton Jones noemt zijn garbage collectionparametric polymorphism en generics in Java. Linq in C# is er ook een.

Maar er zijn steeds meer argumenten waarom functioneel programmeren een belangrijker rol gaat spelen, zegt Peyton Jones, die belangrijke bijdragen heeft geleverd aan de ontwikkeling van Haskell. "Het schrijven van software draait helemaal om het managen van complexiteit. De enige beperking aan hoe ambitieus de software is die we bouwen, is in feite onze mogelijkheid de complexiteit te beheersen. Functionele programmeertalen geven je veel scherper gereedschap om de de complexiteit te beheersen dan imperatieve talen doen." Imperatieve programmeertalen zijn de talen die nu doorgaans worden gebruikt door ontwikkelaars.

Afhankelijkheid moet uitgebannen

Peyton Jones noemt het bedrijfje Maplesoft dat een compiler heeft gebouwd voor Haskell en deze heel succesvol inzet bij het ontwikkelen van machine learning. Ook is volgens hem functioneel programmeren bij uitstek geschikt voor het ontwikkelen van software die optimaal gebruik maakt van multicore parallel processing.

Het is voor een programmeur namelijk erg lastig te bedenken hoe twee berekeningen op elkaar inspelen als ze in parallelle processen worden uitgevoerd. Als er geen wederzijdse afhankelijkheid is, is er geen probleem, maar als ze op elkaar moeten wachten, betekent dat een vertraging in de verwerking. "In een functionele taal is het bij definitie vastgelegd dat er geen interactie tussen de processen kan plaatsvinden. Daarom dwingt het programmeurs heel expliciet te zijn over de interacties tussen de onderdelen van hun programma. Dat leidt weer tot minder softwarefouten."

Peyton Jones stelt dat naarmate de ambities van softwarebouwers steeds groter worden, het lastiger wordt met plakband en elastiek het imperatief programmeren bij elkaar te houden.

Geïnteresseerd in programmeren?

Bekijk dan ook de volgende artikelen:

Kan die C-code nou nog niet weg? Volledige vervanging niet haalbaar, maar kwetsbare plekken kunnen er met Rust wel uit.

Zo maak je software energiezuinig. 6 tips om te komen tot duurzame software.

10 populaire softwareframeworks. Aan welke softwareframeworks geven ontwikkelaars de voorkeur?

Onderhoudbaar programmeren maakt ontwikkelen goedkoper. Tijdens de nieuwbouw werkt goed onderhoudbaar programmeren een procent of 10 efficiënter dan code kloppen ‘vanuit de waan van de dag’.

Lees meer over Development OP AG Intelligence
4
Reacties
Anoniem 31 oktober 2017 07:16

Voor een intro in functioneel programmeren is Learn You A Haskell een aanrader. Kijk op http://learnyouahaskell.com

Anoniem 30 oktober 2017 14:41

Helemaal eens met de anonieme IBM-er. Het zal de gebruiker worst wezen of z'n applicatie met functional programming, agile of waterval-principe mismaakt is. Of is het merk van de robot die de lak op je auto gespoten heeft een factor bij de keuze hiervan? Of er is een link, of die is er niet...

Anoniem 28 oktober 2017 11:01

Beste anoniem,
Waar kan ik meer informatie vinden over de aanpak die u beschrijft?

Anoniem 25 oktober 2017 11:54

In de tijd dat functional programming opkwam hebben mijn toenmalige collega Jan de Vrije en ik, in het IBM-lab in Uithoorn, gekozen om daar niet aan mee te doen. Precisie is op een veel natuurlijker en transparanter manier, de gebruiker herkent zijn en haar eigen werk erin, te bereiken.
Voortgaand inzicht was dat je niet software hoeft te ontwerpen en te programmeren en dan hopen dat dat doet wat je gebruiker wil, zegt te willen, nodig heeft. Met een zelf ontwikkeld ordenend principe ontwikkel je het bedrijfsproces gestructureerd. Complexiteit pak je híer aan. Samen met je klant. Iteratief, agile. Niet meer in een flowchart maar als interacties. Het bedrijfsproces op hoog niveau, afdalend tot detailniveau, beter gezegd hoog en detail niveau zijn een geheel, door de gekozen ordening. Alle verfijningen die de gebruiker nodig heeft bouw je niet in in je software, en dan maar hopen dat je de gebruiker goed begrepen hebt, maar in het bedrijfsproces. Tijd en plaats, batch- of transactiegewijs, na of naast elkaar (parallel) uitvoeren, wie doet wat (de rollen: ook een systeemtransactie en/of een robot kan actor zijn), hoe uit te voeren (hier geldt hetzelfde als bij rollen), kun je met voortschrijdend inzicht in dit bedrijfsproces kwijt en naspelen. Beter gezegd: voor-spelen, voordat je ook maar iets hoeft te programmeren. De leefwereld van de cliënt, gebruiker, beschrijf je. ICT hoeft dan alleen te zorgen dat de benodigde gegevens er zijn, dat de opgeleverde gegevens opgeslagen en zo nodig verzonden worden, en voert de interacties uit. Je ontwerpt sneller en transparanter en bouwen kan via een generator. De precisie heb je al zeker gesteld vanaf de business: dat ordenend principe heeft de kracht om dit te realiseren. De hiertoe benodigde expertregels, de werkwijze voor de ontwerper zijn beschreven. Dit werkt lekker in tandems van gebruiker (inhoud) en ontwerper (structureren). Een echt Nederlandse ontwikkeling die het verdient om meer bekend te worden. Best lang geleden is er in een vakblad, Informatie Management, door een onafhankelijk journalist op een levendige manier al een artikel over geschreven en ook zijn er op gezette tijden artikelen met ervaringen van cliënten. De aanpak heeft alle ICT-hypes al overleefd.

Reactie toevoegen
De inhoud van dit veld is privé en zal niet openbaar worden gemaakt.