

No One Programs Any More - edw519
http://www.cs.uni.edu/~wallingf/blog/archives/monthly/2008-10.html?#e2008-10-23T21_58_04.htm

======
mechanical_fish
I wonder if this is a Java problem. My impression is that most intro comp sci
classes now teach Java. Meanwhile, all the scientists I know work in Python,
Perl, C, Matlab, Mathematica, or LabVIEW. Last I knew, there were even quite a
few FORTRAN holdouts.

Why should scientists respect a comp sci intro class built on a language and a
set of design patterns that reek of the cube farm, when all of their actual
work is done using languages and systems that they will inevitably have to
teach to themselves because nobody offers a formal course?

Surely the need to impress the math department is a great use case for an
introductory course in Lisp or Scheme. Not that this is an original idea or
anything.

~~~
gcheong
I think this quote from an ACM interview with Donald Knuth in answer to a
question on the future of programming sums up the problem of the current state
of programming nicely:

"I'm worried about the present state of programming. Programmers now are
supposed to mostly just use libraries. Programmers aren't allowed to do their
own thing from scratch anymore. They're supposed to assemble reusable code
that somebody else has written. There's a bunch of things on the menu and you
choose from these and put them together. Where's the fun in that? Where's the
beauty in that? We have to figure out a way we can make programming
interesting for the next generation of programmers."

reference: <http://portal.acm.org/citation.cfm?id=1378715>

~~~
potatolicious
Typical bottom-up thinking. While I do enjoy rolling my own libs from scratch
from time to time, the availability of a lot of reusable, well-documented,
well-designed code have permitted me to tackle, as a single person, projects
that would not have been possible years ago.

I wanted to create a 3D data visualization app just for kicks a while back.
Guess what, I didn't have to roll my own OpenGL graphics libs, nor my XML
parser, but I still had a blast putting it all together, and being able to
focus on UI (the main motivator for the project) instead of the nitty gritty
behind the scenes.

I think it's valid to have some concern about coders becoming _less capable_
at low-level code-from-scratch principles, but I don't think it's fair to say
that the library-centric development today is less _fun_.

~~~
derefr
Knuth thinks in algorithms, not solutions. In his day, people were constantly
inventing new algorithms--if you've never done it before, you should at least
be able to guess that it's a big rush. That's what Knuth thinks of programming
as: a series of completely new inventions and associated rushes.

What he's actually trying to say was that, as a usefully large number of
algorithms for everyday tasks have already been discovered (optimally, even!)
and codified into "libraries", people are running out of (easy) things to
invent, and so aren't getting that rush as often. What was needed, in his
mind, was a replacement for the rush, as that was what he saw as the raison
d'etre of programming; being a mathematician himself, it was probably the only
reason he programmed at all!

Of course, we've gotten on just fine without the rush. "Programming" as
solving problems has continued to flourish; Knuth's "programming"--really
referring to the scientific method applied, as it should be, to Computer
Science--has quieted. It used to be that every programmer was a practicing
computer scientist by necessity, just as every astronaut is currently an
astrophysicist by necessity. When "platforms of discovery" (computers being
one, the vacuum of space being another) mature, the need (or ability) for
their practitioners to be involved in the creation of the theory underlying
the field diminishes. This doesn't mean the field "dies"--it merely
segregates.

------
etal
Given where the NSF's funding is _actually_ going, I chalk these statements up
to a backlash against the trend of more people doing small amounts of
programming as part of their "real" work. Scientists tend to view programming
as more of a chore than an art, but it's still essential to getting real,
relevant work done.

It's clear to any of these researchers that a program just amplifies your own
efforts. From a distance, it may appear that an academic rival is letting the
computer do all the thinking. That just wouldn't be fair, would it? If the
computer can't think, isn't it better to just publish great thoughts in raw
form, and let some benighted industry worker do the calculations and data
entry?

Obviously, no. Thinking programmatically is different, and allows a researcher
to answer new problems -- in any field. Even psychologists and sociologists
crunch statistics on population groups: collecting and encoding data is
tedious and time-consuming. Traditionally, surveys are filled out and crunched
by hand; but looking at the massive amount of data available on social
networks, for example, just crawling and aggregating that data could yield
much better information than manually roping in 130 undergrads at your own
school. Or you could splash a task out on Mechanical Turk to analyze the
Turkers themselves. This would be big, and it would upset a lot of academics
who built their reputations on traditional methods, and perhaps blew off
computational research as a fad a decade or two ago.

------
hugh
Why not require a programming course for physicists and mathematicians? I
think part of the reason is this: programming (badly) just isn't all that
hard. Programming (badly) is a skill that most smart twelve-year-old kids can
easily teach themselves, and most mathematicians and physicists who didn't
program as kids are still quite capable of picking up (bad) programming skills
as they need them.

Programming well is a much harder skill to learn, but it's not something that
you'd pick up from an introductory programming course anyway, and besides,
good programming is overkill for most scientists anyway.

------
quantumhobbit
projecteuler.net

If there was ever any doubt about what programming can offer mathematics,
ProjectEuler would dispel that. I say give the students an intro book on
Python and point them at ProjectEuler.net. If they enjoy math, curiosity will
do the rest. I agree that programming isn't necessary for every mathematician,
but it offers so much potential for exploring numbers that any math students
not introduced to programming is at a huge disadvantage.

------
lacker
What about things like solving the 4-color problem? Even within pure
mathematics there are plenty of cases where programming is useful. There would
probably be more if the average math PhD had better programming skills.

Definitely Java is not the right way to go - for a mathematician I'd recommend
something more like Python or Mathematica.

~~~
pixcavator
There is very little room for computing in pure math research. The Four Color
Theorem is still an exception and not just because mathematicians can’t
program. That said this is irrelevant because the article is about the
undergraduate program. Only a minority of undergraduate math majors end up as
PhDs in math. The rest do something else. Sadly some of them end up teaching
high school or as actuaries (no offence). If they want to do something else
but still math related then yes, they definitely need a programming course!

~~~
jlouis
GAP? Pari/GP? Mathematica? Magma? There is much room for programming in modern
pure math research. In fact, I think we will end up seeing much more computer-
aided-math than you think.

~~~
pixcavator
>>GAP? Pari/GP? Mathematica? Magma?

Are you suggesting these as tools for mathematicians? Now what is supposed to
happen? They have to find problems for these tools? It should be the other way
around...

~~~
rkowalick
It's called experimental mathematics. It's gathering data about known
structures to make conjectures about all structures satisfying certain
properties.

Not to mention that, even outside of experimental math, there are plenty of
pain-in-the-ass calculations that computer algebra systems make so much
easier.

------
hs
i remember my graduate level class on simulation (engineering course, not
math/cs)

we had first assignment on generating 10000 random numbers

a guy fired up excel, generated rand in one cell, dragged to the bottom 10000,
and _gasp_ printed it

It was fun looking at flickering monitor, and humming laser printer - after a
while, i felt sympathy for those devices

it took me less than 5 loc in matlab ... and being friendlier to trees as a
bonus :D

and no, it's not a community college ... rather a top research engineering
school ... but hey, things like this happen a lot

~~~
etal
Hey, it's still faster than a handful of dice and a blank notebook. Sometimes
the point of a course's first assignment is to show students how wrong their
preconceptions are.

------
bayareaguy
If fewer people "program" any more perhaps it is because more people "script"
then ever before.

