Kategorier
Blog Datalogi

Min opvækst med Pascal

Turbo Pascal, som jeg husker vældig godt fra undervisningssammenhænge.

Mine første erfaringer med at programmere gjorde jeg mig i gymnasiet; min matematiklærer Jens Friis lavede et programmeringskursus i COMAL-80 efter skoletid. Og her kan jeg huske, at der var et program, jeg lavede, der ikke fungerede så godt, Jens sagde, at det måske skulle laves i Pascal. Da jeg senere begyndte at studere, blev Pascal det første sprog, jeg lærte. Og mange år senere underviste jeg selv i programmering i Pascal. Det er mange år siden, jeg sidst har skrevet et program i Pascal, men netop dette programmeringssprog, der var det første, jeg mødte for alvor, står stadig klart i erindringen for mig og jeg har gode minder om det.

Siden er C, der faktisk kom allerede 3 år efter Pascal, blevet populært. Men den ofte meget maskinnære tankegang bag C og de designideer, der også har præget dets efterkommere, C++, C#, Java osv. fascinerer mig ikke på samme måde, som Pascal fascinerede mig. Måske er det netop den maskinnære og nogle gange næsten bastant imperative tilgang med alle referencerne og de små og ikke så imponerende typer, der gør at jeg ikke holder så meget af C-familien, som jeg burde.

Pascal kommer fra Algol-familien af sprog og blev udviklet af bl.a. Niklaus Wirth, der også var involveret i udviklingen af efterfølgeren til Algol 60 og senere sprog fra den familie. Efter Pascal stod han bag flere andre sprog, men de slog aldrig rigtig an på samme måde som Pascal.

Niklaus Wirth har et essay om tilblivelsen af Pascal i det seneste nummer af Communications of the ACM. Og her skriver han det, som jeg faktisk altid har tænkt. Der er noget særligt ved at opdage, at nogen kan opsummere det, jeg også har tænkt, på en så koncis måde.

The principal purpose of a higher-level language is to raise the level of abstraction from that of machine instructions. Examples are data structures vs. word arrays in memory, or conditional and repetitive statements vs. jump instructions. A perfect language should be defined in terms of mathematical logic, of axioms and rules of inference. No reference to any computer or mechanism should be necessary to understand it. This is the basis of portability. Algol’s designers saw this goal; but it is most difficult to achieve without sacrificing power of expression. Yet, any new language must be measured on the degree to which it comes close to this goal. The sequence Pascal—Modula—Oberon is witness to my attempts to achieve it. Oberon is close to it. Yet, nothing is perfect.

Niklaus Wirth 
Communications of the ACM, March 2021, Vol. 64 No. 3, Pages 39-41
10.1145/3447525