
What's Wrong with CS Research - byrneseyeview
http://unqualified-reservations.blogspot.com/2007/08/whats-wrong-with-cs-research.html
======
mangodrunk
>churn out meaningless solutions to irrelevant problems.

That can be said of most of the advancements in math, science, and computer
science. At a time, there was no need for zero, calendars, calculus, square
root of negative one, etc. What the author calls irrelevant today will be
tomorrow's great achievement. Most of Turing's work was irrelevant at the
time, other than his work on cryptography.

I don't think it is proper for great minds to worry about trivial things like
enterprise Java code or what it takes to build a social networking website.
This stuff is simple, that's why we can outsource it to other countries that
don't have the resources to invest in the future developments that are needed
for progress.

Also, the whole article is based on the author's opinions, which isn't bad for
that fact (actually the article was entertaining to say the least), but they
aren't backed by something in any form.

~~~
plinkplonk
Indeed. One weak point in the essay (rant?) would seem to be the underlying
assumption that the output of all CS research has to be usable by Joe Average
Programmer to be counted as "good".

Physics wouldn't have progressed much if all research results had to be
immediately usable by kids playing with Lego blocks. Most so called
"programmers" are just fitting blocks together without any deep understanding.
Just look at all the horrendous VB code out there.

~~~
mencius
I wouldn't say it has to be usable by Joe Average Programmer, but if it's not
- and it will obviously never be - it should have to explain why. And it
shouldn't be described in any context, whether paper, grant proposal, or
university press release, as anything else.

C, for example, should never come within a mile of Joe Average Programmer. But
the world needs C, it needs the Linux kernel, etc, etc. For other things, this
is not so clear.

You have to be able to judge the prospects of research programs. Otherwise,
how do you separate the dry holes from the promising ones? There is an
infinite set of dry holes in the world, and any of them is happy to accept all
the funding you can give it.

~~~
plinkplonk
" But the world needs C, it needs the Linux kernel, etc, etc. ".

This still misses the point. C was "invented" well before the Linux Kernel or
GCC was written in it. _At the point of invention_ , it was not clear that C
would become the roaring success it turned out to be. The utility (or
otherwise) becomes obvious only _after_ (sometimes long after) something is
invented/discovered. IOW, no one knows whether an idea is a "dry hole" or not,
until after it has been explored (though you can make some, usually inaccurate
guesses more on this below). The history of Physics (for e.g) is full of
discoveries that became usable centuries after the discovery.

Coming back to the C language, your article seems to be saying that the
inventors of C need to justify it in terms of an yet to be conceived of (leave
alone implemented) Linux kernel, before writing the code for the language
compiler.

From wikipedia, (<http://en.wikipedia.org/wiki/C_>(programming_language)

"# The development of Unix was the result of programmers' desire to play the
Space Travel computer game.[1] They had been playing it on their company's
mainframe, but as it was underpowered and had to support about 100 users,
Thompson and Ritchie found they did not have sufficient control over the
spaceship to avoid collisions with the wandering space rocks. This led to the
decision to port the game to an idle PDP-7 in the office. As this machine
lacked an operating system, the two set out to develop one, based on several
ideas from colleagues. Eventually it was decided to port the operating system
to the office's PDP-11, but faced with the daunting task of translating a
large body of custom-written assembly language code, the programmers began
considering using a portable, high-level language so that the OS could be
ported easily from one computer to another. They looked at using B, but it
lacked functionality to take advantage of some of the PDP-11's advanced
features. This led to the development of an early version of the C programming
language."

Following your "dry hole" logic , at the point of invention, C would be a very
dry hole. I can just see Kernighan and Richie "justifying" their new language
by saying "umm so we want to play Space War"... :-)

"You have to be able to judge the prospects of research programs."

True. To a _certain extent_.

The _point_ of research is that it is an exploration into the _unknown_. The
unknown is, by definition unknowable. When allocation of finite resources
(like money) is involved, researchers who expect to consume those finite
resources (in the form of grants for e.g) expect grants should _try_ to
elucidate the benefits of their proposed research. And the people in charge of
allocating those resources should _try_ to examine those claims and place
their bets wisely. So far, so good.

