In computer programming, an engine is a program that performs a core or essential function for other programs. An engine can be a central or focal program in an operating system , subsystem, or application program that coordinates the overall operation of other programs. It is also used to describe a special-purpose program containing an algorithm that can sometimes be changed. The best known usage is the term search engine which uses an algorithm to search an index of topics given a search argument. A search engine is designed so that its approach to searching the index can be changed to reflect new rules for finding and prioritizing matches in the index. In artificial intelligence , the program that uses rules of logic to derive output from a knowledge base is called an inference engine .
The term connotes a comparison with mechanical engines. In 1844, Charles Babbage named his stored-program computer the Analytical Engine .