Spockwang's Blog

Epigrams on Programming

| 评论

Controlling complexity is the essence of computer programming.
– p.319, Software Tools

If our basic tool, the language in which we design and code our programs, is also complicated, the language itself becomes part of the problem rather than part of its solution.
– C.A.T Hoare, Turing Award Lecture

I conclude that there are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies and the other way is to make it so complicated that there are no obvious deficiencies.
– C. A. T Hoare, Turing Award Lecture

A distributed system is one in which the failure of a computer you didn’t even know existed can render your own computer unusable.
– Leslie Lamport

The important thing is to start with a good design.  It is much easier to relax the standards for something well written than it is to tighten them for something badly written.
– p.257, Software Tools

Our rule is always: Write something clean and acceptable that works, then polish it later if necessary.
– p.265, Software Tools

But we try to avoid such solutions, convenient as they may at first appear, because they violate a basic principle of top-down design: every function should return to where it is called.  This way, strategy is kept visible (and changeable) at the highest level of the code, and execution proceeds strictly from top to bottom.
– p.47, Software Tools

The value of a telecommunications network is proportional to the square of the number of connected users of the system (n2).
Metcalfe’s law

Given enough eyeballs, all bugs are shallow.
– Eric Steven Raymond puts it as “Linus’ Law”

Program testing can be used to show the presence of bugs, but never to show their absence.
– Dijkstra

C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, it blows away your whole leg.
– Bjarne Stroustrup, creator of C++

Sometimes, the elegant implementation is just a function. Not a method. Not a class. Not a framework. Just a function.
– John Carmack

Such is modern computing: everything simple is made too complicated because it’s easy to fiddle with; everything complicated stays complicated because it’s hard to fix.
– Rob Pike

Java is like a variant of the game of Tetris in which none of the pieces can fill gaps created by the other pieces, so all you can do is pile them up endlessly.
– Steve Yegge

Languages that try to disallow idiocy become themselves idiotic.
– Rob Pike

The problem with object-oriented languages is they’ve got all this implicit environment that they carry around with them. You wanted a banana but what you got was a gorilla holding the banana and the entire jungle.
– Joe Armstrong

The purpose of software engineering is to control complexity, not to create it.
– Dr. Pamela Zave

“design patterns” are concepts used by people who can’t learn by any method except memorization, so in place of actual programming ability, they memorize “patterns” and throw each one in sequence at a problem until it works.
– Jason Garrett-Glaser (a.k.a. Dark_Shikari)

The object-oriented model makes it easy to build up programs by accretion. What this often means, in practice, is that it provides a structured way to write spaghetti code.
– Paul Graham

Assignment statements - even abstract ones - express very low-level goals… Human programmers aren’t Turing machines - and the less their programming systems require Turing machine techniques, the better.
– Alan Kay

When people react instantly, they’re not thinking, they’re doing a table look up.
– Alan Kay

The basic principle of recursive design is making the parts as powerful as the whole.
– Bob Barton

Science is not there to tell us about the universe, but to tell us how to talk about the universe.
– Niels Bohr

All magic comes with a price.
– Rumplestiltskin, from Once Upon A Time

I did it because it was easy. It was a mistake. There were other paths. Harder paths, and I wish I had taken them. … Let’s take the hard path.
– Snow White, from Once Upon A Time

Programs should not only work, but they should appear to work as well.
– PDP-1X Dogma

Be conservative in what you do, be liberal in what you accept from others.
Robust Principle

Show me your flow charts and conceal your tables and I shall continue to be mystified, show me your tables and I won’t usually need your flow charts; they’ll be obvious.
– Fred Brooks

Bad programmers worry about the code. Good programmers worry about data structures and their relationships. – Linus Torvalds

Form follows function.
Louis Sullivan

Symmetry is a complexity reducing concept (co-routines include sub-routines); seek it everywhere.
Alan J. Perlis

Our customers feel the variance, not the mean. – What is Six Sigma? The roadmap to customer impact

Important skill: ability to estimate performance of a system design without actually having to build it.
– Jeff Dean

The purpose of abstracting is not to be vague, but to create a new semantic level in which one can be absolutely precise.
– Dijkstra

Program into a programming language, not in it.
– p.235, The Science of Programming

Comments