the previous paragraph.
Another conceivable approach is to implement
composition operators by means of code transfor-
mations. They can be implemented in terms of a
compile-time MOP (Sheard and Jones, 2002), which
means that the transformations can be defined in the
same language as the application code. But still trans-
formations cannot be freely composed because they,
generally, make assumptions on the code structure;
this may have been modified by a previously applied
transformation.
8 CONCLUSIONS
The message of this paper is that, when implementing
an application, dedicated abstractions that fit the prob-
lem domain are needed; and since programs, in gen-
eral, combine multiple problem domains in unfore-
seeable ways, programming languages must not hard-
wire abstractions and composition mechanisms, but
must allow developers to tailor them to their needs.
For this purpose, we propose the Co-op approach
to integrate facilities into programming languages that
allow developers to implement their own composition
mechanisms according to their domain’s abstractions.
They should be implemented as composition opera-
tors which are first class objects in the programming
language such that they can be composed, themselves,
by means of custom composition operators. By dis-
cussing the Co-op language prototypes that allow nor-
mal application objects to act as composition opera-
tors by means of message rewriting, we have shown
that realizing these ideas is feasible.
While the Co-op approach—allowing program-
mers to define their own composition operators as
first-class objects—is quite powerful, it also bears
more complexity. This complexity needs not be ex-
posed to the day-to-day programmer, though, because
the implementation of composition operators can be
provided by a few, well-trained experts through li-
braries. The common programmer simply uses such a
library, instantiating composition operators as needed.
Nevertheless, it is subject to future studies to research
the impact of our proposed programming model in
practice.
ACKNOWLEDGEMENTS
We would like to thank Wilke Havinga and Havva
G
¨
ulay G
¨
urb
¨
uz for their contributions to Co-op. This
research work was partially funded through the
ENOFES project (STW 11850).
REFERENCES
Bergmans, L. M. J., Havinga, W. K., and Aks¸it, M. (2011).
First-class compositions–defining and composing ob-
ject and aspect compositions with first-class operators.
Transactions on Aspect-Oriented Software Develop-
ment.
Brichau, J., Haupt, M., Leidenfrost, N., Rashid, A.,
Bergmans, L., et al. (2005). Report describing sur-
vey of aspect languages and models. Technical Re-
port AOSD-Europe Deliverable D12, AOSD-Europe-
VUB-01, Vrije Universiteit Brussel.
Te Brinke, S., Bergmans, L. M. J., and Bockisch, C. M.
(2011a). The keyword revolution: Promoting lan-
guage constructs for data access to first class citi-
zens. In Proc. 1st Int. Workshop on Free Composition,
FREECO ’11, New York, NY, USA. ACM.
Te Brinke, S., Bockisch, C. M., and Bergmans, L. M. J.
(2011b). Reuse of continuation-based control-flow ab-
stractions. In Proc. 2nd Workshop on Free Composi-
tion @ Onward! 2011, FREECO-Onward! ’11, pages
13–18, New York, NY, USA. ACM.
Brooks, F. (1987). No silver bullet: Essence and accidents
of software engineering. IEEE computer, 20(4):10–
19.
Dahl, O. J., Dijkstra, E. W., and Hoare, C. A. R., editors
(1972). Structured Programming. Academic Press
Ltd., London, UK.
Dijkstra, E. W. (1976). A discipline of programming.
Prentice-Hall, Englewood Cliffs, New Jersey.
Goldberg, A. and Robson, D. (1983). Smalltalk-80: the lan-
guage and its implementation. Addison-Wesley Long-
man Publishing Co., Inc. Boston, MA, USA.
Havinga, W. K., Bergmans, L. M. J., and Aks¸it, M. (2010a).
A model for composable composition operators: Ex-
pressing object and aspect compositions with first-
class operators. In Proc. 9th Int. Conf. on Aspect-
Oriented Software Development, pages 145–156, New
York. ACM.
Havinga, W. K., Bockisch, C. M., and Bergmans, L. M. J.
(2010b). A case for custom, composable composition
operators. In Proc. 1st Int. Workshop on Composition:
Objects, Aspects, Components, Services and Product
Lines, volume 564 of Workshop Proceedings, pages
45–50. CEUR-WS.
Kiczales, G., des Rivieres, J., and Bobrow, D. G. (1991).
The Art of the Metaobject Protocol. MIT Press, Cam-
bridge, Massachusetts.
Royce, W. (2009). Improving software economics-top 10
principles of achieving agility at scale. White paper,
IBM Rational.
Sheard, T. and Jones, S. P. (2002). Template meta-
programming for Haskell. SIGPLAN Not., 37:60–75.
Taivalsaari, A. (1996). On the notion of inheritance. ACM
Comput. Surv., 28(3):438–479.
Ungar, D. and Smith, R. B. (1987). Self: The power of
simplicity. SIGPLAN Not., 22:227–242.
FreeCompositionInsteadofLanguageDictatorship
393