The fact remains though that this is all guesswork. No one knows what the
outcome of a proposed line of research will be. Think of it as funding
Colombus's expedition. (see
<http://en.wikipedia.org/wiki/Christopher_Columbus> particularly the sections
on background and "funding campaign"). Both Colombus and his funders had
several "best guess" judgments about his "prospects" but they all turned out
to be wrong. His voyage was revolutionary nonetheless.

"For other things, this is not so clear."

This is just the nature of exploring the unknown. Which is what research is
all about. You do your thinking, allocate your resources and try like hell,
knowing all the while that it could be a colossal waste of resources. Just the
nature of the beast.

Now, if your point is that there are people who game the system, that is a
valid point. But then people game every system. So ...

~~~
mencius
I actually agree with all of this - in theory.

The problem is that the _actual process_ by which this guesswork is done,
_actually right now in the real world_ , is nonsense. It is permeated by
intentional distortions of reality. As a result, in my opinion, research is
pointed in directions which a reasonable observer would guess are dry holes.
The fundamental difficulty is that Congress is not a reasonable observer - it
is a political one.

This is inextricable from the phenomenon of official research funding. I
suspect that private philanthropic funding - the way it worked before WWII, a
period in which there was no computer science, but quite a lot of other
science - would do a much better job of "guesswork."

~~~
mangodrunk
You can't "guess" any better than flipping a coin when it comes to funding
research. They laughed at Bill Gates when he said he wanted control of the
software. I think there is room for improvement (which there is for
everything) in the funding of research but to call it worthless just because
there isn't a direct need or use for something is itself worthless. Any kind
of knowledge is useful, no matter what.

~~~
mencius
Try submitting this paragraph as your next grant application!

It is actually possible to make educated guesses as to what's interesting and
what isn't. It is just very hard.

The management of the old Xerox PARC, for example, was very good at it. So
were the people at DARPA - about 40 years ago. So, once, was Bell Labs. And so
on.

Needless to say, the actual process of guesswork has nothing in common with
the modern scientific budget process.

~~~
mangodrunk
The only thing that made the management at Xeroc PARC, Bell Labs, etc. good,
was that they let smart people do what they wanted and stayed out of the way.

~~~
mencius
Read Michael Hiltzik's "Dealers of Lightning." It's a little more complicated
than that.

------
dfranke
I've never seen criticism of Haskell that was at once so well-informed and so
stupendously misguided. It gets under my skin even more since every other
point made in the article had my total sympathy. Now I'm going to have to
somehow find the time to write a detailed rebuttal.

~~~
mencius
I think this is my favorite response ever to anything I've ever written.

I look forward to your rebuttal - if you could post a link to it in the
Blogger comments, that would be ideal...

~~~
dfranke
Will do.

------
Tichy
The reservations seem rather unqualified indeed. A lot of strawman
argumentation to begin with (singling out specific subjects of CS the authors
deems unworthy). But even about PCC I don't think the author has the right
notion. It is not the same as type checking. As an example, at my old
university department they created a proof of the euclidian algorithm and
extracted a program from it that would compute the gcd. That way you have more
than a syntactically correct program, you have a proof that the code actually
gives you the gcd. And yes, it was very academic, but still.

Also, if CS is so useless, how come most leaders in the Netflix challenge seem
to be CS departments?

