@@ -28,3 +28,91 @@ Hopefully I'll add critical remarks, though I'm lazy.
28
28
* "Design of computer programs" on Udacity https://www.udacity.com/course/design-of-computer-programs--cs212
29
29
* on CodingBat http://codingbat.com/home/peter@norvig.com
30
30
31
+
32
+
33
+ ## Kernighan and Pike, The Unix Programming Environment.
34
+
35
+ So old-school it’s practically prehistoric, but the best book I know
36
+ on the philosophy of Unix (with the possible exception of ESR’s The
37
+ Art of Unix Programming, but that book has hardly any code, and thus
38
+ is not so relevant to this question). The longest example is a small
39
+ programming language with a compiler and VM interpreter developed in
40
+ stages. http://cm.bell-labs.com/cm/cs/upe/
41
+
42
+ ## Kernighan and Plauger, Software Tools in Pascal.
43
+
44
+ Develops variants of a bunch of classic Unix tools, back before Unix
45
+ became
46
+ popular. http://www.amazon.com/Software-Tools-Pascal-Brian-Kernighan/dp/0201103427
47
+
48
+ ## Aho, Weinberger, Kernighan, The AWK Programming Language.
49
+
50
+ Many surprisingly interesting and compact examples. (E.g. a ‘make’ in
51
+ half a page of code, an assembler and interpreter, a command-line
52
+ database system, etc., etc., etc.) Code is available for download, but
53
+ it’s best with the book, which is unfortunately ridiculously expensive
54
+ these days. http://cm.bell-labs.com/cm/cs/awkbook/
55
+
56
+ ## Chris Okasaki, Purely Functional Data Structures.
57
+
58
+ Just what it says, with code in Haskell and ML. Not your parent’s
59
+ data-structures book. http://www.cs.cmu.edu/~rwh/theses/okasaki.pdf
60
+
61
+ ## Donald Knuth, Literate Programming.
62
+
63
+ Has a few extended examples doing neat
64
+ things. http://www-cs-faculty.stanford.edu/~knuth/lp.html
65
+
66
+ ## Mark Jason Dominus, Higher-Order Perl.
67
+
68
+ Ideas from the functional-programming world brought to Perl. The
69
+ longest example is a constraint-based domain-specific language for
70
+ diagram drawing. http://hop.perl.plover.com/
71
+
72
+ ## James F. Gimpel, Algorithms in Snobol4.
73
+
74
+ An overlooked classic with lots of fun code in a terribly obsolete
75
+ programming language. Emphasis on string processing. Hard to find. The
76
+ code is available online but probably hard to get much benefit from
77
+ without the book. http://www.amazon.com/dp/0471302139/
78
+
79
+ ## Paul Graham, On Lisp.
80
+
81
+ Fine examples of the power of Lisp. The best chapters on macros I’ve
82
+ seen anywhere. His programming style is not so much to my taste
83
+ (favoring too-abbreviated global names, anaphoric macros, etc.) but
84
+ still interesting and educational.
85
+
86
+ http://www.paulgraham.com/onlisp.html
87
+
88
+ ## Peter Seibel, Practical Common Lisp
89
+
90
+ http://en.wikipedia.org/wiki/Practical_Common_Lisp
91
+
92
+ ## Richard O'Keefe, The Craft of Prolog.
93
+
94
+ A bit of a grab-bag but a tasteful exposition of ideas and examples
95
+ relevant to functional programming as well as Prolog. O'Keefe is
96
+ entertainingly opinionated, not unlike Snape at Hogwarts when a
97
+ student screws up. http://www.amazon.com/dp/0262150395/
98
+
99
+ ## Leon Sterling (editor), The Practice of Prolog.
100
+
101
+ A collection of articles, each an extended example, with code, of
102
+ making Prolog do something interesting, usually something
103
+ AI-ish. Chapters by O'Keefe, Chris Mellish, Sterling,
104
+ others. http://www.amazon.com/dp/0262193019/
105
+
106
+ ## P.J. Plauger, The Standard C Library.
107
+
108
+ A full, portable, clean, reasonably efficient implementation of the
109
+ (C89) standard library, with discussion of the design tradeoffs. Includes
110
+ the relevant pages from the standard.
111
+ http://www.amazon.com/dp/0131315099/
112
+
113
+ ## Edsger Dijkstra, A Discipline of Programming.
114
+
115
+ Lots of small but nontrivial examples of developing a program and its
116
+ proof of correctness
117
+ hand-in-hand. http://www.amazon.com/dp/013215871X/
118
+
0 commit comments