Hacker News new | ask | show | jobs
by kcplate 783 days ago
Everybody who worked writing code in the 70s-90s is smirking at “wait over a second”.

Back in the day, I used to go get my coffee, shoot the shit in the break room for a few minute, and come back to find my debug runs just starting.

4 comments

Turbo Pascal was so fast in the 80s that if I saw a syntax error further down the page it was faster to hit "compile" and let the compiler move the cursor to the error than it was for me to move the cursor myself.

It was a very special compiler and they don't make them like that anymore.

The trick is to have language "optimized for compilation" and do not do fancy optimizations.

Java is similar (but overall infrastructure around compiler makes it slow).

Golang also quite fast.

I think LLVM missed the boat, on this, by being an early mover. A lot of the optimizations are resource-only analyses; the few that re not are "just" various levels of interpretation. That kind of implies we need a framework to define resource utilization and evaluation at the instruction/machine-code level with a standard API. Having an optimizer for an abstract IR is less useful.

The point being that compilers would then target emitting reasonable machine code at speed, and The Real LLVM would do analysis/transform on the machine code.

The tricks in the 80s were different than today's tricks.

(1) Single-pass compiler. No separate pass to convert to object or executable.

(2) Written in assembler (!). Helps that Pascal has fewer dark corners.

(3) No use of disk. A single file read or write would take 10-20s on a floppy. Instead, it's memory to memory.

It’s crazy that this is still the gold standard
We got outsteped by C and C++ industry adoption, followed by doing everything in interpreted languages.

Finally 30 years later, the pendulum is turning around.

And V 3.01 was under 40 KB (not a typo), and included a basic WordStar editor clone for program editing!
They still do. Lua is likewise extremely fast, and comes without bullshit mostly,
And in the 00's things were pretty instantaneous, at least from a UI perspective. I actually developed some "bad" habits where I'd just hold the step hotkey down to advance my program when debugging. And everything just worked and was synchronous. All the registers updated with each step, as well as my watched variables and everything else I can think of. I'm pretty sure this was visual studio 6.

That was peak Microsoft debugging experience for me, everything after that was worse, admittedly I did drop it and moved to Linux, so maybe it is good now. Although I very strongly doubt it.

This is the reason I like VIM. While I’m mostly using it locally, this deterministic way of handling input means that I can edit over a slow ssh connection faster than the result being displayed. The VIM language is like playing music, you’re only conscious of mistakes.

There was a data entry program (I forget its name) that I liked too. I could enter a complete survey form without watching the screen, just by tab-ing. I memorized the sequences and shortcuts for dropdown. Made a dull job less frustrating.

Amazing how technology has improved and matured in 50 years…
Wasn't that mostly compiling though? VSCode's CMake tools take multiple seconds just starting an already-built executable.