~~~
mencius
Also, when you're examining something that dubs itself "science," pointing out
a spot of routine dishonesty, however small and irrelevant, is hardly
indicating a "strawman." Shades of the [Curate's
egg](<http://en.wikipedia.org/wiki/Curate's_egg>). I'm sure most of the
entries on Enron's balance sheet were perfectly accurate, as well.

~~~
Tichy
Yes, but how does one area of research of CS being pointless spoil the other
areas? I don't think it is a curate's egg at all. I don't want to claim that
CS is not spoiled, though. The patronage thing might be a problem. However,
research topics do have to compete even in science - they may not be exposed
to judgement by the general public, as are companies, but internally, there
are mechanisms of selection. Probably not the best ones, but still. And if too
much money would flow into obviously useless research, there might even be a
public outcry.

~~~
mencius
It spoils the others because the relationship between science and personal
honesty is extremely close and important. Science has to be utterly intolerant
of nonsense. Its spirit is to attack it and take no prisoners. If you have
this spirit - like D.J. Bernstein - you will not be welcome in any CS faculty
that exhibits curate's egg nature, for fairly obvious reasons.

(I'm a particularly big fan of DJB because his very existence is a sort of
counterattack - he's a programmer who's infiltrated the math department!
Unfortunately there is only one of him, but we could certainly use a dozen
more.)

------
cowmoo99
I used to be one of those people who came into a CS undergrad program,
complaining about the barrage of math we had to learn and the very little
detailed real-world programming we had to do. However, after having taken PL,
automata, crypto, algorithms and AI, I see the point of having concrete rigor
of proof and abstraction about your code. However, what the author says about
CS being a badly managed field, by being a mix-bag of math and science rings
true to me.

For instance, I have found out when I was a student sysadmin for my school,
one of my CS professor who does research in typed-system does not know Perl.
It behooves me that someone involved in CS, particularly research of
programming languages, do not have a fundamental understanding of the
practical application of their field. Someone earlier pointed out Church-
Turing thesis being completely useless at the time of their publication, the
same argument could be made for the Crick-Watson DNA publication (in their
original publication, Watson only suggested that DNA being a double-helix).
But the difference between these truly remarkable scientific discoveries with
the average Joe academic pumping out crap each year, is that these theories
were even then, foreseeable to have impact.

No, I don't buy the "oh, theory is an art; let the academics work for
knowledge's sake." Recent advances in technology are as much driven by
industry as much by academia, see Bioinformatics (Celera), see high
performance computing (Aerospace companies), see AI/data-mining (Spam Bayesian
filters, Amazon, Netflix).

I read recently a quote that declared "form is liberating" - just as
architects are forced to design their pieces by both the constraints of
material and economics; I would rather design my software and theory in the
domain of application.

------
jmzachary
This isn't an agreement or disagreement with the essay (I tend to lament the
current sorry state of CS research but not necessarily for the reasons stated
in this essay). But I would like to throw out that (a) before there was
chemistry and physics, there was alchemy and that was hardly based on the
scientific method, (b) computer science is becoming more ingrained in hard
sciences via simulation and visualization, and (c) there is no law that says
the scientific method can't be adapted to include information as a first-class
primitive like stars, particles, energy, and inclined planes (among other
things). Maybe (a) and (c) are the same point and we are muddling our way
through as informatic alchemists at this stage of the field in the sense of CS
being defined by the scientific method.

As a CS PhD, I like the essay and appreciate that it raises points to think
about. I never really thought about academics as bureaucrats in that way but,
as a former academic who left the hallowed halls for the reasons you describe
much better than I could formulate, I think I agree with you on that point.

------
jsnx
This piece is both well informed -- there are certainly no factual errors --
and vitriolic beyond belief. What is anyone supposed to take away from the
author's attack on partial evaluation, for example? The author seems to
suggest -- but does not say -- that function composition would be better
handled by writing even more functions and passing around lists of function
pointers.

~~~
mencius
In the rare cases that a programmer actually needs (dynamic) function
composition, yes.

For very understandable reasons, most of the examples you see of higher-order
FP languages tend to stress very intricate and elegant algorithms. But what is
99.999% of the actual functional programming that is actually done in the
world? SQL and Web template transforms. About as intricate as a brick.

The result of having these incredibly high-powered, high-strung thoroughbred
FP languages is that no one even thinks of these mundane tasks as cases of
functional programming. But of course they are. FP is the natural
generalization of declarative programming.

The real tragedy of Haskell is that, if the people who designed Haskell had
actually been working on, say, XML and XSLT, XML and XSLT would not suck
nearly so much.

I repeat that in almost all cases, dynamic construction of functions is
unnecessary and can be eliminated. Otherwise, yes: write even more functions
and pass around lists of function pointers.

But you're right that I could probably make the same point in a much less
vitriolic way. Blame acid reflux.

~~~
steveOfAR
> f the people who designed Haskell had actually been working on, say, XML and
> XSLT, XML and XSLT

You might want to check out SXML / SXPATH/ SXSLT. These definitely don't suck,
in fact I'd consider them nothing less than "XML processing done right". They
are created by a well known type-system wizard (Oleg) with a fondness for
Haskell.

------
menloparkbum
The author chooses to rant about CS research being patronage that wastes US
tax dollars. The examples he chooses don't support his argument very well.

