Code generation is the enterprise of generating code in formal languages from higher-level specifications. It tends to be applied to programming (although there are other kinds of code than programs), and goes by such names as program generation, software synthesis, forward engineering and, in the extreme, automatic programming.