Julien Moumné Software Engineer, Paris, France

Reading Notes

The Art of Unix Programming - Basics of the Unix Philosophy - Eric S. Raymond

  • Experience driven
  • The Unix philosophy... is bottom-up, not top-down. It is pragmatic and grounded in experience. Introductory paragraph

  • Short cycles
  • Design and build software, even operating systems, to be tried early, ideally within weeks. Don't hesitate to throw away the clumsy parts and rebuild them. [Doug McIlroy] Introductory paragraph

    Make it run, then make it right, then make it fast [Kent Beck] Rule of Optimization

  • Fight complexity
  • Controlling complexity is the essence of computer programming [Kernighan-Plauger]. Rule of Modularity

    The only way to write complex software that won't fall on its face is to hold its global complexity down... Rule of Modularity

  • Code for humans
  • Because maintenance is so important and so expensive, write programs as if the most important communication they do is not to the computer that executes them but to the human beings who will read and maintain the source code... Rule of Clarity

  • Fail early and loudly
  • ... the worst kinds of bugs are those in which the repair doesn't succeed and the problem quietly causes corruption that doesn't show up until much later. Rule of Repair

  • Simplicity over optimization
  • Programmer time is expensive; conserve it in preference to machine time Rule of Economy

    Premature optimization is the root of all evil [Donald Knuth] Rule of Optimization

    You can't tell where a program is going to spend its time. Bottlenecks occur in surprising places... [Rob Pike] Introductory paragraph

    Measure. Don't tune for speed until you've measured... [Rob Pike] Introductory paragraph

    Fancy algorithms are buggier than simple ones [Rob Pike] Introductory paragraph

    When in doubt, use brute force. [Ken Thompson] Introductory paragraph

    Buying a small increase in performance with a large increase in the complexity and obscurity of your technique is a bad trade Rule of Clarity

    A prematurely optimized portion of a design frequently interferes with changes that would have much higher payoffs across the whole design, so you end up with both inferior performance and excessively complex code. Rule of Optimization