Hello Sergey,
BCS wrote:
I'm not arguing on that point. What I'm arguing is that (at least for
me) the primary advantages of metaprogramming are static checks (for
non-perf benefits) and performance. Both of these must be done at
compile time. Runtime metaprogramming just seems pointless *to me.*
One of important applications of metaprogramming is code generation
which would be too tedious or bug-prone to generate and support
manually. Dynamic languages can definitely provide for that.
They can, but I question if it's the best way to do it in those languages.
Generating code and running it at runtime seems to be pointless. Why have
the intermediate step with the code? I have something I want to do, so I
use encode it as one abstraction (a DSL), translate it into another (the
host language) and then compute it in a third (the runtime). If it's all
at runtime anyway, why not just use the runtime to evaluate/interpret the
DSL directly.