Being 32 years old, I did not follow debates in programming, language design, and platforms in the 1960s, 1970s, 1980s, and most of the 1990s. I sometimes hear glimpse of what the major debates were and how they turned the course of history. It makes me wonder what I take for granted.
I am curious, what were the debates. The ones I know are:
The biggest war was about the
GOTO
[1] statement, ignited by Djikstra's
"Goto considered harmful"
[2]
letter
[3] in March 1968 and masterfully capped by Knuth's
"Structured programming with Goto statements"
[4] (PDF) essay in December 1974 (of course some people are still debating, but you can usually tell they haven't read Knuth's wonderful essay -- or haven't understood it at all;-). That war can be seen as part of the larger one about
structured programming
[5] (which is why Knuth's essay's title is so perfect;-).
'GOTO Considered Harmful' Considered Harmful
:) - Onion-Knight
Editor wars: vi vs emacs
echo >
! - Hawken
While I am not old enough to remember it, Dijkstra [1]'s Go To Statement Considered Harmful [2] was controversial.
[1] http://en.wikipedia.org/wiki/Edsger_W._DijkstraI can't remember the name of the war, but Fortran won, and it's still winning.
RISC vs. CISC
Big-endian vs. Little-endian
Goto vs. ComeFrom :-)
Integer representation: twos' complement (which won), ones' complement (on the Control Data Cyber series, first computers I programmed in assembler on), and signed magnitude (immortalized in the MIX machine in volume 1 of Knuth).
Whether computer languages should be natural-sounding (like COBOL) or more formal (like FORTRAN or ALGOL or LISP).
I could mention the mainframe vs. minicomputer wars, and the IT department vs. personal computers, but the centralization vs. decentralization struggle is going on now with personal computers and local servers vs. "the cloud". So far, decentralization has won every round, and we'll see if SaaS and cloud apps can offer comparably more business functionality in the way increasingly smaller computers did.
OOP versus ... the world, really.
As far as I'm concerned, the procedural vs. object-oriented war is still going, or at least should be :)
This probably only counts as a border skirmish, but I'm a sucker for anything involving RMS spouting off, so I'll nominate The Tcl War [1].
[1] http://www.vanderburg.org/OldPages/Tcl/war/Indentation and bracket placement?
Going back a long while the word size was far from obvious. The IBM 360 chose 8 bit bytes, which was controversial (wasting two bits per byte!).
6502 vs Z80 in micros for many years.
Whether microcomputers were good for anything (mainframe and minicomputer folks assumed personal computers would be useless toys forever).
For many businesses a big decision was whether to go totally IBM or consider an alternative. General purpose computing vs specialized hardware (e.g. when designing a telephone network switch should it be custom hardware or off the shelf components?)
Fail fast versus tolerant computing (e.g. do you leave asserts enabled when your guiding the space shuttle through re-entry).
Ye olden days were just as full of uncertainty, confusion and debate as there are now (unless you were and IBM salesman, of course).
When I was growing up in UK it was...
ZX Spectrum [1] (Z80A) vs Commodore 64 [2] (6510, a modified 6502)
[1] http://en.wikipedia.org/wiki/ZX_SpectrumAmiga vs IBM/PCs Similiar to Apple vs IBM today.
Commodore vs everything else :)
Centralized Servers vs Distributed Computing
(Technically, this is still going on. It's just the marketing people keep changing the name.)
Representing non-integral numbers (fixed point vs. floating point, exponent size vs. significand size, sign bit or complement, etc.) have been debated for a long time. Maybe this doesn't count as "previous generation" because debates continue, but I would say it was mostly settled with IEEE 754 and widespread adoption in hardware within the last 20 years.
subjective
and add the subjective tag to your ignore list. Please don't spoil SO for the rest of us who are interested in this question. - Juliet