Sockets are the X windows of IO interfaces.

There's no such thing as a simple cache bug.

Caches aren't architecture, they're just optimization.

Not only is UNIX dead, it's starting to smell really bad.

Object-oriented design is the roman numerals of computing.

Narrowness of experience leads to narrowness of imagination

Languages that try to disallow idiocy become themselves idiotic.

Fancy algorithms are slow when N is small, and N is usually small.

When there is no type hierarchy you don't have to manage the type hierarchy.

There's nothing in computing that can't be broken by another level of indirection.

Using Unix is the computing equivalent of listening only to music by David Cassidy.

A smart terminal is not a smartass terminal, but rather a terminal you can educate.

We're systems software people ourselves. We wanted a language to make our lives better.

The process of software development doesn't feel any better than it did a generation ago.

If POSIX threads are a good thing, perhaps I don't want to know what they're better than.

Procedure names should reflect what they do; function names should reflect what they return

Why would you have a language that is not theoretically exciting? Because it's very useful.

Eventually, I decided that thinking was not getting me very far and it was time to try building.

When Steve Jobs died last week, there was a huge outcry, and that was very moving and justified.

Dynamic typing is not necessarily good. You get static errors at run time, which you really should be able to catch at compile time.

Productivity is most important by engineering management rules, but enjoyment is most important for engineers. One stems from the other.

To write a kernel without a data structure and have it be as consistent and graceful as UNIX would have been a much, much harder challenge.

You have to make a decision whether it's a new product or you integrate it with an existing product. It takes time to work these things out.

Web servers are written in C, and if they're not, they're written in Java or C++, which are C derivatives, or Python or Ruby, which are implemented in C.

Go is an attempt to combine the safety and performance of statically typed languages with the convenience and fun of dynamically typed interpretative languages.

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.

Pretty much everything on the web uses those two things: C and UNIX. The browsers are written in C. The UNIX kernel - that pretty much the entire Internet runs on - is written in C.

We don't believe we've solved the multicore-programming problem. But we think we've built an environment in which a certain class of problems can take advantage of the multicore architecture.

Data dominates. If you've chosen the right data structures and organized things well, the algorithms will almost always be self-evident. Data structures, not algorithms, are central to programming.

Rule 1. You can't tell where a program is going to spend its time. Bottlenecks occur in surprising places, so don't try to second guess and put in a speed hack until you've proven that's where the bottleneck is

Share This Page