Confusion + book   32

Book Review: A Philosophy of Software Design
RAMCloud, Ousterhout’s distributed in-memory storage system, is now on my shortlist: from a 5-minute glance, it’s among the cleanest and best-documented code I’ve seen.
Its early chapters are a grand tour of the basic concepts of software organization: separating levels of abstraction, isolating complexity, and when to break up functions. Chapter 5 is one of the most approachable introductions I’ve seen to Parnas’s ideas about information hiding. But it’s Chapter 4 where he introduces the book’s central idea: deep modules. An interface, explains Ousterhout, is not just the function signatures written in the code. It also includes informal elements: high-level behavior, constraints on ordering; anything a developer needs to know to use it. Many modules are shallow: they take a lot to explain, but don’t actually do that much. A good module is deep: the interface should be much simpler than the implementation.

Beautiful, obvious, and impossible to disagree with. Unfortunately, it’s also objectively wrong.
That's right: there are times when it’s actually desirable to have a specification more complicated than the code. Two major reasons are ghost state and imprecision. Ghost state is a concept from verification that describes certain kinds of “subtle” code. It’s an interesting subject that deserves its own blog post; I won’t mention it again. (Short version: it’s when a simple action like flipping a bit actually represents something conceptually complicated.)
So, Ousterhout’s big insight about deep modules is flawed, and advice based on it is unreliable. Using it, he attacks the common wisdom of making small classes/methods, but doesn’t give a way to distinguish when doing so is abstracting something vs. merely adding indirection.
“Use more precise types” is the answer to a lot of software engineering problems.
book  software_design  review  se  interesting 
march 2019 by Confusion
Pattern Recognition and Machine Learning - Microsoft Research
This leading textbook provides a comprehensive introduction to the fields of pattern recognition and machine learning.
machine_learning  book  reading  training 
march 2019 by Confusion
Professional Software Development
"Almost everything you’ll need to know to “hit the ground running.” It’s still a work in progress."
book  novice  se 
january 2019 by Confusion
The Ancient Art of the Numerati
A guide to practical data mining, collective intelligence, and building recommendation systems by Ron Zacharski.
data_mining  data_science  book 
november 2018 by Confusion
Security Engineering - A Guide to Building Dependable Distributed Systems
Security engineering is about building systems to remain dependable in theface of malice, error, or mischance. As a discipline, it focuses on the tools,processes, and methods needed to design, implement, and test completesystems, and to adapt existing systems as their environment evolves
se  security  book 
october 2017 by Confusion
Applied Cryptography Engineering — Quarrelsome
Just this: as an instruction manual, Applied Cryptography is dreadful.
book  crypto  criticism 
july 2017 by Confusion
Unwritten Laws of Engineering: Revised and Updated Edition: W. J. King, James G. Skakoon: 9780791801628: Books
This fully revised and updated edition of the 1944 classic serves as a crucial compilation of 'house rules' or a professional code. This new edition keeps the style of the original and much of its content. Changes reflect shifted societal values, changed employment laws and evolved corporate structures. Packed with contemporary examples, this new volume is a must for those entering the engineering field or for those interested in improving their professional effectiveness.
book  se 
march 2016 by Confusion
Software Development and Reality Construction: Christiane Floyd, Heinz Züllighoven, Reinhard Budde, Reinhard Keil-Slawik, C. Weiler-Kühn: 9783642768194: Books
[..] promoting discussion on the nature of computer science as a scientific discipline and on the theoretical foundations and systemic practice required for human-oriented system design.
book  cs 
march 2016 by Confusion
Paradigms of Artificial Intelligence Programming
This is an open-source repository for the book Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp by Peter Norvig (1992), and the code contained therein. The copyright has reverted to the author, who has shared it here under MIT license.
ai  machine_learning  peter_norvig  book  reading 
october 2009 by Confusion
A Scheme bookshelf
More interesting lists and references on this website/blog
scheme  book  training  reading  plt 
october 2009 by Confusion
An Introduction to Scheme and its Implementation
This book is for people who are interested in how Scheme works, or people who are interested in Scheme in terms of programming language design--as well as people who are just interested in using Scheme.
cs  scheme  book  plt  reading 
october 2009 by Confusion

Copy this bookmark: