---
created_at: '2015-07-06T22:24:36.000Z'
title: Thinking Forth (1984)
url: http://thinking-forth.sourceforge.net
author: brudgers
points: 84
story_text: 
comment_text: 
num_comments: 31
story_id: 
story_title: 
story_url: 
parent_id: 
created_at_i: 1436221476
_tags:
- story
- author_brudgers
- story_9842557
objectID: '9842557'

---
[Source](http://thinking-forth.sourceforge.net "Permalink to Thinking Forth")

# Thinking Forth

# Thinking Forth Project ![Cover][1]

This is the homepage of the [Thinking Forth][2] project. 

Thinking Forth captures the philosophy of the language to show users how to write more readable, better maintainable applications. This project makes the book available in electronic form (LaTeX and PDF). 

The project has two milestones: the reprint and the [21st century][3] version. The reprint is done, scroll down for the ongoing project. 

## The Book 

Thinking Forth is a book about the philosophy of problem solving and programming style, applied to the unique programming language [Forth][4]. Published first in 1984, it could be among the timeless classics of computer books, such as Fred Brooks' [_The Mythical Man-Month_][5] and Donald Knuth's [_The Art of Computer Programming._][6]

Many software engineering principles discussed here have been rediscovered in eXtreme Programming, including (re)factoring, modularity, bottom-up and incremental design. Here you'll find all of those and more - such as the value of analysis and design - described in Leo Brodie's down-to-earth, humorous style, with illustrations, code examples, practical real life applications, illustrative cartoons, and interviews with Forth's inventor, Charles H. Moore as well as other Forth thinkers. 

If you program in Forth, this is a must-read book. If you don't, the fundamental concepts are universal: Thinking Forth is meant for anyone interested in writing software to solve problems. The concepts go beyond Forth, but the simple beauty of Forth throws those concepts into stark relief. 

So flip open the book, and read all about the philosophy of Forth, analysis, decomposition, problem solving, style and conventions, factoring, handling data, and minimizing control structures. But be prepared: you may not be able to put it down. 

This book has been scanned, OCR'd, typeset in LaTeX, and brought back to print (and your monitor) by a collaborative effort under a Creative Commons license. 

## Author 

![\[html\]][7][Leo Brodie][8] wrote Thinking Forth in 1984. Since the book went out of print now the second time (due to FIG folding up - FIG did the reprint), he allowed to publish Thinking Forth as electronic book under a Creative Commons license (attribute, non-commercial, share-alike) ![\[html\]][7]![][9]. 

## Download 

Release 1.0 is a reprint with typos fixed, and high-quality typesetting. The book is available as 

* ![\[pdf\]][10][Onscreen PDF][11] (4M) This is a slightly colored PDF, which is more pleasent to read on screen. 
* ![\[pdf\]][10][Book PDF][12] (5M) This is the black&white PDF that was used for the on-demand printing. 
* ![\[pdf\]][10][Kindle PDF][13] This is a black&white PDF scaled down and adopted for Amazon's Kindle. 
* ![\[pdf\]][10][Cover][14] (49k) This is the book cover. 
* ![\[tar-bz2\]][15][LaTeX Sources][16] (1968k) This is a distribution for those who want to generate it themselves from source. The images are in embedded PostScript form, the pixel images are only in the CVS database. The "build yourself" package allows to use several options, like different paper sizes, color markup and such. Look down to the [Resources][17] section for more information. 

## Paper version 

Release 1.0 also is available as printed book from "Punchy Publising" (Leo Brodie's single-book publishing company) through [Amazon][2]. The ISBN number is 0-9764587-0-5. 

## Adobe Reader tips 

If you read the PDF with Adobe Reader, change the following settings in the Edit -> Preferences -> General... dialog box to improve display quality: 

* Set "Use Greek Text: Below ( xx ) Pixels" off. This just makes some small print text unreadable for no good reason. 
* Set smoothing on for at least Text and Line Art. If you have a TFT display, use CoolType. 

When you cut&paste from Adobe Reader, some special characters (ligatures) like fi and ff and left/right quotes won't show up as expected. Other PDF readers like xpdf do a better job here. If you really want to lay hand on the text, using the sources is probably a much better idea, anyway. 

## Things to do: 21st Century 

The first step, the reprint, is now done. The open nature of the license however allows us to update the book to current 21th century practice, and to add the missing chapters. The plan so far consists of 

* Modify the example sources so that they run with ANS Forth systems. 
* Update coding style to current practice (lower case and such). 
* Add chapters about Forth and OOP, Forth debugging, and maintenance. 
* Interview Forth thinkers that didn't have a chance 20 years ago. 
* Translate it to other (natural! ;-) languages. 

A first ![\[pdf\]][10][preprint][18] is available. 

## Resources 

Most of the resources available now are for people who participate in the effort to make the printed Thinking Forth available as LaTeX sources. Developers need a ![\[php\]][19][Sourceforge Account][20], if you have one, send your account name to me ![\[de\]][21][Bernd Paysan <bernd.paysan@gmx.de>][22]. 

If you want to just read Thinking Forth, you better download the [PDF][23]. 

* [Announce Mailing list][24], you should not post to the mailing list address, since it's for announcements (![\[net\]][25][thinking-forth-announce@lists.sourceforge.net][26]). 
* [Internal Developer Mailing list][27], after subscribing, post to ![\[net\]][25][thinking-forth-development@lists.sourceforge.net][28]
* ![\[html\]][7][Sourceforge Project Page][29]
* CVS repository: Developers can exchange and version their work in progress here. To access it, under a Unix-like shell (or Cygwin on Windows), use: 
    
        export CVS_RSH=ssh 
     
    cvs -z3 -d:ext:developername@thinking-forth.cvs.sourceforge.net:/cvsroot/thinking-forth co thinking-forth
    

Once you've checked out that directory, it's sufficient to do `cvs update` there to get more recent versions. `cvs add` _filename_ adds a new file, and `cvs ci` checks modified (and added) files into the repository. More documentation can be found on the ![\[html\]][7][CVS homepage][30]. 

If you like to, you can also use a GUI frontend like ![\[html\]][7][WinCVS][31] on Windows. 

* Font package: To generate a PDF that is readable with Acroread, we need the cm-super package. This is necessary, since we use several fonts that are not part of the usually installed set of Type1 fonts from Bluesky. You can get it from ![\[zip\]][32]<ftp://tug.ctan.org/tex-archive/fonts/ps-type1/cm-super.zip> (64MB). You don't need that if you don't want to generate an Acroread-readable PDF (e.g. just for printing or using alternative viewers). Since we also use the OT1-encoded cmbtt fonts, I've created a Type1 fonts for that, too: ![\[tar-gz\]][33][cmbtt-type1.tar.gz][34]. I've also created an [OCRB Type1 font][35] for the ISBN number based on the ocrb9.mf that is part of the EAN package. It's sufficient to have Ghostscript know about that font in Fontmap.GS, ps2pdf will embed it. 
* * *

Created 21aug2004. Last modified: 26oct2011 by ![Mail][36][Bernd Paysan][22]![PGP key][37]

[1]: http://thinking-forth.sourceforge.net/cover.jpg
[2]: http://www.amazon.com/exec/obidos/ASIN/0976458705
[3]: http://thinking-forth.sourceforge.net#21CENTURY
[4]: http://en.wikipedia.org/wiki/Forth_programming_language
[5]: http://www.amazon.com/exec/obidos/ASIN/0201835959
[6]: http://www.amazon.com/exec/obidos/ASIN/0201485419
[7]: http://thinking-forth.sourceforge.net/icns/html.gif
[8]: http://punchandbrodie.com/leo/
[9]: http://thinking-forth.sourceforge.net/somerights20.gif
[10]: http://thinking-forth.sourceforge.net/icns/pdf.png
[11]: http://prdownloads.sourceforge.net/thinking-forth/thinking-forth-color.pdf?download
[12]: http://prdownloads.sourceforge.net/thinking-forth/thinking-forth.pdf?download
[13]: http://thinking-forth.sourceforge.net/tf-kindle.pdf
[14]: http://prdownloads.sourceforge.net/thinking-forth/cover.pdf?download
[15]: http://thinking-forth.sourceforge.net/icns/tar-bz2.gif
[16]: http://prdownloads.sourceforge.net/thinking-forth/thinking-forth-1.0.tar.bz2?download
[17]: http://thinking-forth.sourceforge.net#RESOURCES
[18]: http://thinking-forth.sourceforge.net/thinking-forth-ans.pdf
[19]: http://thinking-forth.sourceforge.net/icns/php.gif
[20]: http://sourceforge.net/account/register.php
[21]: http://thinking-forth.sourceforge.net/icns/de.png
[22]: mailto:bernd.paysan%40gmx.de
[23]: http://thinking-forth.sourceforge.net#DOWNLOAD
[24]: http://lists.sourceforge.net/lists/listinfo/thinking-forth-announce
[25]: http://thinking-forth.sourceforge.net/icns/net.png
[26]: mailto:thinking-forth-announce%40lists.sourceforge.net
[27]: http://lists.sourceforge.net/lists/listinfo/thinking-forth-development
[28]: mailto:thinking-forth-development%40lists.sourceforge.net
[29]: http://sourceforge.net/projects/thinking-forth/
[30]: https://www.cvshome.org/docs/
[31]: http://www.wincvs.org/
[32]: http://thinking-forth.sourceforge.net/icns/zip.png
[33]: http://thinking-forth.sourceforge.net/icns/tar-gz.gif
[34]: http://thinking-forth.sourceforge.net/cmbtt-type1.tar.gz
[35]: http://thinking-forth.sourceforge.net/OCRB.pfb
[36]: http://thinking-forth.sourceforge.net/icns/mail.gif
[37]: http://thinking-forth.sourceforge.net/icns/gpg-asc.gif

