Notes on programming language design argue for human-centered languages, strong programmer control, brevity, and real applications driving features. They also predict server-based software will reshape language choices and priorities.
Programming languages should fit human limits, their job is helping people think
The best languages are built for expert programmers, not weaker ones
02 — 20
Good programmers write a disproportionately large percentage of software
Designing for them matters most
03 — 20
Good languages give programmers maximum control
Lisp does this by letting users extend the language itself
04 — 20
Languages that prevent unsafe actions often talk down to programmers instead of treating them as equals
05 — 20
Mathematical elegance matters only when it makes programs easier to understand
06 — 20
Brevity is a core virtue in language design
Shorter programs and thinner manuals usually mean better design
07 — 20
Brevity comes from four sources
01
Many library functions
02
Implicit defaults
03
Terse syntax
04
Short names
08 — 20
Shorter manuals often come from removing special cases that needed long explanations
09 — 20
Large libraries become harmful when finding a function takes longer than writing it yourself
Libraries should be organized so programmers can guess which call does the right thing
10 — 20
Lisp may be unpopular partly because prefix syntax feels unfamiliar
Though that remains unresolved
11 — 20
Hacking is closer to architecture than science
The goal is great programs, not publishable ideas
12 — 20
The best languages usually evolve alongside real applications
C for systems, Lisp for symbolic differentiation
13 — 20
A language must be good for throwaway programs
Many serious programs start that way
14 — 20
Server-based software changes language design fundamentally
15 — 20
Server-based apps need languages built for constant change
As many as five or ten releases a day
16 — 20
Any language can be used for server-based apps, rapid releases matter more than language choice
17 — 20
Continuations may help Web software simulate subroutines in the stateless world of Web sessions
18 — 20
Speed in practice comes more from good profilers than from compiler optimizations