Dynamic Languages Day

@ Vrije Universiteit Brussel

(Monday, February 13, 2006)

The Dynamic Languages Day was a big success. Thanks to everyone who helped to organize this event and to all the participants. We have made the slides of the presentations, as well as some of the demo code, available for download.

new You can now also download quicktime movies of the various presentations. The video clips are also mirrored here: Scheme, Smalltalk, Self, Generic Functions and CLOS MOP. (Thanks to Nick Allen.)

The VUB (Programming Technology Lab and System and Software Engineering Lab), ULB (deComp) and the Belgian Association for Dynamic Languages (BADL) are very pleased to invite you to a day of presentations about the programming languages Smalltalk, Self and Common Lisp by experts in these languages. Besides some introductory material for each language, the reflective facilities in the respective programming environments will be highlighted. The presentations will be especially interesting for people with good knowledge about current mainstream object-oriented languages like Java, C# and C++ who want to get a deeper understanding about the expressive power of Smalltalk, Self and Common Lisp. In order to prepare the ground for these presentations, Professor Viviane Jonckers will introduce the day by an overview of the benefits of teaching dynamic languages to undergraduate students in computer science. She will especially discuss the specific advantages of using Scheme as an introductory language instead of the more widely employed Java language.

The schedule for this event, held on Monday, February 13, 2006, is as follows:

  • 10:00 - 10:30 Viviane Jonckers (SSEL), Scheme as an introductory language
  • 10:30 - 11:20 Johan Brichau (PROG/LIFL), Roel Wuyts (deComp), Smalltalk
  • 11:20 - 11:40 Coffee Break
  • 11:40 - 12:30 Ellen Van Paesschen (PROG), Self
  • 12:30 - 13:30 Lunch
  • 13:30 - 14:50 Pascal Costanza (PROG), Generic Functions in Common Lisp / CLOS
  • 14:50 - 15:10 Coffee Break
  • 15:10 - 16:30 Pascal Costanza (PROG), The CLOS Metaobject Protocol

The venue for the event is room E.0.05 (in building E) at the Vrije Universiteit Brussel, Campus Etterbeek, Pleinlaan 2, 1050 Brussels, Belgium. For a description of how to get to the campus see http://www.vub.ac.be/english/infoabout/campuses/index.html#etterbeek - that link also contains a map of the campus which should help you to spot building E. We have also prepared a detailed map with pictures that will make it easier to find the venue. Print it out and take it along with you.

Attendance is free and open to the public. Please make sure to register for the event by sending an e-mail to Pascal Costanza (pascal.costanza@vub.ac.be), so we can plan ahead. The number of places will be limited according to the exact location of the event and will be allocated on a first-come, first-serve basis. Watch the website for any news at http://prog.vub.ac.be/events/2005/BADL/DLD/dld.html. Recommended opportunities for accomodation are: Hotel Astrid, Hotel Ibis St. Catherine, Hotel Mozart, Hotel Royal Windsor Grand Place, Jacques Brel Youth Hostel, Sleep Well Youth Hostel.

Abstracts of the Talks

Scheme as an introductory language (Viviane Jonckers)

The VUB has a rich history in dynamic programming language teaching and research. Ever since the late 80's, compulsory courses on Lisp and Smalltalk have played an important role in the last two years of the computer science curriculum. Since the early 90's, this role was further intensified by selecting Scheme as the introductory course in the first year and by promoting Scheme as the lingua franca for most courses in the first two years. Professor Jonckers' introductory talk to the dynamic languages day explains how this early exposure to the dynamic paradigm is the seed that gives students the skills to fully grasp and appreciate the more advanced dynamic paradigms (such as Lisp, CLOS, Smalltalk and Self) in subsequent courses of their computer science training.


Viviane Jonckers received a master degree in Computer Science from the Vrije Universiteit Brussel in 1983 and a Ph.D. degree in Sciences from the same university in 1987. Since 1987 she is a professor both in the Computer Science Department of the faculty of Sciences as in the Computer Science group of the Engineering Faculty. Currently, she is the director of the System and Software Engineering Lab. Her current research interests are in integrated software development methods with a focus on component based software development and aspect oriented software development. She participated in and has been project manager of several national and international R&D projects.

Smalltalk (Johan Brichau, Roel Wuyts)

Smalltalk is a class-based object-oriented programming language. Everything in Smalltalk is an object and these objects communicate through messages. The Smalltalk language itself offers only very few programming constructs and is thus easy to learn and grasp. Therefore, the expressive power of Smalltalk lies in its huge library of frameworks, which includes an extensive metaobject protocol that enables powerful dynamic (runtime) reflection. Furthermore, perhaps one of the most significant advantages of Smalltalk outside of the language itself is that software development is a truly dynamic experience. The Smalltalk environment features the incremental development of an application where there is no strict separation between development and execution cycles, leading to an interactive and dynamic development process.

