If that was the case, we wouldn't need Java and C#
Right, because Java and C# are new and improved systems programming languages. Don't say Singularity.
Down at the bottom, the fundamental problem with C and C++ is the "pointer=array" concept.
Of course, how stupid of them! All this work trying to support user-defined abstractions for systems programming and the problem was a tiny typing rule the whole time!!! Let me guess, the root of all Java's problems is the covariant array subtyping problem? The same with covariant argument subtyping in Eiffel too?
Perhaps you mean the ability to look at memory as a sequence of bytes... except that that's just a little bit fundamental to systems programming. So you think that the millions of lines of BIOSes, kernels, device drivers, and ROMs should be written in assembly? Trust me, although the specific memory models will change over time (certainly away from UMA), as long as there is systems programming, there will always be a high-level language (in the old meaning of the word) that takes you to the metal. Although clearly we shouldn't be using it to write e-Commerce apps, educational software, internal IT apps, and whatever you do.
You would be amazed at how many students I've tutored where the teacher is explaining virtual function pointers and still 90% of the class still doesn't know how to pass an integer to a function!
Wow, they must really be in a hurry, forcing them to combine functions pointers and virtual functions into a single concept!
I know it can still be used that way, but it seems to be more and more difficult to only code that way using C++, because you're going to have to use libraries at some point or another.
Yeah, those damned templated libraries with their: performance, type safety, design patterns, generic programming principles. I can't imagine why Java wasn't happy with containers of Objects and added Generics. C# definitely shouldn't have followed suit. All you need is void*, size_t, and int (*)(void *, void *), right?
... your (possibly justified) criticism that extrapolation from those papers' findings is, at least logically, invalid.
If you have ever worked with static analysis, my criticism is vacuously true.
Those papers do not show, and their authors do not state, that such a qualification is justified...
It is the absence of the qualification that requires justification.
I am not trying to knock Lisp, just the extrapolation of overall performance from small examples. Your next three examples are delightful examples of Lisp's viability and its positive effects on programmer of efficiency but with excerpts in #3 like:
"We use Lisp for the high level structure, in conjunction with a variety of other languages such as C and Java throughout the application."
in a system where it is clearly preferable to use Lisp, I can only guess that in the parts that were written in C or Java, the performance penalty of Lisp must have been significant.
You can tune a piano, but you can't tuna fish. You can tune a filesystem, but you can't tuna fish. -- from the tunefs(8) man page