In computer science, the term automatic programming identifies a type of computer programming in which some mechanism generates a computer program rather than have human programmers write the code.
There has been little agreement on the precise definition of automatic programming, mostly because its meaning has changed over time. Programming languages such as Java and C do not seem very automatic today, but compared to programming in machine code, as was the only way circa 1958, they are very much automatic programming tools. According to researcher David Parnas, automatic programming is merely a euphemism for high-level languages.
Criticism
Critics of the term say it is a contradiction in terms. To order a computer to program automatically would imply somehow specifying the program requirements in some form a computer can understand. The critics then say such a formal specification of requirements is in itself by definition programming.