Matthew Chan

← back


On programming

Complete formal verification is the only known way to guarantee that a system is free of programming errors. - Klein et al., seL4: Formal Verification of an OS Kernel

I don’t need to waste my time with a computer just because I am a computer scientist. - Edsger W. Dijkstra, EWD1305

If you can’t find ten Lisp hackers, then your company is probably based in the wrong city for developing software. - Paul Graham, Revenge of the Nerds

Making hackers work in a noisy, distracting environment is like having a paint factory where the air is full of soot. - Paul Graham, Great hackers

Good hackers find it unbearable to use bad tools. They’ll simply refuse to work on projects with the wrong infrastructure. - Paul Graham, Great hackers

You should be using Emacs. If you are using vi, there is probably something wrong with you. If you are using something that is not a real code editor, that is even worse. - Operating Systems: Three Easy Pieces

On language design

Programs must be written for people to read, and only incidentally for machines to execute. - Preface to the first edition, SICP

Firstly, as a rule he is not free in the choice of his programming tools and the most widely used programming languages are rather inadequate vehicles. - Dijkstra, EWD 288

A language that doesn’t make your programs small is doing a bad job of what programming languages are supposed to do, like a knife that doesn’t cut well, or printing that’s illegible. - Paul Graham, Succinctness is Power

A language that makes source code ugly is maddening to an exacting programmer, as clay full of lumps would be to a sculptor. - Paul Graham,

It’s a perfectly legitimate goal to design a language for average programmers. But it is also a legitimate, and very different, goal to design a language for good programmers. - Paul Graham, Arc: An Unfinished Dialect of Lisp

Any language designer has to face awkward questions like which languages are better, and why, just as proctologists have to do things that would be considered extremely rude if ordinary people did them. - Paul Graham, Programming FAQ

I really don’t like programming. I built this tool to program less so that I could just reuse code. - Rasmus Lerdorf, creator of PHP

On functional programming

The clarity and economy of expression that the language of functional programming permits is often very impressive, and, but for human inertia, functional programming can be expected to have a brilliant future. - Dijkstra, EWD1213

On object-oriented programming and “design patterns”

ob-ject: to feel distaste for something (Webster’s Dictionary) - epigraph for chapter 14 (OO-langs), Modern Compiler Implementation in ML

I don’t think object-oriented programming is a structuring paradigm that meets my standards of elegance. - Edsger W. Dijkstra, EWD1284

Design patterns are bug reports against your programming language. - Peter Norvig

From a Lisp perspective the various GOF patterns can be thought of as implementing first-class types (state, proxy), first-class functions (visitor, iterator), macros (interpreter), method combination (mediator, observer), multimethods (builder), and modules (facade). - Peter Norvig

Any other regularity in the code is a sign, to me at least, that I’m using abstractions that aren’t powerful enough - often that I’m generating by hand the expansions of some macro that I need to write. - Paul Graham, Revenge of the Nerds