tag:blogger.com,1999:blog-200691142008-10-01T23:26:45.031+02:00p-cos blogPascal Costanza's Highly Opinionated Blog.Pascal Costanzahttp://www.blogger.com/profile/04512975624438301971noreply@blogger.comBlogger52125tag:blogger.com,1999:blog-20069114.post-60866017232508439442008-09-18T19:46:00.002+02:002008-09-18T19:48:40.738+02:00Lisp50@OOPSLA...celebrating the 50th birthday of Lisp at <a href="http://www.oopsla.org/oopsla2008/">OOPSLA 2008</a><br /><br />Monday, October 20, 2008<br />Nashville, Tennessee, USA<br />co-located with <a href="http://www.oopsla.org/oopsla2008/">OOPSLA 2008</a><br />participation is free for all OOPSLA participants<br /><a href="http://www.oopsla.org/oopsla2008/registration.html">registration for at least one conference day at OOPSLA is required</a><br /><br />URL: <a href="http://www.lisp50.org">http:www.lisp50.org</a><br />Feed: <a href="http://lisp50.blogspot.com">http://lisp50.blogspot.com</a><br /><br /><br /><b>Invited Speakers</b><ul><br /><li>William Clinger, Northeastern University, USA</li><br /><li>Pascal Costanza, Vrije Universiteit Brussel, Belgium</li><br /><li>Richard Gabriel, IBM Research, USA</li><br /><li>Rich Hickey, Independent Consultant, USA</li><br /><li>Alan Kay, Viewpoints Research Institute, USA</li><br /><li>Fritz Kunze, USA</li><br /><li>Ora Lassila, Nokia Research Center, USA</li><br /><li>John McCarthy, USA</li><br /><li>Kent Pitman, PTC, USA</li><br /><li>Guy Steele, Sun Microsystems Laboratories, USA</li><br /><li>Herbert Stoyan, University of Erlangen, Germany</li><br /><li>Warren Teitelman, Google Inc., USA</li><br /><li>JonL White, USA</li><br /></ul><br />Titles, abstracts, biographies and schedule will be announced at <a href="http://www.lisp50.org">the<br />Lisp50 webpage</a> and <a href="http://lisp50.blogspot.com">blog</a> in the coming days and weeks.<br /><br /><br /><b>Abstract</b><br /><br />In October 1958, John McCarthy published one in a series of reports about his then ongoing effort for designing a new programming language that would be especially suited for achieving artificial intelligence. That report was the first one to use the name LISP for this new programming language. 50 years later, Lisp is still in use. This year we are celebrating Lisp's 50th birthday. OOPSLA 2008 is an excellent venue for such a celebration, because object-oriented programming benefited heavily from Lisp ideas and because OOPSLA 2008 takes place in October, exactly 50 years after the name Lisp has been used publicly for the first time. We will have talks by John McCarthy himself, and numerous other influential Lispers from the past five decades. We will also take a look at the next 50 years of Lisp.<br /><br /><br /><b>Organizers</b><br /><ul><br /><li>Pascal Costanza, Vrije Universiteit Brussel, Belgium</li><br /><li>Richard Gabriel, IBM Research, Hawthorne, NY, USA</li><br /><li>Robert Hirschfeld, Hasso-Plattner-Institut, Potsdam, Germany</li><br /><li>Guy Steele, Sun Microsystems Laboratories, Burlington, MA, USA</li><br /></ul><br />Sponsored by <a href="http://www.sigplan.org/">ACM SIGPLAN</a><br /><br /><br />Supported by<br /><ul><br /><li><a href="http://researchweb.watson.ibm.com/">IBM Research</a></li><br /><li><a href="http://www.lispworks.com/">LispWorks Ltd</a></li><br /><li><a href="http://www.franz.com">Franz Inc.</a></li><br /><li><a href="http://www.clozure.com/">Clozure Associates</a></li><br /></ul>Pascal Costanzahttp://www.blogger.com/profile/04512975624438301971noreply@blogger.comtag:blogger.com,1999:blog-20069114.post-32457626774270405842008-09-14T16:21:00.002+02:002008-09-14T16:59:12.539+02:00Reflection for the MassesProgramming languages provide more or less narrow models on how solutions should be represented and thought about, and enforce such models in more or less strict ways. However, it always happens that the offered models are not completely appropriate, but need to be adapted in some ways to better fit a concrete problem at hand. Design patterns and programming styles provide ways to deal with such situations: By applying some principles in your code, you can work around limitations of a programming language and/or benefit from properties that arise from such principles. For example, it is then possible to replace algorithms at runtime in an otherwise static language, take advantage of a "pure" functions in an otherwise imperative language, and so on.<br /><br />Reflection is a more systematic way to open up a programming language and extend it beyond the designer's original intent. By exposing internal implementation details of the language to programmers, they can add and modify features of the language in a principled way. For example, metaobject protocols are prime examples of reflection in programming languages.<br /><br />Reflection is one of the corner stones of programming languages: Many programming languages provide some form of reflection, and certainly almost all of the widely used ones. So there seem to be clear benefits from being able to inspect and extend languages from within themselves.<br /><br />The first dedicated account of reflection was provided by Brian C. Smith at the beginning of the 1980's, and he used his own dialect called 3-Lisp as a way to illustrate the principles behind reflection, especially for procedural, but also for structural reflection. (Instead of "procedural reflection," we would nowadays say "behavioral reflection.") Unfortunately, Smith's papers and PhD thesis are very hard to follow and understand: Since he is primarily a philosopher, and not a computer scientist, he uses terminology borrowed from philosophy, and on top of that, takes concepts from Lisp dialects of his time for granted that even seasoned modern Lispers do not fully grasp anymore.<br /><br />In a recent attempt to better understand the ideas and concepts behind Smith's account of reflection and 3-Lisp, Charlotte Herzeel and myself carefully studied <a href="http://library.readscheme.org/page11.html">Smith's papers and the follow-up literature</a> that directly referred to Smith's work in detail. Eventually, Charlotte reimplemented 3-Lisp in Common Lisp, and we discussed several aspects of that implementation from various perspectives. In the end, we were both surprised how well thought out Smith's conceptualization is even with regard to lots of details you have to face when actually implementing reflection - details that many of the follow-up authors in their own accounts seemed to have missed. However, we are also convinced that Smith made some "mistakes" - especially, we are now convinced that the model of an "infinite reflective tower" is at best a neat theoretical setup, but not at all useful for practical purposes.<br /><br />Our work culminated in a paper called "Reflection for the Masses," co-authored with Theo D'Hondt, which Charlotte presented at this year's <a href="http://www.swa.hpi.uni-potsdam.de/s3/">Workshop on Self-sustaining Systems (S3)</a> in Potsdam, Germany. <a href="http://p-cos.net/documents/s32008.pdf">The paper is now also available on my website.</a> It discusses Charlotte's implementation of 3-Lisp in detail and explains the concepts and details of reflection as we see them. It also contains the full implementation of 3-Lisp in Common Lisp as an appendix.<br /><br />We are very proud of that paper. We think that we achieved a major step forward in better explaining reflection to a more general audience. It is still a presentation that is probably a lot easier to understand for Lispers, and probably quite hard to follow for non-Lispers, but we removed a lot of Smith's obscurities in his original presentation and are convinced that especially Common Lispers should be able to easily understand and enjoy our version.Pascal Costanzahttp://www.blogger.com/profile/04512975624438301971noreply@blogger.comtag:blogger.com,1999:blog-20069114.post-809563348052542242008-06-01T23:17:00.002+02:002008-06-01T23:22:49.999+02:00New versions of Closer libraries releasedI have just released new versions of all Closer libraries, including Closer to MOP and ContextL.<br /><br />A major change that affects all libraries is that I have dropped support for Macintosh Common Lisp, and "replaced" OpenMCL with Clozure Common Lisp. Furthermore, the dependency of Closer to MOP to LW-Compat has been removed due to requests by users, but a dependency of ContextL to the portable-threads librarie of the GBBopen project has been added.<br /><br />Other highlights include:<br /><br /><span style="font-weight:bold;">Closer to MOP 0.5</span><br /><ul><br /><li>In MCL, OpenMCL and Clozure Common Lisp, funcallable-standard-object is now exported from Closer to MOP.</li><br /><li>Fixed the lack of :generic-function-argument-precedence-order-returns-required-arguments in Allegro Common Lisp.</li><br /><li>Ensured that a defgeneric form makes a generic function metaobject available in the compile-time environment. Otherwise, defmethod may not yield a method of the correct method metaobject class.</li><br /><li>Added support for compute-discriminating-function in Clozure Common Lisp and OpenMCL, based on code provided by Slava Akhmechet.</li><br /><li>Added a classp predicate (due to Willem Broekema).</li><br /></ul><br /><br /><span style="font-weight:bold;">ContextL 0.5</span><br /><ul><br /><li>Added :in as an alternative for :in-layer in the various define-layered-xyz macros.</li><br /><li>ContextL now depends on portable-threads of the GBBopen project. This is done for locking critical sections to ensure thread safety of ContextL.</li><br /><li>Added new functions active-layers and (setf current-layer-context).</li><br /><li>Added a garbage collector for layer caches, such that redefinition of layers or certain methods in the ContextL MOP have an effect.</li><br /><li>Simplified mapping of layer-related names to internal names, which should also make things easier to read when debugging ContextL programs.</li><br /></ul><br /><br /><span style="font-weight:bold;">MOP Feature Tests 0.45</span><br /><ul><br /><li>Added new recognized standard feature :generic-function-argument-precedence-order-returns-required-arguments.</li><br /><li>Added a new known extra feature for SBCL (since SBCL version 1.0.14).</li><br /></ul><br /><br />The libraries can be downloaded from the <a href=http://common-lisp.net/project/closer/>Closer Project</a> and are asdf-installable, as usual.Pascal Costanzahttp://www.blogger.com/profile/04512975624438301971noreply@blogger.comtag:blogger.com,1999:blog-20069114.post-23455967199674655892008-06-01T21:13:00.002+02:002008-06-01T21:23:36.424+02:00Reengineering PatternsMost people misunderstand the concept of patterns. This is probably mostly due to the Design Patterns book by Gamma, Helm, Johnson and Vlissides, which only conveys parts of what patterns can actually express and what they can be used for. People who know "better" languages know that most of the design patterns in that book can be <a href=http://norvig.com/design-patterns/>much easier expressed</a>, such that they virtually go away. However, that's not the "fault" of the patterns concept, that's rather a problem with that book, in that quite boring patterns have been selected.<br /><br />A much better book is "Object-Oriented Reengineering Patterns" by Demeyer, Ducasse and Nierstrasz. In my opinion, it is probably the best book about (software-related) patterns that has been published so far. The good news is that the book is now <a href=http://www.iam.unibe.ch/~scg/OORP/>freely available for download</a>, so check it out.Pascal Costanzahttp://www.blogger.com/profile/04512975624438301971noreply@blogger.comtag:blogger.com,1999:blog-20069114.post-3073612522050283752008-05-27T14:11:00.002+02:002008-05-27T14:27:17.112+02:00ELS'08 ReportLast week, the 1st European Lisp Symposium took place in Bordeaux, France. It was a very successful event, with some excellent paper presentations, but also more interactive formats. For example, we tried out the <a href=http://www.dreamsongs.com/Files/WritersWorkshop.pdf>writers'</a> <a href=http://www.dreamsongs.com/Files/WritersWorkshops.pdf>workshop</a> format for what we called a "work-in-progress" track, which was pretty well received by the participating authors. It's a format that focuses on improving the quality of papers that are not yet ready for publication. I'm very optimistic that we will see the results of this track at future Lisp events. We also organized "birds of a feather" sessions on various topics (distributed programming, image processing, CLIM and better system definition facilities), which were also very well received by the participants. It is my hope that future Lisp events will have more of these interactive formats.<br /><br />The symposium itself went very smoothly, which was primarily due to the excellent local organization by Antoine Allombert, Marie Beurton-Aimar, Irène Durand, Nicole Lun and Robert Strandh. Without their willingness to organize the event and without the energy they put into it, the symposium would have never taken place. So a big thank you to all of them!<br /><br />It was our intention to organize the European Lisp Symposium as an annual event right from the start. So the preparations for next year's ELS have already started, which will take place in Milan in 2009, at around the same time of the year (ca. end of May), and will be organized by Marco Antoniotti and António Leitão. More news will follow on the usual channels, but you can already start to prepare your ideas for ELS 2009!Pascal Costanzahttp://www.blogger.com/profile/04512975624438301971noreply@blogger.comtag:blogger.com,1999:blog-20069114.post-54110334648180727142008-05-26T10:38:00.003+02:002008-05-26T10:46:17.035+02:00Fear of DSLs?In <a href=http://p-cos.blogspot.com/2008/05/fear-of-parsers.html>Fear of Parsers?</a> I responded to Martin Fowler's posting <a href=http://www.martinfowler.com/bliki/ParserFear.html>ParserFear</a>, arguing that more often than not, building new parsers for domain-specific languages may be too complicated for the benefits you can get from using domain-specific syntax.<br /><br />To be clear about this: This is not an argument against domain-specific languages in general, only against domain-specific syntax. Domain-specific languages in Lisp are straightforward to build, easy to use once you are used to Lisp (which is not that hard either), and flexible enough to be adapted to future needs, without getting into the hairy details of designing and implementing suitable domain-specific parsers.Pascal Costanzahttp://www.blogger.com/profile/04512975624438301971noreply@blogger.comtag:blogger.com,1999:blog-20069114.post-88067824331051374292008-05-20T21:02:00.002+02:002008-05-20T21:25:55.785+02:00Fear of parsers?Martin Fowler posts a lot about <a href=http://www.martinfowler.com/bliki/dsl.html>DSLs</a> these days. In a recent post about <a href=http://www.martinfowler.com/bliki/ParserFear.html>ParserFear</a>, he comments on an apparently typical reaction against creating one's own DSLs. That reaction seems to be that parsers are hard to write, and that it's easier to use XML instead because with XML, you get the parser for free. Martin Fowler then continues to explain why in his experience, parsers are not hard to implement, by contrasting a specific XML case with an alternative design using Antlr.<br /><br />I think he misses the point, though. It's indeed the case that, taken by themselves, parsers are not very hard to write, especially if you stick to simple grammars. However, they could just be a too high investment for too little return.<br /><br />This reminds me of a different story: A couple of years ago, Erich Gamma answered a few questions about patterns in one of his talks. One question was about which patterns he would not include anymore in the Design Patterns book. Among others, he mentioned the Singleton and the Visitor pattern, and his explanation for not including them was that he deems them too complicated.<br /><br />Most people react puzzled when they hear this story. Yes, everybody who has tried to implement visitors knows that they are quite complicated, but in contrast, singletons seem extremely simple and straightforward to implement. However, the major point here is that they are too complicated for what they achieve: A singleton only guarantees that you get exactly one instance of a class, not more, not less. You might as well just introduce a global variable with that one instance and don't bother going through the minutiae of implementing the Singleton pattern correctly (which has border cases that you can get wrong after all, depending on what language you have to implement it in).<br /><br />That's the major point: The effort has to be compared against the benefits you achieve. The same holds for writing parsers for DSLs. A domain-specific syntax simply doesn't buy you that much, but just creates another layer of code that needs to be maintained and can create follow-up problems, for example, when the syntax you designed happens to be too inflexible to be adapted to change requests in future versions of your code.<br /><br />This is also the main reason why Lispers like s-expression. The rules for s-expressions are extremely simple, but at the same time also very flexible: The first element in a list determines the meaning of an expression, and all other elements are interpreted in terms of that first element. The same in XML: The tag determines the meaning of an expression, and everything that is nested inside it is interpreted in terms of the tag. An advantage of Lisp over XML is that you don't even need separate reading and processing steps of DOMs, since s-expressions are seamlessly embedded in the language itself.<br /><br />So the main point of "parser fear" is not that parsers are hard, but just too hard for what they buy you.Pascal Costanzahttp://www.blogger.com/profile/04512975624438301971noreply@blogger.comtag:blogger.com,1999:blog-20069114.post-21781114720304971672008-04-18T14:06:00.002+02:002008-04-18T14:08:20.152+02:00ELS'08: Invited talkDetails of Marco Antoniotti's keynote talk, to be presented at the 1st European Lisp Symposium 2008 in Bordeaux on May 23, 2008, are now available <a href="http://prog.vub.ac.be/~pcostanza/els08/page11/page11.html ">at the symposium website</a>.<br /><br />Registration is open - <a href="http://prog.vub.ac.be/~pcostanza/els08/page4/page4.html">watch out for reduced fees before the early registration deadline</a>!Pascal Costanzahttp://www.blogger.com/profile/04512975624438301971noreply@blogger.comtag:blogger.com,1999:blog-20069114.post-51823336306960532092008-04-09T12:31:00.002+02:002008-04-09T12:37:00.167+02:00ELS'08: Programme published, registration, and more...We have published the list of accepted papers that will be presented at the <a href="http://prog.vub.ac.be/~pcostanza/els08/">1st European Lisp Symposium (ELS 2008)</a> in Bordeaux/France on May 22-23. We have papers about temporal reasoning, context-oriented programming, visual programming, object-relational mappings, clim presentation types, custom specializers for object-oriented lisp, binary methods programming in CLOS.<br /><br /><a href="http://prog.vub.ac.be/~pcostanza/els08/page9/page9.html">Programme of the symposium.</a><br /><br />We have also provided information about Bordeaux and about the social events programme accompanying the symposium. There will be a cocktail party, a dinner, and an optional excursion to the atlantic coast.<br /><br /><a href="http://prog.vub.ac.be/~pcostanza/els08/page7/page7.html">Information about Bordeaux, including how to reach Bordeaux by plane and by train.</a><br /><br /><a href="http://prog.vub.ac.be/~pcostanza/els08/page8/page8.html">Details about the social programme.</a><br /><br />Registration for the symposium and for the optional excursion is open! Please take advantage of the reduced registration fees before the early registration deadline, April 25, 2008. Registering early helps us in planning the details of the symposium better. The early registration fee is 50€ for students and 120€ for regular participants.<br /><br /><a href="http://prog.vub.ac.be/~pcostanza/els08/page4/page4.html">The registration page.</a><br /><br />You have to take care of accommodation yourself. We have provided a list of recommended hotels. For some of them, accounts for symposium participants are available.<br /><br /><a href="http://prog.vub.ac.be/~pcostanza/els08/page10/page10.html">The list of recommended hotels.</a><br /><br />Looking forward to seeing you in Bordeaux!Pascal Costanzahttp://www.blogger.com/profile/04512975624438301971noreply@blogger.comtag:blogger.com,1999:blog-20069114.post-66780338396148362422008-03-18T23:08:00.001+01:002008-03-18T23:10:08.542+01:00ELS'08 News!Hi everybody,<br /><br />Here are some news about the upcoming <a href="http://prog.vub.ac.be/~pcostanza/els08/">1st European Lisp Symposium</a>, that will take place in Bordeaux/France on May 22-23, 2008.<br /><br />First of all, registration is now open to everybody, and you can register for the symposium and the accompanying social event at the symposium website.<br /><br />There is no programme yet, because the paper submissions are currently still under review. (The programme will be announced in early April.) However, Marco Antoniotti has kindly accepted an invitation to give the keynote for the symposium. More details on his keynote talk will follow soon.<br /><br />On a related note, the call for work-in-progress papers is still open. We have actually just extended the deadline to April 4, 2008 for submissions for this track. This is a great opportunity to get early feedback for your current projects from other researchers, practitioners and educators.<br /><br />Finally, we have added two pages to the website about Bordeaux in general and an optional social event that you can additionally book when you register for the symposium: A whole-day visit of the atlantic coast on the Saturday immediately after the symposium, which includes a boat trip, a seafood and white wine tasting session, a lunch, and a trip to the Great Dune of Pyla, the highest sand dune in Europe. Don't forget your swimsuit, if climbing the 107 meters of the dune invites you to dive into the ocean!<br /><br />More news to follow as they arrive.Pascal Costanzahttp://www.blogger.com/profile/04512975624438301971noreply@blogger.comtag:blogger.com,1999:blog-20069114.post-90991957037892462222008-03-08T16:22:00.003+01:002008-03-08T16:27:34.667+01:00COP in Journal of Object TechnologyThere is a new article about <a href="http://www.jot.fm/issues/issue_2008_03/article4/">Context-oriented Programming in the Journal of Object Technology</a>. <br /><br />It discusses context-oriented extensions for Common Lisp, Smalltalk and Java, namely <a href="http://common-lisp.net/project/closer/contextl.html">ContextL</a>, <a href="http://www.swa.hpi.uni-potsdam.de/cop/">ContextS</a> and <a href="http://prog.vub.ac.be/~pcostanza/contextj.html">ContextJ</a>. There is a new ContextL example presented in this article that we haven't discussed in any of the previous papers, so it should be an interesting read for ContextL users as well.<br /><br />As always, please feel free to send feedback and suggestions.Pascal Costanzahttp://www.blogger.com/profile/04512975624438301971noreply@blogger.comtag:blogger.com,1999:blog-20069114.post-4278358117937908652007-12-19T21:57:00.000+01:002007-12-19T23:37:53.674+01:00Origin of AdviceApparently, Gary King <a href="http://metabang.com/unclogit/?p=205">needs</a> <a href="http://metabang.com/unclogit/?p=208">advice</a> <a href="http://metabang.com/unclogit/?p=212">a</a> <a href="http://metabang.com/unclogit/?p=216">lot</a>. This reminded me that I posted an article about the origin of advice some time ago in the <a href="http://aosd.net/">AOSD</a> <a href="http://aosd.net/mailman/listinfo/discuss_aosd.net">mailing list</a>. I think it's a good idea to repost it here to make it available to others as well, so here we go. (I have links for almost all the literature references at the bottom of this article.)<br /><br />The notion behind advice can be traced back to a paper by Oliver Selfridge [Selfridge 1958]. He introduced the notion of <i>demons</i> that record events as they occur, recognize patterns in those events, and can trigger subsequent events according to patterns that they care about.<br /><br />A first software system that was obviously heavily influenced by that paper was called PILOT and is described in Warren Teitelman's PhD thesis [Teitelman 1966]. The PhD thesis was supervised by Marvin Minsky, but additionally Warren Teitelman mentions Oliver Selfridge as a strong influence in his acknowledgements. Marvin Minsky and Oliver Selfridge worked both at MIT back then. Anyway, that is the work in which the notion of advice, very similar to before and after advice as we know them today, was actually first introduced. Warren Teitelman later added the concept of advice to BBN Lisp, which was then bought/licensed (?) by Xerox PARC and became Interlisp.<br /><br />Later, the notion of <i>demons</i> was mentioned in a seminal paper by Marvin Minsky [Minsky 1974] that spawned an interest in framework-based knowledge representation systems. Among others, Daniel Bobrow and Terry Winograd developed and described KRL [Bobrow, Winograd 1976], which was based on the ideas in Marvin Minsky's paper. If I understand correctly, before/after demons played an important role in such systems.<br /><br />A little bit later, Howard Cannon developed Flavors at MIT, the first object-oriented extension for Lisp, strongly influenced by Alan Kay's Smalltalk. Howard Cannon had written a very influential paper [Cannon 1979-2003] that was, unfortunately, never officially published. He explicitly mentions before/after demons, as do other publications about Flavors, for example [Weinreb, Moon 1980].<br /><br />I have a copy of Howard Cannon's paper availabe, and I have asked him to make it publicly available, but he still hasn't done this (yet). His is a mind-blowing paper that introduces multiple inheritance, method combinations based on macros - i.e. before and after demons and a first precursor to around methods -, and the notion of meta-protocols that obviously later on turned into metaobject protocols.<br /><br />The experiences with KRL and Flavors had then been integrated at Xerox PARC into LOOPS (<i>Lisp Object-Oriented Programming System</i>), foremostly by Daniel Bobrow and Mark Stefik, implemented in Interlisp. There is a nice <a href="http://www2.parc.com/istl/members/stefik/loops.html">overview page about LOOPS</a> and a <a href="http://www2.parc.com/istl/groups/hdi/hdipublications.shtml">download page for the papers mentioned there</a>.<br /><br />Flavors and LOOPS were chosen as the main bases for the <a href="http://www.dreamsongs.com/CLOS.html">Common Lisp Object System</a> (CLOS) as part of the ANSI standardization of Common Lisp. CLOS was developed by representatives of the various existing object-oriented extensions for Lisp. LOOPS / Xerox PARC was represented by Daniel Bobrow and Gregor Kiczales. This was around 1986 - 1988.<br /><br />CLOS has before/after/around methods. I haven't been able to spot when around methods entered the scene, whether this was already part of LOOPS or whether this was an addition in CLOS. In Flavors, there were only before/after methods, but there was an extra concept called <i>wrappers</i> that effectively allowed one to express the same thing as around methods in CLOS.<br /><br />One of the most impressive outcomes of the efforts behind LOOPS and CLOS is the book <i>The Art of the Metaobject Protocol</i> [Kiczales, des Rivières, Bobrow 1991], which I think is one of the most important books in the history of computer science (<a href="http://bc.tech.coop/blog/060224.html">and Alan Kay seems to agree</a>).<br /><br />Crista Lopes' paper [Lopes 2002] describes the subsequent history how metaobject protocols were turned into what we think of as aspect-oriented programming today. The main motivations, as far as I understand them, were a) to move from a runtime-based approach, which is natural for metaobject protocols, towards a compile-time based approach and b) to make some of the benefits of being able to manipulate the meta-level available to purely base-level code. Advice play an important role in aspect-oriented programming, but instead of advising just single functions, you can advise whole <i>pointcuts</i>, which are essentially sets of functions described in (more or less) declarative ways.<br /><br />Robert Hirschfeld, myself and others have taken a different turn with <i>Context-oriented Programming</i>, and focus on a more dynamic approach again. We have taken the idea of crosscutting concerns that emerged in the AOSD community, but dropped the idea of pointcuts, and instead concentrated on new and interesting ways to dynamically activate and deactivate <i>layers</i>, which are potentially crosscutting behavioral program variations. Since you can add new layers at any point in time, you can also effectively add new levels of before/after/around methods at runtime as needed, something that can be achieved in plain CLOS only statically through new user-defined method combinations, or requires recompilation in aspect-oriented language extensions like AspectJ. Here are some links for Context-oriented Programming:<br /><ul><br /><li><a href="http://www.swa.hpi.uni-potsdam.de/cop/">Context-oriented Programming at Hasso-Plattner Institut</a>.</li><br /><li><a href="http://p-cos.net/research.html">My research page with sections on ContextL and Context-oriented Programming</a>.</li><br /><li><a href="http://common-lisp.net/project/closer/contextl.html">The ContextL project page</a>.</li><br /></ul><br />I agree that advice are an important concept in programming, but we have still not seen all the possible and interesting variations yet. Although they have a long history already, there is still a future ahead for them.<br /><br /><h4>References</h4><br /><ul><br /><li>[Bobrow, Winograd 1976] Daniel Bobrow and Terry Winograd, <a href="http://www-db.stanford.edu/TR/CS-TR-76-581.html">An Overview of KRL, A Knowledge Representation Language</a>.</li><br /><li>[Cannon 1979-2003] Howard Cannon, <i>Flavors - A Non-Hierarchical Approach to Object-Oriented Programming</i>. Unpublished draft.</li><br /><li>[Kiczales, des Rivières, Bobrow 1991] Gregor Kiczales, Jim des Rivières, Daniel G. Bobrow, <a href="http://books.google.com/books?id=3X5Gnudn3k0C&printsec=frontcover">The Art of the Metaobject Protocol</a>, MIT Press, 1991.</li><br /><li>[Lopes 2002] Cristina Videira Lopes, <a href="http://www.isr.uci.edu/tech_reports/UCI-ISR-02-5.pdf">AOP: A Historical Perspective</a>.</li><br /><li>[Minsky 1974] Marvin Minsky, <a href="ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-306.pdf">A Framework for Representing Knowledge</a>.</li><br /><li>[Selfridge 1958] Oliver G. Selfridge, Pandemonium, <i>Mechanization of Though Processes: Proceedings of a Symposium held at the National Physics Laboratory on 24-27 Nov. 1958, volume I.</i>, (NPL Symposium no. 10, HMSO, 1959).</li><br /><li>[Teitelman 1966] Warren Teitelman, <a href="ftp://publications.ai.mit.edu/ai-publications/pdf/AITR-221.pdf">PILOT: A Step Toward Man-Computer Symbiosis</a>.</li><br /><li>[Weinreb, Moon 1980] Daniel Weinreb and David Moon, <a href="ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-602.pdf">Flavors: Message Passing in the Lisp Machine</a>.</li><br /></ul>Pascal Costanzahttp://www.blogger.com/profile/04512975624438301971noreply@blogger.comtag:blogger.com,1999:blog-20069114.post-1349154692306258692007-12-19T21:25:00.000+01:002007-12-19T21:36:38.905+01:00Reflection in PotsdamCharlotte Herzeel and I had been invited by Robert Hirschfeld to give presentations at the <a href="http://www.hpi.uni-potsdam.de/">Hasso-Plattner-Institut</a> in Potsdam, Germany about the CLOS Metaobject Protocol and 3-Lisp about two weeks ago. These presentations have been recorded and are now online for your viewing pleasure:<br /><ul><br /><li>Pascal Costanza, <a href="http://www.tele-task.de/page50_lecture3352.html">The CLOS Metaobject Protocol</a> (in German)</li><br /><li>Charlotte Herzeel, <a href="http://www.tele-task.de/page50_lecture3353.html">Reflecting on 3-Lisp</a> (in English)</li><br /></ul><br />You need <a href="http://www.real.com/">RealPlayer</a> to see this.Pascal Costanzahttp://www.blogger.com/profile/04512975624438301971noreply@blogger.comtag:blogger.com,1999:blog-20069114.post-30060532840743703242007-12-10T23:19:00.000+01:002007-12-10T23:22:01.322+01:00European Lisp Symposium mentioned in Linux MagazinThe <a href="http://prog.vub.ac.be/~pcostanza/els08/">1st European Lisp Symposium</a> is mentioned in <a href="http://www.linux-magazin.de/news/cfp_fuer_erstes_european_lisp_symposium">Linux Magazin online</a> (in German language).Pascal Costanzahttp://www.blogger.com/profile/04512975624438301971noreply@blogger.comtag:blogger.com,1999:blog-20069114.post-73662323374220434792007-12-06T08:54:00.000+01:002007-12-06T09:11:43.527+01:00European Lisp Symposium 2008 - Call for Papers<a href="http://prog.vub.ac.be/~pcostanza/els08">1st European Lisp Symposium</a><br><br />Bordeaux, France, May 22-23, 2008<br><br />LaBRI, Université Bordeaux 1<br><br /><br /><span style="font-weight:bold;">Important Dates</span><br /><ul><br /><li>Submission of research papers: February 11, 2008</li><br /><li>Work-in-progress papers: March 24, 2008</li><br /><li>Author notification: April 7, 2008</li><br /><li>First final versions due: April 28, 2008</li><br /></ul><br />Accepted research papers will be invited for a special issue of the <a href="http://www.jucs.org/">Journal of Universal Computer Science</a> (J.UCS). See <a href="http://prog.vub.ac.be/~pcostanza/els08">the symposium website</a> for more details.<br /><br /><span style="font-weight:bold;">Scope</span><br /><br />The European Lisp Symposium 2008 invites high quality papers about novel research results, insights and lessons learned from practical applications, and educational perspectives, all involving Lisp dialects, including Common Lisp, Scheme, ISLISP, Dylan, and so on.<br /><br />Topics include, but are not limited to:<br /><ul><br /><li>Language design and implementation techniques</li><br /><li>Language integration, interoperation and deployment</li><br /><li>Experience reports and case studies</li><br /><li>Reflection and meta-level architectures</li><br /><li>Educational approaches</li><br /><li>Software adaptation and evolution</li><br /><li>Configuration management</li><br /><li>Artificial intelligence</li><br /><li>Large and ultra-large-scale systems</li><br /><li>Development methodologies</li><br /><li>Development support and environments</li><br /><li>Persistent systems</li><br /><li>Scientific computing</li><br /><li>Parallel and distributed computing</li><br /><li>Data mining</li><br /><li>Semantic web</li><br /><li>Dynamic optimization</li><br /><li>Innovative applications</li><br /><li>Hardware and virtual machine support</li><br /><li>Domain-oriented programming</li><br /></ul><br />We also encourage submissions about past approaches that have been largely forgotten about, as long as they are presented in a new setting.<br /><br />We invite submissions in two categories:<br />original contributions and work-in-progress papers.<br /><ul><br /><li>Original contributions have neither been published previously nor are under review by other refereed events or publications. Research papers should describe work that advances the current state of the art, or presents old results from a new perspective. Experience papers should be of broad interest and should describe insights gained from substantive practical applications. The program committee will evaluate each contributed paper based on its relevance, significance, clarity, and originality.<br /><br />Accepted papers will be published in the Journal of Universal Computer Science (J.UCS). Authors of accepted papers are expected to present their work at the symposium main track in Bordeaux on May 23, 2008.</li><br /><br /><li>Work in progress describes ongoing work that is not ready for publication yet, but would benefit strongly from feedback by other researchers, practitioners and educators. Such contributions will not be published in the symposium proceedings, but will be made available at the symposium website. The work-in-progress track will be organized as a series of writers' workshops where authors work together to improve their papers. Some authors who submit papers for the main track will be suggested to contribute their work in this track instead, if the program committee decides that their submission is not yet ready for a publication.<br /><br />The writers' workshops will take place at the symposium in Bordeaux on May 22, 2008.</li><br /></ul><br /><span style="font-weight:bold;">Submissions</span><br /><br />Papers for the main track must be submitted electronically, preferably as PDF or PostScript file (level 1 or 2). However, submissions in RTF or Word format are also accepted. Initial submissions may not exceed 15 pages in the J.UCS style, including all appendices. (Invited papers for the journal publication will have a page limitation of 25 pages in the same format.) See the symposium website for more details, including about the submission procedure.<br /><br />Papers for the work-in-progress track may be in PDF, PostScript level 1 or 2, RTF or Word, and may not exceed 25 pages. There are no further requirements on their format. Papers for the work-in-progress track must be sent via email to pascal.costanza@vub.ac.be.<br /><br /><br /><span style="font-weight:bold;">Program Chair</span><br /><ul><br /><li>Pascal Costanza, Vrije Universiteit Brussel, Belgium</li><br /></ul><br /><span style="font-weight:bold;">Program Committee</span><br /><ul><br /><li>Marco Antoniotti, Universita Milano Bicocca, Italy</li><br /><li>Marie Beurton-Aimar, Université Bordeaux 1, France</li><br /><li>Jerry Boetje, College of Charlston, USA</li><br /><li>Theo D'Hondt, Vrije Universiteit Brussel, Belgium</li><br /><li>Irène Durand, Université Bordeaux 1, France</li><br /><li>Marc Feeley, Université de Montréal, Canada</li><br /><li>Erick Gallesio, Universite de Nice / Sophia Antipolis, France</li><br /><li>Rainer Joswig, Independent Consultant, Germany</li><br /><li>António Leitão, Technical University of Lisbon, Portugal</li><br /><li>Henry Lieberman, MIT, USA</li><br /><li>Scott McKay, ITA Software, Inc., USA</li><br /><li>Ralf Möller, Hamburg University of Technology, Germany</li><br /><li>Nicolas Neuss, Universität Karlsruhe, Germany</li><br /><li>Kent Pitman, PTC, USA</li><br /><li>Christophe Rhodes, Goldsmiths College, University of London, United Kingdom</li><br /><li>Jeffrey Mark Siskind, Purdue University, USA</li><br /><li>Didier Verna, EPITA Research and Development Laboratory, France</li><br /></ul>Pascal Costanzahttp://www.blogger.com/profile/04512975624438301971noreply@blogger.comtag:blogger.com,1999:blog-20069114.post-51523500709157720562007-11-03T18:43:00.000+01:002007-11-03T19:58:11.682+01:00Lisp success story from Hungary<span style="font-style:italic;">[Levente Mészáros posted the following Lisp success story to comp.lang.lisp. I reproduce it here with kind permission so that it is also available as a blog entry. In other words, the following is not written by me, but by Levy.]</span><br /><br />We are a small group of friends (3-5) who left the "professional" programming scene about one and a half year ago to start our own Lisp business.<br /><br />In July, 2007 we started working on a project for the Hungarian government with a very tight deadline. In mid October the system showed first life signs and now we can say it is extensively used by thousands of users. In spite of the short timeframe and the remaining glitches it was a surprise even for us that the system is able to handle such a load.<br /><br />Unfortunately the application is not publicly accessible, so we can't provide a URL, but we can give some of the details. It is used for gathering data from the Hungarian communes to help the budget planning.<br /><br />The entire system is based on opensource software, it runs on multiple SBCLs behind an apache load balancer. The data is stored in a PostgreSQL server.<br /><br />We have around 4000 registered users, average 300 online and more than 500 at peak times. There are 7000-10000 logins per day.<br /><br />We use the following Common Lisp libraries. Some of which are ours and some of which are built by others. Many thanks for their efforts, especially to the SBCL developers!<br /><br /> <span style="font-weight:bold;">Data storage/persistence</span><br /> - <a href="http://common-lisp.net/project/cl-perec/">cl-perec</a><br /> - <a href="http://common-lisp.net/project/cl-rdbms/">cl-rdbms</a><br /> - cl-postgres (<a href="http://common-lisp.net/project/postmodern/">postmodern</a>)<br /><br /> <span style="font-weight:bold;">Web GUI</span><br /> - <a href="http://common-lisp.net/project/cl-dwim/">cl-dwim</a> (the umbrella project)<br /> - <a href="http://common-lisp.net/project/ucw/">UCW</a><br /> - <a href="http://common-lisp.net/project/bese/yaclml.html">yaclml</a><br /> - <a href="http://common-lisp.net/project/parenscript/">parenscript</a><br /> - <a href="http://common-lisp.net/projects.shtml">rfc*</a><br /><br /> <span style="font-weight:bold;">PDF exporting</span><br /> - <a href="http://www.fractalconcept.com/asp/html/cl-pdf.html">cl-pdf</a><br /> - <a href="http://www.fractalconcept.com/asp/html/cl-typesetting.html">cl-typesetting</a><br /><br /> <span style="font-weight:bold;">Unit testing</span><br /> - <a href="http://common-lisp.net/project/stefil/">stefil</a><br /> - <a href="http://common-lisp.net/project/slime/">SLIME</a> and emacs with customizations<br /><br /> <span style="font-weight:bold;">MOP</span><br /> - <a href="http://common-lisp.net/project/computed-class/">computed-class</a><br /> - <a href="http://common-lisp.net/project/closer/contextl.html">contextl</a><br /><br /> <span style="font-weight:bold;">Misc</span><br /> - <a href="http://common-lisp.net/project/cl-containers/metabang.bind/">bind</a><br /> - <a href="http://common-lisp.net/project/alexandria/">alexandria</a><br /> - <a href="http://common-lisp.net/project/iterate/">iterate</a><br /> - <a href="http://common-lisp.net/project/cl-def/">cl-def</a><br /> - <a href="http://common-lisp.net/project/cl-l10n/">cl-l10n</a><br /> - <a href="http://common-lisp.net/project/cl-graphviz/">cl-graphviz</a><br /> - <a href="http://common-lisp.net/project/cl-serializer/">cl-serializer</a><br /> - <a href="http://common-lisp.net/project/defclass-star/">defclass-star</a><br /> - <a href="http://common-lisp.net/project/local-time/">local-time</a><br /> - <a href="http://common-lisp.net/project/cffi/">cffi</a><br /> - <a href="http://common-lisp.net/~loliveira/soc07/babel/">babel</a><br /> - <a href="http://common-lisp.net/project/fetter/">verrazano</a><br /><br />and more...<br /><br />Main software components:<br /> - Ubuntu linux 6.10<br /> - PostgreSQL 8.2<br /> - SBCL 1.0.10<br /> - Apache2 (due to various headaches soon to be replaced by a lisp based load balancer)<br /><br />Hardware:<br /> - 10 nodes with two dual core x86-64 CPUs summing up to 40 cores altogether, each node has 3 Gbytes ram.<br /> - Currently we use one of the nodes as database server but soon it will be replaced with another server with 2 or 4 quad core x86-64 CPUs, 300 GByte disk in raid 5 and 16 GBytes ram.<br /><br />Some people say Lisp is dead but seems like there's life after death... ;-)Pascal Costanzahttp://www.blogger.com/profile/04512975624438301971noreply@blogger.comtag:blogger.com,1999:blog-20069114.post-54767566339641676882007-09-03T14:30:00.001+02:002007-09-03T14:32:03.486+02:00ContextL Survey September 2007Context-dependent behavior is becoming increasingly important for a wide range of application domains. Unfortunately, mainstream programming languages do not provide mechanisms that enable software entities to adapt their behavior dynamically to the current execution context. In collaboration with various researchers, we have developed a new programming technique called "Context-oriented Programming" (COP).<br /><br /><a href="http://common-lisp.net/project/closer/contextl.html">ContextL</a> is our first fully implemented and currently most mature programming language extension for COP and is built on top of the Common Lisp Object System (CLOS). ContextL has first been made available to the public in early 2005, and has already been adopted by a number of programmers. We would now like to assess how well ContextL has been received so far.<br /><br />Please consider participating in our first survey about ContextL - this will help us a lot to develop ContextL and related projects further (like Closer to MOP, etc.).<br /><br />You can find the survey and more information about it at <a href="http://prog.vub.ac.be/~pcostanza/COP/survey.html">http://prog.vub.ac.be/~pcostanza/COP/survey.html</a>.Pascal Costanzahttp://www.blogger.com/profile/04512975624438301971noreply@blogger.comtag:blogger.com,1999:blog-20069114.post-19454634729884586172007-07-26T13:20:00.000+02:002007-07-26T17:43:32.074+02:00ECOOP'07 Lisp DinnerAs a social event attached to the <a href="http://lisp-ecoop07.bknr.net/">4th European Lisp Workshop</a>, we are planning to have a dinner on Monday, the 30th of July in Berlin, starting at 19:30 hours. We have not yet decided what the location will be, and this depends on how many people will participate. The dinner will be open to anyone.<br /><br />If you want to attend, please send a short email notice to <a href="mailto:hans@lisp-ecoop07.bknr.net">Hans Hübner</a>. Also let him know if you have special dinner needs or wishes.Pascal Costanzahttp://www.blogger.com/profile/04512975624438301971noreply@blogger.comtag:blogger.com,1999:blog-20069114.post-19403311094901324282007-06-28T17:08:00.000+02:002007-06-28T17:10:50.461+02:00Lisp meeting in The Hague this SundayI am forwarding this announcement from Tayssir John Gabbour:<br /><br />We're hosting a Lisp meeting in The Hague this Sunday. At least ten<br />people should be here, with a broad range of experiences and<br />interests.<br /><br />For those interested in Lisp businesses, this meeting will be at the<br />offices of a growing Lisp-using company which already has multiple<br />commercial projects. You'll be able to see up-close what sorts of<br />issues arise. I personally hope that these meetings won't just be<br />episodic affairs, but offer a practical service to interested Lisp<br />users.<br /><br />To counterbalance boring business issues, Pascal Costanza is offering<br />an entertainingly philosophical talk about the history of reflection<br />and metaprogramming in the Lisp family. (If you were ever curious what<br />3-Lisp and its "infinite reflective tower" is all about, you'll no<br />doubt find this interesting.)<br /><br /><br />This is an informal meeting, so no registration is needed: feel free<br />to come as you wish, and I hope you enjoy it. If you need directions<br />or a hotel room, there's more info at: <a href="http://wiki.alu.org/BeNeLux">http://wiki.alu.org/BeNeLux</a>.<br /><br />TayssirPascal Costanzahttp://www.blogger.com/profile/04512975624438301971noreply@blogger.comtag:blogger.com,1999:blog-20069114.post-3434804586802774802007-06-25T17:56:00.000+02:002007-06-25T17:58:20.647+02:00AMOP at Google Book SearchWhile checking some links for my previous posting I have found out that Google Book Search provides the full text of <a href="http://books.google.com/books?id=3X5Gnudn3k0C&printsec=frontcover">The Art of Metaobject Protocol</a> online. That's nice.Pascal Costanzahttp://www.blogger.com/profile/04512975624438301971noreply@blogger.comtag:blogger.com,1999:blog-20069114.post-59494648700296626412007-06-25T12:02:00.000+02:002007-06-25T17:56:19.377+02:00Classes in the Metaobject ProtocolDr. Dobb's Portal has republished another classic Lisp article, again by Nick Bourbaki (<a href="http://p-cos.blogspot.com/2007/06/dr-dobbs-classic-lisp-articles.html">a pseudonym of Richard Gabriel</a>). It's an introduction to the <a href="http://www.ddj.com/dept/ai/200000266">CLOS Metaobject Protocol</a> which is more technical than others I have read - so may be harder to understand for newbies - but at the same time provides more insight into some of the internal details of the CLOS MOP. Although this is an old article, it's very close to the actual CLOS MOP specification, with only one serious deviation as far as I can tell. The deviation is the fact that slot-value-using-class is specialized on slot names in that article, while they are actually specialized on slot definition metaobjects in the "real" <a href="http://www.lisp.org/mop/">CLOS MOP specification</a>. The reason for this deviation is that for most of the time during the standardization of CLOS and its MOP, slot-value-using-class was indeed supposed to be specialized on slot names (like <a href="http://www.lispworks.com/documentation/HyperSpec/Body/f_slt_un.htm">slot-unbound</a> and <a href="http://www.lispworks.com/documentation/HyperSpec/Body/f_slt_mi.htm">slot-missing</a> in ANSI Common Lisp), but that was changed only very late in the game before publication of <a href="http://www.amazon.com/Art-Metaobject-Protocol-Gregor-Kiczales/dp/0262610744">The Art of the Metaobject Protocol</a>.<br /><br />Anyway, the information in that article is still valid, so I can recommend it.Pascal Costanzahttp://www.blogger.com/profile/04512975624438301971noreply@blogger.comtag:blogger.com,1999:blog-20069114.post-88836547883373624902007-06-03T16:28:00.001+02:002007-06-03T16:53:50.482+02:00Dr. Dobb's Classic Lisp ArticlesRecently, I have noticed that the online version of Dr. Dobb's Journal published <a href="http://www.ddj.com/dept/64bit/199702507">an article about multitasking in Common Lisp</a>. What was weird to me was that it reads like a rather old article mentioning techniques that, if I understand correctly, were popular in the 1980's, and especially mentioning a Common Lisp implementation that has not been maintained for probably over a decade. So I asked around in comp.lang.lisp whether anyone had an idea what this was about.<br /><br />Surprisingly, Jon Erickson, editor of Dr. Dobb's Journal, <a href="http://groups.google.com/group/comp.lang.lisp/msg/6173fb0caa06150c">responded to that question</a> and explained that they routinely get requests for classic articles that are 15-20 years old, and so they indeed regularly republish such articles from the past. Since they are responsible for the archives of a number of publications, such as AI Expert, C/C++ Users Journal, BYTE, and Computer Language, there are probably quite a few nuggets to be rediscovered here.<br /><br />For example, earlier this year they have already published an article by Paul Graham about <a href="http://www.ddj.com/dept/architect/199204122">graphic objects</a>, originally from 1988. Just yesterday, they have published a very interesting article by Nick Bourbaki about <a href="http://www.ddj.com/dept/ai/199900470">dynamic programming</a>. Nick Bourbaki is actually Richard Gabriel's pseudonym that he used in some of his writings in the early 1990's - see <a href="http://www.dreamsongs.com/WorseIsBetter.html">Worse Is Better</a> and also <a href="http://www.dreamsongs.com/Nickieben.html">Nickieben Bourbaki</a>.Pascal Costanzahttp://www.blogger.com/profile/04512975624438301971noreply@blogger.comtag:blogger.com,1999:blog-20069114.post-42107206476031860382007-05-17T15:12:00.000+02:002007-05-17T15:18:20.628+02:00European Lisp Workshop '07 - newsAs already announced, this year's <a href="http://lisp-ecoop07.bknr.net/">European Lisp Workshop</a> will be held in Berlin on July 30, again in conjunction with <a href="http://2007.ecoop.org/">ECOOP</a>. There are two noteworthy news items:<br /><ul><br /><li>We are happy to announce that <a href="http://lisp-ecoop07.bknr.net/profile/5802">Alexander Repenning</a> will be giving a keynote presentation about <a href="http://lisp-ecoop07.bknr.net/submission/5881">Antiobjects: Mapping Game AI to Massively Parallel Architectures using Collaborative Diffusion</a>.</li><br /><li>The submission deadline for papers, essays and breakout group proposals has been extended to May 31. Notifications of acceptance will be sent out on June 8, one week before the early registration deadline.</li><br /></ul><br />See the <a href="http://lisp-ecoop07.bknr.net/">workshop website</a> for more information.Pascal Costanzahttp://www.blogger.com/profile/04512975624438301971noreply@blogger.comtag:blogger.com,1999:blog-20069114.post-23335549325774315902007-04-24T19:49:00.000+02:002007-04-24T19:52:26.270+02:00ELW'07There will be a new instance of the European Lisp Workshop at <a href="http://2007.ecoop.org/">ECOOP 2007</a> in Berlin, Germany on July 30. The deadline for submission of long papers, short essays and/or proposals for breakout groups is May 13. Please see the <a href="http://lisp-ecoop07.bknr.net/">ELW'07</a> website for more information.Pascal Costanzahttp://www.blogger.com/profile/04512975624438301971noreply@blogger.comtag:blogger.com,1999:blog-20069114.post-88844748453923042372007-04-24T19:33:00.000+02:002007-04-24T19:35:17.583+02:00Reflective Layer Activation in ContextLI have just uploaded the paper <a href="http://p-cos.net/documents/context-meta.pdf">Reflective Layer Activation in ContextL</a> to my website that we have presented at this year's ACM Symposium on Applied Computing.<br /><br />This paper describes some aspects of the metaobject protocol of ContextL. This is not exactly the same version as presented at the symposium, but the paper has been updated to reflect the new API in <a href="http://p-cos.blogspot.com/2007/04/contextl-040.html">ContextL 0.4</a>. However, apart from the resulting changes of function names and a few other minor edits, the contents have remained the same.Pascal Costanzahttp://www.blogger.com/profile/04512975624438301971noreply@blogger.com