From: psu@cs.duke.edu (Peter Su)
Newsgroups: comp.edu
Subject: Re: Programmers
Date: 11 Sep 92 14:25:57 GMT
	<1992Sep10.142205.16217@merlin.dev.cdx.mot.com>
	<BuDHvA.226@mentor.cc.purdue.edu>
Organization: Duke University CS Dept., Durham, NC
In-reply-to: asd@sage.cc.purdue.edu's message of 10 Sep 92 17:28:21 GMT


   Indeed!  I have found that the biggest problem, here at college, is
   that Computer Programmer is NOT a major.  It's not even a minor!
   Instead, I get to be a Computer Scientist!  I don't want to be a
   Scientist!  I want to be a Computer Programmer, or a Software
   Engineer.  Leave all that numerical computational math theory bullshit
   to the academics.  I could really care less.  But I want to be able to
   work!  I want to know how to write a server, custom engineer a system
   for a client, or write super fast code for a device driver.

As a budding academic (heh heh) I, of course, must come to the defense
of those people who work in 'math theory bullshit.'

This alleged 'bullshit' forms the basis for much of what is available
on a modern computer system.  Let's look at UNIX:

- The libraries have a routine called qsort, thought up by a math
theory bullshit guy named Hoare, and proved to be very fast by another
math theory bullshit guy named Sedgewick.  For the most part, it's
fast enough, but if you really want to know how it works to speed it
up, you can go to a math theory bullshit book written by Knuth and get
all the details.

- There is a program called Lex that parses regular expressions, which
were made up by a math theory bullshit guy named Kleene.  Most of the
larger tools in the UNIX system (like compilers) use regular
expressions to do all sorts of magical things.

- There is another tool called yacc, which generates parsers using
more math theory bullshit created by various people.

- TeX uses shortest path algorithms to break lines.  Does a pretty
good job too.  Lots of books are typeset with TeX.  More bullshit?

- The whole IDEA of a kernel bases system uses old old ideas about
abstraction, information hiding, etc that come from both OS and
programming languages research.

What's my point?  My point is this: Any programmer worth his salt must
have at least some idea why quicksort is good, how lex works and how
yacc works in order to make himself or herself better at what he/she
does. It is inexcusable to say 'I want to be a good programmer' and
NOT pay attention to the more important parts of the large body of
'math theory bullshit.'

This is not to say that everything the theory people do it great.
There are phenomenal examples of botches.  But there are a lot of cool
ideas that are extremely useful.

If, after taking algorithms classes, OS classes, programming
lanaguages, compilers, etc, you *can't* figure out how a UNIX server
works on your own, or at least in Perl, then either YOU are clueless,
or those who taught you are clueless.  This doesn't mean that the
material is irrelevant to what you are interested in.

Go back and read Programming Pearls and More Programming
Pearls...twice.

Pete
--
Department of Computer Science, Duke University, Durham, NC 27706
Internet:	psu@cs.duke.edu
UUCP:		mcnc!duke!psu
Newsgroups: comp.edu,comp.lang.misc