Table of Contents
- Preface to the 2004 Edition
- Acknowledgments for 2004 Edition
- Preface to the 1994 Edition
- Preface
- Contents
- The Philosophy of Forth
- An Armchair History of Software Elegance
- Memorability
- Power
- Abstraction
- Manageability
- Modularity
- Writeability
- Designing from the Top
- Subroutines
- Successive Refinement
- Structured Design
- Functional Strength
- Coupling
- Hierarchical Input-Process-Output Designing
- Information-Hiding
- The Superficiality of Structure
- Looking Back, and Forth
- Implicit Calls
- Implicit Data Passing
- Component Programming
- Hide From Whom?
- Hiding the Construction of Data Structures
- But Is It a High-Level Language?
- The Language of Design
- The Language of Performance
- Summary
- References
- Analysis
- The Nine Phases of the Programming Cycle
- The Iterative Approach
- The Value of Planning
- The Limitations of Planning
- The Analysis Phase
- Discovering the Requirements
- Discovering the Constraints
- Building a Conceptual Model of the Solution
- Defining the Interfaces
- Defining the Rules
- Structured English
- The Decision Tree
- The Decision Table
- Defining the Data Structures
- Achieving Simplicity
- Budgeting and Scheduling
- Reviewing the Conceptual Model
- References
- Preliminary Design/Decomposition
- Decomposition by Component
- Example: A Tiny Editor
- Maintaining a Component-based Application
- Designing and Maintaining a Traditional Application
- The Interface Component
- Decomposition by Sequential Complexity
- The Limits of Level Thinking
- Where to Begin?
- No Segregation Without Representation
- The Tower of Babble
- Summary
- For Further Thinking
- Detailed Design/Problem Solving
- Problem-Solving Techniques
- Interview with a Software Inventor
- Detailed Design
- Forth Syntax
- Algorithms and Data Structures
- Calculations vs. Data Structures vs. Logic
- Solving a Problem: Computing Roman Numerals
- Summary
- References
- For Further Thinking
- Implementation: Elements of Forth Style
- Listing Organization
- Decomposition
- Composition
- Application-load Screen
- Skip Commands
- Chapter-load Screens
- ----> vs. THRU
- An Alternative to Screens: Source in Named Files
- Disk Partitioning
- Electives
- Screen Layout
- Comment Conventions
- Stack Notation
- Stack Picture
- Stack Effect
- Stack Effect Comment
- Stack Abbreviation Standards
- Notation of Flags
- Notation of Variable Possibilities
- Data-Structure Comments
- Input-stream Comments
- Purpose Comments
- Comments for Defining Words
- Comments for Compiling Words
- Vertical Format vs. Horizontal Format
- Choosing Names: The Art
- Naming Standards: The Science
- More Tips for Readability
- Summary
- References
- Factoring
- Factoring Techniques
- Factoring Out Data
- Factoring Out Functions
- Factoring Out Code from Within Control Structures
- Factoring Out Control Structures Themselves
- Factoring Out Names
- Factoring Out Functions into Defining Words
- Factoring Criteria
- Compile-Time Factoring
- Compile-Time Factoring through Defining Words
- The Iterative Approach in Implementation
- References
- Handling Data: Stacks and States
- The Stylish Stack
- Redesign
- Local Variables
- On PICK and ROLL
- Make Stack Drawings
- Stack Tips
- The Stylish Return Stack
- The Problem With Variables
- Local and Global Variables/Initialization
- Saving and Restoring a State
- Application Stacks
- Sharing Components
- The State Table
- Vectored Execution
- Using DOER/MAKE
- Summary
- References
- Minimizing Control Structures
- What's So Bad about Control Structures?
- How to Eliminate Control Structures
- Using the Dictionary
- Nesting and Combining Conditionals
- Choosing Control Structures
- Case Statements
- Looping Structures
- Calculating Results
- A Note on Tricks
- Using Decision Tables
- One-Dimensional Data Table
- Two-Dimensional Data Table
- Two-Dimensional Decision Table
- Decision Tables for Speed
- Redesigning
- Using Structured Exits
- Employing Good Timing
- Simplifying
- Summary
- References
- For Further Thinking
- Forth's Effect on Thinking
- Overview of Forth (For Newcomers)
- The Dictionary
- Data Structures
- The Stack
- Control Structures
- For the Whole Story
- Defining DOER/MAKE
- Other Utilities Described in This Book
- From Chapter Four
- From Chapter Five
- From Chapter Eight
- Answers to "Further Thinking" Problems
- Chapter Three
- Chapter Four
- Chapter Eight
- Summary of Style Conventions
- Spacing and Indentation Guidelines
- Stack-Comment Abbreviations
- Input-Stream Comment Designations
- Samples of Good Commenting Style
- Naming Conventions
- Index