(function pointers, I'm looking at you) as well as...
# thinking-together
w
(function pointers, I'm looking at you) as well as the call by value and call by reference distinction, which doesn't exactly go away in reference-to-objects languages.
i
which doesn't exactly go away in reference-to-objects languages
You might have caught the scent of where I'm going with this gambit.
e
Modula-2 had a fantastic composable type system, which made it easy to declare a pointer to an array[1..10] of a_record where a_record might have more arrays and pointers inside. Makes the C syntax look like it came from the stone age. Nothing uglier than a pointer to a function that returns a pointer to a pointer to a record, that is like a final exam in some hiring test, and pointless. The sad truth is that the designers of C where on teletypes which were painfully slow to type on, and they sacrificed readability to get low character count. People have paid for that tradeoff for almost 50 years.
d
I thought C and Unix were developed on PDP computers with VTs .. with actual lower case letters!!!
e
as you can see the classic Model 33 teletype was used.
Model 33 Teletype was a very slow machine to type on, it heavily influenced the syntax of C. At the time Unix was a skunkworks kind of project competing against the MIT authored Multics operating system. Multics was far better than Unix. More secure, and instead of written in C was written in a much cleaner language called PL/1. However Multics was a commercial project sponsored by GE/Honeywell/Bull, and when those 3 computer companies fell apart, Multics went down with it. Those old GE computers were a trip. Instead of things called Interrupts, they used the term "Derail", which refers to locomotives!
👍 1
d
The Model 33 used the seven-bit upper-case only ASCII code
.. according to wikipedia .. so how do you explain the revolutionary use of lowercase throughout C, and Unix?
(also citation needed for the above!)
although it's the history of B which we should dig in to, as it also had lowercase keywords
e
7-bit ascii holds upper and lower case. The early internet was all 7 bit. You only need the upper 128 characters for accented chars. Since the designers of unix spent their formative years not worrying about case, once terminals became available it just defaulted to a single case and in e.e.cummings style they ignored upper case in C. Contrast with Pascal which used upper case for all keywords, which helped distinguish reserved words from regular words before syntax coloring existed since terminals were monochrome.
Back in those days computer companies couldn't agree an anything. Burrough's had punchcards with circular holes, IBM was rectangular holes. IBM used EBCDIC for encoding, which put A, B, C at different code points than ASCII. So nothing could be interchanged between vendors. So much needless friction because nobody agreed on basic stuff.
And by the way the Model 33 had upper case
Photo of teletype keyboard
I once tried one of those teletypes. It had the highest downforce of any keyboard known to man, and i can well imagine the designers of C not wanting to have to push down on that shift key which had a strong spring. Terrible ergonomics on those machines, but they were quite sturdy, a kind of world war 2 design aesthetic hangover; build it so that it will survive a bomb blast. And notice the red highlights for the CTRL prefix, people had to send the control characters manually back then. Serial communication at its peak!
w
@Edward de Jong / Beads Project "Back in those days... couldn't agree" — if only! To think that it has improved, which it kind of has, but then there's the feel of picking the worst of all standards. At least with text we have UTF8, which isn't so bad all things considered.