Lambda the Ultimate

inactiveTopic Intentional Programming Overview
started 7/29/2002; 12:58:10 AM - last post 8/1/2002; 2:59:41 AM
jon fernquest - Intentional Programming Overview  blueArrow
7/29/2002; 12:58:10 AM (reads: 4167, responses: 8)
Intentional Programming Overview

Full title is too long: "Transformation and Visualization of Abstractions using the Intentional Programming System." This is the most sober and simple description of Intentional Programming that I could find. Written by a German scholar visiting Microsoft, it provides a brief overview of Abstract Syntax trees in IP, alternative ways of visualizing a program, and a classification of program transformations. Like so much other work associated with the IP project I get Scheme-hygienic-macro-R5RS-implementation-deja-vu when I read passages like:

The 'if' abstraction known from every general-purpose programming language is introduced as a new intention. Every node in any source graph referring to this unique node is an instance of this intention. The three well-known sub-branches parameterize the instance. Since a declaration is indeed a reference to a special DCL intention there are only two composition rules, namely referencing and parameterization.

Posted to DSL by jon fernquest on 7/29/02; 1:11:44 AM

jon fernquest - Re: Intentional Programming Overview  blueArrow
7/29/2002; 1:43:03 AM (reads: 3019, responses: 1)
I've classified IP as DSL because it seems to be an Application Generator , i.e. a compiler for DSL's.

One of the bibliography entries in the paper is particularly interesting:

"Simonyi, Charles: Method and System for Generating and Displaying a Computer Program. U.S. Patent No. 5790863, 1998."

What aspect of Abstract Syntax Trees or their representation could now result in a lawsuit? I'm with Knuth Knuth from "All Questions Answered":

"I’m against patents on things that any student should be expected to discover. There have been an awful lot of software patents in the U.S. for ideas that are completely trivial, and that bothers me a lot. There is an organization that has worked for many years to make patents on all the remaining trivial ideas and then make these available to everyone. The way patenting had been going was threatening to make the software industry stand still.

Oleg's recent post certainly shows that certain strains of Scheme like Bigloo are going visual in a big way comparing four different GUI libraries: Biglook, Tcl/Tk, Swing and GTK!

It's tempting to follow Simonyi's lead and make R5RS hygienic macros more palatable by rendering them, their arguments, and application results graphically as trees. The macro pattern language with all its "..." 's is a little hard to read sometimes.

Ehud Lamm - Re: Intentional Programming Overview  blueArrow
7/29/2002; 1:48:37 AM (reads: 3086, responses: 0)
I was going to ask why you chose the DSL department

make R5RS hygienic macros more palatable by rendering them, their arguments, and application results graphically as trees.

It seems certain that someone already wrote a thesis on this... But if not, reusing some of the ideas behind XSLT GUIs can be a good direction to explore.

scruzia - Re: Intentional Programming Overview  blueArrow
7/31/2002; 12:33:14 AM (reads: 2972, responses: 0)
Can anyone describe for me the difference between "Aspect Oriented Programming" and "Intentional Programming"? The only real difference that I can see is that the former has produced some somewhat useful software...

I guess I'll have to read that paper, though I don't see how a paper with a title that long could possibly be "sober and simple".

jon fernquest - Re: Intentional Programming Overview  blueArrow
7/31/2002; 3:04:47 AM (reads: 2935, responses: 1)
> make R5RS hygienic macros more palatable by rendering them,
> their arguments, and application results graphically as trees.

Haven't been able to find anything along these lines yet.

It seems like everything you need to display Scheme AST's visually is there under the Stratego umbrella. Case Study 3 Visualization, displaying Abstract Syntax Trees with Graphviz-Dot shows you how to do it. (from the Stratego Documentation page) There is no Scheme grammar in the SDF grammarbase, but a Scheme grammar shouldn't be too difficult to add.

I'm currently trying to get up and running with Stratego but there doesn't seem to be any real introduction like a graded series of examples of increasing complexity. The TigerCompiler looks like the best place to begin.

> reusing some of the ideas behind XSLT GUIs can be a good direction to explore.

Could you suggest the name of one.
I'm not sure what you mean.

jon fernquest - Re: Intentional Programming Overview  blueArrow
7/31/2002; 3:21:13 AM (reads: 2916, responses: 0)
> Can anyone describe for me the difference between
> "Aspect Oriented Programming" and "Intentional Programming"?

The Program Transformation Wiki has a page on AspectOrientedProgramming, one among many other TransformationSystems. IntentionalProgramming and DiSTiL are there too.

Ehud Lamm - Re: Intentional Programming Overview  blueArrow
7/31/2002; 3:24:24 AM (reads: 2980, responses: 0)
I didn't have anything specific in mind. Maybe something like this. I seem to recall something on alphaWorks too.

jon fernquest - Re: Intentional Programming Overview  blueArrow
8/1/2002; 2:21:17 AM (reads: 2875, responses: 1)
> make R5RS hygienic macros more palatable by rendering them,
> their arguments, and application results graphically as trees.

>>.... reusing some of the ideas behind XSLT GUIs can be a good direction to explore.

I think I see what you mean, just as the XSLT GUI allows to immediately see the results of the transformation, a Scheme macro GUI could do the same. This would also be cool for partial *application of functions*.

Having got used to partial application of functions in Haskell I tried it out in Scheme but it's hard to see what you're doing when the partial applications and compositions start getting complex because there is no type checking to verify before run time that all the types are synchronized. It's like driving in a heavy fog. Dynamically typed Perl6 with it's function currying is probably going to have the same problem.

I've heard that the reverse mapping from the efficient internal closure representation to textual code is available in one of the Schemes, I believe Gambit? I've also seen something similar in Tubes which uses textual Scheme S-Expressions to represent a persistent closures for mobile-distributed programming. (current location not known) I wonder whether the efficient closures of the ILX extension for .NET's VM can be easily decompiled into textual source.

(Note also that Sheard's Accomplishments and Research Challenges in Meta-Programming (section 5) critiques the use of strings (Perl) and s-expressions (Lisp, Scheme) for program representation in meta-programs.)

Ehud Lamm - Re: Intentional Programming Overview  blueArrow
8/1/2002; 2:59:41 AM (reads: 2925, responses: 0)
Working on ASTs is obviously easier than parsing (an re-parsing) strings.

One representation technique not presented in Sheard's section 5 is using inheritance and the Iterator pattern.