Alweer geen Excel

Modulariteit

Arnout van Kempen schrijft in deze rubriek over pret maken met computers. Hij gaat aan de slag met Pascal.

Net als in andere talen is werken in één bestand met broncode prima, totdat je programma te groot wordt of je onderdelen in meerdere programma's wilt gebruiken. Bijvoorbeeld omdat je een handige procedure hebt geschreven die een bestand opent en error handling doet. Dat is in veel programma's bruikbaar en wil je niet steeds opnieuw schrijven. 

In Turbo Pascal is een oplossing te vinden met units. Een unit is een apart bronbestand waarin je procedures, functies, types en variabelen zet die je in meerdere programmas wilt gebruiken. Een beetje zoals een library in C.

De structuur ziet er zo uit:

Unit MijnUnit;

Interface
  Procedure ZegHallo;

Implementation
  Procedure ZegHallo;
  Begin
    Writeln('Hallo vanuit een unit!');
  End;

End.

Het bestand krijgt de naam MijnUnit.pas. Als je het compileert, maakt Turbo Pascal er een MIJNUNIT.TPU van: een Turbo Pascal Unit.

Het belangrijkste idee is de scheiding tussen interface en implementation: In het Interface-gedeelte zet je alles wat je "openstelt" voor de buitenwereld: de namen van procedures, functies, variabelen, types. In het Implementation-gedeelte staat de eigenlijke code.
Gebruikers van de unit zien alleen de interface en hoeven de details erachter niet te kennen.

Gebruik van een unit:

Program TestUnit;

Uses
  MijnUnit;

Begin
  ZegHallo;
End.

Naast de genoemde voordelen van herbruikbaarheid zit hier een ander concept in, dat ook bekend is van object oriented programmeren, OOP: encapsulatie, dat wat niet in de interface staat, blijft privé.
Units zijn daarmee vergelijkbaar met bijvoorbeeld in C: header files, .h- en .c-bestanden om functies te scheiden. Ook talen als Rust en Python hebben dit soort constructies.

Dit proces lijkt op het samenvoegen van verschillende modules die tot object-files zijn gecompileerd en via de linker worden samengevoegd, maar de route via units is veel eleganter. Hier neemt Pascal al het detail knoeiwerk voor zijn rekening, maar belangrijker: voor de programmeur is dit veel overzichtelijker.

Ik herinner me uit mijn opleiding bedrijfsinformatica dat we wachtrijsimulaties bouwden in Pascal. Via een unit die daarvoor geschreven was kreeg je in feite een uitbreiding op de taal, waardoor je de simulatie kon schrijven in termen die daarvoor relevant zijn, bijvoorbeeld AddToQueue. Zodat je programma leesbaar was op het niveau van de simulatie, terwijl het probleemloos compileerde via Pascal.

Arnout van Kempen is naast computernerd ook directeur compliance & risk bij aaff. Hij schrijft op persoonlijke titel.

Gerelateerd

reacties

Reageer op dit artikel

Spelregels debat

    Aanmelden nieuwsbrief

    Ontvang elke werkdag (maandag t/m vrijdag) de laatste nieuwsberichten, opinies en artikelen in uw mailbox.

    Bent u NBA-lid? Dan kunt u zich ook aanmelden via uw ledenprofiel op MijnNBA.nl.