Pico is the common platform on which a number of people in our lab have based their research. This is because Pico is so small. This makes it extremely easy to use it to experiment with new language features and with their implementation. Currently, the following research is conducted:

Pic%: A contemporary Prototype-Based Language

When considering the wide range of object-oriented programming languages, one hardly ever finds methods to be first-class entities. At first sight, this phenomenon seems to be caused by a concern for an efficient implementation. Closer inspection however, reveals more subtle grounds that are rooted in issues more fundamental than performance. This research investigates this aspect of object-oriented programming languages using an extensible object model that is sufficiently simple to reveal the various concerns. In particular, it argues in favor of dynamic scoping as a setting in which to manipulate first-class methods.

Pic% (pronounced pic-oh-oh) is a minimal prototype-based extension of Pico. It builds upon the knowledge we gathered with the Agora project in the mid nineties.

Material for downloading:

Sic%: Mixing Pic% with Smalltalk.

Sic% is a Smalltalk implementation of the Pic% language, a variant of the Pico language with some features to support prototype-based object-oriented programming. An additional feature of Sic% is its linguistic symbiosis with the underlying Smalltalk system, which allows Pic% and Smalltalk objects to seamlessly send each other messages. With this technique Sic% programmers can easily leverage of the vast Smalltalk library for doing such things as GUI building, database access etc. Sic% was originally developed for Squeak Smalltalk, but has since also been ported to VisualWorks Smalltalk.

Material for downloading:

AmbientTalk: A Programming Language Kernel for Ambient Computing

With the advent of wireless communication media (such as Bluetooth, WiFi and others) devices can communicate with other devices without the need to be plugged into a physical network. Such a physical network was a serious limitation to the potential of portable devices. These portable devices can use wireless communication technology to interact with surrounding devices at any time and place. Wireless communication media allows portable devices to ``sense'' other devices in the physical environment. This new ``sense'' brings us one step closer to the intelligently integrated computer into our everyday lives, also known as pervasive computing. Our research is concerned with how to program software for these portable devices, so that they can use this new ``sense'' to its full potential. We believe that Actors provide a good starting point for our research.

Material for downloading:

dPico: A Variant with Concurrent and Distributed Objects

With the advent of ever cheaper, more stable and more powerful mobile devices and their integration via wireless networks, a new branch of applications is emerging. The construction of such mobile, flexible and distributed applications places an enormous burden of complexity on the programmer’s shoulders. To keep such software maintainable and robust, the programming language in which it is written should introduce the necessary abstractions to master this complexity. Most of the contemporary programming languages fail in providing the necessary language constructs. These languages fall short in their task of making it feasible to create such extensible applications that run in an open, dynamically determined distributed topology.

This research proposes an object-oriented distributed programming language which allows objects to be structured in a flexible and distributed way. The language is prototype-based yielding a more flexible programming medium than its class-based alternatives. The proposed language, called dPico, allows for software to be structured by applying the principle of inheritance in prototype-based languages between distributed objects. Such object relations help us to restrict a number of problems arising in concurrent and distributed environments. The dissertation considers the domains of prototype-based, concurrent and distributed languages. Subsequently, the proposed language is founded with a concurrency and a distribution model. The models selectively inherit concepts from prior programming languages and paradigms.

Material for downloading: