23 February 2013
Yesterday I was browsing the Computer Science shelf at a university in Ho Chi Minh City, Vietnam. The selection was ... classic. Everything from "PC/MS DOS Fundamentals", to "MicroSoft BASIC", to "The Internet Guide". The latter was from 1997 and included information on Gopher, MOOs, and AltaVista.
The most interesting book was "Computer Programming in COBOL". The first chapter was the usual introductory fluff about what programming is and what it is for. Then the book gets down to business, by teaching how to draw flow charts. You see, before writing 'if' statements and 'while' loops, it is strongly recommended to draw these structures using a flow chart. Like most people of my generation, I was taught the use of flow charts in school. And like all my classmates, I promptly ignored this advice and started coding instead. Drawing a low-level flow chart never made any sense to us.
However, reading the third chapter of the COBOL book suddenly opened my eyes. COBOL code was written on paper, sent to a punch operator, who would type the punch cards, then the stack of cards would be added to the computer's input stack. I'd known about punch cards (don't drop the stack!). But I didn't realise the implications of being a programmer who could not type. This workflow is from the era when typing was a rare skill among high-level professionals. Managers had secretaries who would take dictations. Programmers had punch operators who would transcribe code.
Thus was the rationale for flow charts. Whereas we can trivially cursor up and insert an 'if' statement, a COBOL programmer writing on paper would have to start the page again. Drawing flow charts saved time.
The history of Computer Science will certainly remember the prevalence of flow charts in the 1960s and 1970s, though the reason may become blurry with time. But what will most certainly be forgotten is there was a generation of students in the 1980s and 1990s who were encouraged to use flow charts, long after the reason for using them had disappeared.
Yet another onion in the varnish.