Alweer geen excel

Beetje suf, zo'n onderwijstaal

Arnout van Kempen is terug en schrijft weer regelmatig over pret maken met computers. Hij gaat aan de slag met Pascal.

Pascal is een prima taal voor het onderwijs, maar haalt het wel de kracht van C? Eén ding moge duidelijk zijn, programmeren in Pascal is minder compact dan C. Daar staat tegenover dat je in Pascal veel minder noodzaak hebt om te documenteren wat je aan het doen bent. Dus uiteindelijk is het nog maar de vraag of je wel zoveel meer toetsaanslagen hebt in Pascal.

In een vergelijking tussen de executables die door beide compilers wordt geproduceerd, blijkt dat ze elkaar nauwelijks ontlopen. C levert in specifieke situaties wat snellere code op, Pascal vaak wat compactere code. Maar over het algemeen zijn beide compilers prima in staat snelle code te maken.

Is het cliché dat C veel dichter op het ijzer zit dan welke andere taal dan ook, buiten assembly, dan misschien waar? Ook dat is maar de vraag. Zeker Turbo Pascal 6.0, dat enerzijds de eerste elementen van OOP introduceerde maar anderzijds een ingebouwde assembler had, kon veel kanten op. Zo is dit ook Pascal, met pointers, met inline assembly, en nog steeds vrij leesbaar:

program demo_ptr_asm;

type
  twordarray = array[0..4] of word;
  pwordarray = ^twordarray;

function sum_words(p: pwordarray; n: word): longint; assembler;
asm
  push bp
  mov  bp, sp
  push ds
  lds  si, [bp+6]      { p }
  mov  cx, [bp+8]      { n }
  xor  ax, ax
  xor  dx, dx
@@loop:
  add  ax, [si]        { dx:ax += *si }
  adc  dx, 0
  add  si, 2           { volgende word }
  loop @@loop
  pop  ds
  pop  bp
end;

var
  a: pwordarray;
  i: integer;
  s: longint;

begin
  new(a);
  for i := 0 to 4 do
    a^[i] := i + 1;        { 1,2,3,4,5 }

  s := sum_words(a, 5);    { verwacht 15 }
  writeln('som = ', s);

  dispose(a);
end.

Kortom: het gebruik van Pascal beperkt je niet echt in je toegang tot de hardware, terwijl het wel meer veiligheid en meer leesbaarheid geeft.

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.