A blog about teaching Programming to non-CompSci students by Tim Love (Cambridge University Engineering Department). I do not speak on behalf of the university, the department, or even the IT group I belong to.

Thursday, 14 April 2011

"Coders at Work" (edited by Peter Seibel, Springer-Verlag, 2009)

"Coders at Work" (edited by Peter Seibel, Springer-Verlag, 2009) has interviews with several famous programmers. Most use Emacs and debug using print statements. Most try to understand code in several ways - bottom-up, top-down, following the effects of a user action (e.g. deleting a character in an editor), looking at data structures, etc. Here are some quotes that might be of use


  • "C++ is just an abomination", Zawinski, p.10
  • "[C++'s] syntax is terrible and totally inconsistent and the error messages, at least from gcc, are ridiculous", Fitzpatrick, p.63
  • "I don't like C++; it doesn't feel right", Armstrong, p.224
  • "given the kinds of goals that I have in programming, I think the decision [for C++] to be backwards-compatible with C is a fatal flaw ... C fundamentally has a corrupt type system", Steele, p.355
  • "Google is C++, strictly C++. It's no big deal programming in C++, but I don't like it ... by and large I think it's a bad language", Thompson, p.475


  • "C has destroyed our ability to advance the state of the art in automatic optimization, automatic parallelization, automatic mapping of a high-level language to the machine", Allen, p.502
  • "the biggest security problem to befall modern computers is C", Cosell, p.557
  • "one of the most important revolutions in programming languages was the use of pointers in the C language", Knuth, p.585


  • "I love strace. Strace, I don't think I could live without", Fitzpatrick, p.79
  • "I think an hour of [team] code reading is worth two weeks of QA", Crockford, p.103
  • "we have found fuzz testing to be more productive than almost any other kind of testing", Eich, p.138
  • "the most important [debug] tools for me are still my eyes and my brain. I print out the code involved and read it very carefully ... So long as I can put print statements in the code, and I can read it thoroughly, I can usually find the bugs", Bloch, p.189-190
  • "most of my subjects have found that the hardest bugs to track down are in concurrent code", Seibel, p.xiii
  • "the first thing I will try is dropping in print statements to see if it will help me, even though that is probably the least effective for dealing with a complicated bug. But it does such a good job of grabbing the simple bugs that it's worth a try", Steele, p.365
  • "I don't know of anybody who [uses print statements] if they have the choice of using a good debugger", Ingalls, p.405


  • "Recently I realized what was probably the root cause of [the glass ceiling]: computer science had emerged between 1960 and 1970. And it mostly came out of the engineering schools ... And the engineering schools were mostly all men in that period", Allen, p.510
  • "A lot of people think it's the games and the nerdiness of sitting in front of a computer all day [that making computer science unappealing to women]. It's going to be interesting how these new social networks online will have an effect", Allen, p.513
  • "the conventional wisdom at the time ... said that women made good programmers because they pay attention to details ... today ... they're great on teams because they like to collaborate", Allen, p.507, 509


  • "We installed some buttons on the computer, because you could do that, at the time and one was a panic button. When the program appeared to loop one could just press the panic button", Allen, p.488
  • "I remember reading books about languages that I had no way to run and writing programs on paper for languages that I'd only read about", Zawinski, p.2
  • "I despise [perl]. It's a horrible language", Zawinski, p.11
  • "One of the jokes we made at Netscape a lot was 'We're absolutely 100 percent committed to quality. We're going to ship the highest-quality product we can on March 31st'", Zawinski, p.34
  • "On [Google's] top six or seven languages, there's a really strict style guide", Fitzpatrick, p.72
  • "I had a friend who had some iptables rule that on connection to certain IP addresses between certain hours of the day would redirect to a 'You should be working' page", Fitzpatrick, p.73
  • "most of the security problems that we've seen in operating systems over the last few years are a consequence of ++. In my programming style now I don't use ++ anymore, ever", Crockford, p.106
  • "I think threads are an atrocious programming model", Crockford, p.121
  • "I'm not an object-oriented, design-patterns guy", Eich, p.138
  • "I can't even remember which [UML] components are supposed to be round or square", Bloch, p.181
  • "the best existing multithreaded building blocks are in Java", Bloch, p.198
  • "I think the lack of reusability comes in object-oriented languages, not in functional languages. Because the problem with object-oriented languages is they've got all this implicit environment that they carry around with them", Armstrong, p.213
  • "with very difficult problems I quite often start right by writing the documentation", Armstrong, p.231
  • "From what I've seen of programmers, they're either good at all languages or good at none", Armstrong, p.235
  • "I don't think software is fractal ... I think the things that happen when systems get large are qualitatively different from the things that happen as systems go from being small to medium size", Deutsch, p.421
  • "garbage collection fights cache coherency massively", Thompson, p.472

About the programmers

  • Jamie Zawinski (Xemacs, Netscape, Mozilla)
  • Brad Fitzpatrick (LiveJournal, memcached, Google)
  • Douglas Crockford (Yahoo! Invented JSON)
  • Brendan Eich (Netscape, Mozilla, Invented JavaScript)
  • Joshua Bloch (Chief Java Architect at Google)
  • Joe Armstrong (invented Erlang)
  • Guy Steele (Lisp)
  • Dan Ingalls (Smalltalk)
  • L Peter Deutsch (Ghostscript)
  • Ken Thompson (Unix)
  • Fran Allen (IBM, compilers)
  • Bernie Cosell (PDP-1)
  • Donald Knuth (TeX, algorithms)

No comments:

Post a Comment