Show simple item record

Authordc.contributor.authorTanter, Éric Pierre 
Authordc.contributor.authorFigueroa, Ismael es_CL
Authordc.contributor.authorTabareau, Nicolás es_CL
Admission datedc.date.accessioned2014-12-29T20:21:48Z
Available datedc.date.available2014-12-29T20:21:48Z
Publication datedc.date.issued2014
Cita de ítemdc.identifier.citationScience of Computer Programming Volume 80, Part B, 1 February 2014, Pages 311–342en_US
Identifierdc.identifier.otherDOI: 10.1016/j.scico.2013.09.002
Identifierdc.identifier.urihttps://repositorio.uchile.cl/handle/2250/126825
General notedc.descriptionArtículo de publicación ISIen_US
Abstractdc.description.abstractIn aspect-oriented programming (AOP) languages, advice evaluation is usually considered as part of the base program evaluation. This is also the case for certain pointcuts, such as if pointcuts in AspectJ, or simply all pointcuts in higher-order aspect languages like AspectScheme. While viewing aspects as part of base level computation clearly distinguishes AOP from reflection, it also comes at a price: because aspects observe base level computation, evaluating pointcuts and advice at the base level can trigger infinite regression. To avoid these pitfalls, aspect languages propose ad-hoc mechanisms, which increase the complexity for programmers while being insufficient in many cases. After shedding light on the many facets of the issue, this paper proposes to clarify the situation by introducing levels of execution in the programming language, thereby allowing aspects to observe and run at specific, possibly different, levels. We adopt a defensive default that avoids infinite regression, and gives advanced programmers the means to override this default using level-shifting operators. We then study execution levels both in practice and in theory. First, we study the relevance of the issues addressed by execution levels in existing aspect-oriented programs. We then formalize the semantics of execution levels and prove that the default semantics is indeed free of a certain form of infinite regression, which we call aspect loops. Finally, we report on existing implementations of execution levels for aspect-oriented extensions of Scheme, JavaScript and Java, discussing their implementation techniques and current applications.en_US
Lenguagedc.language.isoenen_US
Publisherdc.publisherElsevieren_US
Type of licensedc.rightsAttribution-NonCommercial-NoDerivs 3.0 Chile*
Link to Licensedc.rights.urihttp://creativecommons.org/licenses/by-nc-nd/3.0/cl/*
Keywordsdc.subjectAspect-oriented programmingen_US
Títulodc.titleExecution levels for aspect-oriented programming: Design, semantics, implementations and applicationsen_US
Document typedc.typeArtículo de revista


Files in this item

Icon

This item appears in the following Collection(s)

Show simple item record

Attribution-NonCommercial-NoDerivs 3.0 Chile
Except where otherwise noted, this item's license is described as Attribution-NonCommercial-NoDerivs 3.0 Chile