Best Computer Science School in Utah
levi at cold.org
Wed Sep 26 10:26:02 MDT 2007
Paul Seamons <paul at seamons.com> writes:
> Most of my thread spoke about programmers rather than computer
> scientists. I'd argue in a similar vein that the Computer Science
> discipline ill-prepares one to be a competent programmer. This
> takes us to the "science vs craft" debate. Knowing theory is great
> in theory. Tackling a problem and solving it when it shouldn't have
> been possible - but only because you didn't know it was "impossible"
> is even better. This is where "non-CS" types seem to excel - their
> code may not be beautiful, and they may have poor optimizations, and
> they may have screwed up an easy algorithm or design pattern - but
> they solve the problems none-the-less (not all "non-CS" types, but
> some). It has more to do with MacGyverism than anything else.
Computer scientists are actually pretty picky about the words they use
to describe the difficulty of problems. 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. If it looks like
they did, then they only thought they solved the problem. They either
solved something else, or the solutions are wrong.
Your argument seems to me equivalent to saying that lack of training
in physics gives you a better shot at designing physically impossible
devices. Despite your words, no one is going to successfully build a
perpetual motion machine, because such things are impossible.
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 think your paragraph above is self-rationalization that your choice
of study was superior, and that CS really wasn't worth your time.
Maybe it wasn't worth your time to learn, but it's a very important
>> but it's a necessary foundation for
>> computing nonetheless.
> Hmmmmm. I find the word "computing" a little fuzzy here. I think there are
> plenty of use cases that show people who have gotten much done while
> computing without any CS foundation at all - unless the using of existing
> tools which were built with a CS foundation counts (but that is as useful as
> saying a Surgeon wielding a stainless steel scalpel needed the "necessary"
> foundations of metallurgy and manufacturing). We should to careful not to
> elevate the tools above the accomplishment (though those who accomplish
> great things should acknowledge the existing tools/foundations they built
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. They might not end up knowing what all those blobs of flesh were
and how they worked together, but they could certainly cut the
inflamed bit of appendix out and sew you back up just fine!
The point is, someone had to study the theory in order to design the
procedure to be as safe and effective as possble. In reality, we make
all surgeons do that kind of study. I certainly think that's a good
thing, even though they might not all really need it in their
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.
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.
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.
More information about the PLUG