Programmers are a very conservative lot with their art. Early IBM computers read data from punched cards. The practice with punched cards was fixed columns for fixed functions—that was due to the limited flexibility of the electro mechanical card processing equipment of the 30’s and 40’s. Early computer programs saw no reason to depart from this pattern. Early assembler input formats (NYAP) assumed fixed columns for about 8 different fields. Card punches (026) provided some help with getting your data in the right columns, but only if you knew how to tell them how to help you. Roy Nutt’s 704 assembler was mostly free field and that greatly cut down on the number of lost debug shots due to input data being off by one column. Fortran, about a year later, followed this and you remove any blank from a Fortran program without changing its meaning.

The 704 assembler manual specified three letter mnemonics for each to the machine op-codes.

When the 709 added new instructions to those of the 704, heroic efforts were made to assign three letter codes to the new instructions like the original 704. It wouldn’t work. Four letter mnemonics were introduced. The strife caused by this was intense but brief. Soon after no one could quite remember what the controversy had been. A decade later similar strife was caused by allowing lower case input. Even today printing a program in variable width font is considered bizarre. Programmers are very conservative with their craft.

This note provokes me to write down some connected ideas that have been nagging at me for several years. The note speaks of editing the abstract syntax tree input to LLVM. Programmers are very conservative about the format of their programs. A program is a joint project between a person and a computer. While writing the program the editor does precious little that is really needed. The notion of a source file of a program has changed little since it was punched on cards. The notion of an abstract tree is far grander than of an array of characters.

Engelbart’s Augment system held text in a form which facilitated showing relationships between idea in the subject matter of the text, not the exigencies of paper layout; it was a graph of text, not an array. Engelbart’s group experimented in expressing programs in Augment but did not follow the idea very far.


side note