performanceprogramming-languages

Is it possible to measure the performance of the language?


Do most languages have many different execution engines ?


Solution

  • Many languages don't have execution engines - the whole dynamic/static thing revolves around the fact that dynamic capabilities can simplify certain kinds of programming problems by orders of magnitude - but you pay for this at runtime, because things have to be figured out on the fly - common lisp is one of the best examples of this, it's perfectly happy to deal with data and code interchangably, but it's not exactly a speed demon (against native compiled C++ where 100x+ engineering time has been spent to remove dynamic reqts, lisp people, before you start yelling at me)

    1) Many languages have focus areas - IFF you know prolog, you'll create a performant rules system a lot faster than someone would in C++ - but if the C++ developer spends 10 times as long, they'll have a system that can run 10 times as fast on 1/10th of the cases

    2) You have to distinguish between true compiled languages (classic C++), interpreted languages (classic LISP), VM based languages (Smalltalk, Pascal), and the newer breed of hybrids that present a VM up to the user, but can recompile on the fly on the host machine using peephole optimization (C#, Java) - an interpreted language will always be slower than a native compiled language - native compiled languages do not have execution engines, all others have one form or another of an execution engine

    3) The 'fastest' language would be native machine code - not very portable, and hideously expensive to develop in

    4) The real questions are;

    Consider - I can write some programs in Smalltalk in a matter of a few minutes that would take me days in C# to make equivalent progress - Now the Smalltalk program runs much more slowly than the C# program, but overall, I spend less time on/with it -

    Moral of this story - languages are tools - pick the right tool for the job