Cc: to COFF, as this isn't so Unix-y anymore.
[snip]
The Modula family seemed like the better direction; those were still Pascal-ish, but had nice intentional extensions so that they were not nearly so "impotent." I recall it being quite popular, once upon a time, to write code in Modula-2, and run it through a translator to mechanically transform it into a compatible subset of Ada for those that needed DOD compatibility. The Modula-2 compilers were wildly smaller and faster for getting the code working, you'd only run the M2A part once in a while (probably overnight!)
Wirth's languages (and books!!) are quite nice, and it always surprised and kind of saddened me that Oberon didn't catch on more.
Of course Pascal was designed specifically for teaching. I learned it in high school (at the time, it was the language used for the US "AP Computer Science" course), but I was coming from C (with a little FORTRAN sprinkled in) and found it generally annoying; I missed Modula-2, but I thought Oberon was really slick. The default interface (which inspired Plan 9's 'acme') had this neat graphical sorting simulation: one could select different algorithms and vertical bars of varying height were sorted into ascending order to form a rough triangle; one could clearly see the inefficiency of e.g. Bubble sort vs Heapsort. I seem to recall there was a way to set up the (ordinarily randomized) initial conditions to trigger worst-case behavior for quick.
I have a vague memory of showing it off in my high school CS class.
- Dan C.