Starting in 1996, Alexa Internet has been donating their crawl data to the Internet Archive. Flowing in every day, these data are added to the Wayback Machine after an embargo period.
Starting in 1996, Alexa Internet has been donating their crawl data to the Internet Archive. Flowing in every day, these data are added to the Wayback Machine after an embargo period.
TIMESTAMPS
The Wayback Machine - https://web.archive.org/web/20150729062351/http://csl.ensm-douai.fr:80/MetaclassTalk
MetaclassTalk: Reflection and Meta-Programming in Smalltalk
MetaclassTalk is a reflective extension of Smalltalk that provides programmers with a a meta-object protocol (MOP) to control objects structure (memory allocation and access to instance variables) and behavior (message sends and receptions and method lookup and application). It aims easing experiments of new concepts, programming pradigms and langage extensions.
MetaclassTak was first designed and developed by Noury Bouraqadi during his Ph.D. The first prototype was made on top of VisualWorks 2.0 an relied on NeoClasstalk . Then, during his master, Gabriel Casarini made a first port MetaclassTalk to Squeak 2.7. In 2001, Noury completly rewrote MetaclassTalk for Squeak 3.2. By now, Noury is still maintaning and evolving MetaclassTalk. He makes different experiments with it (AOP, Mixins, ...) and supervises Master and PhD students that make use of MetaclassTalk reflective facilities.
Some Projects Where MetaclassTalk is Used
Reza Razavi uses MetaclassTalk for building a tool named Dyctalk dedicated to Adaptive Modeling.
Romain Robbes used MetaclassTalk for its Multi-Agent System.
Alan Cyment uses MetaclassTalk in the SetPoint project to build a AOP (Aspect-Oriented Programming) prototype with new kinds of join-points.
What is Reflection?
Reflection is the ability of a system to reason and to act upon it self. Such a system includes its own interpreter (or at least part of it). So a reflective system can observe its own execution (that is introspection) and even change the way it runs (that is intercession). For example a reflective system is able to change the way it handles message sendings.
Reflection has many interesting uses. Easing the developpement of programming tools such as browsers and debuggers is certainly one among the most well known. Building such tools is eased since program entities such as classes and methods are reified, i.e. they exist at run-time as a full fledged objects. Another possible application of reflection is adapting the programming language to the application domaine. This adaptation can be an extension of the programming language (e.g. introducing multiple inheritance in a language with only single inheritance) or even changing the programming paradigm (e.g. allowing actor based programming in a language that support initially only class based programming). Reflection is also usefull for separating programs functionalities from non-functionnal concerns (or aspects) (e.g. distribution, concurrency, ...). Dynamic adaptability is another important property of reflective systems. Execution mecanismes of reflective systems can be evolved during run-time inorder to optimize the use of the available resources and to take into account evolutions than can happen randomly (e.g. machine load, network bandwidth reduction, ...).
Implementation
The implementation of MetaclassTalk are based on the following technics:
The latest implementations aimed to be fully compatible with Squeak (i.e. no change of the VM or new primitives). Efficiency is another important issue. Hooks that allow jumping from base to the meta-level introduce an overhead. In order to minimize this overhead, one first solution is to introduce only required hooks. That is introducing hooks, only if the Smalltalk default interpretation process is extended.
Related Papers and Talks
Towards Unified Aspect-Oriented Programming (August 2005)
Monday, January 22, 2001: MetaclassTalk-0.2Beta2.zip (75 K) for Squeak 2.7. Fix some major bugs and particulary allows recompilation of MetaclassTalk classes and the introduction of their changes into the change set.
Monday, January 08, 2001: MetaclassTalk-0.2Beta1.zip (73 K) for Squeak 2.7. Full portability (Does not require a specific VM any more) + Two examples illustrate the use of the MOP.