
My Life as a Forth Interpreter (1986) [pdf] - waffle_ss
http://bit-player.org/wp-content/extras/bph-publications/CompLang-1986-04-Hayes-Forth.pdf
======
etfb
For context: the Computer Language magazine in the 1980s had a tradition of
April Fools editions. This is from one of them, before they got too serious,
changed their name to Software Development magazine, and blazed the way for Dr
Dobbs into oblivion.

------
bit-player
Apologies to the HN community.

I'm the author of the story linked to here. I'm also the jerk who pulled it
off the web when I thought my site was getting the DDoS treatment. Mea culpa.

------
TazeTSchnitzel
That was brilliant. Now, how about "My Life as a Haskell Interpreter"?

~~~
eru
That would be interesting. And the cliff from Outer Interpreter to Compiler
(instead of Inner Interpreter) would be even steeper.

------
brianobush
anyone have a copy? link is dead.

~~~
kevinchen
Scribd seems to have it cached. Link reproduced here for convenience:
[http://www.scribd.com/doc/212732047/Untitled?secret_password...](http://www.scribd.com/doc/212732047/Untitled?secret_password=tdsvrimvut8x31rssyy#full)

------
dimitar
Wow, can someone explain this story? Its hard to follow if you are not a forth
hacker.

~~~
Someone
The tokens coming in are the tokens from the user's ("Him") input. The outer
interpreter is what translates those tokens into actions to perform. The inner
interpreter performs those actions.

In a Forth, both the inner and the outer interpreter are extremely simple. The
story describes them in detail.

Outer interpreter: look up token in dictionary/dictionaries. If found,
instruct inner interpreter to execute it by giving it the address of the
function that the token describes. If not found, try interpreting the word as
a number in the current base. If that succeeds, push the number on the stack.
If it fails, signal an error and clear some state.

Inner interpreter: start reading at the address supplied. Recursively
interpret every word read as address of another function until encountering a
'end of function' marker.

Leo Brodie's variant of this story doesn't use the terms inner and outer
interpreter because it was written before the names were invented, but it may
be instructive, anyways: [http://www.forth.com/starting-
forth/sf1/sf1.html](http://www.forth.com/starting-forth/sf1/sf1.html)

~~~
raverbashing
So the inner interpreter is a VM of some sort?

Outer interpreter looks like exactly that, an interpreter (as opposed to a
compiler)

~~~
Someone
Yes, it has been described as such. A main difference/interesting property of
this VM is that end users write programs in Forth by extending the VM's
instruction set (= the set of dictionary definitions). While in interpreted
mode or at compile time (i.e. when the user types words in the terminal), the
instruction lookup is slow, through one or more linked lists. At run time,
definitions simply consist of lists of pointers to other functions.

------
shellehs
I'm too late. It's 403 now.

> You don't have permission to access /wp-content/extras/bph-
> publications/CompLang-1986-04-Hayes-Forth.pdf on this server.

The site shows.

~~~
mthq
The site owner thinks he is being DDOS'ed: [http://bit-player.org/2014/net-
pests/](http://bit-player.org/2014/net-pests/)

~~~
bit-player
I'm the site owner. It's open again, temporarily. Somebody's script has
multiple machines (many are EC2 instances) downloading the same file many
times per second. That's not something I want to encourage.

~~~
NoodleIncident
Interesting. I suppose an automated DDoS of everything on the hackernews front
page isn't impossible.

Are there other explanations? Scribd definitely got it automatically at least
once, maybe they do it too many times? How many HN users use EC2-based
proxies?

------
zem
very nicely done indeed.

