Tab stops. was: Re: Larry Wall's comment on python...

John Roth johnroth at
Thu Sep 26 23:20:13 EDT 2002

<sismex01 at> wrote in message
news:mailman.1033049075.18932.python-list at
> >
> > sismex01 at wrote:
> >
> > >>Ironically, Guido originally ruled (in the style guide, IIRC)
> > >>that thou shalt use tabs and tabs are 8 spaces, "as god
> > >>intentended them to be."
> > >
> > >Yeesh! Why in God's name would he say such a dumb thing?
> > >I mean, even ancient mechanical typewriters have movable
> > >tab settings. Rigid, 8-char tabs is just so... neolithical.
> > >
> >
> > Once upon a time, a large class of computers, and their attendant
> > peripherals, OSs and utility programs universally implemented tabs
> > hard-wired at 8 stops.  In some circles this heritage extended
> > back 30 or 40 years.  Unix originally followed this convention,
> > as did IIRC all Dec computers and that of most other "minicomputer"
> > vendors.
> > Ed and the original VI editors only had fixed tab stops consistent
> > with terminal drivers and all the unit record equipment at the time.
> > IIRC, even Emacs originally only had tab stops at every 8 columns.
> > The original PC also followed this convention, though not all
> > applications did.  I don't know for sure but I bet $1 that Linux
> > tty drivers today also are hard wired at 8 char tab stops.
> >
> Thanks for a beautiful reply.
> Well, I might not be an old fart :-), but I *was* kinda present
> at that time, I started work in highschool hacking on CP/M machines,
> writing drivers for diverse printers and terminals for some apps
> (ahh, customizable terminal control... we lost that during the
> PC era, everybody wanted CGA, MDA or Hercules).
> AND, I distinctly remember that most printers could customize
> their tab stops via escape codes, same as some (not all) terminals;
> I worked a lot on some Xoroc terminals, and lots on a Northstar
> Advantage (ahh, beautiful hardware... *snif*) and they also had
> customizable tabstops.

Well, you got in rather late. The entire tab stop thing began
with mechanical and electromechanical equipment, like TTYs.
All of these had customizable tab stops, set by actual hardware
tabs (little pieces of metal). The thing about them is that typists
set them when they were doing reports, and otherwise ignored
them. Once they started getting added to the earliest computers,
it was simply not feasible to manually set up the output typewriter
for each and every program.

So some genius simply set the stops every 8 characters
and left them there. The drivers used the fixed stops in
order to optimize their output stream, and all the utilities
simply assumed that the output was set up this way.

Time and technology moved on, but by then the assumptions
were built into way too many programs to fix, and there was
never a concensus about how to fix it, anyway.

> Hmmm... maybe, what I'm getting at is, why did terminal-designers
> everywhere toss out years of research in typewriter technology
> (at the time) and ignore customizable tab-stops?  It's simply not
> sane, I think.

As I said, it was very sane. Nobody wanted to change
manual tab stops. Program setable tab stops came later.
Much later, and too late for there to be a coherent solution.

As an interesting side note, much the same issue came up
with the old vacuum tube computers (1950s vintage.) They
used existing plugboard tab equipement as card readers,
punches and printers. People very quickly standardized
on one set of plug boards, stuck them in the machine and
forgot about them. Much easier than to create a special set
of plug boards for each job, although I suspect some analysts

John Roth

More information about the Python-list mailing list