TITLE: end.
AUTHOR: Eugene Wallingford
DATE: January 06, 2024 10:41 AM
DESC:
-----
BODY:
My social media feed this week has included many notes and tributes
on the passing of Niklaus Wirth, including
his obituary from ETH Zurich,
where he was a professor. Wirth was, of course,
a Turing Award winner
for his foundational work designing a sequence of programming languages.
Wirth's death reminded me of
END DO,
my post on the passing of John Backus, and before that
a post
on the passing of Kenneth Iverson. I have many fond memories related
to Wirth as well.
Pascal
Pascal was, I think, the fifth programming language I learned. After
that, my language-learning history starts to speed up and blur. (I
do think APL and Lisp came soon after.)
I learned BASIC first, as a junior in high school. This ultimately
changed the trajectory of my life, as it planted the seeds for me to
abandon a lifelong dream to be an architect.
Then at university, I learned Fortran in CS 1, PL/I in Data Structures
(you want pointers!), and IBM 360/370 assembly language in a two-quarter
sequence that also included JCL. Each of these language expanded my
mind a little.
Pascal was the first language I learned "on my own". The fall of my
junior year, I took my first course in algorithms. On Day 1, the
professor announced that the department had decided to switch to
Pascal in the intro course, so that's what we would use in this
course.
"Um, prof, that's what the new CS majors are learning. We know
Fortran and PL/I." He smiled, shrugged, and turned to the chalkboard.
Class began.
After class, several of us headed immediately to
the university library,
checked out one Pascal book each, and headed back to the dorms to
read. Later that week, we were all using Pascal to implement whatever
classical algorithm we learned first in that course. Everything was
fine.
I've always treasured that experience, even if it was little scary
for a week or so. And don't worry: That professor turned out to be
a good guy with whom I took several courses. He was a fellow chess
player and ended up being the advisor on my senior project: a program
to perform
the Swiss system
commonly used to run chess tournaments. I wrote that program in...
Pascal. Up to that point, it was the largest and most complex program
I had ever written solo. I still have the code.
The first course I taught as a tenure-track prof was my university's
version of CS 1 -- using Pascal.
Fond memories all. I miss the language.
Wirth sightings in this blog
I did a quick search and found that Wirth has made an occasional
appearance in this blog over the years.
• January 2006:
Just a Course in Compilers
This was written at the beginning of my second offering of our compiler
course, which I have taught and written about many times since. I had
considered using as our textbook Wirth's Compiler Construction,
a thin volume that builds a compiler for a subset of
Wirth's Oberon programming language
over the course of sixteen short chapters. It's a "just the facts and
code" approach that appeals to me most days.
I didn't adopt the book for several reasons, not least of which that
at the time Amazon showed only four copies available, starting at
$274.70 each. With two decades of experience teaching the course now,
I don't think I could ever really use this book with my undergrads,
but it was a fun exercise for me to work through. It helped me think
about compilers and my course.
Note: A PDF of Compiler Construction has been posted on the
web for many years, but every time I link to it, the link ultimately
disappears. I decided to mirror the files locally, so that the link
will last as long as this post lasts: [
Chapters 1-8
|
Chapters 9-16
]
• September 2007:
Hype, or Disseminating Results?
... in which I quote Wirth's thoughts on why Pascal spread widely in
the world but Modula and Oberon didn't. The passage comes from a
short historical paper he wrote called "Pascal and its Successors".
It's worth a read.
• April 2012:
Intermediate Representations and Life Beyond the Compiler
This post mentions how Wirth's P-code IR ultimately lived on in the
MIPS compiler suite long after the compiler which first implemented
P-code.
• July 2016:
Oberon: GoogleMaps as Desktop UI
... which notes that the Oberon spec defines the language's desktop as
"an infinitely large two-dimensional space on which windows ... can be
arranged".
• November 2017:
Thousand-Year Software
This is my last post mentioning Wirth before today's. It refers to the
same 1999 SIGPLAN Notices article that tells the P-code story
discussed in my April 2012 post.
I repeat myself. Some stories remain evergreen in my mind.
The Title of This Post
I titled my post on the passing of John Backus END DO
in homage to his intimate connection to Fortran. I wanted to do something
similar for Wirth.
Pascal has a distinguished sequence to end a program:
"end.". It seems a
fitting way to remember the life of the person who created it and who
gave the world so many programming experiences.
-----