[PRL] RE: [CSG711] Function Template developed further

Karl Lieberherr lieber at ccs.neu.edu
Wed Sep 14 11:33:12 EDT 2005


It works like a charm, if done right. 
The relation c1 <=.e.=>.(<=.C.=>)*.<= c2 is all that needs to be mastered by
the student for the most common form of template definition.

In problem set 1 you are already working towards defining the dot (.) in
Scheme. The at function in hw 1 is a subtask for the dot (relation
composition).

Of course, the above relation only makes sense in a typed world. Is that why
Matthias thinks it is a pedagogically super bad idea? I feel the opposite,
writing the templates just duplicates the structure over and over and gets
utterly boring after a while. A key rule of good programming is DRY:
Don't repeat yourself. Specifically don't repeat your structure definitions
over and over. Instead just refer to the essential elements for a particular
requirement.

-- Karl

-----Original Message-----
From: Matthias Felleisen [mailto:matthias at ccs.neu.edu] 
Sent: Wednesday, September 14, 2005 11:02 AM
To: Karl Lieberherr
Cc: PRL; csg711 at lists.ccs.neu.edu
Subject: Re: [CSG711] Function Template developed further

Yes, I was asked in 1992 to automate the template generation and again 
in 1994 when I pushed it seriously. Pedagogically speaking it is a 
hugely bad idea. Figure out why on your own.

For the 711 students: As you explore ideas, keep in mind that your 
project does NOT have to be a research project. It just has to be based 
on a research paper (or several). Also, it doesn't have to be an 
implementation project. You can also attempt a paper-and-pencil 
project.

-- Matthias



On Sep 14, 2005, at 9:06 AM, Karl Lieberherr wrote:

> After Matthias' first lecture, I would like to explain what my 
> research group (the Demeter
> research group) does. This gives you pointers towards projects that 
> you might want to do in the second
> part of the course.
>  
> Our starting point was the Function Template for functions that 
> process a composite structure.
> Matthias has shown several applications of the Function Template, 
> including an interpreter for
> propositions. We extensively used this Function Template some 20 years 
> ago, and we
> developed it further. We tried to find ways to express the 
> enhancements that are needed
> for a given Function Template when we take the output requirements 
> into account.
> So we defined extension points in the templates where we could insert 
> additional behavior.
> We modularized the description of those enhancements into separate 
> modules.
>  
> This lead to a new subfield of programming languages, called 
> Aspect-Oriented Programming (AOP)
> and we are currently working on interfaces for aspects.
>  
> We did another important step. One day I was in Mitch Wand's office 
> and we talked about
> the Function Template. Mitch said: "Karl, you should generate the 
> templates". So we did.
> We designed a Function Template generator that takes as input a class 
> graph and a specification
> which substructure we need for implementing the current function 
> requirement and as output
> we got a Function Template.
>  
> This lead to the idea of the Law of Demeter (LoD) and Adaptive 
> Programming (AP).
>  
> The PhD student who did the LoD, Ian Holland, will get a distinguished 
> alumnus award this
> year from Northeastern. This is a very prestiguous award given every 
> year to a small number
> of individuals out of about 168000 alumni.
>  
> Last year, Crista Lopes, the Mother of AOP and also my former PhD 
> student, also got
> a distinguished alumnus award from Northeastern.
>  
> Following Matthias' advice of retracing some old research in your 
> project, I recommend that
> you study the papers of the two Alumni Award recipients to get ideas 
> for your project.
> I will actively help you with that but more on this later.
>  
>  
> _______________________________________________
> csg711 mailing list
> csg711 at lists.ccs.neu.edu
> https://lists.ccs.neu.edu/bin/listinfo/csg711






More information about the PRL mailing list