Google
 
   
Login
Username:

Password:


Lost Password?

Register now!
Search
Main Menu
top books
Polls
What do you think about php-deluxe.net?
Excellent!
Cool
Hmm..not bad
What the hell is this?
encyclopedia
recommendation
compare webbrowser
Freenet DSL
Who's Online
9 user(s) are online (9 user(s) are browsing encyclopedia)

Members: 0
Guests: 9

more...
browser tip
Unix Befehle
manual of unix befehle
recommendation!
Sponsored
partner

Intentional Programming

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.

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.

=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 computer 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.

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.

The project appears to standardize a kind of XML Schema for popular languages like C plus plus and Java programming language, 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 [http://www.grammatech.com/products/sg/overview.html Synthesizer Generator].

=Example=

A program that writes out the numbers from 1 to 10, using a Java programming language-like syntax, might look like this:

for (int i = 1; i