sigh replying non-technical people sucks. @hcorion, @jibal, etc, listen, you
are ignorant + arrogant, which makes you the worst people.
compilers impose restirctions, you are forced to use macros, which are just
kludge, but in a pure interpreted language (PicoLisp for example) you can
simply use functions, which you can debug, apply, etc in opposite to macros.
Such as this Common Lisp do macro, written as function in PicoLisp (a pure
interpreted and dynamic language):
(de do "Args"
(bind (mapcar car (car "Args"))
(for "A" (car "Args")
(set (car "A") (eval (cadr "A"))) )
(until (eval (caadr "Args"))
(run (cddr "Args"))
(for "A" (car "Args")
(and (cddr "A") (set (car "A") (run @))) ) )
(run (cdadr "Args")) ) )
Note that there are almost no penalties of using eval in PicoLisp.
And nothing stops you to write optimized and efficient code in interpreter
environments. And one more thing, the above example obviously uses S-expression
or lets say Lisp-like syntax, it has certain advantages, such as ease of
parsing it, and together with S-expressions and interpretation, equalivance of
code and data is formal and realistic in PicoLisp, check the web resources for
reasos...
This one is a very, very wise and beautiful quote, from author of Ruby,
Yukihiro Matsumoto,
"Often people, especially computer engineers, focus on the machines. They
think, "By doing this, the machine will run fast. By doing this, the machine
will run more effectively. By doing this, the machine will something something
something." They are focusing on machines. But in fact we need to focus on
humans, on how humans care about doing programming or operating the application
of the machines. We are the masters. They are the slaves."
I was brainwashed just like you, I thought Nim in Action is right about how bad
are dynamism and interpreters, but thank God I realised the truth when I looked
around and see all those people use bash, dynamic mecahnism, etc in eveything
and I started to know the reality of the concepts.
Compilers simply discards many things just for the sake of execution speed, but
those "many things" are what makes programmer's life easier and "truely" reduce
development time. Many (if not all) major game engines use and contain JS,
Python-like languages (such as Boo in Unity).
The real execution speed concept is well- and carefully-designed algorithm,
relying on compiler optimization is for stupid programmers.