Authors:
Lodewijk Bergmans
;
Steven te Brinke
;
Christoph Bockisch
and
Mehmet Akşit
Affiliation:
University of Twente, Netherlands
Keyword(s):
Language Design, Language Engineering, Software Composition, Free Composition.
Related
Ontology
Subjects/Areas/Topics:
Advice/Pointcut Specification
;
Aspects
;
Aspects Interference and Composition
;
Modularity with Aspects
;
Paradigm Trends
;
Software Engineering
Abstract:
Historically, programming languages have been—benevolent—dictators: reducing all possible semantics to specific ones offered by a few built-in language constructs. Over the years, some programming languages have freed the programmers from the restrictions to use only built-in libraries, built-in data types, and builtin type-checking rules. Even though—arguably—such freedom could lead to anarchy, or people shooting themselves in the foot, the contrary tends to be the case: a language that does not allow for extensibility is depriving software engineers of the ability to construct proper abstractions and to structure software in the most optimal way. Therefore the software becomes less structured and maintainable than would be possible if the software engineer could express the behavior of the program with the most appropriate abstractions. The idea proposed by this paper is to move composition from built-in language constructs to programmable, first-class abstractions in a language. W
e discuss several prototypes of the Co-op language, which show that it is possible, with a relatively simple model, to express a wide range of compositions as first-class concepts.
(More)