In “The Humble Programmer”, written by Dijkstra in 1972 he made the following statement:
“Another lesson we should have learned from the recent past is that development of ‘richer’ or ‘more powerful’ programming languages was a mistake in the sense that these baroque monstrosities, these conglomerations of idiosyncrasies, are really unmanageable both mechanically and mentally.”
And to be honest, he was probably right… but that wasn’t even the worst of it. If he thought Algol 68 was a monster, C++ and Ada would balloon to gargantuan proportions. Have we lost the ability to create simple programming languages? I don’t necessarily mean for the purpose of creating commercial applications – the nature of interaction with hardware, networking etc, makes languages with large scale structure necessary. But along the way we have used these commercial languages to teach novices to program – and it hasn’t really worked.
One of the reasons why students become disengaged with introductory programming courses may be the vast amounts of language knowledge required, on top of learning problem solving skills, and algorithm design. It may be too much for people not use to thinking in a “programming” mode. Learning about language-specific syntax, and memory management, design, testing, blah, blah, blah – it may be overwhelming. Which is surprising, but then those of us who learned programming in the 1980s learned to program in Pascal, or maybe Fortran. Before languages added things like OO, became “functional”, and masters of everything that a language could be, they were simple – no really they were.
There were languages created specifically for teaching programming. Pascal was one. S-Algol was another (it appeared after Pascal).
Here is a program in S-Algol which performs a Bubble sort:
let n = readi let x = vector 1::n of 0.0 for i = 1 to n do x(i) := readr for i = 1 to n-1 do for j = 1 to n-i do if x(j) > x(j+1) do begin let temp = x(j) x(j) := x(j+1) x(j+1) := temp end write "The sorted numbers are 'n'" for i = 1 to n do write x(i), "'n"?
The structure of this language was very simple. It was from a pre-OO time when the programming world was simpler, happier.