From
interview with Brian Kernighan (via Chris):
Aleksey Dolya:
You are a well-known expert in practical programming. Does it differ from
theoretical and research programming?
Brian Kernighan: As
the great American philosopher Yogi Berra is reputed to have said, "In
theory, there is no difference between theory and practice. In practice, there
is." I'm not sure what theoretical programming might be, but code that
can't be executed on a computer is unlikely to work and thus isn't terribly
useful except as a thought exercise.
Research
programming might mean software written as a prototype or [used] to verify that
some concept can be made to work. There, the difference is that one can cut
lots of corners: don't worry about errors, ignore potential hazards, provide no
user interface, skip documentation and, of course, do no maintenance. In that
sense, research programming is vastly easier than writing a program that will
be used by many people over a long period of time. Someone (Fred Brooks, in The Mythical Man Month, perhaps) once said
that it is at least an order of magnitude more work to do production software
than a prototype. I think he's wrong by at least an order of magnitude.
Read the entire interview for
other great insights from a great man.