{"title":"To be destructive or not to be, that is the question on modular extensions","authors":"S. Chiba","doi":"10.1145/2588548.2588554","DOIUrl":null,"url":null,"abstract":"Inheritance is a classic mechanism for extending an existing module. Since it preserves the original module, programmers can use both the original module and the extended one in the same program. So inheritance is a non-destructive mechanism. On the other hand, there are some extension mechanisms that directly modify an existing module and thus only the extended module is available in a program. These mechanisms such as aspects in AspectJ and revisers in our language GluonJ should be categorized into destructive mechanisms. Both destructive extension mechanisms and non-destructive ones are useful but in different scenarios.\n This talk presents that the primary difference between destructive mechanisms and non-destructive ones is the scope of where the extensions are effective and visible in a program. Then this talk shows the third approach in the middle between the two extreme ones, destructive and non-destructive. The third approach allows programmers to control the scope of the extensions in a modular fashion. The talk presents a few language mechanisms of this approach, including our method shells, and also remaining issues in the contexts of feature-oriented programming.","PeriodicalId":245301,"journal":{"name":"Workshop on Foundations of Aspect-Oriented Languages","volume":"18 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2014-04-22","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"Workshop on Foundations of Aspect-Oriented Languages","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1145/2588548.2588554","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 0
Abstract
Inheritance is a classic mechanism for extending an existing module. Since it preserves the original module, programmers can use both the original module and the extended one in the same program. So inheritance is a non-destructive mechanism. On the other hand, there are some extension mechanisms that directly modify an existing module and thus only the extended module is available in a program. These mechanisms such as aspects in AspectJ and revisers in our language GluonJ should be categorized into destructive mechanisms. Both destructive extension mechanisms and non-destructive ones are useful but in different scenarios.
This talk presents that the primary difference between destructive mechanisms and non-destructive ones is the scope of where the extensions are effective and visible in a program. Then this talk shows the third approach in the middle between the two extreme ones, destructive and non-destructive. The third approach allows programmers to control the scope of the extensions in a modular fashion. The talk presents a few language mechanisms of this approach, including our method shells, and also remaining issues in the contexts of feature-oriented programming.