{"product_id":"software-design-for-flexibility-how-to-avoid-programming-yourself-into-a-corner-isbn-9780262045490","title":"Software Design for Flexibility: How to Avoid Programming Yourself into a Corner","description":"\u003cb\u003eStrategies for building large systems that can be easily adapted for new situations with only minor programming modifications.\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003eTime 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.\u003cbr\u003e\u003cbr\u003eThe authors explore ways to enhance flexibility by:\u003cbr\u003e\u003cli\u003eOrganizing systems using combinators to compose mix-and-match parts, ranging from small functions to whole arithmetics, with standardized interfaces\u003c\/li\u003e\u003cli\u003e Augmenting data with independent annotation layers, such as units of measurement or provenance\u003c\/li\u003e\u003cli\u003e Combining independent pieces of partial information using unification or propagation\u003c\/li\u003e\u003cli\u003e Separating control structure from problem domain with domain models, rule systems and pattern matching, propagation, and dependency-directed backtracking\u003c\/li\u003e\u003cli\u003e Extending the programming language, using dynamically extensible evaluators\u003c\/li\u003e","brand":"Penguin Random House","offers":[{"title":"Default Title","offer_id":46301195141349,"sku":"NP9780262045490","price":55.0,"currency_code":"USD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1842\/7735\/files\/9780262045490.jpg?v=1767736878","url":"https:\/\/k12savings.com\/es\/products\/software-design-for-flexibility-how-to-avoid-programming-yourself-into-a-corner-isbn-9780262045490","provider":"K12savings","version":"1.0","type":"link"}