He doesn't like Haskell or Caml because they sprung from academia. Haskell was
designed mostly by a couple Scots and the little funding it received came from
Microsoft Research. Caml comes from IRNIA in France. No US tax dollars were
wasted in either case.

He claims that Python wasn't invented by a programming language researcher.
Guido Van Rossum was employed as a programming language researcher (working on
ABC) by a Dutch government research lab, and then by NIST and CRNI in the USA.
NIST and CRNI are US government funded research organizations. Using the
author's train of thought, the development Python WAS partially funded with US
tax dollars.

~~~
mencius
If you don't know the difference between what Guido van Rossum does, and what
Andrew Appel, Luca Cardelli, Zhong Shao, etc, etc, do, you are clearly not a
PL researcher!

I am not a budget analyst. What bothers me is that I think a field I admire is
being mismanaged, not that it is driving the US (or any other country)
bankrupt. The US has worse problems than a little bit of science pork.

~~~
nostrademons
The thing is - you're essentially distinguishing Guy Steele and Guido van
Rossum from Andrew Appel and Luca Cardelli by success. Steele and van Rossum
created languages used by lots of people, and so they're "system software
designers", while Appel and Cardelli created languages used by small
communities, and so they're "programming language researchers". If you set up
your definitions like that, it's tautological to claim that programming
language research doesn't yield any useful stuff, because everybody who
creates useful stuff gets taken out of the PL research category.

The big question is: can you detect, a priori, which research projects will be
successful?

For example, would you have funded Dave Moon's research at the AI lab? How
about L. Peter Deutsch? Ricky Greenblatt? Kernighan and Ritchie? Tony Hoare?
Dijkstra? Knuth? James Gosling? Matz?

The irony is that no matter who you consider relevant, you're almost always
wrong a decade later. Moon was brilliant at the AI lab, and his work was the
foundation for most of the 1980s AI boom. But it's largely irrelevant today.
Matz and Guido were relatively unknown throughout the 1990s, but they're
suddenly critical now, because technology has shifted towards dynamic
languages. Hoare spent most of his life working on arcane topics like proof-
carrying code, but think of how many bugs have been found because of
assertions.

What if the next big development in computing comes out of type theory? Would
you then add Luca Cardelli, Benjamin Pierce, and Phillip Wadler to your
"system software designers" category? (Heck, Wadler has already made important
contributions to Java 1.5 generics.)

The university system is built upon the premise that you can't tell what basic
research will be successful beforehand, and so you better fund all of it (or
as much as you can, at least ;-)) and wait for some entrepreneur to sift
through it and figure out what's commercially viable. You seem to think that
all that random chance is unnecessary, and you can pick the winners beforehand
and shut down the rest. If you're right, there's a very lucrative career
waiting for you as a venture capitalist, where you get to bet Other People's
Money on the future system software designers.

(BTW, I met a girl at a party who's in a swing dancing class with Guy Steele,
and he calls himself a Programming Language Designer. So maybe your title for
him is a bit off the mark...)

~~~
mencius
If you can't detect, a priori, which research projects will be successful, why
in God's name do we have a grant process?

You're making my point for me, which is that the process of allocating
research funding is driven by nothing other than political power.

The university system is built upon the premise that basic research can
justify its funding annually by explaining to Congress the many benefits it
will yield to American citizens. There is no "all of it" to fund. An infinite
amount of funding will generate an infinite amount of research.

I can tell you exactly why the next big development in computing won't come
out of type theory. It's because type theory, at least as it exists presently,
is impossible for anyone with an IQ of less than 140 to understand. And it is
getting more complex, not less complex.

Isn't a PL designer what I called Steele? Note that he doesn't call himself a
PL researcher.

------
Goladus
I'm skeptical (but can't refute without actually researching it) of the
assertions about academic advancement vs. free market advancement. I think the
fact that academic research may not have any immediately obvious practical
application is an advantage in the long run.

In any case, that post was very interesting. I bookmarked it and will have to
revisit it sometime.

------
amichail
Related posts:

[http://weblog.fortnow.com/2006/07/science-and-art-of-
computa...](http://weblog.fortnow.com/2006/07/science-and-art-of-
computation.html)

<http://www.paulgraham.com/hp.html>

------
randomhack
well .. some pieces of the article are not even wrong

