Some thoughts from Christian, including this bit:
We need to consider separately
1. R’s brilliant library
2. R’s not-so-brilliant language and/or interpreter.
I don’t know that R’s library is so brilliant as all that–if necessary, I don’t think it would be hard to reprogram the important packages in a new language.
I would say, though, that the problems with R are not just in the technical details of the language. I think the culture of R has some problems too. As I’ve written before, R functions used to be lean and mean, and now they’re full of exception-handling and calls to other packages. R functions are spaghetti-like messes of connections in which I keep expecting to run into syntax like “GOTO 120.”
I learned about these problems a couple years ago when writing bayesglm(), which is a simple adaptation of glm(). But glm(), and its workhorse, glm.fit(), are a mess: They’re about 10 lines of functioning code, plus about 20 lines of necessary front-end, plus a couple hundred lines of naming, exception-handling, repetitions of chunks of code, pseudo-structured-programming-through-naming-of-variables, and general buck-passing. I still don’t know if my modifications are quite right–I did what was needed to the meat of the function but no way can I keep track of all the if-else possibilities.
If R is redone, I hope its functions return to the lean-and-mean aesthetic of the original S (but with better graphics defaults).