[tz] Tab/Space Formatting Inconsistency - Asia Ver 2023c

Guy Harris gharris at sonic.net
Wed Dec 13 03:01:18 UTC 2023

On Dec 12, 2023, at 5:46 PM, Paul Gilmartin via tz <tz at iana.org> wrote:

> On 12/12/23 17:25:15, Paul Eggert via tz wrote:
>>    ...
>> As Alois writes, this is merely a visual appearance issue; it doesn't affect the meaning of the data.
>> .
> Sometimes it matters.  "make" requires build rules to be introduced
> by tabs. not spaces.


quotes a 2015 email from Stu Feldman, author of "make":

"I used tabs because I was trying to use Lex (still in first
version) and had trouble with some other patterns.

(Make was written over a weekend, rewritten the next weekend ...)

So I gave up on being smart and just used a fixed pattern (^\t)
to indicate rules.

Within a few weeks of writing Make, I already had a dozen friends
who were using it.

So even though I knew that "tab in column 1" was a bad idea, I
didn't want to disrupt my user base.

So instead I wrought havoc on tens of millions.

I have used that example in software engineering lectures.

Side note: I was awarded the ACM Software Systems Award for Make
a decade ago. In my one minute talk on stage, I began "I would
like to apologize". The audience then split in two - half started
laughing, the other half looked at the laughers.

A perfect bipartite graph of programmers and non-programmers."

I don't know whether he's blaming the first version of Lex for making it too hard to figure out how to parse Makefiles without requiring tabs, but, if so, he might have been laying some of the blame at the feet of his employer's executive chairman:


> And I know a couple lexical analyzers which recognize spaces but not tabs as separating tokens.

Not ideal, unless there's a compelling UI reason for that.

> Which says,
>    “Thou shalt not cross 80 columns in thy file” originated from
>    IBM 80 column punch cards, ...

And for the history of *that*, at least according to Wikipedia, see https://en.wikipedia.org/wiki/Punched_card#Formats.

(And, yes, my terminal windows default to 80 columns on all UN*X platforms, following the physical terminals I used before that, the 80-column screens most of them having used being due, as far as I know, to the same 80-column punched cards.  Thank you, Mr. Clair D. Lake.)

More information about the tz mailing list