{"product_id":"gerald-jay-sussman-software-design-for-flexibility-9780262045490","title":"Software Design for Flexibility","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","brand":"MIT Press Ltd","offers":[{"title":"Used - very good","offer_id":53442474344790,"sku":"9780262045490-V","price":34.59,"currency_code":"EUR","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0925\/5829\/5382\/files\/product_image_9780262045490_1_b199d1ac-bad1-48e8-abf5-78647a87b391.jpg?v=1778065853","url":"https:\/\/www.momoxbooks.com\/products\/gerald-jay-sussman-software-design-for-flexibility-9780262045490","provider":"momoxbooks","version":"1.0","type":"link"}