{"product_id":"software-design-for-flexibility-how-to-avoid-programming-yourself-into-a-corner-9780262045490","title":"Software Design for Flexibility: How to Avoid Programming Yourself Into a Corner","description":"\u003cp\u003e • Author(s): Chris Hanson\u003cbr\u003e • Publisher: MIT Press\u003cbr\u003e • Publisher Imprint: MIT Press\u003cbr\u003e • BISAC: Computer Science\u003c\/p\u003e\u003cp\u003e\u003cb\u003eStrategies for building large systems that can be easily adapted for new situations with only minor programming modifications.\u003c\/b\u003e \u003c\/p\u003e\u003cp\u003e\u003c\/p\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. \u003cp\u003e\u003c\/p\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":"MIT Press","offers":[{"title":"Hardcover","offer_id":45029597085847,"sku":"9780262045490","price":5287.0,"currency_code":"INR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0666\/3471\/1191\/files\/9780262045490.webp?v=1769204196","url":"https:\/\/atlanticbooks.com\/products\/software-design-for-flexibility-how-to-avoid-programming-yourself-into-a-corner-9780262045490","provider":"Atlantic Books","version":"1.0","type":"link"}