←back to thread

244 points rbanffy | 6 comments | | HN request time: 0.014s | source | bottom
Show context
POSSIBLE_FACT ◴[] No.44603645[source]
Absolutely loved when I randomly caught an episode of Computer Chronicles back in the old time days.
replies(2): >>44603765 #>>44608696 #
rbanffy ◴[] No.44603765[source]
I think that, by now, I have watched every episode. He was the Bill Gates we needed.
replies(3): >>44603804 #>>44603845 #>>44604028 #
whobre ◴[] No.44603845[source]
He was nothing like BG. Gary was an inventor, educator and most of all a visionary. He hated running a business, even though he started DRI after failing to convince Intel to buy CP/M.

Yes, there are quite a few videos on YouTube about him, named “The man who should have been Bill Gates” but that’s just click baiting. Watch the special episode of “The Computer Chronicles” about Gary Kildall and see what his friends and business associates say about him.

replies(7): >>44603943 #>>44603983 #>>44604145 #>>44604163 #>>44604595 #>>44604601 #>>44604876 #
terabyterex ◴[] No.44604145[source]
This paints Bill Gates as not a tech person and a business first person, which is not true. He got a BASIC compiler on the altair which MITS thought couldn't be done. He helped Wozniak implement a version of BASIC supporting floating point numbers. Gates didn't even want to take Microsoft public. They had to convince him. Ballmer was the biggest businessman in the bunch. Hell, he was the one that suggested kidall since Microsoft wasn't in the OS business.
replies(3): >>44604243 #>>44604605 #>>44604689 #
rbanffy ◴[] No.44604605[source]
> BASIC compiler

Interpreter - an entirely different kind of animal. Microsoft didn't get a BASIC compiler until much later.

> He helped Wozniak implement a version of BASIC supporting floating point numbers.

No. He sold Apple a BASIC, then used it as leverage to prevent Apple from making a BASIC for the Macintosh.

> Ballmer was the biggest businessman in the bunch.

He suggested cutting Paul Allen's family off when Allen was battling cancer.

replies(1): >>44606194 #
WalterBright ◴[] No.44606194[source]
Um, it is necessary to compile a program before being able to interpret it. I don't know how early BASICs were implemented, but the usual method is to compile it to some sort of intermediate representation, and then interpret that representation.

D's compile time function execution engine works that way. So does the Javascript compiler/interpreter engine I wrote years ago, and the Java compiler I wrote eons ago.

The purpose to going all the way to generating machine code is the result often runs 10x faster.

replies(5): >>44607379 #>>44607380 #>>44607445 #>>44608493 #>>44609120 #
eichin ◴[] No.44607379[source]
> necessary to compile

Um, no? your experience is probably at least two decades after the time period in question.. The more advanced versions of, for example, the TRS-80 BASIC (part of this "microcomputer BASICs that all share a common set of bugs") did no more than tokenize - so, `10 PRINT "Hello"` would have a binary representation for the line number, a single byte token for PRINT, then " H E L L O " and an end-of-line marker. Actually interpreting the code involved just reading it linearly; GOTO linenumber involved scanning the entire code in memory for that line number (and yes, people really did optimize things by putting GOTO and GOSUB targets earlier in the program so the interpreter would find them faster :-)

replies(2): >>44607465 #>>44608213 #
WalterBright ◴[] No.44608213[source]
Tokenizing it and interpreting the token stream is still a compilation process. Even if it re-tokenized it each time it executed a line.
replies(1): >>44609173 #
1. wvenable ◴[] No.44609173[source]
Tokenizing is a necessary but not a sufficient task for compilation. I could tokenize this comment to efficiently store it in a database but that would have nothing to do with compilation.
replies(1): >>44611430 #
2. WalterBright ◴[] No.44611430[source]
Recognizing `3+x*(2+y)` is compilation - even if the program is being executed while compiling it.
replies(1): >>44611928 #
3. wvenable ◴[] No.44611928[source]
You can continue to argue the point but that goes against every single definition of compilation that exists. Compilation is a transformation of programming language into another form. For example, taking `3+x*(2+y)` and transforming it into a series of byte codes, machine language instructions, ASTs, or even C code would be compilation.

The BASIC interpreter doesn't recognize `3+x*(2+y)` nor does it compile it instead it evaluates that expression using a pair of stacks. You've expanded the definition of compilation to cover almost all computation. It's compilers all the way down to the electrons.

replies(2): >>44612604 #>>44613266 #
4. WalterBright ◴[] No.44612604{3}[source]
Well, all my compilers use recursive descent for expressions, meaning the stack is used to maintain the current state. Whether you evaluate it while doing this or produce an IR is a trivial difference.
replies(1): >>44612725 #
5. wvenable ◴[] No.44612725{4}[source]
It might be a trivial difference but it's literally the thing that makes something a compiler. It should make sense. How a piece of software works doesn't make it a compiler or not; it's input and output of the software that defines it as a compiler. That's true of almost any broad category of software.
6. eichin ◴[] No.44613266{3}[source]
No problem calling it parsing, but yeah, "compilation" feels like a huge stretch. And they didn't do recursive descent - just tokenizing for compactness (when you only have 4k or 16k of RAM you do things like that) - you could still get syntax errors at runtime. In some interpreters it also served to normalize abbreviations to save typing.