In computer programming, an engine is a program that performs a core or essential function for other programs. Engines are used in operating systems, subsystems or application programs to coordinate the overall operation of other programs.
The term engine is also used to describe a special-purpose program that uses deep learning algorithms to query data. The best known usage is perhaps a search engine, which uses an algorithm to query 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.
Other types of engines include:
Recommendation engines - analyzes available data to make suggestions for shoppers and website visitors
Correlation engines - aggregates, normalizes and analyzes event log data, using predictive analytics and fuzzy logic to alert the systems administrator when there is a problem.
Business rules engine - separates execution code for business rules from the rest of the business process management system so end users can change business rules without having to ask a programmer for help.
Policy engine - enforces rules about how network resources and the organization's data can be accessed.
The choice of the word engine to describe this type of programming is meant to correlate with mechanical engines. In the 1800s, Charles Babbage's Difference Engine, which is generally acknowledged as the first supercomputer, was 11ft long, 7ft wide and made up of 8,000 parts. When the engine was cranked with a handle, it automatically calculated and tabulated mathematical equations.