序文

コンピュータ・プログラミングは頭がおかしくなります。他の職業は努力した結果を目にすることができる贅沢に恵まれています。時計職人は歯車やホィールを見る事ができます。仕立て屋はステッチ毎に縫い目が伸びるのを見ることができます。しかしプログラマは想像や意識外の恐ろしげな仕組みのようなものを設計・構築・修復します。私たちの仕事はRAMやエディタ内ではなく、自身の心の中で行われます。

頭の中でモデルを構築することは、プログラミングの課題でもあり喜びでもあります。そのためにどのような準備をするべきでしょうか?よりよいデバッガ・逆コンパイラ・逆アセンブラで武装しますか?それらは助けにはなりますが、最も重要なツールとテクニックは精神です。私達はソフトウェアの問題について考えるための一貫した実用的な方法論を必要としています。それが私がこの本の中でとらえようとしたことです。「Forth思考」は問題解決のためのソフトウェアを書く事に興味がある人のためのものです。達成したいことを決定し、システムのコンポーネントを設計し、そして最後にプログラムを構築します。

この本は、うまく機能するだけでなく、読みやすく、論理的で、簡潔なことばで最良の解決策を表すプログラムを書くことの重要性を強調しています。

ここで説明している大部分の原則はどの言語にも適用できるけれども、私はそれらをForthについて提示しています。Forthは言語であり、オペレーティングシステムであり、道具箱であり、哲学です。それは私達の考え方に対応した、思考の為の理想的な手段です。「Forth思考」はシンプルに考え、エレガントに考え、柔軟に考えます。それは制約ではなく、複雑でもなく、過度に一般的でもありません。この本の恩恵をえるためにForthを知る必要はありません。「Forth思考」は現代コンピューター科学によって授けられた多くの原則とForthのアプローチを統合したものです。Forthの単純さと伝統的な分析やスタイルとの結婚は、あなたにソフトウェアの問題を見るための新しくてよりよい方法を与え、そしてそれはコンピューターアプリケーションの全ての分野で役に立つでしょう。

Forthについてもっと学びたいのであれば、もう一つの本「Forth入門」(原著: Starting Forth)が言語面をカバーしています。あるいは、この本の 付録 A でForthの基本を紹介しています。

この本の構成は、最初の章を基本概念に費やし、そしてソフトウェア開発サイクルを経験した後に、その後の章立てを初期仕様から実装まで順序立てて記述しました。後ろの付録には言語に不慣れな人の為にForthの概要、本文中で説明したユーティリティのコードの幾つか、問題に対する答え、スタイル規則の要約があります。

この本のアイデアの多くは非科学的です。それらは主観的な経験と自身の人間性の観察に基づいています。このため、私は様々なForth専門家へのインタビューを含めました。各人がお互い完全に合意したわけでなく、私と完全に合意しているわけでもありません。各人の主張は予告なしに変更される可能性があります。この本はまた「ヒント」と提案をしています。それらはあなたの状況にあてはまるときだけ活用してください。Forth思考は不可抗力な規則を受け入れません。利用可能なForthシステムへの最大限の適合性を保証するために、この本の全てのコード例はFORTH-83規格に準拠しています。

この本に大きな影響を与えた人物は、Forthを発明したチャールズ・ムーアです。この本の為に彼にインタビューするのに数日費やした事に加えて、職場での彼を観察できたのは役得でした。彼は機械の中の概念モデルを物理的に置き換えているかのように、組み立て、いじくり、操作する、スピードと巧みさを兼ね備えている熟練した職人です。彼は、これを(潜在的な複雑さとの継続的な戦いの結果、)最小限のツールと、彼自身のテクニックによって課された制約以外ほとんど無しに実現しています。この本が彼の智慧の一部を捉えていることを願っています。ではお楽しみ下さい。

謝辞

Many thanks to all the good people who gave their time and ideas to this book, including: Charles Moore, Dr. Mark Bernstein, Dave Johnson, John Teleska, Dr. Michael Starling, Dr. Peter Kogge, Tom Dowling, Donald Burgess, Cary Campbell, Dr. Raymond Dessy, Michael Ham, and Kim Harris. Another of the interviewees, Michael LaManna, passed away while this book was in production. He is deeply missed by those of us who loved him.