TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Software Design for Flexibility

109 pointsby jgrodziskiover 4 years ago

10 comments

JamesBarneyover 4 years ago
&gt; Strategies for building systems that can be adapted for new situations with only minor programming modifications.<p>The problem is I&#x27;d rather make a medium size changes to a simple system than a minor change to a complex system.<p>&gt;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<p>And this doesn&#x27;t sound like a simple system.
评论 #25342408 未加载
评论 #25343582 未加载
评论 #25342717 未加载
评论 #25342507 未加载
评论 #25342468 未加载
评论 #25340523 未加载
ChrisMarshallNYover 4 years ago
One of the seminal books for me was <i>Writing Solid Code</i>[0], written about 25 years ago.<p>It&#x27;s quite dated, but has a lot of stuff that is still relevant.<p>I remember that one of his sections was titled <i>&quot;FLEXIBILITY BREEDS BUGS&quot;</i>.<p>Here&#x27;s the first paragraph:<p><pre><code> Another strategy you can use to prevent bugs is to strip unnecessary flexibility from your designs. You&#x27;ve seen me use this principle throughout the book. In Chapter 1, I used optional compiler warnings to disallow redundant and risky C language idioms. In Chapter 2, I defined ASSERT as a statement to prevent the macro from being mistakenly used in expressions. In Chapter 3, I used an assertion to catch NULL pointers passed to FreeMemory even though it&#x27;s quite legal to call the free function with a NULL pointer. From every chapter I could list examples in which I reduced flexibility in order to prevent bugs. </code></pre> I like to put flexibility into my designs, but I&#x27;ve learned to be very careful about it, and usually test the unused code paths anyway.<p>[0] <a href="https:&#x2F;&#x2F;dl.acm.org&#x2F;doi&#x2F;book&#x2F;10.5555&#x2F;2502682" rel="nofollow">https:&#x2F;&#x2F;dl.acm.org&#x2F;doi&#x2F;book&#x2F;10.5555&#x2F;2502682</a>
评论 #25344452 未加载
marai2over 4 years ago
There doesn&#x27;t seem to be much information about the content of this book. But the quote by Dan Friedman is intriguing:<p>“Hanson and Sussman&#x27;s Software Design for Flexibility has introduced additive programming, a game changer. An additive style allows for making changes to existing designs without the programmer&#x27;s efforts looking like the work of a contortionist. With elegance, clarity, and care, they point out long-overlooked problems in software design and offer their Scheme-friendly, clever solutions. Enjoy!”<p>Dan FriedmanProfessor of Computer Science, University of Indiana; author of The Little Prover
titzerover 4 years ago
The site design makes me want to throw something. The massive header bar with literally 7 words on it that is more than inch wide, taking up more than 25% of the vertical space and has a bizarre iiiIji logo (or something) that has no mouseover. What a waste of space!
评论 #25340272 未加载
评论 #25342484 未加载
WalterGRover 4 years ago
Gerald Sussman is one of the authors (along with Hal Abelson and Julie Sussman) of the famous, absolutely incredible “SICP”: <i>Structure and Interpretation of Programs</i>.
mncharityover 4 years ago
&gt; it will be published by MIT Press soon, with a Creative Commons Share Alike license (and all the code in support of the book is under the GNU GPL).[1]<p>[1] <a href="https:&#x2F;&#x2F;www.gnu.org&#x2F;education&#x2F;teaching-my-mit-classes-with-only-free-libre-software.en.html" rel="nofollow">https:&#x2F;&#x2F;www.gnu.org&#x2F;education&#x2F;teaching-my-mit-classes-with-o...</a>
评论 #25342988 未加载
kkylinover 4 years ago
Presumably the book goes with this course:<p><a href="http:&#x2F;&#x2F;groups.csail.mit.edu&#x2F;mac&#x2F;users&#x2F;gjs&#x2F;6.945&#x2F;" rel="nofollow">http:&#x2F;&#x2F;groups.csail.mit.edu&#x2F;mac&#x2F;users&#x2F;gjs&#x2F;6.945&#x2F;</a>
ameliusover 4 years ago
The problem with flexibility is that while it may take you one or two steps away from a corner, you&#x27;ll likely find yourself in a corner soon enough anyway. It&#x27;s like buying a larger hard drive, thinking you&#x27;ll never use all the space.<p>The only real solution, that most managers don&#x27;t get, is to know all requirements upfront.
评论 #25343567 未加载
评论 #25343355 未加载
评论 #25343579 未加载
评论 #25343559 未加载
banjometover 4 years ago
Hardcover | $55.00 X ISBN: 9780262045490 448 pp. | 6 in x 9 in March 2021
bordercasesover 4 years ago
Sussman built a course ostensibly around this book, but I couldn&#x27;t find any indications of the specific material inside of the book itself; on the course pages there were just a bunch of essays not written by them. Any leads?
评论 #25340346 未加载
评论 #25358777 未加载