Mernil wrote:As stated by Loftar, compiled languages are way faster in term of execution time.
You'll find that there isn't a clear distinction between compiled languages and non-compiled languages. Lisp, for instance, was interpreted for some 20 years before good compilers were written for it.
Python can also be compiled into Java bytecode (with Jython) which is in turn turned into machine code by Hotspot. That translation isn't particularly efficient, however, since all the dynamic stuff the language does still needs to be resolved at run-time. But it is compiled, nonetheless. The only useful distinction, therefore, is whether there's a
good compiler for a particular language.
Mernil wrote:Though, programming with these globally requires more time because of the low level of abstraction.
For the same reason, not all compiled languages are low-level, and neither are all efficiently compiled languages. CL, Scheme, Haskell or Julia are examples of languages with quite efficient compilers that are very far from low-level. One could argue the same for Java (though the argument could go both ways).
Mernil wrote:Scripting languages [...] Javascript [...] quite slow in terms of execution.
You might be surprised at how good V8 is at compiling fast JavaScript. It's not C, but it's certainly not Python, either.
FLO wrote:so is haven/hafen 1 code or several if so why and how did this benefit the game/yourself
Haven is four main modules that are mostly one language each. The server is written in C, the client in Java, the map generator in Lisp and then there's a repository of various utilities, which are written mostly in Python.
I use C for the server, because it's the one fast language that I'm most familiar and comfortable with. What I find nice with C is that it is quite low-level and doesn't rely on compiler magic, so it's fairly easy to reason about the program's performance characteristics (as opposed to eg. Java or Lisp, where I constantly have to ask myself "does this get allocated on the stack?", "will the compiler inline this?", "how long does this allocation take?", &c&c&c). I guess I
could have used C++, but I find it generally bloated, inelegant and unwieldy, so I try to stay away from it.
I initially used Java for the client so that I could use Java WebStart, though I'm starting to regret that decision now with Oracle's certificate faggotry. :P I've learned to appreciate some other features of Java, however; mostly, how well-implemented Hotspot is and how well it can optimize some high-level features of the language, and also portable loading of dynamic code.
I use Lisp for the map generator since I felt I needed convenient symbolic manipulation for it but also some quite serious speed, and also because Lisp is a very nice language. :)
I use Python for the utilities because it's also quite symbolic and convenient, but also much better integrated with the operating system than Lisp is. Python is quite a nice language, but I'm not such a fan that I don't often consider a life outside of it. It's a bit inelegant, though not horribly so.