What's Wrong with CS Research
unqualified-reservations.blogspot.com
unqualified-reservations.blogspot.com
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.
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.
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.
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 ...
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."
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.
I'm willing to accept that you are more than capable than predicting what's interesting. Let's try a zero knowledge proof. You point out the interesting ones, and we'll check back in a few years to see your accuracy.
The reason outsourcing is used is because of a favorable exchange rate due to historical inertia, even as we nudge it closer to the midway point every time we engage other countries. Going by population alone, their complement of great minds surely outnumbers ours.
I look forward to your rebuttal - if you could post a link to it in the Blogger comments, that would be ideal...
Also, if CS is so useless, how come most leaders in the Netflix challenge seem to be CS departments?
(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.)
In proof-carrying code, of course, the proposition you are proving may not be associated with the source code as an invariant. But if it isn't, why isn't it? It makes no sense to have one language for the invariant and another for the program.
For example, one use of PCC is to prove propositions about a bit of machine code, such as a packet filter. When you create an environment that can state propositions about machine code, you have created a typed assembler, whether you like it or not.
Most leaders in the Netflix challenge are (at) CS departments because CS departments are full of smart programmers.
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.
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.
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.
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.
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.
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.
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...)
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.
wow! What an insightful post. i regret I can "upmod" you only once! I tried to make the same point in another comment but it is nowhere as clear as this! I am humbled!
At all the good universities, the computer science department is also part of the electrical engineering department. Thus you have valuable research going on which crosses between hardware, software, information theory, physics, etc.
The people running these departments know that along the way, a few somewhat promising computer scientists will get sucked into reading philosophy books as a hobby, and lose their way in the world. These people become PL researchers (in the sense you're using the phrase) . The school earmarks minimal funds and provides minimal infrastructure, like a USENET group or a mailing list for these types (no pun intended). They know by doing this they will successfully keep them from messing up useful research (best case) or living on the streets (worst case).
But I also think it needs PL design - in the sense of Guy Steele, Paul Graham, Guido von Rossum, etc, etc, etc. And I do think the existence of "PL research" is a serious detriment to the organization and development of PL design. At the very least, they should be parallel subfields.
In any case, that post was very interesting. I bookmarked it and will have to revisit it sometime.