archives

Dynamic Plug-In Linking, Loading, & Dispatching with Ada 2005

In this article, we show how a statically-typed, statically-built, object-oriented language such as Ada can make full use of the notion of dynamic plug-ins. To that end, we build an extensible application and illustrate adding new functionality to it at run-time via plug-ins. Selected new features of Ada 2005 are used in the implementation and are highlighted. In particular, we use the "distinguished receiver" syntax familiar to users of C++ and Java. We also use one of the new "containers" data structures packages. The main program and plug-ins are built with the GNAT Ada 2005 implementation developed by AdaCore.

This brief DDJ article shows how to build "dynamic" plugins in a statically type-checked language, so this is somewhat related to other ongoing threads.

This is also a chance to take a glimpse at the new version of Ada, which I already mentioned a copule of times. It is interesting to see the convergence of programming languages (e.g., Ada will support the distinguished receiver syntax found in CC+, Java and ilk, provide an interface construct as found in Java, and will ship with a standard container library). On the other hand, each language must carry its own past into the future. Comparing the direction taken by the C++ community to the Ada effort can be somewhat enlightening.

Is there a formal basis for generators?

I have been programming in Python for a while and have been using generators as part of the language. However, I have recently found myself wanting to formally reason about a recursive generator function. Is there any formal basis for generators and is there any infomation on the subject on the web?