Besides a short introduction to the Smalltalk programming language, this presentation will focus on the dynamic reflective facilities of Smalltalk. We will demonstrate the power of its metaobject protocol through a number of tools that extensively rely on it. Furthermore, we will provide some insight in the dynamic nature of Smalltalk development through a live demonstration.


Johan Brichau currently holds a postdoc position at the Laboratoire d'Informatique Fondamentale de Lille (LIFL). He is also associated with the Programming Technology Lab at the Vrije Universiteit Brussel, where he obtained a Ph.D. degree in Computer Sciences in 2005. Johan's research is focusing on the use of metaprogramming in the context of generative programming techniques and aspect-oriented programming languages. To this extent, he has been extensively using the Smalltalk metaobject protocol for the creation and development of (generative) logic metaprogramming techniques as well as aspect-oriented language extensions to Smalltalk.

Roel Wuyts is professor at the University Libre de Bruxelles, where he leads the deComp group. His fields of interest are logic meta programming, forms of reflection and language design. On the side he also dabbles in development environments. Quite a lot his development is done in Smalltalk, extensively using the reflective facilities in that language to do research in language symbiosis, development environments and for rapid programming in gneral. From the moment he realized that dynamicity was what he really liked in all of his favourite programming languages (Smalltalk, Prolog and Scheme), he has been trying to grow the dynamic languages field again. Part of this endavour was the organization of the first Dynamic Language Symposium, a symposium co-organized with OOPSLA'2005 in San Diego.

Self (Ellen Van Paesschen)

Self is a prototype-based object-oriented programming language where everything is an object and all manipulation of objects is initiated through message sending. A prototype-based language eschews classes and allows object creation ex-nihilo or by cloning prototypes. Self resembles Smalltalk in both its syntax and semantics. Other characteristics of Self are delegation (object-centered inheritance), parent sharing and child sharing (multiple inheritance), and dynamic parent modification. Further the Self environment includes a powerful mechanism for reflective meta-programming based on mirror objects. The Self group were also the first to introduce traits objects that gather shared and reusable behavior between objects in order to program in a more efficient and structured way.

After a brief introduction to the highly interactive Self environment the language's basics and its syntax and semantics are presented. Next the most important advanced features such as mirrors and dynamic parent modification are illustrated.


Ellen Van Paesschen obtained a master degree in computer science at the Vrije Universiteit Brussel in 2000. Currently she is a Ph.D. student at the Programming Technology Lab. Ellen's research is focusing on using dynamic and prototype-based languages for model-driven development and round-trip engineering (RTE). She has created a research prototype of a dynamic prototype-based RTE environment in Self which is the main implementation language in her research. This environment differs from other existing tools at the level of synchronisation, run-time objects and constraint enforcement steered from an analysis model. Her other interests include (the analysis phase during) software engineering and role modelling.

Generic Functions and the CLOS Metaobject Protocol (Pascal Costanza)

The Common Lisp Object System (CLOS) is unique in two ways.

  • In most OOP languages, methods belong to classes and are invoked by sending messages. In CLOS, methods belong to generic functions instead of classes, and those generic functions select and execute the correct method according to the types of the arguments they receive.
  • The CLOS Metaobject Protocol (MOP) specifies how its essential building blocks are to be implemented in CLOS itself. This allows extending its object model with metaclasses that change important aspects of CLOS for a well-defined scope.

This presentation introduces these two notions. The code for an interpreter for generic functions that performs selection and execution of methods will be developed live during the presentation. This will be followed by a discussion how that code can be extended to introduce, for example, multimethods and AOP-style advices, and a sketch how generic functions are implemented efficiently in the "real" world. In the second part, the extensibility of the CLOS MOP will be illustrated by implementing - live - the (hashtable-based) Python object model as a metaclass. Other practical extensions based on the CLOS MOP are also sketched, like object-relational mappings, interfaces to foreign-language objects, and domain-specific annotations in classes.


Pascal Costanza has a Ph.D. degree from the University of Bonn, Germany. His past involvements include specification and implementation of the languages Gilgul and Lava, and the design and application of the JMangler framework for load-time transformation of Java class files. He has also implemented ContextL, the first programming language extension for Context-oriented Programming based on CLOS, and aspect-oriented extensions for CLOS, which all heavily rely on the CLOS MOP. He is furthermore the initiator and lead of Closer, an open source project that provides a compatibility layer for the CLOS MOP across multiple Common Lisp implementations.