Having a unique identity for every defined object in the program also makes it easy to perform automated refactoring tasks, as well as simplifying code check-ins in versioning systems. For example, in many current code collaboration systems (e.g. Git), when two programmers commit changes that conflict (i.e. if one programmer renames a function while another changes one of the lines in that function), the versioning system will think that one programmer created a new function while another modified an old function. In an IP versioning system, it will know that one programmer merely changed a name while another changed the code. Levels of detail IP systems also offer several levels of detail, allowing the programmer to "zoom in" or out. In the example above, the programmer could zoom out to get a level that would say something like: <<print the numbers 1 to 10>> Thus IP systems are self-documenting to a large degree, allowing the programmer to keep a good high-level picture of the program as a whole. Similar works There are projects that exploit similar ideas to create code with higher level of abstraction. Among them are: Concept programming Language-oriented programming (LOP) Domain-specific language (DSL) Program transformation Semantic-oriented programming (SOP) Literate programming Model-driven architecture (MDA) Software factory Metaprogramming Lisp (programming language) See also Automatic programming Object database Programming by demonstration Artefaktur Semantic resolution tree Structure editor References External links Intentional Software - Charles Simonyi's company The Death Of Computer Languages, The Birth of Intentional Programming, a technical report by Charles Simonyi (1995) Intentional Programming - Innovation in the Legacy Age, a talk by Charles Simonyi (1996) Edge.org interview with Charles Simonyi (interviewer: John Brockman) Language Workbenches: The Killer-App for Domain Specific Languages? - Martin Fowler's article on the general class of tools that Intentional Programming is an example of. "Anything You Can Do, I Can Do Meta" Tuesday, January 9, 2007, Scott Rosenberg, Technology Review Awaiting the Day When Everyone Writes Software, The New York Times, 28 January 2007 Is programming a form of encryption?, by Charles Simonyi (2005) Appropriate Levels of Abstraction, by Charles Simonyi (2005) The information contents of programs, by Charles Simonyi (2005) Feature X Considered Harmful, by Charles Simonyi (2005) Notations and Programming Languages, by Charles Simonyi (2005) Personal Observations from a Developer, by Mark Edel (2005) Microsoft Research's educational video introducing their Intentional Programming system (ASF format, circa 1998, 20 megabytes) Programming paradigms