My computer is awesome.
Part of the problem is that high level languages have overhead due to their nature. Good compilers and good runtimes can mitigate this to a high degree, but, with a language as dynamic as Ruby or Io, things can get really, really hard to get down to the machine level if you want to keep that amount of expressiveness. Unless you compile down to a common denominator, like ISO C or something. Feasibly you could say that you could have a very dynamic language that compiles to C and is more efficient than C - the compiler has more knowledge and can generate code that would be impossible to create by hand. This would require a Sufficiently Smart Compiler however, so the overall goal is a bit of a ways off.
Of course, you could cite Lisp Machines or something or another, but we're just talking commodity hardware, here.
Another problem is no matter how awesome our compilers are, sometimes they just are not good enough for things like embedded devices. C is a big player in this market because it's brutally low level (relatively, I don't want to step on toes here) and a relatively simple language. I can't imagine getting Ruby or Haskell (compiled) to run on a microprocessor with 16kb of RAM, unless certain things were severely trimmed which would just dilute the greatness of your language of choice. C doesn't really have this problem, either.
And of course, another part of it has to due with what we do in the development process: premature optimization is bad, but we may not always maturely optimize; likewise, we may not choose the proper data structure to represent the logic of this program, so we may be performing suboptimally, due to perhaps the structure being too complicated and convoluted for such a pure need, but this might be because we don't know the structure has existed already.
The overall problem is pretty classic, though: we don't choose the right option. Yes, we don't get the niceties, but then again, we normally don't get all the niceties in life, either. The fact is the niceties were nice but they didn't help us as much as another, perhaps little-less nice solution (perhaps less concise or expressive, but it may have a well-hardened library that cuts our development time 50% or more.) This is why professionals don't just stumble into a project, they must weigh pros and cons to get a good choice in the same way you probably make basic economic decisions (which is all language choice is, really.)
Ok, again a good point. Maybe our desktop and server computers are at one day so fast that it does not matter if we use ruby or C. But there will be always new embedded devices with very limited resources, one of the most extreme example are Smart Cards (yes, it`s a small micro computer). So there will be always need for fast and low level languages, for kernel/driver development and also for end user applications.
Slow software can make even the fastest hardware crawl. So if the software becomes better and better or at least stays in its current state and the hardware gets better then yes this is true. But if the software gets worse and the hardware gets better you still have a fundamental problem. I don't believe that hardware can solve all of our woes or ever give us a good excuse to be ignorant programmers. You can still write code today that will bring the CPU to its knees even with the amazing speeds we have. You can still write graphics code that will send the most recent top notch video card right to the mat and maybe even out of the ring. The language of choice has something to do with overall performance but what affects it more is the use of that language. So if you get easier languages it may also be that those languages are equally as easy to misuse. I guess you could argue that the easier the language the harder it is to abuse and misuse. However I'm of the mindset that even if you get smarter languages, easier languages, etc, you will just get a new brand of idiot who will figure out how to use them incorrectly.Also an interesting point in this topic was that our hardware becomes better and better and at some day we are no longer forced to use fast programming languages.
Even after coding GUIs in C# I must agree with this statement wholeheartedly. GUI programming just stinks.Never saw a good GUI that wasn't hard to create, no matter the language. I despise GUI programming.
Last edited by VirtualAce; 02-27-2008 at 11:52 PM.