null
Loading... Please wait...
FREE SHIPPING on All Unbranded Items LEARN MORE
Print This Page

Software Design for Flexibility (How to Avoid Programming Yourself into a Corner)

List Price: $55.00
SKU:
9780262045490
Quantity:
Minimum Purchase
25 unit(s)
  • Availability: Confirm prior to ordering
  • Branding: minimum 50 pieces (add’l costs below)
  • Check Freight Rates (branded products only)

Branding Options (v), Availability & Lead Times

  • 1-Color Imprint: $2.00 ea.
  • Promo-Page Insert: $2.50 ea. (full-color printed, single-sided page)
  • Belly-Band Wrap: $2.50 ea. (full-color printed)
  • Set-Up Charge: $45 per decoration
FULL DETAILS
  • Availability: Product availability changes daily, so please confirm your quantity is available prior to placing an order.
  • Branded Products: allow 10 business days from proof approval for production. Branding options may be limited or unavailable based on product design or cover artwork.
  • Unbranded Products: allow 3-5 business days for shipping. All Unbranded items receive FREE ground shipping in the US. Inquire for international shipping.
  • RETURNS/CANCELLATIONS: All orders, branded or unbranded, are NON-CANCELLABLE and NON-RETURNABLE once a purchase order has been received.
  • Product Details

    Author:
    Chris Hanson, Gerald Jay Sussman
    Format:
    Hardcover
    Pages:
    448
    Publisher:
    MIT Press (March 9, 2021)
    Language:
    English
    ISBN-13:
    9780262045490
    ISBN-10:
    0262045494
    Weight:
    26.2oz
    Dimensions:
    6.25" x 9.25" x 1.04"
    Case Pack:
    24
    File:
    RandomHouse-PRH_Book_Company_PRH_PRT_Onix_full_active_D20261004T130111_158010510-20261004.xml
    Folder:
    RandomHouse
    List Price:
    $55.00
    As low as:
    $42.35
    Publisher Identifier:
    P-RH
    Discount Code:
    A
    QuickShip:
    Yes
    Audience:
    General/trade
    Country of Origin:
    United States
    Pub Discount:
    65
    Imprint:
    The MIT Press
  • Overview

    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