of programming language features in the sense that
new features may be added to the language. Finally,
we add the concept of language feature configuration
which gives control over the use of language features.
The comparison with Bracha’s article “Pluggable
Type Systems” (Bracha, 2004) is similar. His imple-
mentation of Strongtalk (Bracha and Griswold, 1993)
on the basis of Smalltalk is an example of a pluggable
language feature, namely typing.
With the Scala programming language (Odersky,
2004), Odersky targets at scalability and flexibility,
too. He tries to reduce the set of language features
as much as possible and, instead, provides features
in libraries. However, on the level of additional lan-
guage features like typing and access control, Scala
is still inflexible. Scala uses type inference to ease
the programmer from the burden of specifying types
unnecessarily often but is still statically typed at any
time.
Finally, we see a strong relationship be-
tween Aspect-Oriented Programming (AOP) (Kicza-
les et al., 1997) and pluggable programming language
features. While not inherently tied to it, AOP in
practice is used for implementing functionality for
the end-user like, e.g., logging. On the other hand,
pluggable programming language features target the
application programmer by addressing internal code
quality like maintainability, stability, reliability, etc.
Hence, our approach follows the tradition of AOP, but
with a different focus.
6 CONCLUSIONS AND FUTURE
WORK
In this article, we plead for pluggable programming
language features, a concept that adds flexibility to
programming languages. It allows for using or omit-
ting programming language features with full control
via programming feature configuration.
We demonstrated the concept via a research pro-
totype and a sample application in Lisp. While the
concept has obvious benefits, it is not well supported
by current programming languages. Furthermore, we
agree with Meijer and Drayton, who identify a “huge
cultural gap” between the communities of statically
and dynamically typed languages (Meijer and Dray-
ton, 2005).
However, we see a new trend towards dynamic
programming languages in the last decade that are im-
plemented on top of mainstream platforms. Exam-
ples are implementations of Python, Ruby, Groovy,
and Scala on the Java Platform or F# and C# 4.0 on
the .NET platform. Furthermore, there are a number
of Lisp implementations on the Java platform, e.g.,
ABCL, Clojure, Jatha, and CLForJava.
This may allow for pluggable language features to
eventually break through — for two reasons. Firstly,
the technical integration of languages of different
styles eases the implementation of pluggable lan-
guage features. Optional typing in C# 4.0 is a perfect
example for that. Secondly, a growing community
of programmers who are proficient in both language
styles will help closing the cultural gap. Addition-
ally, if mainstream languages already had real support
for pluggable programming language features, the ne-
cessity for numerous special languages would be re-
duced.
Our plea for pluggable programming language
features is from the application programmers’ point
of view. We see future work in the following ar-
eas. Pluggable programming language features need
to be implemented in programming languages on top
of mainstream platforms. Integrated development en-
vironments need to support pluggable programming
language features, particularly their configuration.
Experience needs to be gained in industrial projects
of different sizes. Finally, a development method-
ology that best utilizes pluggable programming lan-
guage features needs to be developed.
REFERENCES
Berger, H., Beynon-Davies, P., and Cleary, P. (2004). The
Utility of a Rapid Application Development (RAD)
approach for a large complex Information Systems
Development. In Proceedings of the 13th European
Conference on Information Systems (ECIS 2004),
Turku, Finland.
Bracha, G. (2004). Pluggable type systems. In OOPSLA
Workshop on Revival of Dynamic Languages, 2004.
Bracha, G. and Griswold, D. (1993). Strongtalk: Type-
checking Smalltalk in a production environment. In
Proc. of the ACM Conf. on Object-Oriented Program-
ming, Systems, Languages and Applications (OOP-
SLA’93).
Floyd, C. (1984). A systematic look at prototyping. Ap-
proaches to Prototyping, pages 1–18.
Ghezzi, C., Jazayeri, M., and Mandrioli, D. (2002). Funda-
mentals of Software Engineering. Prentice Hall PTR,
Upper Saddle River, NJ, USA.
Gordon, V. S. and Bieman, J. M. (1993). Reported Effects
of Rapid Prototyping on Industrial Software Quality.
Hekmatpour, S. (1987). Experience with evolutionary pro-
totyping in a large software project. SIGSOFT Softw.
Eng. Notes, 12(1):38–41.
Kiczales, G., Lamping, J., Mendhekar, Videira Lopes,
C., Loingtier, J.-M., and Irwin, J. (1997). Aspect-
Oriented Programming. In Proceedings of the Eu-
ENASE 2010 - International Conference on Evaluation of Novel Approaches to Software Engineering
10