Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation

Comment on

( #3333=superdoc: print w/replies, xml ) Need Help??
What about the guy who answers "red-black trees? Isn't that yet another theoretical CS datastructure that I'll never actually code myself, because tonnes of people have written a more efficient version already?".

If I try to store data terribly efficiently in some data structure, I'm probably be doing a premature optimization, something theoretical CS people also hate. ;-)

I mean, sure, I've got a mathematics background. In theory, I could look for some group theory to find me a nice hashing algorithm for a given problem. In practice, a sufficiently good hashing algorithm that's been coded and tested probably already exists; and it's almost certainly a waste of time to retread that ground unless I'm doing research in optimizing hash algorithms.

In general, there are three classes of CS problems - unsolved problems, on-going research, and solved problems. In general, businesses dislike betting their infrastrcture on unsolved problems and on-going research, so 99% of programmers will be dealing with solved problems. The correct solution to a solved problem is usually to download the code that solves it (if it exists), or code up the most reliable algorithm that's known to solve the problem (if no code exists yet).

Theoretical CS benefits many, many people: but that means that only a few really smart people actually need to do it. The rest of us just reap the benefits. I'm not smart enough to to PhD level cryptography, for example -- but I can certainly run the code that does, once my friends work out the algebra that underlies the algorithms.

So, in general, unless you're going to design a compiler, compiler theory isn't useful, except as an example of how to solve a complex problem. Multi-variate calculus isn't all that useful for doing the day-in/day-out work of making a billing system run. It's very useful if you happen to be working on a non-linear optimization research problem; but few of us non-PhDs are.

In general, real world knowledge is mostly what programmers need; the CS experts build tools for the rest of the world to use, and we need a lot less toolmakers than we do builders.

I guess my point is that I spent a lot of time learning the framework so that I could learn CS theory, but almost none of it applies to any job I've ever done. That's only for the Real Smart Kids (TM).


In reply to Re: (OT) Real World Skills Versus CS Skills by Anonymous Monk
in thread (OT) Real World Skills Versus CS Skills by Ovid

Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":

  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.
  • Log In?

    What's my password?
    Create A New User
    and all is quiet...

    How do I use this? | Other CB clients
    Other Users?
    Others pondering the Monastery: (4)
    As of 2018-04-25 07:44 GMT
    Find Nodes?
      Voting Booth?