Strategies for building large systems that can be easily adapted for new situations with only minor programming modifications.

Time pressures encourage programmers to write code that works well for a narrow purpose, with no room to grow. But the best systems are evolvable; they can be adapted for new situations by adding code, rather than changing the existing code.

The authors describe techniques they have found effective--over their combined 100-plus years of programming experience--that will help programmers avoid programming themselves into corners.

The authors explore ways to enhance flexibility by:
- Organizing systems using combinators to compose mix-and-match parts, ranging from small functions to whole arithmetics, with standardized interfaces
- Augmenting data with independent annotation layers, such as units of measurement or provenance
- Combining independent pieces of partial information using unification or propagation
- Separating control structure from problem domain with domain models, rule systems and pattern matching, propagation, and dependency-directed backtracking
- Extending the programming language, using dynamically extensible evaluators.

More Information
ISBN 9780262045490
Author Chris Hanson, Gerald Jay Sussman
Publisher MIT Press
Publication date 9 Mar 2021
Format Hardback
Weight 0.738000
Write Your Own Review
You're reviewing:Software Design for Flexibility

Software Design for Flexibility

Chris Hanson, Gerald Jay Sussman
€60.99

How to Avoid Programming Yourself into a Corner

Estimated delivery in 2-5 working days
Read more about our shipping and delivery