note
FoxtrotUniform
<p>First of all, taking this at face value, I think you're
comparing apples and oranges. Computing science is about
<i>creating</i> software. Literary criticism is <i>not</i>
about <i>writing stories</i>, it's about appreciating and
understanding the literature that's <i>already there</i>.
</p>
<p>Now, since I read this as a veiled attack on computing
science, let me respond to <i>that</i>.</p>
<p>A good grasp of computing science is <i>absolutely
essential</i> for a serious programmer. Notice that I did
<i>not</i> say that a CS <i>degree</i> is essential; I'm
talking about concepts and understanding, not paper
credentials.</p>
<p>CS, as distinct from software engineering, is
about the theory of making computers do exactly what you
want them to. That means stuff like big-O notation,
algorithmic analysis, a <i>proper</i> understanding of the
various paradigms of programming (as opposed to: "Object
oriented? You mean Java?" and suchlike), and the theory
of all the "practical" aspects of programming. You can
pick this stuff up from books, probably even from experience
(which is how it was done originally, of course), but the
easiest way of getting it is by taking a CS degree.</p>
<p>A programmer with a good understanding of CS will not
spend hours trying to save two cycles in the inner loop of
an <i>O(n^2)</i> sort; he will spend twenty minutes
replacing the bubble sort with heapsort. For that matter,
he won't spend hours trying to re-code an exponential-time
algorithm as a polynomial-time algorithm if the problem is
NP-hard (well, not unless the object of the exercise is to
prove P=NP). A "self-taught" programmer with no grasp of
CS might design and set up a database, but won't be able to
normalize it, and will end up with redundant (and probably
inconsistent) data. He'll write two hundred lines of
procedural code to solve a problem that could be expressed
in ten lines of functional code... or two lines of
declarative code. And so on.</p>
<p>In short, I think you're full of it. Computer science
is as useful for writing good software as a sense of plot,
character, and eloquence is for writing a good story.</p>
<p>See also [http://ugweb.cs.ualberta.ca/~olson/theory|Why
Theory Doesn't Suck].</p>
<p><tt>-- <br>
:wq</tt></p>
134202
134202