Steve Wozniak 37...
Steve Wozniak 37
formats. Then I came up with an idea—and I have no idea where it came
from—just a weird, weird idea that, as a user types in a statement, I will just
scan his statement, character by character, from left to right, and I’ll see where
it fits into the syntax table. I typed my whole syntax table into memory. I said,
“I’ll just follow along in memory and, if what he types fits the syntax table, then
whenever he hits return, I know all the elements he typed in.” I just output a
list of little tokens that represented what had been typed in, if it matched the
table. This was just an idea I had, not knowing how other people did it. I don’t
know to this day how compilers are written.
I also knew that there were numbers and variables and you have operations
like plus and minus, times, divide. (I was just a very low-level person here . . .)
Numbers are nouns and a plus is a verb. Even in a statement like “print,” print
becomes a verb. So I had these lists of verbs and I had noun stacks and verb
stacks and figured out ways to push them on and make their priorities such that
we could turn it into reverse Polish notation.
I was very familiar with reverse Polish notation from books I read in college
(or that my friend had sent me in Xerox form); and also our Hewlett-Packard
calculators used reverse Polish notation, and we thought we were more
advanced because we were doing what computer science people do. You take
an equation like “5 + 4” and you change it into “5 ENTER 4 +” so you do the
addition last. But how do you convert between one and the other? That one
wasn’t too bad for me. I had some knowledge of that.
I built this whole Basic up and it worked, and that was the hardest project I
did. Normally you type a computer program into a computer; that’s the only
way it’s done. You type it into a computer or you feed it in on cards. What I did
was I handwrote it on the left side of the pages in my program, in what’s called
machine language. That’s as close as you can get to the ones and zeros. And
then I looked at a little card and I translated my program into ones and zeros on
the other side. If it said, “Jump ahead,” I’d have to count—if it’s jumping ahead
19 bytes, I’d have to write 19 in zeros and ones. I would write the zeros and
ones myself because I couldn’t afford a computer program that did this assembly
job. I went down to the absolute lowest-level jobs you could do. For the
computer itself, I not only designed it on paper (I was the draftsperson, I would
| ← build a program | draft it on → |