Forth – The Early Years (1991)
colorforth.com
colorforth.com
One of my favorite descriptions of Forth:
"There is no syntax, no redundancy, no typing. There are no errors that can be detected. Forth uses postfix, there are no parentheses. No indentation. Comments are deferred to the documentation. No hooks, no compatibility. Words are never hyphenated. There's no heirarchy. No files. No operating system."
http://www.colorforth.com/1percent.html
EDIT: I survived and currently work at a YC company and do not have a neck-beard.
That said, I've seen very few projects successfully in FORTH. There are a few, but not many.
Additionally, historically the language has been a lightning rod for kooks and bad engineering practices. All of the experience I have of FORTH in the video game industry was watching people serially fail (they would typically get twisted up in their FORTH environment, get obsesssed with the FORTHness of this and that, and forgot to ship a title; more mature users would run into intractable organizational and performance problems that forced them to ditch the language).
But it's still a great language, and a worthwhile thing for software practitioners to know and play with.
Obligatory Javascript implementation of said Forth VM: http://johnearnest.github.io/Mako.js/?rom=Warrior
https://archive.org/stream/byte-magazine-1980-08/1980_08_BYT...
As for libraries: Usually that boils to "No."
To quote: "The conventional approach, enforced to a greater or lesser extent, is that you shall use a standard subroutine. I say that you should write your own subroutines." (http://www.forth.com/resources/evolution/evolve_1.html)
I think that's an important thing: anybody who's seriously doing Forth work has written his or her own interpreter to do it with. Which may be as it should be.
For instance, a typical transaction goes like this:
[scriptSig] [scriptPubKey]
Where scriptSig is: __signature__ __public_key__
and scriptPubkey is: OP_DUP OP_HASH160 __some_hash__ OP_EQUALVERIFY OP_CHECKSIG
In rough terms:
OP_DUP works like classic Forth DUP, duplicates the immediate stack element. OP_HASH160 replaces the stack element with its hash160. OP_EQUALVERIFY performs a "fail if not equal" and OP_CHECKSIG takes two elements from the stack and verifies they're a pubkey and its signature.
So basically that's how the system verifies that a transaction is signed by the owner of the input address to go to the owner of the output address.
I worked on it a bit, though it doesn't change much beyond bug fixes these days.
Peripheral vendors still routinely provide FCode drivers in the server space.