Software Design For Flexibility Chris Hanson And Gerald Sussman
pdf | 2.94 MB | English | Isbn: B089423GC6 | Author: Chris Hanson & Gerald Sussman | Year: 2021
Description:
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
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
Category:Computer Systems Analysis & Design, Computer Systems Analysis & Design, Computer Programming
Download from RapidGator
Download from DDownload
Download from NitroFlare