TITLE: Pascal, Forgiveness, and CS1
AUTHOR: Eugene Wallingford
DATE: June 07, 2014 10:17 AM
DESC:
-----
BODY:
Last time, I thought about the
the role of forgiveness
in selecting programming languages for instruction. I mentioned
that BASIC had worked well for me as a first programming language,
as it had worked for so many others. Yet I would probably would
never choose it as a language for CS1, at least for more than a
few weeks of instruction. It is missing a lot of the features
that we want CS majors to learn about early. It's also a bit
too free.
In that post, I did say that I still consider Pascal a good
standard for first languages. It dominated CS1 for a couple of
decades. What made it work so well as a first instructional
language?
Pascal struck a nice balance for its time. It was small enough
that students could master it all, and also provided constructs
for structured programming. It had the sort of syntax that
enabled a compiler to provide students guidance about errors,
but its compilers did not seem overbearing. It had a few
"gothchas", such as the ; as a statement
separator, but not so many that students were constantly
perplexed. (Hey to C++.) Students were able try things out
and get programs to work without becoming demoralized by a
seemingly endless stream of complaints.
(Aside: I have to admit that I liked Pascal's ;
statement separator. I understood it conceptually and, in
a strange way, appreciated it aesthetically. Most others
seem to have disagreed with me...)
Python has attracted a lot of interest as a CS1 language in
recent years. It's the first popular language in a long
while that brings to mind Pascal's feel for me. However,
Pascal had two things that supported the teaching of CS
majors that Python does not: manifest types and pointers.
I love dynamically-typed languages with managed memory and
prefer them for my own work, but using that sort of language
in CS1 creates some new challenges when preparing students
for upper-division majors courses.
So, Pascal holds a special place for me as a CS1 language,
though it was not the language I learned there. We used it
to teach CS1 for many years and it served me and our students
well. I think it balances a good level of forgiveness with
a reasonable level of structure, all in a relatively small
package.
-----