Best Computer Science School in Utah

Paul Seamons paul at seamons.com
Wed Sep 26 12:08:47 MDT 2007


> You will never find a non-CS
> person, or anyone else, solving an problem deemed impossible by CS
> theory, because such problems are not computable.

Hoisting theories to fact.  These are the problems I am talking about.  CS 
proofs are one thing, but theories are another entirely.  History has many 
examples in all fields where great advances because theories were ignored 
(but more cases exist where failures were made because good theories were 
ignored).

> If it looks like 
> they did, then they only thought they solved the problem.  They either
> solved something else, or the solutions are wrong.

Quite likely.  But the person didn't spend a lot of time caring about the 
theory.  They just did their job and solved the problem - and they may run 
into scalability problems soon, but in the meantime they are raising venture 
capital on their product that is already to market.

> Your argument seems to me equivalent to saying that lack of training
> in physics gives you a better shot at designing physically impossible
> devices.

My fault in using too much hyperbole with words such as impossible.  My 
argument is closer to saying that lack of training sometimes allows one to 
focus on the problem rather than become mired in details (you may not cover 
every edge case, but that's ok some of the time).

> Despite your words, no one is going to successfully build a 
> perpetual motion machine, because such things are impossible.

And there is a proof to back it up (well in this case a law), not a theory.

> There are plenty of problems in computing that are varying degrees of
> hard, though, and a particularly bright, but untrained, guy might find
> a solution to a problem hard enough that trained CS guys don't want to
> spend time on.  In general, this is vanishingly unlikely. 

I'm not talking about untrained people setting out to solve specialized 
problems.  This is extremely unlikely and most of the time it is absurd.  
I am talking about programming.  I am not talking about CS theories.  An 
untrained programmer like myself has a near 0 possibility of solving an 
unsolved CS problem.  But I have tackled plenty of programming problems.

> I think your paragraph above is self-rationalization that your choice
> of study was superior,

I stopped talking about Engineering in my first post.  Though I used 
Engineering as a good path to follow, my other ramblings were more about 
non-CS people than they were about engineering people.

My first post said that the choice of field of study was tied to what somebody 
wanted to do with their life.  If someone wants to be a programmer and has no 
knack for programming, then CS would be superior because learning about the 
tools can help you learn better how to use them.  If they want to be a 
programmer and already have an aptitude for programming already, then I'd say 
any degree that encourages plenty of math would be adequate.

I generally try to stay out of discussions such as my editor is better than 
yours, or my programming language is better than yours, or my degree is 
better than yours.  I simply don't care.  I have a job to do.  And the tools 
I have chosen let me do it to a degree that satisfies me.

I know that you understand more about software and are most likely a better 
programmer than I am.  I think that that says more about you and your 
abilities than it does about a CS degree.  I don't feel inferior just because 
I don't know as much about CS.

> and that CS really wasn't worth your time.  Maybe it wasn't worth your time 
to learn, but it's a very important field.

Actually, I've always wished I'd double majored or at least minored in CS.  I 
guess an ounce of hindsight...

> I think it's more akin to requiring the surgeon to learn all sorts of
> things like biology, biochemistry, etc. when they could really perform
> surgery just as well if a competent surgeon just showed them how to do
> it...

That wasn't my example.  My example wasn't about the procedure the surgeon was 
going to use.  It was about his tool the scalpel.  He doesn't need to know 
how the tool was made (manufacturing).  He doesn't need to know about how the 
ore for the tool was chosen, mined and purified (metallurgy).  Those are the 
things the tool maker needed to know.  The surgery procedures, the anatomy, 
the chemistry, the biology are all the surgeon's craft.  He better know 
those.

> There is a great deal of work to be done still in the theory of
> computer science.  It informs the creation of new and better tools
> that will lead to more reliable, more powerful hardware and software.

Hooray! (that is a real hooray - no sarcasm here - everybody loves better 
tools)

> Without computer science, we'd still be programming in assembly
> language or primitive Fortran.  Sure, people with no training would 
> still be able to solve problems, but they wouldn't be anywhere near as
> impressive as they are now.

Ding ding ding.  Yes.  My points exactly.  We have tools (higher level 
languages) that have abstracted the science away that let us solve complex 
problems.  Ah, we are finally on the same page.

> It is, as Hans said, an essential foundation to computing.  There are
> certainly jobs in the computing world that don't require learning it,
> but someone had to learn it to enable those jobs.

Let me quote my last post:

> > (though those 
> > who accomplish great things should acknowledge the existing
> > tools/foundations they built upon).

I'm grateful for the tools.  I always want better and better tools.  
Yes.  We need better tools.  I am grateful for computer science that helps 
give us more tools.

I'd rather make cabinetry than make wood working tools.  I'm grateful that 
somebody created tools to help me more easily make a cabinet.  Sometimes I 
wish I had the resources to make a wood working tool because I think it is 
interesting.  I know there are people who still hand craft (hand powered 
tools only) cabinetry, but I'm glad that I don't have to.  I can use the 
higher order tools to get my job done quickly.  Would you rather create a saw 
or cabinetry?  I'm glad that there are people who do both.

In programming sometimes I find a tool lacking and I start looking for a 
solution.  In these cases I've wished a had more CS experience so I could 
better create my own tool.  But for the most part I use my database without 
working about database engine design, I use my webserver without worrying 
about tcp or protocol or network,  I use my language of choice without 
worrying about compilers or assembly, I use my objects without worrying about 
object theory, and so on and so on.  Sometimes I have to worry about these 
things, but I'm glad that in my job as a programmer, most of the time I don't 
have to worry about my tools, I just have to know how to use them. 

It is the MacGyverism thing all over again.

Generally, CS is the creation of tools that the creation of tools from 
existing tools.  Programming is the using of tools.

Paul



More information about the PLUG mailing list