by Chris Gane, Trish Sarson, Tim Lister, and Ed Yourdon (Prentice Hall/Yourdon Press, 1976, 1978)
A long time ago, in a galaxy far, far away ... there were a bunch of
people who thought it would be a good idea to provide an introductory textbook for COBOL
that would take advantage of the then-radical concept of structured programming. For
anyone using COBOL 85, this would seem fairly pointless, because the language incorporated
some additional syntax to make structured programming more or less obvious. And for those
who are dabbling with OO-COBOL, the whole idea seems irrelevant; after all, the current
approach is to form COBOL
But back then, teaching people how to program without letting them fall into habits of writing spaghetti-bowl code was regarded as a noble cause. Originally, it was intended that Chris Gane and Trish Sarson would write the whole thing; neither Tim nor I were involved. But after several months of hard labor, Chris and Trish were a little under half-way done, and had run out of energy, time, and enthusiasm. In a stroke of genius, we decided to break the book into two volumes. I agreed to write the final chapter in Part I for the exhausted Gane-Sarson duo, and we managed to push that book out the door in 1976.
By that time, Chris had become interested in the nascent field of structured analysis, and the second volume languished unwritten; by 1977, Gane and Sarson had left YOURDON Inc. to form their own consulting firm, whose success was virtually guaranteed when they managed to publish their structured analysis book some 6 months before we got Tom DeMarco's book into the marketplace. But that's another story...
Meanwhile, Tim Lister had been tackling many of our company's teaching and consulting assignments in the area of structured COBOL. Indeed, while Gane, Sarson, and I could claim (without breaking into loud giggles) that we had written both unstructured and structured COBOL programs, Tim had actually done it for a living. People had paid him real money to do it, and he really knew what he was talking about. So in 1977 we decided that he would be the obvious candidate to tackle Part II of Learning to Program in Structured COBOL (or LTPISC, as it was cryptically known). But though he applied enormous energy and talent to the task, Tim discovered that while writing COBOL is hard, writing English can be even harder. As the summer of 1977 wore on, the project began to flounder ... and since all the competent consultants and trainers in our company were out on assignment, doing useful things for real projects, I volunteered myself as a possible candidate to help Tim finish the job. (It never occurred to me that since I was also the boss, and the owner of the company, Tim was hardly in a position to say "no." But that, too, is another story...)
Anyway, Part I and Part II finally did appear; they were published separately by YOURDON Press, and ultimately as a combined volume by Prentice Hall. All four of us -- Gane, Sarson, Lister, and me -- have subsequently encountered dozens of professors, and hundreds of students, who tell us that the material actually helped them, and that it didn't stunt their growth or cause an outbreak of warts or chickenpox. Though it may have been rendered obsolete by two subsequent generations of the COBOL language, we really did produce some good stuff.
Indeed, one of the best ideas of the combined effort -- an idea for which Chris Gane deserves 99% of the credit -- is that of teaching a programming language as if it were a foreign "spoken" language. When I was a high-school student back in the Dark Ages, I studied German for four years; and while I memorized thousands of vocabulary words, I never did learn to speak the language. Most modern language instruction -- especially in places like the Berlitz language training centers, where proficiency in the spoken language has a high priority -- teach the material in a "spiral" fashion. Begin by mimicking a complete phrase or sentence whose components may be unfamiliar, but whose overall meaning is clear; then look at the individual components -- but not too deeply. Then add some more phrases and sentences; parse them enough to have a basic idea of what's going on, and continue. It's the pedagogical version of what most programmers do when trying to make C run on a new hardware/software platform: write a minimal "Hello, world" fragment of code, and watch to see what happens.
It's not the only way to learn a language, but I think it's a damn good one. And it's an approach that could be used effectively in today's efforts to teach arcane languages like C++ to innocent victims, not to mention the efforts to spread Java through every corner of the civilized world. But in our day, we had no inkling of the future arrival of C++ or Java; all we wanted to do was make life a little easier for fledgling COBOL programmers. I think we succeeded, but who knows ... after all, it was long, long ago, in a galaxy far, far away...