Intentional programming (IP), also called intentional software, is the rendering of application intentions in a form that can be processed by a computer. In this context, intentions consist of data defining the functions and purposes programmers have in mind as they conceive and develop an application. The term is associated with Intentional Software Corporation, headquartered in Bellevue, Washington. The IP concept originated with engineer Charles Simonyi when he worked for Microsoft .
The IP process begins when a programmer defines a proposed application's intended functions and purposes in WYSIWYG (what you see is what you get) format. Then an automated system uses this information to generate the final product. Successive changes are done at the WYSIWYG level using a system called a domain workbench.
Most programming languages represent source code as text and give symbolic names to object s, variable s or task s. In a complex program it can be difficult to keep track of which name refers to which entity. In IP, all entities are assigned unique private identifiers as well as symbolic names. Whenever the program refers to an object, variable or task, the identifier automatically generates a link to the original entity. If the programmer renames an entity, all references to it update at that moment. This reduces the risk of errors that can be caused by human oversight or by the manual use of the global search-and-replace function in a text editor . It also streamlines the process of versioning .