Okay, before I even say anything, I am pre-emptively sorry, because I KNOW that this has been discussed, rediscussed, analyzed, reanalyzed, and in general talked about to death all over the internet.
Essentially, my question is: Is there any advantage to having a language be interpreted?
I don't mean the current interpreted languages vs the current compiled ones. What I mean is, all else being equal, how important is the mode of execution?
Another question: when is reflection really useful? (I'm asking this because I think it would be rather difficult to create a compiled language which would support reflection, although it'd be easy for an interpreted language.)
Thanks
OTOH, dynamic languages are designed to interpret conditions as they occur at runtime. Up to this point, we really haven't been able to exploit this powerful capability to its fullest extent, but hardware is now cheap, and massive collections of hardware (like at Google's The Dalles plant) now exist to provide what is essentially a virtual environment that provides units of computing power as needed. Dynamic apps can adapt to take advantage of this. For example, modify an app in the REPL as it's running, or hot swap code in an Erlang app, or send lambdas wherever you want on a network running q/kdb+.
Now take that notion a step further. Why do humans have to initiate any of that day-to-day dynamism? The answer to that question is the future of computing and it's why we have to have interpreted languages for dynamic environments. Compiled apps (and OSes, IMO) are not part of the future. The next frontier after that will involve the hardware itself going dynamic.