Given any two programmers who are equal in all other respects, the one
who also "understands theory" will of course be the better man for the
job (even if only by a small degree.) How could anyone argue with that?
(Not that anyone has of course.)
However, when push comes to shove, programming is mostly about
communication, not solving complex mathematical formulae. Given two
programmers, one who knows calculus well but can't communicate well,
while the other communicates effectively, but has trouble with calculus,
the later person will be a much more effective programmer IMHO. (I
freely admit though that my personal bias might be showing, having never
even taken calculus...
And you can slap together a fortran program to solve some complex math
formula, but that isn't programming either.
Last I checked, logic (IMO the single most important thing to understand
in programming,) is taught in the philosophy department as a Humanities
course... Would you suggest those programmers not know anything about
logic? Not know anything about how to organize their thoughts and
communicate them effectively to others? That's what the humanities are
all about... communication.
No, I think logic is excellent, but you can't take someone who has a
degree in humanities (and when you said humanities, I for some reason
was thinking about art, music, the Renaissance and such) and expect
them to program. There is just so much more to it than that. And, if
you are going to get that deep into formal logic, how are you going to
avoid mathematics? I think that philosophers and lawyers if they
truly understand formal logic would be great programmers. But, that
doesn't mean that they can step out with a philosophy or law degree
and program right away. Logic is only one part of math (and really
math is the purest form of what the other hard sciences involve). It
is, in essence, the language of the universe. I think it's safe to
say that unless you're approaching the Ph.D. level in any discipline,
you are not truly familiar with the all parts of mathematics that are
applicable to your discipline (and maybe not even then). Furthermore,
there are many parts of math besides logic that apply to programming.
Advancements in any of the other hard sciences almost always feed back
into math itself especially those coming from theoretical CS so people
studying other sciences are studying math whether they realize it or
not.
If you set out to become a programmer by studying humanities, the
formal logic part, I'm afraid, is going to be almost an afterthought.
You going to spend quite a lot of time studying other stuff that,
while useful in general, is not very applicable to programming (such
as which philosophers thought which things and so on, and to be quite
honest, much of it is purely political propaganda). Why not just
study the pure forms of these things (formal logic and languages) as
they appear in mathematics (without any particular biases)?
Of course there are some mathematically intense areas of interest in
programming (3D comes to mind,) but those are niches. The rest of us use
those "large libraries and special-purpose packages."
But, you still need to take care in how you use them (and you probably
find yourself re-solving some of the same problems the libs are
supposed to solve for you only at a different level--take a windowing
application for instance, which very much resembles the underlying
code inside the window manager and so on). Take other engineering
disciplines who use pre-packaged (usually highly specified) components
and put them together to form a new 'system'. There's still quite a
bit of thought/design that goes into making a system from pre-packaged
components. A whole branch of engineering is devoted to it.
"It's interesting that the original work in language theory that made
compiler-writing possible was done by a linguist--Noam Chomsky at
M.I.T.--not by a mathematician." (Holub)
Yes, that is interesting, but it involved much more than humanities.
It's quite technical describing in meticulous detail formal languages
and such, really borders on mathematics to me given the level of
specificity and the symbolic nature of it. There's quite a large
section of mathematics devoted to formal languages (and that might
have come out of Chomsky's work, but math has adopted it and its there
now for future generations of mathematicians). There's definitely a
lot of overlap in these disciplines, but math gets right to the heart
of things more quickly IMHO. I think Chomsky knows quite a lot of
math too. Linguistics certainly involves more than math, but the part
of it applying to computer languages and compilers can really be
reduced to problems in math (as can just about everything else).
Well, it's an assertion made by the writers of the article so you will
have to ask them that. I just found it odd that they were lamenting the
very situation that the executives in the industry have been hoping for
from the beginning... easily replaceable programmers...
I just don't buy it. But, maybe it is just the types of applications
I see being written--I'm sure there is a lot of thin code out there
that just glues stuff together, but I don't think that we'll be seeing
the end of the 'software crisis' any time soon.
--Jonathan