metaprogramming主要解决什么了问题?