I learned to code in 1963. Things were different then.
There were some obvious things, like 24 hour turnarounds on tests, and storing code on paper tape. Oh – and the computer had about .000000001 of the processor speed on my watch, but at the time we thought it was pretty cool.
I am beginning to sound like one of the four yorkshiremen so I will move on. I want to talk about the pioneers of structured programming and structured design,
Coding when I learned it was different. We would start by producing a detailed flowchart on paper using a plastic template. Then we would code it step by step. The language we used was primitive – very similar to the original Dartmouth Basis.
The first time I saw something like a modern programming language was PL/1. It didn’t understand objects, but otherwise it hasn’t really been improved on since. But we still approached coding in the same way.
Then there was a lot of discussion in the press of the GOTO statement. This would transfer control to some label in the program. The controversy was kicked off by a paper by Edgar Dijkstra called “GOTO statement considered harmful“. At the time it seemed hard to drop the GOTO statement, which seems odd now, but the new technique, called structured programming rapidly became standard good practice..
The next big change in our approach to coding was a paper in the IBM system journal in 1974: Structured design by W. P. Stevens, G. J. Myers and L. L. Constantine. This blew a hole in our approach. They argued that simply starting to code, starting at the beginning and working our way though was wrong. Start by designing – and coding the top level. This will need lower level functions like validating data, processing and updating. These lower level functions are replaced by ‘stubs’. Tiny functions that simply accept data in the right format and return preformatted results. But no processing yet. Then you work your way down the hierarchy, using the same approach for each function. The approach called top-down-development. Soon the terms top-down and bottom-up entered the English language and are used for all sorts of different disciplines.
This was revolutionary. People talked about producing bug-free code and reducing the need for testing. Since then, we have introduced countless unnecessary new coding languages, introduced useful object-oriented development, linting systems and source-control systems. But these pioneers Dijkstra and Stevens, et-al developed the core concepts which were the fundamentals of good coding practice.


Leave a comment