Many langauages can't do metaprogramming easily, because they're not homoiconic. HOWEVER, most languages can do DSL-based metaprogramming.

methods for implementing DSL metaprogramming