663 karma · joined May 4, 2009
Still, an LLVM backend for OCaml seems like a great idea. Keep up the good work.
To make a convincing argument, he should have made it clearer what he was arguing against ("the bazaar" is too nebulous and refers to many things, .com development refers to other things) and what he was arguing for (which was entirely missing, other than a reference to Brooks' book). If he doesn't have a clear vision of how development should work (or a "standard-bearer"), he should have at least provided some examples of things working the "right" way (or better).
He should probably also have left off a bunch of the insults and hyperbole: "clueless" / "hacks" / .com period a "disaster" for code quality. I'm frankly pretty surprised that ACM Queue would publish this.
Why do you think most of the software we build now is like putting a man on the moon? I think it's nothing like that.
Maybe I should read Brook's book (I've enjoyed MMM), but your article doesn't make a strong case for it.
He's probably right that lots of software could be designed better, but I think he's wrong that that's of paramount importance. We need lots of software these days and we simply don't have the resources to built it to Kamp's standards. Also, we've learned that our requirements change so fast that his beautiful design would quickly be twisted into the pile of hacks that he hates.
He notes how long it takes to compile the software that runs on his work machine---how long would it take to compile the software on a windows machine? (Or whatever he would claim is the standard-bearer of his cause).
He also attacks open-source software. The truth is, we have an amazing amount of free and open source software available. Some of it may be flawed in design or usability, but it enables us to solve so many problems (and look at/modify the software when needed). I don't think that all software needs to be "free", but I do think free software has made us all much richer. I have a hard time seeing all this value that the Bazaar has created as inferior to slow-moving, centralized, big, up-front design development.
Haskell is beyond conservative, but it does take great pains to try to address the reasons that people might want a more liberal language. However, it's often really painful to get that code to typecheck compared with the effort to get the same code correct in python or ruby. Sometimes Haskell is the worst of both worlds: it requires mind-bending reasoning to write "liberal"-like code, when the "conservative" guarantees you get in return aren't for very interesting correctness properties.
I'm starting to think my ideal language would be gradually-typed (something like Groovy): use static typing by default, but fallback to dynamic typing for the pieces that require superhuman effort to type correctly (unless you believe that the correctness guarantees from static typing pay off for the code you're writing--e.g., code in rarely exercised error handlers).
I take this statement to mean: Academia is failing us by not providing us with the next generation C. If that was the intent, I think it's not a fair jab.
Academia IS actively investigating low-level languages: ATS, Cyclone, and typed assembly are all examples. But, it's not academia's job to create widely-used languages and tools. Sometimes they do create something that achieves wide use, but that's mostly a side benefit. Their job is to generate and evaluate useful "idea nuggets" that can inform future system builders and to train students to do novel systematic research.
There seems to be a common meme that academic CS is "out of touch" with what real developers need. I think it's mostly unfair: while the world always needs a slightly better web framework, compiler, language, etc., that's not the goal of academic CS; they aim to fertilize the ground with ideas that facilitate the growth of more big and small ideas.
Also, transparent information gathering could be useful for later investigations. For example, you might eat normally for two months and then analyze which calorie sources you'd be most willing to sacrifice.
But, indulging the leap :), why would you want it to be a new language? Phones are getting fast - why not python or ruby? (Or Scala, Dart, ...)
However, I don't think Java is a bad language for many programs--and doubt it's headed to a retirement home anytime soon. (I'm frankly thrilled with Java for moving some many developers to a "safe" language/environment rather than C/C++ and its buffer overflows :)
As for article asking the reader to imagine the outcry if they cut football or other big sports, the ones that would cause an outcry are probably immensely profitable. It's a fair question whether college athletics has gotten too big, but it's almost entirely irrelevant to this article.
I think a full solution will allow people to implement server-side functionality as well. Perhaps that's in your plans? Also, I think the ability to sell access to apps would help attract developers to your platform.
Startups with nice "todo"/personal data apps, etc. (cases where it's silly for the user to put their data in strangers' hands for no apparent reason) could "sell" them to users. If the startup disapeared, the user could still pay for web-app hosting.
The problem with using this particular AWS offering for that purpose is that every app would cost you hourly to run and would vastly underuse the computing resources that the user is paying for. It would be great if there were a similar offering based on a programming model where many apps could be provided by a single instance, or even perform on-demand provisioning.
I think this is the future! Somebody make it happen.
My take: ChromeOS may actually be better for Google's interests in the long term. However Android's success has resulting in significantly more momentum currently. The release of Chrome on Android might be an effort to move Android more in line with Google's larger goals.
Work on new type systems is a big part of the field, however these type systems aren't always intended to be deployed as part of languages. Rather, they can often be viewed as bug-finding program analyses. Indeed, program analysis (including type inference/checking) is a much more common research topic than "a new language for X".
I think many in the field agree that more work should be done on language usability, although it is a hard topic to research. The PLATEAU workshops (on the Evaluation and Usability of Programming Languages and Tools) were efforts in this direction. The Software Engineering field is much more focused on usability and would be the most likely publication target for PL usability research. (The top PL conferences focus on theoretical concerns (POPL, ICFP) and implementation/systems (PLDI, ASPLOS)). Although usability studies are rare, the PL field has gotten tougher about requiring strong arguments about the usefulness of research: the evaluation and motivation sections of papers really need to be convincing.
I guess I suspect some of the conclusions may be true, but I've never really bought that the experiment itself provided good evidence for them.