Hacker News new | past | comments | ask | show | jobs | submit login
What's Wrong with CS Research (unqualified-reservations.blogspot.com)
32 points by byrneseyeview on Aug 16, 2007 | hide | past | favorite | 39 comments



>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.


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.


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.


" 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 ...


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."


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.


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.


http://www.parc.com/research/

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 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.


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


I think the notion that "we have great minds!" in combination with, "we outsource the simple stuff to other countries" is rather a bit ungallant. It's a classic trap, overestimating one's self and underestimating others.

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 agree with you and didn't intend to say that we're smarter. I was just saying that it is easier to outsource simple programming problems than the required investment for tough problems. The pool of programmers that can take a specification and imeplement it is larger and doesn't require to be in direct contact with marketers, but the person who comes up with the spec has to be able to talk with the stakeholders.


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.


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...


Will do.


I'm certainly no fan of Haskell. But I do like Scala very much and it did come out of academia.


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?


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.


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.


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.)


I think what you are describing is program verification, not proof-carrying code.

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.


But if CS sucks and the programmers are so smart, why do they stay at the CS departments?


"If you're so smart, why aren't you rich?"


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.


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.


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.


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.


> 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.


I agree, that's why I'm going to have to come back and read it again when I have the energy to filter out all the strong opinions.


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.


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.


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...)


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.


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

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!


Clearly I'm not a PL researcher. However, I have friends who are. They too have a tendency towards hyperbole about the importance of their field. You've just inverted the hyperbole: this field is such toxic fakery we're robbing taxpayers and ruining young minds!

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).


I don't disagree at all, but neither do I repent. I just think the world needs equal and opposite hyperbole.

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.


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.



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




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: