W A A R O M M O D U L A - 2 ?
Op de vorige Special had ik aangekondigd een cursus Turbo
Pascal te starten. Dat deed ik eigenlijk bij gebrek aan
beter, want ik had liever een Modula-2 cursus aangekondigd.
Ik dacht toen dat er helaas geen Modula-2 compiler was voor
MSX, zodat we het dan maar met Turbo Pascal moesten doen.
Een paar maanden later zag ik opeens een Modula-2 compiler
in Mari's Games BBS, die ik natuurlijk meteen heb gedownd.
Dit bleek Turbo Modula-2 van Borland te zijn!
F A N
Ik ben een echte Modula-2 fan! De voordelen van Modula-2 en
Pascal zijn dat het eigenlijk de enige bekende talen zijn
die speciaal bedoeld zijn voor gestructureerd programmeren.
Natuurlijk kun je ook met Modula-2 en Pascal nog knoeien,
maar de talen nodigen in principe uit tot netheid. Dit in
tegenstelling tot C, waarin de meeste programmeurs er een
onleesbare puinhoop van maken.
En waarom kies ik dan voor Modula-2 en niet voor Pascal?
Beide talen zijn door Niklaus Wirth ontworpen en lijken dan
ook vrij veel op elkaar. Wirth heeft Modula-2 echter later
ontworpen dan Pascal, waarbij hij een groot aantal minder
sterke punten in het ontwerp van Pascal heeft verbeterd.
Borland heeft een aantal voordelen van Turbo Pascal ten
opzichte van standaard Pascal overigens van Modula-2
afgekeken!
V O O R D E L E N
De voordelen van Modula-2 ten opzichte van Turbo Pascal
zijn:
- Modula-2 werkt met modules, waardoor op een zeer handige
wijze modulair kan worden geprogrammeerd. De modules
worden apart gecompileerd, als je iets veranderd in een
module hoeven de andere modules dus niet opnieuw te worden
gecompileerd! (Bij Turbo Pascal is dat wel zo.) Bovendien
worden alleen de procedures die je werkelijk gebruikt uit
de module ge�mporteerd, zodat de executable niet onnodig
groot wordt.
- De structuur van IF, WHILE, etc. statements is bij
Modula-2 veel logischer waardoor je veel minder snel
fouten maakt dan bij Turbo Pascal.
- Het maakt bij Modula-2 niet uit in welke volgorde je de
procedures zet, terwijl Turbo Pascal een (onlogische)
volgorde oplegt (namelijk dat procedures die vanuit een
andere procedure worden aangeroepen erboven moeten staan,
eronder is logischer omdat je topdown programmeert).
- Modula-2 is case-sensitive en alle gereserveerde woorden
moeten met hoofdletters worden geschreven. Voor sommigen
lijkt dit misschien een nadeel, maar het is bijvoorbeeld
erg handig om een variabele Char van het type CHAR te
hebben (dat kan bij Turbo Pascal niet omdat Turbo Pascal
geen verschil maakt tussen hoofd- en kleine letters) en
het maakt de programma's beter leesbaar. Ik schrijf in
Turbo Pascal ook alle gereserveerde woorden in
hoofdletters, maar helaas behoor ik daarmee tot een
minderheid.
- Genest commentaar mag in Modula-2 wel en in Turbo Pascal
niet. Dit is erg vervelend bij Turbo Pascal, als je daar
een flink stuk van je source tussen {} wilt zetten kan dat
alleen als er geen commentaar in voorkomt.
- Modula-2 heeft 'open array' parameters, waardoor je
makkelijker universele procedures kunt maken voor arrays.
- De stapgrootte van een FOR-loop is bij Modula-2 variabel
(bij Turbo Pascal zijn alleen +1 en -1 mogelijk).
Er zijn nog wel meer verschillen/voordelen te noemen maar
deze lijst lijkt me wel voldoende reden om Modula-2 te
prefereren boven Turbo Pascal.
N A D E E L
Eigenlijk het enige nadeel van Modula-2 ten opzichte van
Turbo Pascal is dat Turbo Pascal veel meer wordt gebruikt.
Dit heeft als gevolg dat er meer aandacht voor is in de vorm
van cursussen in tijdschriften, boeken en libraries.
Maar als dit een reden zou zijn om toch Turbo Pascal te
gebruiken, dan vraag ik me af waarom er nog MSX gebruikers
zijn. Er zijn immers veel meer PC-gebruikers...
A L L E E N T E K S T
Ik hoor vaak van andere MSX'ers: ik programmeer niet in
Turbo Pascal omdat je dan geen grafische instructies hebt.
Je kunt alleen maar met (trage) READ/WRITE op een
tekstscherm werken. Dit zelfde 'nadeel' geldt ook voor Turbo
Modula-2.
Maar natuurlijk kun je een library maken met grafische
instructies, en dat is wat ik binnenkort ga doen. Dus op
Sunrise Special #7 kun je een flinke library verwachten met
een grote hoeveelheid handige routines voor de VDP, zodat je
Modula-2 dan ook voor grafische dingen kunt gebruiken.
Kortom, ik hoop dat een groot aantal van jullie over zal
stappen op Modula-2!
Stefan Boer