|
In computer programming, intentional programming is a collection of concepts which enable software source code to reflect the precise information, called intention, which programmers had in mind when conceiving their work. By closely matching the level of abstraction at which the programmer was thinking, browsing and maintaining computer programs becomes easier. Computer code (HTML with JavaScript) in a tool that uses colors to help the developer see the function of each piece of code. ...
Source code (commonly just source or code) is any series of statements written in some human-readable computer programming language. ...
// An abstraction is an idea, concept, or word which defines the phenomena which make up the concrete events or things which the abstraction refers to, the referents. ...
A computer program or software program (usually abbreviated to a program) is a step-by-step list of instructions written for a particular computer architecture in a particular computer programming language. ...
The term was introduced by long-time Microsoft employee Charles Simonyi, who led a team in Microsoft Research which developed an Integrated Development Environment known as IP that demonstrates these concepts. For reasons that are unclear, Microsoft stopped working on intentional programming and ended development of IP in the early 2000s. Microsoft Corporation (NASDAQ: MSFT, SEHK: 4338) is an international computer technology corporation with 2005 global annual sales of close to $40 billion USD and about 64,000 employees in 85 countries and regions which develops, manufactures, licenses, and supports a wide range of software products for computing devices. ...
Charles Simonyi (Simonyi Károly in Hungarian) is a computer software developer who, as the head of Microsofts application software group, oversaw the creation of that companys flagship applications. ...
Microsoft Research is a division of Microsoft that is devoted to researching various computer science topics and issues. ...
An integrated development environment (IDE), also known as integrated design environment and integrated debugging environment, is a type of computer software that assists computer programmers to develop software. ...
Separation of source code storage and presentation Key to the benefits of IP (and a likely barrier to acceptance from the programming community) is that source code is not stored in text files, but in a proprietary binary file that bears a resemblance to XML. As with XML, there is no need for a specific parser for each piece of code that wishes to operate on the information that forms the program, lowering the barrier to writing analysis or restructuring tools. The video demonstrates how the system handles languages that use a text-based preprocessor by surveying the specific usages of macros in a body of code to invent a more hygienic abstraction. Source code (commonly just source or code) is any series of statements written in some human-readable computer programming language. ...
Computer files can be divided into two broad categories: binary and text. ...
Computer files can be divided into two broad categories: binary and text. ...
The Extensible Markup Language (XML) is a W3C-recommended general-purpose markup language for creating special-purpose markup languages, capable of describing many different kinds of data. ...
A parser is a computer program or a component of a program that analyses the grammatical structure of an input, with respect to a given formal grammar, a process known as parsing. ...
A computer program or software program (usually abbreviated to a program) is a step-by-step list of instructions written for a particular computer architecture in a particular computer programming language. ...
In computer science, a preprocessor is a program that takes source code and performs transformations on it, before the step of compilation or interpretation. ...
...
// An abstraction is an idea, concept, or word which defines the phenomena which make up the concrete events or things which the abstraction refers to, the referents. ...
Tight integration of the editor with the binary format brings some of the nicer features of database normalization to source code. Redundancy is eliminated by giving each definition a unique identity, and storing the name of variables and operators in exactly one place. This means it's also possible to intrinsically distinguish between declarations and references, and the environment shows declarations in boldface type. Whitespace is also not stored as part of the source code, and each programmer working on a project can choose an indentation display of the source that they like. More radical visualizations include showing statement lists as nested boxes, editing conditional expressions as logic gates, or re-rendering names in Chinese. This article is in need of attention from an expert on the subject. ...
Source code (commonly just source or code) is any series of statements written in some human-readable computer programming language. ...
A definition delimits or describes the meaning of a concept or term by stating the essential properties of the entities or objects denoted by that concept or term. ...
// Computer programming In object-oriented programming, object identity is a mechanism for distinguishing different objects from each other. ...
In computer science and mathematics, a variable (sometimes called a pronumeral) is a symbol denoting a quantity or symbolic representation. ...
In mathematics, an operator is a function that performs some sort of operation on a number, variable, or function. ...
In computer science, a declaration specifies a variables dimensions, identifier, type, and other aspects. ...
In general, a reference is something that refers or points to something else, or acts as a connection or a link between two things. ...
For information on the programming language Whitespace, see Whitespace programming language. ...
Source code (commonly just source or code) is any series of statements written in some human-readable computer programming language. ...
A logic gate is an arrangement of controlled switches used to calculate operations using Boolean logic in digital circuits. ...
The project appears to standardize a kind of XML Schema for popular languages like C++ and Java, while allowing users of the environment to mix and match these with ideas from Eiffel and other languages. Often mentioned in the same breath as aspect-oriented programming, IP purports to provide some breakthroughs in Generative programming. These techniques allow developers to extend the language environment to capture domain-specific constructs without the investment in writing an entire compiler and editor for these new languages. In this way, it seems comparable to the Synthesizer Generator. An XML schema is a description of a type of XML document, typically expressed in terms of constraints on the structure and content of documents of that type, above and beyond the basic syntax constraints imposed by XML itself. ...
C++ (generally pronounced see plus plus, IPA: ) is a general-purpose computer programming language. ...
Java is an object-oriented programming language developed by James Gosling and colleagues at Sun Microsystems in the early 1990s. ...
The Eiffel Tower Gustave Eiffel, builder of said tower Eiffel programming language Eifel region of Germany (Eiffel is a common misspelling) Eiffel 65, an electronic dance pop band This is a disambiguation page — a navigational aid which lists other pages that might otherwise share the same title. ...
In software engineering, the programming paradigm of aspect-oriented programming (AOP), also called aspect-oriented software development (AOSD), attempts to aid programmers in the separation of concerns, or the breaking down of a program into distinct parts that overlap in functionality as little as possible. ...
Generative programming is a style of computer programming that uses automated source code creation through generic classes, templates, aspects, and code generators to improve programmer productivity. ...
A diagram of the operation of a typical multi-language compiler. ...
Example A program that writes out the numbers from 1 to 10, using a Java-like syntax, might look like this: Java is an object-oriented programming language developed by James Gosling and colleagues at Sun Microsystems in the early 1990s. ...
for (int i = 1; i <= 10; i++) { System.out.println("the number is " + i); } The code above contains one of the more common constructs of most computer languages, the bounded loop, in this case represented by the for construct. The code, when compiled, linked and run, will loop 10 times, incrementing the value of i each time and then printing it out. A computer language is a language used by, or in association with, computers. ...
However this code does not truly capture the intentions of the programmer, which was, simply, "print the numbers 1 to 10". In this simple case, a programmer asked to maintain the code could likely figure out what it is trying to do, but this is not always the case. Loops that extend across many lines can become very difficult to understand, notably if the original programmer uses unclear lables. Traditionally the only way to indicate the intention of the code was to add source code comments, but many programmers tend to ignore these as wasted typing. In intentional programming systems the above loop could be represented, at some level, as something as obvious as "print the numbers 1 to 10". The system would then use the intentions to generate source code, likely something very similar to the code above. The key difference is that the source code has lost the semantic level that the intentional programming systems maintain, and in larger programs this can dramatically ease readability. Readability is a measure of the accessibility of a piece of writing. ...
Although most languages contain mechanisms for capturing this kind of abstraction, IP allows for the evolution of new mechanisms. Thus, if a developer started with a language like C, they would be able to extend the language with features such as those in C++ without waiting for the compiler developers to add them. By analogy, many more powerful expression mechanisms could be used by programmers than mere classes and procedures. // An abstraction is an idea, concept, or word which defines the phenomena which make up the concrete events or things which the abstraction refers to, the referents. ...
The C Programming Language, Brian Kernighan and Dennis Ritchie, the original edition that served for many years as an informal specification of the language The C programming language is a standardized imperative computer programming language developed in the early 1970s by Dennis Ritchie for use on the Unix operating system. ...
In object-oriented programming, classes are used to group related variables and functions. ...
A procedure is a series of activities, tasks, steps, decisions, calculations and other processes, that when undertaken in the sequence laid down produces the described result, product or outcome. ...
Identity IP focuses on the concept of identity. Since most programming languages represent the source code as plain text, objects are defined by names, and their uniqueness has to be inferred by the compiler. For example, the same symbolic name may be used to name different variables, procedures, or even types. In code that spans several pages--or, for globally visible names, multiple files--it can become very difficult to tell what symbol refers to what actual object. If a name is changed, the code where it is used must carefully be examined. // Computer programming In object-oriented programming, object identity is a mechanism for distinguishing different objects from each other. ...
In an IP system, on the other hand, all definitions not only assign symbolic names, but also unique private identifiers to objects. This means that in the IP development environment, every time you refer to a variable or procedure, it's not just a name--you're actually linking back to the original defined entity. The major advantage of this is that if you rename a definition, all of the references to that entity in your program are changed automatically. This also means that if you use the same name for unique definitions in different namespaces (eg. ".to_string()"), you won't rename the wrong references as is sometimes the case with Search/Replace in current editors. A definition delimits or describes the meaning of a concept or term by stating the essential properties of the entities or objects denoted by that concept or term. ...
Identifiers (IDs) are lexical tokens that name entities. ...
This feature also makes it easy to have multi-language versions of your program. You can have a set of English names for all your definitions as well as a set of Japanese names which can be swapped in at will. 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 checkins in versioning systems. For example, in current code collaboration systems (i.e. CVS, SVN), 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. In computer science, self-documenting refers to the ability of a piece of code or something else to require users have little or no previous knowledge of its specification, purpose and behavior to use it effectively. ...
Similar works There are projects that exploits similar ideas to create code with higher level of abstraction. Among them Language oriented programming is a style of programming in which one, rather than solving problems in general languages, creates one or more domain specific language for the problem first and solves the problem in that language(s). ...
The Model-driven architecture (MDA) is a software design methodology, proposed and sponsored by the Object Management Group. ...
To meet Wikipedias quality standards, this article or section may require cleanup. ...
See also A programming paradigm is a paradigmatic style of programming (compare with a methodology, which is a paradigmatic style of doing software engineering). ...
In computer science, code generation is the process by which a compiler converts a syntactically-correct program into a series of instructions that could be executed by a machine. ...
An object database is a database in which information is represented in the form of objects. ...
Artefaktur Component Development Kit is a platform independent library for generating distributed server-based components and applications. ...
Lloyd smells. ...
Language oriented programming is a style of programming in which one, rather than solving problems in general languages, creates one or more domain specific language for the problem first and solves the problem in that language(s). ...
A tree used for definition of the semantics of a programming language. ...
External links |