Archive.org now has a page with "the raw analog waveform and the reconstructed digital tape image (analog.tap), read at the Computer History Museum's Shustek Research Archives on 19 December 2025 by Al Kossow using a modified tape reader and analyzed with Len Shustek's readtape tool." A Berlin-based...
I worked at Bell Labs in the 90s, on wireless stuff, but we were still using the “in house” cfront compiler at the time, and would e-mail the compiler group, which included Bjarne Stroustrup, with issues sometimes. I learned C++ from his book before I joined Bell Labs, so that was a bit of a holy shit moment for sure for me then.
Kernighan, Ritchie and Thompson all still worked at Bell Labs as well at the time, but the company was huge then, and they were all in a different location from my team, so I never had any opportunities to meet them.
I think it’s actually quite elegant. No matter what it has to skip over argument 0 which will be the executable name echo.
If the subtraction was removed and the loop changed to <, it would then need to do an addition or subtraction inside the loop to check if it’s the last argument.
The real question might be whether the compiler was smart enough to change var++ and var-- into ++var and --var when the initial values aren’t needed.
As compiler optimisations go, it’s a fairly obvious one, but it was 1974 and putting checks like that in the compiler would increase its size and slow it down when both space and time were at a premium.
It’s actually really easy when you get to make everything up as you go along. Like the transistor, and C, and Unix. That place was something else. The modern world was born in NJ
They wrote this without googling anything.
They wrote this without autocompletion or syntax highlighting.
They had PAPER NOTEBOOKS cheats
They also used the classic they knew what they were doing shortcut.
If you had a question about C, you would just consult K&R, and I don’t mean the book
I worked at Bell Labs in the 90s, on wireless stuff, but we were still using the “in house” cfront compiler at the time, and would e-mail the compiler group, which included Bjarne Stroustrup, with issues sometimes. I learned C++ from his book before I joined Bell Labs, so that was a bit of a holy shit moment for sure for me then.
Kernighan, Ritchie and Thompson all still worked at Bell Labs as well at the time, but the company was huge then, and they were all in a different location from my team, so I never had any opportunities to meet them.
Have you read Unix: A History and a Memoir? I only started it, but the first chapter or two is just Kernighan talking about Bell Labs.
Hello World in 1974: echo.c
main(argc, argv) int argc; char *argv[]; { int i; argc--; for(i=1; i<=argc; i++) printf("%s%c", argv[i], i==argc? '\n': ' '); }Bloat, they wasted an extra integer operation with
argc--.I think it’s actually quite elegant. No matter what it has to skip over argument 0 which will be the executable name
echo.If the subtraction was removed and the loop changed to
<, it would then need to do an addition or subtraction inside the loop to check if it’s the last argument.The real question might be whether the compiler was smart enough to change
var++andvar--into++varand--varwhen the initial values aren’t needed.As compiler optimisations go, it’s a fairly obvious one, but it was 1974 and putting checks like that in the compiler would increase its size and slow it down when both space and time were at a premium.
Well, good news, the source code is right there. Someone can go check (it probably won’t be me)
I was going to guess the same regarding the time period.
Or they just drop the =
It’s actually really easy when you get to make everything up as you go along. Like the transistor, and C, and Unix. That place was something else. The modern world was born in NJ
* looks at modern world *
Yeah, that tracks.
Yea I thought about having ‘for better for worse’ in the post, but I lived in NJ so I’ll let them have a little glory for once
They were chatting with ELIZA and vibe coded the whole thing