https://www.forth.com/starting-forth/ - The submission appears to be a PDF of this site. The page at forth.com includes a PDF link for the original edition if you're interested.
I never read this book, and I never really learned Forth. But I did read Thinking Forth[0], and it has shaped my software engineering instincts more than anything else I've read.
I took this book on a long (for me) trip to Minnesota the year that it came out.
It was a great read, trying to work out all the details with my eyes closed because back then computers didn't come on vacations with you. When I got back, I had a whole system to play with worked out in my head.
Forth was ultimately kind of a dead end, but it was a hugely educational one and it led me to bootstrapped versions of Lisp and many other wondrous things.
I've always been a bit sad that more Forth-inspired DSLs never became a thing. Assembler Forths and C Forths often feel like DSLs on top of their host languages/environments, so doing the same thing as a network or build-system DSL would be interesting. I do recommend folks play around with more mature, big Forths like gForth to see what building an application up in a Forth like system actually feels like.
Commercial systems are also now available for free for trial or non-commerical use, that offer native code compilers and IDEs and Graphic interface tools.
How about Forth as a compilation target for other languages. But you can dig in and define words for common patterns and the higher level code will be compiled down to that custom vocabulary instead.
Forth is just not very easily optimized - it has a lot of indirect jumps that do not play well with today's instruction pipelines.
There are a few optimizing forth compilers, but I never have seen compelling evidence that they would be faster than an optimized c compiler.
Forth also has seen comparatively little work lately - only a small number of people use it (for better or worse). Micropython might be eating Forth's lunch on many embedded systems that have a lot more memory/ resources now.
How I learned Forth in the 80s. Worked at FORTH, Inc. for a few years. polyFORTH was a cool system for the time, especially for what it could do on very small computers. I recall training classes of a dozen developers working at the same time, all connected via a terminal to a single IBM PC, running a version of polyFORTH taking only 64K of RAM (16-bit flag, not segmentation)
I think this is a great example of a book for learning a language. The cartoon illustrations are both funny and illustrative. The characters are consistent, too - each one represents a different concept.
Most people probably won't be using Forth in the future, but you can definitely learn about teaching a programming language from this book. Jt is a great example.
I love this book, but many people seem to dislike the cartoons. It reminds me of Learn You a Haskell, it's very hit and miss. So would I recommend this for a textbook? No. But as a book that people are offered of their own accord, yes definitely. The cartoons worked for me and I learned everything I could get out of the book.
I had briefly worked on a project using Green Arrays which implement Forth. Quite a different language when coming from the world of C like languages and such.
This book is really fun. I am surprised that Forth never seemed to make much of a dent in education. It seems perfect for teaching programming because there is so little fanfare.
But for the sake of argument, I don't see why Forth isn't appropriate for learning programming.
I started learning programming in 2001 with QBasic. Didn't do "real work tasks" like downloading some files from server or parse a PDF file and upload some of the content to Firebase, but by doing "boring" things like printing various forms of pyramid, maze solver, etc. I'm sure you can do that in Forth.
Well eventually I tried Forth, and still doesn't get it. At least for me Lisp is more approachable, on certain degree :)
It's not inappropriate, it's just never a better choice than languages that are actually used, because then everyone who learns can say "I know X". I know Forth really well but I don't put it on my CV, even though I work in probably the main sector it's still used (embedded).
I personally find this situation unfortunate. It returns us back to learning subverting requiring that something to be “useful” for some arbitrary definition of useful. It’s the same story of the failure of trying to make mathematics or philosophy or whatever appear “useful” or “practical” to students. It doesn’t work because the point of learning is not to directly get you a job or put something n your resume or be “useful”.
The many versions of the FIFTH language reflect the sophistication and
financial status of its users. Commands in the ELITE dialect include
VSOP and LAFITE, while commands in the GUTTER dialect include HOOTCH
and RIPPLE. The latter is a favorite of frustrated FORTH programmers
who end up using this language.
I've never done anything in Forth, but I have been captivated by it, and in particular in Jone's Forth. I would probably have been more motivated to use it were there a "Jones Forth"-like tutorial/compiler for MS-DOS or Win16. If I were to use a language whose utility isn't the best, I'd prefer it to be on a hobby system...
26 comments
[ 2.3 ms ] story [ 61.5 ms ] threadStarting Forth: An Introduction to the Forth Programming Language - https://news.ycombinator.com/item?id=26677630 - April 2021 (19 comments)
Recommended Reading: ``Starting Forth'' and ``Thinking Forth'' by Leo Brodie - https://news.ycombinator.com/item?id=20193620 - June 2019 (1 comment)
Starting Forth - https://news.ycombinator.com/item?id=15164448 - Sept 2017 (5 comments)
Starting Forth - https://news.ycombinator.com/item?id=9855977 - July 2015 (68 comments)
Starting Forth – the classic Forth language tutorial - https://news.ycombinator.com/item?id=5909968 - June 2013 (32 comments)
Starting Forth - After yesterday's Prolog post, another awesome language - https://news.ycombinator.com/item?id=1980123 - Dec 2010 (27 comments)
Starting Forth - https://news.ycombinator.com/item?id=448303 - Jan 2009 (7 comments)
and of course:
Thinking Forth – A Language and Philosophy for Solving Problems (1984) [pdf] - https://news.ycombinator.com/item?id=18885493 - Jan 2019 (41 comments)
Thinking Forth (1984) - https://news.ycombinator.com/item?id=9842557 - July 2015 (31 comments)
Thinking Forth - https://news.ycombinator.com/item?id=3389286 - Dec 2011 (21 comments)
Others?
[0] https://thinking-forth.sourceforge.net/
It was a great read, trying to work out all the details with my eyes closed because back then computers didn't come on vacations with you. When I got back, I had a whole system to play with worked out in my head.
Forth was ultimately kind of a dead end, but it was a hugely educational one and it led me to bootstrapped versions of Lisp and many other wondrous things.
VFX Forth from MPE UK
SwiftForth from USA
There are a few optimizing forth compilers, but I never have seen compelling evidence that they would be faster than an optimized c compiler.
Forth also has seen comparatively little work lately - only a small number of people use it (for better or worse). Micropython might be eating Forth's lunch on many embedded systems that have a lot more memory/ resources now.
As a counterpoint, I found https://www.1-9-9-1.com/ which looks like a lot of fun.
Most people probably won't be using Forth in the future, but you can definitely learn about teaching a programming language from this book. Jt is a great example.
https://www.greenarraychips.com/
I started learning programming in 2001 with QBasic. Didn't do "real work tasks" like downloading some files from server or parse a PDF file and upload some of the content to Firebase, but by doing "boring" things like printing various forms of pyramid, maze solver, etc. I'm sure you can do that in Forth.
Well eventually I tried Forth, and still doesn't get it. At least for me Lisp is more approachable, on certain degree :)
The many versions of the FIFTH language reflect the sophistication and financial status of its users. Commands in the ELITE dialect include VSOP and LAFITE, while commands in the GUTTER dialect include HOOTCH and RIPPLE. The latter is a favorite of frustrated FORTH programmers who end up using this language.