Inferential programming

In most computer programming, a programmer keeps a program's intended results in mind and painstakingly constructs a program to achieve those results. Inferential programming refers to (still mostly hypothetical) techniques and technologies enabling the inverse. This would allow describing an intended result to a computer, using a metaphor such as a fitness function, a test specification, or a logical specification, and then the computer, on its own, would construct a program needed to meet the supplied criteria.

During the 1980s, approaches to achieve inferential programming mostly involved techniques for logical inference. Today the term is sometimes used in connection with evolutionary computation techniques that enable a computer to evolve a solution in response to a problem posed as a fitness or reward function.

In July 2022, GitHub Copilot was released, which is an example of inferential programming.

Closely related concepts and technologies

 * Logic programming
 * Prolog
 * Constraint programming
 * Artificial intelligence
 * Genetic programming
 * Machine learning
 * Artificial life
 * Evolution
 * Metaprogramming