{"expr":"Composite(AA.AuN=='robert hirschfeld')","entities":[{"logprob":-17.68,"Id":2150275961,"Ty":"0","Ti":"context oriented programming","Pt":"1","L":"en","Y":2008,"D":"2008-01-01","CC":351,"ECC":556,"RId":[2138363365,1967661515,2480195817,2143238865,2075642720,1527793496,25798763,2061180491,1992443356,2140249393,2088018252,2157920816,2138622732,2114436200,1491095550,2014021676,2154597770,1615603009,2073021358,1556513858,2058751520,2140657900,2167049910,123316651,2104754278,2032415879,1582123168,2294229253,1502635676,2724223853,2141199966,28766398,2336237975,2076692115,2151435956,2103378192,93230696],"W":["context","oriented","programming"],"AA":[{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"S":1},{"DAuN":"Pascal Costanza","AuN":"pascal costanza","AuId":2286412295,"S":2},{"DAuN":"Oscar Nierstrasz","AuN":"oscar nierstrasz","AuId":2485163583,"S":3}],"F":[{"DFN":"System deployment","FN":"system deployment","FId":81293917},{"DFN":"Software","FN":"software","FId":2777904410},{"DFN":"Real-time computing","FN":"real time computing","FId":79403827},{"DFN":"Reactive programming","FN":"reactive programming","FId":150762246},{"DFN":"Programming style","FN":"programming style","FId":2776245389},{"DFN":"Programming paradigm","FN":"programming paradigm","FId":34165917},{"DFN":"Programming language","FN":"programming language","FId":199360897},{"DFN":"Programming domain","FN":"programming domain","FId":119263510},{"DFN":"Inductive programming","FN":"inductive programming","FId":50033165},{"DFN":"Extensible programming","FN":"extensible programming","FId":131531359},{"DFN":"Distributed computing","FN":"distributed computing","FId":120314980},{"DFN":"Computer science","FN":"computer science","FId":41008148}],"J":{"JN":"the journal of object technology","JId":172897590},"E":"{\"DN\":\"Context-oriented Programming\",\"IA\":{\"IndexLength\":133,\"InvertedIndex\":{\"Context-dependent\":[0],\"behavior\":[1,35,79],\"is\":[2,124],\"becoming\":[3],\"increasingly\":[4],\"important\":[5],\"for\":[6],\"a\":[7,57],\"wide\":[8],\"range\":[9],\"of\":[10,99,112,127],\"application\":[11,111],\"domains,\":[12],\"from\":[13],\"pervasive\":[14],\"computing\":[15],\"to\":[16,32,37,45,49,76,82,130],\"common\":[17],\"business\":[18],\"applications.\":[19],\"Unfortunately,\":[20],\"mainstream\":[21],\"programming\":[22,59,131],\"languages\":[23],\"do\":[24],\"not\":[25],\"provide\":[26],\"mechanisms\":[27,75],\"that\":[28,122],\"enable\":[29],\"software\":[30],\"entities\":[31],\"adapt\":[33,78],\"their\":[34],\"dynamically\":[36,77],\"the\":[38,51,97,110],\"current\":[39],\"execution\":[40],\"context.\":[41],\"This\":[42],\"leads\":[43],\"developers\":[44],\"adopt\":[46],\"convoluted\":[47],\"designs\":[48],\"achieve\":[50],\"necessary\":[52],\"runtime\":[53],\"exibility.\":[54],\"We\":[55],\"propose\":[56],\"new\":[58],\"technique\":[60],\"called\":[61],\"Context-oriented\":[62],\"Programming\":[63],\"(COP)\":[64],\"which\":[65],\"addresses\":[66],\"this\":[67,93],\"problem.\":[68],\"COP\":[69,113,123],\"treats\":[70],\"context\":[71],\"explicitly,\":[72],\"and\":[73,120],\"provides\":[74],\"in\":[80,84,116],\"reaction\":[81],\"changes\":[83],\"context,\":[85],\"even\":[86],\"after\":[87],\"system\":[88],\"deployment\":[89],\"at\":[90],\"runtime.\":[91],\"In\":[92],\"paper,\":[94],\"we\":[95],\"lay\":[96],\"foundations\":[98],\"COP,\":[100],\"show\":[101],\"how\":[102],\"dynamic\":[103],\"layer\":[104],\"activation\":[105],\"enables\":[106],\"multi-dimensional\":[107],\"dispatch,\":[108],\"illustrate\":[109],\"by\":[114],\"examples\":[115],\"several\":[117],\"language\":[118],\"extensions,\":[119],\"demonstrate\":[121],\"largely\":[125],\"independent\":[126],\"other\":[128],\"commitments\":[129],\"style.\":[132]}},\"S\":[{\"Ty\":3,\"U\":\"http://www.jot.fm/issues/issue_2008_03/article4.pdf\"},{\"Ty\":3,\"U\":\"http://scg.unibe.ch/archive/papers/Hirs08aCOP-JOT.pdf\"},{\"Ty\":3,\"U\":\"http://liacs.leidenuniv.nl/~stefanovtp/courses/StudentenSeminarium/Papers/CvP/COP.pdf\"},{\"Ty\":1,\"U\":\"https://boris.unibe.ch/37163/\"},{\"Ty\":1,\"U\":\"http://www.jot.fm/contents/issue_2008_03/article4.html\"},{\"Ty\":1,\"U\":\"https://doi.org/10.5381/jot.2008.7.3.a4\"}],\"VFN\":\"The Journal of Object Technology\",\"V\":7,\"I\":3,\"FP\":125,\"LP\":151,\"DOI\":\"10.5381/jot.2008.7.3.a4\",\"CC\":{\"28766398\":[\"In other settings, we have developed Piccola, a language with first-class namespaces [1], a context-oriented extension of AspectS [25] for Smalltalk/Squeak, ContextS for Smalltalk/Squeak, and context-oriented extensions of AmbientTalk [42].\"],\"93230696\":[\"An interesting application of scoped activation of functions is described by Gabriel [19].\"],\"123316651\":[\"With cflow-style pointcuts, we would have to ensure that the relevant part of the loop body is exposed as join points, for example by factoring it out into a separate method or using statement annotations [18].\"],\"1491095550\":[\"Several aspect-oriented approaches already provide scoped aspect activation as abstractions [9, 24, 35, 40, 43], but these abstractions have foremostly been designed for aspect deployment.\"],\"1582123168\":[\"Us [38], Delegation layers [34] and Slate [36] are very close to COP in that they are based on layers, allow sending messages in the scope of a specific layer, and even allow manual dynamic composition of layers.\"],\"1615603009\":[\"Us [38], Delegation layers [34] and Slate [36] are very close to COP in that they are based on layers, allow sending messages in the scope of a specific layer, and even allow manual dynamic composition of layers.\"],\"1967661515\":[\"This last part may be counter-intuitive, but based on our experience, it is indeed not necessary to provide explicit support for context modeling, since existing object-oriented abstraction mechanisms are sufficient to model context [17].\",\"Early approaches focused on the modeling and provision of context information [17].\"],\"1992443356\":[\"Among others, we have implemented exception handling [2], multiple views on the same object which are selected based on execution context [14], coordination of screen updates [16], discerning of phone calls based on the context of both callers and callees [41], selecting billing schemes based on dynamic context conditions [15], and traversals of expression trees [26].\",\"While examples discussed in our previous publications about COP [14, 16] are expressed in a style close to aspect- and feature-oriented programming, we deviate here in several ways.\",\"The code in Figure 4 is a simplified version of an earlier example [14].\",\"tension for COP [14] built on top of the Common Lisp Object System (CLOS).\"],\"2014021676\":[\"Scoped Activation Dynamic scoping can be used to change the binding of variables for the current execution context [22, 32, 39].\"],\"2032415879\":[\"Following Smith and Ungar [38], we present COP in the context of multi-dimensional message dispatch.\",\"Procedural programming provides only one dimension to associate a computational unit with a name [38].\",\"Object-oriented programming adds another dimension for name resolution to that of procedural programming [38].\",\"Subjective programming as introduced by Smith and Ungar [38] extends object-oriented method dispatch by yet another dimension.\",\"Us [38], Delegation layers [34] and Slate [36] are very close to COP in that they are based on layers, allow sending messages in the scope of a specific layer, and even allow manual dynamic composition of layers.\"],\"2058751520\":[\"The first precursors to the generalized notion of Context-oriented Programming presented in this paper were placed in the context of pervasive and ubiquitous computing [20, 27].\"],\"2075642720\":[\"Like AOP, feature-oriented programming [7] also targets crosscutting concerns.\"],\"2076692115\":[\"The separation of programs into layers is an idea that goes back at least to early experiments made in Smalltalk [8, 21].\"],\"2088018252\":[\"Several aspect-oriented approaches already provide scoped aspect activation as abstractions [9, 24, 35, 40, 43], but these abstractions have foremostly been designed for aspect deployment.\"],\"2103378192\":[\"Local virtual functions, implemented as a pre-processor for C++, provide a similar concept [23].\"],\"2104754278\":[\"Among others, we have implemented exception handling [2], multiple views on the same object which are selected based on execution context [14], coordination of screen updates [16], discerning of phone calls based on the context of both callers and callees [41], selecting billing schemes based on dynamic context conditions [15], and traversals of expression trees [26].\",\"These language abstractions enable non-trivial and efficient implementations of the respective language extensions [15, 16].\"],\"2114436200\":[\"Several aspect-oriented approaches already provide scoped aspect activation as abstractions [9, 24, 35, 40, 43], but these abstractions have foremostly been designed for aspect deployment.\"],\"2138622732\":[\"-[2]- Direct activation with code replication -[4]- Derived activation based on context object (Smalltalk/ContextS) (Smalltalk/ContextS)\",\"The approach taken in [4] is based on mixin layers that may include constructs for defining AOP-style pointcuts and advice, showing that AOP and FOP are not fundamentally incompatible.\"],\"2140249393\":[\"For example, the mixin layers approach [37] models features as layers which consist of partial class definitions, similar to the layers of Context-oriented Programming as described in this paper.\"],\"2140657900\":[\"In other settings, we have developed Piccola, a language with first-class namespaces [1], a context-oriented extension of AspectS [25] for Smalltalk/Squeak, ContextS for Smalltalk/Squeak, and context-oriented extensions of AmbientTalk [42].\",\"-[1]- Direct activation with code replication -[3]- Direct activation without code replication (Java/ContextJ) (Smalltalk/ContextS)\",\"Piccola [1] is an experimental language for specifying applications as compositions of software components.\"],\"2154597770\":[\"Among others, we have implemented exception handling [2], multiple views on the same object which are selected based on execution context [14], coordination of screen updates [16], discerning of phone calls based on the context of both callers and callees [41], selecting billing schemes based on dynamic context conditions [15], and traversals of expression trees [26].\",\"While examples discussed in our previous publications about COP [14, 16] are expressed in a style close to aspect- and feature-oriented programming, we deviate here in several ways.\",\"A different variant of ContextJ was already used as a means to ease the accessibility of a ContextL-based example [16].\",\"To illustrate a COP-style implementation of system-dependent behavior variations, we show a modified version of the figure editor code written in ContextJ [16], here implemented in ContextL, our first fully implemented programming language ex-\",\"We have previously shown how ContextL can be implemented efficiently [16].\",\"Recently, ContextL [16] and Steamloom [10] have shown that scoped aspect/layer activation can be efficiently implemented, an important prerequisite for wider adoption.\",\"These language abstractions enable non-trivial and efficient implementations of the respective language extensions [15, 16].\"],\"2157920816\":[\"However, the focus of FOP is on compile-time selection and combination of feature variations, and more recent tool support incorporates algebraic means for reasoning about such feature combinations to improve static analyzability [6].\"],\"2167049910\":[\"In aspect-oriented approaches, both static analysis [5] and guards [10] show substantial improvements over naive checks of control flow properties.\",\"Recently, ContextL [16] and Steamloom [10] have shown that scoped aspect/layer activation can be efficiently implemented, an important prerequisite for wider adoption.\"],\"2294229253\":[\"Scoped Activation Dynamic scoping can be used to change the binding of variables for the current execution context [22, 32, 39].\"],\"2336237975\":[\"Among others, we have implemented exception handling [2], multiple views on the same object which are selected based on execution context [14], coordination of screen updates [16], discerning of phone calls based on the context of both callers and callees [41], selecting billing schemes based on dynamic context conditions [15], and traversals of expression trees [26].\",\"-[2]- Direct activation with code replication -[4]- Derived activation based on context object (Smalltalk/ContextS) (Smalltalk/ContextS)\",\"A key feature of Piccola is the form – a first-class environment which is used to model, amongst others, objects, components, modules and dynamic contexts [2].\"],\"2480195817\":[\"Cflow constructs, as introduced with AspectJ-like languages, match join points within the dynamic extent of another join point [29].\"],\"2724223853\":[\"The separation of programs into layers is an idea that goes back at least to early experiments made in Smalltalk [8, 21].\"]},\"PR\":[1992443356,2144114063,2480195817,2138363365,2089889705,2060640309,1649645444,2087175184,1978875190,175922506,2145919358,2033348393,2099213660,2115607078,2075642720,1531869376,1556513858,2145304606,1985637830,1964137226,1992443356,2144114063,2480195817,2138363365,2089889705,2060640309,1649645444,2087175184,1978875190,175922506,2145919358,2033348393,2099213660,2115607078,2075642720,1531869376,1556513858,2145304606,1985637830,1964137226],\"ANF\":[{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":1},{\"FN\":\"Pascal\",\"LN\":\"Costanza\",\"S\":2},{\"FN\":\"Oscar\",\"LN\":\"Nierstrasz\",\"S\":3}],\"BV\":\"The Journal of Object Technology\",\"BT\":\"a\",\"PB\":\"AITO\"}"},{"logprob":-18.624,"Id":1992443356,"Ty":"0","Ti":"language constructs for context oriented programming an overview of contextl","Pt":"3","L":"en","Y":2005,"D":"2005-10-18","CC":173,"ECC":281,"RId":[2622427009,1996974848,1527793496,2094282293,2045723688,1513136098,2088018252,2132055297,2068606617,1491095550,1592272620,68605010,1615603009,2146645963,2058751520,2335857705,1996647866,2032415879,1582123168,2036632668,2724223853,7320905,28766398,1492801337,1499520738,2510569334,1997532030,2151435956,185175612],"W":["constructs","context","contextl","language","oriented","overview","programming"],"AA":[{"DAuN":"Pascal Costanza","AuN":"pascal costanza","AuId":2286412295,"DAfN":"Vrije Universiteit Brussel","AfN":"vrije universiteit brussel","AfId":13469542,"S":1},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"NTT DoCoMo","AfN":"ntt docomo","AfId":99157191,"S":2}],"F":[{"DFN":"Theoretical computer science","FN":"theoretical computer science","FId":80444323},{"DFN":"Symbolic programming","FN":"symbolic programming","FId":61714564},{"DFN":"Programming paradigm","FN":"programming paradigm","FId":34165917},{"DFN":"Programming language","FN":"programming language","FId":199360897},{"DFN":"Object-oriented programming","FN":"object oriented programming","FId":73752529},{"DFN":"Object (computer science)","FN":"object","FId":64729616},{"DFN":"Method","FN":"method","FId":512554520},{"DFN":"Language construct","FN":"language construct","FId":48859967},{"DFN":"Control flow","FN":"control flow","FId":160191386},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Common Lisp Object System","FN":"common lisp object system","FId":2775879068}],"C":{"CN":"dls","CId":1133200404},"E":"{\"DN\":\"Language constructs for context-oriented programming: an overview of ContextL\",\"IA\":{\"IndexLength\":159,\"InvertedIndex\":{\"ContextL\":[0],\"is\":[1,47,60],\"an\":[2],\"extension\":[3],\"to\":[4,18,30,76,85,126,132],\"the\":[5,37,49,55,64,67,77,83,91,105,110,114,153],\"Common\":[6],\"Lisp\":[7],\"Object\":[8],\"System\":[9],\"that\":[10,66,120],\"allows\":[11],\"for\":[12],\"Context-oriented\":[13],\"Programming.\":[14],\"It\":[15],\"provides\":[16],\"means\":[17],\"associate\":[19],\"partial\":[20,50],\"class\":[21,144],\"and\":[22,29,32],\"method\":[23],\"definitions\":[24,51,145],\"with\":[25],\"layers\":[27,35,148],\"activate\":[31],\"deactivate\":[33],\"such\":[34,87],\"in\":[36,90,128],\"control\":[38],\"flow\":[39],\"of\":[40,54,69,79,117,150],\"a\":[41,45,70],\"running\":[42],\"program.\":[43,94],\"When\":[44],\"layer\":[46,59],\"activated,\":[48],\"become\":[52],\"part\":[53],\"program\":[56,71],\"until\":[57],\"this\":[58],\"deactivated.\":[61],\"This\":[62],\"has\":[63],\"effect\":[65],\"behavior\":[68],\"can\":[72,139],\"be\":[73,140],\"modified\":[74],\"according\":[75],\"context\":[78,88],\"its\":[80],\"use\":[81],\"without\":[82],\"need\":[84],\"mention\":[86],\"dependencies\":[89],\"affected\":[92],\"base\":[93],\"We\":[95],\"illustrate\":[96],\"these\":[97],\"ideas\":[98],\"by\":[99,123,142],\"providing\":[100],\"different\":[101,157],\"UI\":[102],\"views\":[103],\"on\":[104],\"same\":[106,111],\"object\":[107],\"while,\":[108],\"at\":[109],\"time,\":[112],\"keeping\":[113],\"conceptual\":[115],\"simplicity\":[116],\"object-oriented\":[118],\"programming\":[119],\"objects\":[121],\"know\":[122],\"themselves\":[124],\"how\":[125,131],\"behave,\":[127],\"our\":[129],\"case\":[130],\"display\":[133,154],\"themselves.\":[134],\"These\":[135],\"seemingly\":[136],\"contradictory\":[137],\"goals\":[138],\"achieved\":[141],\"separating\":[143],\"into\":[146,156],\"distinct\":[147],\"instead\":[149],\"factoring\":[151],\"out\":[152],\"code\":[155],\"classes.\":[158]}},\"S\":[{\"Ty\":1,\"U\":\"https://dl.acm.org/citation.cfm?id=1146842\"},{\"Ty\":1,\"U\":\"http://portal.acm.org/citation.cfm?id=1146842\"},{\"Ty\":1,\"U\":\"https://doi.acm.org/10.1145/1146841.1146842\"},{\"Ty\":0,\"U\":\"http://dl.acm.org/citation.cfm?id=1146842\"},{\"Ty\":0,\"U\":\"http://doi.acm.org/10.1145/1146841.1146842\"}],\"VFN\":\"Dynamic Languages Symposium\",\"VSN\":\"DLS\",\"FP\":1,\"LP\":10,\"DOI\":\"10.1145/1146841.1146842\",\"CC\":{\"7320905\":[\"The basic notion that dierent partial classes can contribute to a compound final class was one of the original motivations for Flavors, the first object system for a Lisp dialect and one of the precursors of CLOS [ 5 , 30].\"],\"28766398\":[\"See [16] for a paper that shows how this can be achieved in AspectS.\"],\"185175612\":[\"Object inheritance has been used as a design principle for several so-called prototype-based programming environments, most notably Self [29], and has later been integrated into classbased programing languages [4, 6, 21].\"],\"1491095550\":[\"Nevertheless, there exist a number of aspect-oriented approaches that allow for dynamic aspect weaving, most notably Steamloom [3] and our AspectL [8] and AspectS [15].\"],\"1499520738\":[\"The basic notion that dierent partial classes can contribute to a compound final class was one of the original motivations for Flavors, the first object system for a Lisp dialect and one of the precursors of CLOS [5,  30 ].\"],\"1513136098\":[\"Aspect-oriented programming [ 24 ] is an umbrella term for a family of approaches that support modularization of crosscutting concerns.\"],\"1527793496\":[\"According to the CLOS Metaobject Protocol (MOP, [19]) specification, all slot accesses, including those of the automatically generated accessors, go through the function slot-value that takes an object and a slot name as parameters.\"],\"1582123168\":[\"Delegation layers, as in [ 26 , 27] and also combined into a class-based programming language in [25], are very similar to our approach.\"],\"1615603009\":[\"Delegation layers, as in [26, 27] and also combined into a class-based programming language in [ 25 ], are very similar to our approach.\\u001bLike in ContextL, delegation layers define layers that group behavior for sets of objects in [27] and for sets of classes in [ 25 ].\"],\"1996647866\":[\"For this reason, some more recent object systems like Self and Squeak have even changed their frameworks for presenting objects on the screen back to the original idea that objects maintain their own knowledge about how to display themselves (Morphic, [28]).\"],\"1996974848\":[\"Therefore, such code is separated into view objects that need to be notified of changes to model objects (such as instances of Rectangle or Person), leading to variants of the well-known Model-View-Controller (MVC) framework originally introduced with Smalltalk [22].\"],\"1997532030\":[\"Instead, a notion of context is added that essentially boils down to some form of first-class environments [ 13 ].\"],\"2032415879\":[\"The principal notion of such layers has been suggested before ([1, 27], cf.\",\"5 Delegation Layers Delegation layers, as in [26, 27] and also combined into a class-based programming language in [25], are very similar to our approach.\",\"Like in ContextL, delegation layers define layers that group behavior for sets of objects in [27] and for sets of classes in [25].\"],\"2058751520\":[\"Keays and Rakotonirainy [ 18 ] use the term Context-oriented Programming for an approach that separates code skeletons from context-filling code stubs that complete the code skeleton to actually perform some behavior.\"],\"2068606617\":[\"It is an extension of the Common Lisp Object System (CLOS, [2]), but the features we describe are conceptually independent of that particular object model.\"],\"2088018252\":[\"Nevertheless, there exist a number of aspect-oriented approaches that allow for dynamic aspect weaving, most notably Steamloom [3] and our AspectL [8] and AspectS [15].\",\"See [3] for a discussion of other approaches to dynamic aspect weaving.\"],\"2132055297\":[\"Delegation, as defined in [ 23 ], is an inheritance mechanism on the object level as opposed to inheritance at the class level as provided by most mainstream programming languages.\"],\"2146645963\":[\"This has already been discovered and described as the notion of Open Implementations in [ 20 ].\"],\"2335857705\":[\"Object inheritance has been used as a design principle for several so-called prototype-based programming environments, most notably Self [29], and has later been integrated into classbased programing languages [4, 6, 21].\"],\"2724223853\":[\"The principal notion of such layers has been suggested before ([1, 27], cf.\"]},\"PR\":[2150275961,2089889705,2060640309,2144114063,2480195817,2087175184,2115607078,2138363365,2032415879,175922506,1724660581,2063274096,1556513858,1649645444,1978875190,2154597770,1531869376,1527793496,2145304606,2161291379,2150275961,2089889705,2060640309,2144114063,2480195817,2087175184,2115607078,2138363365,2032415879,175922506,1724660581,2063274096,1556513858,1649645444,1978875190,2154597770,1531869376,1527793496,2145304606,2161291379],\"ANF\":[{\"FN\":\"Pascal\",\"LN\":\"Costanza\",\"S\":1},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":2}],\"BV\":\"Proceedings of the 2005 symposium on Dynamic languages\",\"BT\":\"p\",\"PB\":\"ACM\"}"},{"logprob":-18.831,"Id":2138068140,"Ty":"0","Ti":"challenges in software evolution","Pt":"3","L":"en","Y":2005,"D":"2005-01-01","CC":178,"ECC":292,"RId":[1493688518,2153887189,2107294940,2171383742,2100849134,2110385988,2341159485,2128780139,2073433109,2159682002,2164519300,2097968575,2132218581,2116693957,2151187574,1978596374,2335849056,2148554434,1991726357,49434923,1597810835,2101748603,1494340314,114886242,2115434397,1579932672,2119410041,36451426,296482857,2061971986,59286762,2098736179,2128112082,2149068053,1562397875,2613285049,1965948703,1568261676,2069665173,43693908,1984614119,2064125159,2153620864,1966092746,2611589137,63477783,1492801337,1585388051,1987274714,132283786,1985782589,144138566,172222200],"W":["challenges","evolution","software"],"AA":[{"DAuN":"Tom Mens","AuN":"tom mens","AuId":1986880241,"DAfN":"Mons Univ., Belgium","S":1},{"DAuN":"Michel Wermelinger","AuN":"michel wermelinger","AuId":2307186118,"DAfN":"Open University","AfN":"open university","AfId":204136569,"S":2},{"DAuN":"Stéphane Ducasse","AuN":"stephane ducasse","AuId":2013743603,"DAfN":"University of Savoy","AfN":"university of savoy","AfId":70900168,"S":3},{"DAuN":"Serge Demeyer","AuN":"serge demeyer","AuId":2030505841,"DAfN":"University of Antwerp","AfN":"university of antwerp","AfId":149213910,"S":4},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"NTT DoCoMo","AfN":"ntt docomo","AfId":99157191,"S":5},{"DAuN":"Mehdi Jazayeri","AuN":"mehdi jazayeri","AuId":2011565954,"DAfN":"University of Lugano","AfN":"university of lugano","AfId":57201433,"S":6}],"F":[{"DFN":"Systems engineering","FN":"systems engineering","FId":201995342},{"DFN":"Software sizing","FN":"software sizing","FId":201515116},{"DFN":"Software quality analyst","FN":"software quality analyst","FId":188329197},{"DFN":"Software peer review","FN":"software peer review","FId":74579156},{"DFN":"Software construction","FN":"software construction","FId":186846655},{"DFN":"Software aging","FN":"software aging","FId":155584924},{"DFN":"Social software engineering","FN":"social software engineering","FId":182500959},{"DFN":"Package development process","FN":"package development process","FId":123551368},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Backporting","FN":"backporting","FId":21491501}],"C":{"CN":"iwpse","CId":1204557082},"E":"{\"DN\":\"Challenges in software evolution\",\"IA\":{\"IndexLength\":103,\"InvertedIndex\":{\"Today's\":[0],\"information\":[1],\"technology\":[2],\"society\":[3],\"increasingly\":[4],\"relies\":[5],\"on\":[6],\"software\":[7,12,22,51,64,85,100],\"at\":[8],\"all\":[9],\"levels.\":[10],\"Nevertheless,\":[11],\"quality\":[13],\"generally\":[14],\"continues\":[15],\"to\":[16,25,35,43,75,93],\"fall\":[17],\"short\":[18],\"of\":[19,29,50,62,78,89],\"expectations,\":[20],\"and\":[21,38,57],\"systems\":[23],\"continue\":[24],\"suffer\":[26],\"from\":[27],\"symptoms\":[28],\"aging\":[30,52],\"as\":[31],\"they\":[32],\"are\":[33],\"adapted\":[34],\"changing\":[36],\"requirements\":[37],\"environments.\":[39],\"The\":[40,87],\"only\":[41],\"way\":[42],\"overcome\":[44],\"or\":[45],\"avoid\":[46],\"the\":[47,60,63,79,99],\"negative\":[48],\"effects\":[49],\"is\":[53,92],\"by\":[54],\"placing\":[55],\"change\":[56],\"evolution\":[58,101],\"in\":[59,84,98],\"center\":[61],\"development\":[65],\"process.\":[66],\"In\":[67],\"this\":[68,90],\"article\":[69],\"we\":[70,73],\"describe\":[71],\"what\":[72],\"believe\":[74],\"be\":[76],\"some\":[77],\"most\":[80],\"important\":[81],\"research\":[82,96],\"challenges\":[83],\"evolution.\":[86],\"goal\":[88],\"document\":[91],\"provide\":[94],\"novel\":[95],\"directions\":[97],\"domain.\":[102]}},\"S\":[{\"Ty\":3,\"U\":\"http://oro.open.ac.uk/1174/1/mens05iwpse.pdf\"},{\"Ty\":3,\"U\":\"http://informatique.umons.ac.be/ftp_infofs/2005/Mens2005IWPSE-Challenges.pdf\"},{\"Ty\":3,\"U\":\"https://www.researchgate.net/profile/Tom_Mens/publication/4211296_Challenges_in_software_evolution/links/00b7d518e5973d9d07000000.pdf\"},{\"Ty\":1,\"U\":\"https://dl.acm.org/citation.cfm?id=1108137\"},{\"Ty\":1,\"U\":\"http://ieeexplore.ieee.org/document/1572302/\"},{\"Ty\":1,\"U\":\"http://oro.open.ac.uk/1174/\"},{\"Ty\":0,\"U\":\"http://dl.acm.org/citation.cfm?id=1108137\"}],\"VFN\":\"International Workshop on Principles of Software Evolution\",\"VSN\":\"IWPSE\",\"FP\":13,\"LP\":22,\"DOI\":\"10.1109/IWPSE.2005.7\",\"CC\":{\"36451426\":[\"Research in model refactoring is just starting to emerge [31, 35].\"],\"43693908\":[\"These techniques could be implemented as an extension of current tools such as CodeCrawler [16, 17] that already supports the management of large data sets via polymetric views (i.\"],\"59286762\":[\"This challenge raises issues such as tool integration and interoperability, common exchange formats and standards, and so on. As an example of such a shared framework that served as a common software evolution research vehicle within the RELEASE network is the Moose reverse engineering environment [ 8 ].\\u001bHaving aflexible and open-meta model as the one of the Moose reengineering environment supporting entity annotations [ 8 ] and version selection should be regarded as a first step in that direction [7, 10].\"],\"63477783\":[\"Indeed, Conway’s law [4] postulates that the architecture of a software system mirrors the structure of the team that developed it (and, more generally, the structure of a system tends to mirror the structure of the group producing it).\"],\"114886242\":[\"• programs (source code) and design models [6, 34] or software architectures\"],\"172222200\":[\"• programs (source code) and design models [6, 34] or software architectures\"],\"1492801337\":[\"During the workshop it was pointed out that explicit support for software evolution is considerably easier to integrate into dynamically typed languages that offer full reflective capabilities [13].\",\"Dynamic Service Adaptation (DSA) is a promising approach trying to address these issues by providing appropriate means to introspect and navigate basic computational structures and to adjust them accordingly [12, 13].\"],\"1493688518\":[\"So-called agile software processes (including the well-known extreme programming method) already acknowledge and embrace change as an essential fact of life [1].\"],\"1494340314\":[\"Formal techniques are clearly needed in order to ensure one of the basic properties of refactorings, namely that they preserve certain behavioural properties of the software [25].\"],\"1562397875\":[\"One of them is program refactoring, introduced by John Opdyke in the early 1990s as a way to improve the structure of object-oriented programs without affecting their desired external behaviour [27].\"],\"1585388051\":[\"Research in model refactoring is just starting to emerge [31, 35].\"],\"1597810835\":[\"Having aflexible and open-meta model as the one of the Moose reengineering environment supporting entity annotations [8] and version selection should be regarded as a first step in that direction [7,  10 ].\\u001bGirba’s “Yesterday’s Weather” measurement [ 10 ] is another step in the same direction.\"],\"1966092746\":[\"According toWordsworth [33], “a formal method of software development is a process for developing software that exploits the power of mathematical notation and mathematical proofs.\"],\"1984614119\":[\"Having aflexible and open-meta model as the one of the Moose reengineering environment supporting entity annotations [8] and version selection should be regarded as a first step in that direction [ 7 , 10].\"],\"1987274714\":[\"Nevertheless, as Robert Glass observes in his Practical Programmer column [11]: “Formal methods have not, during that extended period of time (well over 30 years by now), had any significant impact on the practice of software engineering.\"],\"2061971986\":[\"Since the advent of model-driven software engineering [24], this challenge becomes increasingly more relevant, and techniques and tools for dealing with model evolution are urgently needed.\"],\"2064125159\":[\"To counter this problem, Miguel Lopez suggested to look at metrology research [23], the science of measurement, which explicitly takes into account the notion ofuncertainty that is also inherent in software evolution [ 19 ].\"],\"2073433109\":[\"These techniques could be implemented as an extension of current tools such as CodeCrawler [16, 17] that already supports the management of large data sets via polymetric views (i.\"],\"2097968575\":[\"This feedback loop is wellknown in software evolution research [20, 32].\"],\"2098736179\":[\"This feedback loop is wellknown in software evolution research [20, 32].\"],\"2100849134\":[\"Another attempt that has been made to address this challenge is a technique that suggests to the developer changes to be performed based on the co-occurrence of past changes [36].\"],\"2115434397\":[\"Classboxes [2] are also a new module system that controls the scope of changes in an application.\"],\"2116693957\":[\"In the context of software evolution there is a need for more empirical research [14].\"],\"2128112082\":[\"One way to tackle this problem is to provide techniques that are as language-parametric (or language-generic, or language-independent) as possible [15,  30 ].\"],\"2132218581\":[\"Other processes, such as the staged life-cycle model, have been proposed as an alternative that provides explicit support for software change and software evolution [ 29 ].\"],\"2148554434\":[\"In order to facilitate such comparative studies, an initial taxonomy for software evolution has been proposed in [3], but further validation and elaboration of this taxonomy is needed.\"],\"2149068053\":[\"Dynamic Service Adaptation (DSA) is a promising approach trying to address these issues by providing appropriate means to introspect and navigate basic computational structures and to adjust them accordingly [12, 13].\"],\"2153620864\":[\"This seems to be a logical continuation of the research that was initiated by Lehman and Ramil in [18], and their theory of software evolution that was proposed in [21].\"],\"2153887189\":[\"Since the publication of Martin Fowler’s book on refactoring [9], this program transformation technique has gained widespread attention [26].\"],\"2159682002\":[\"The phenomenon of software aging, coined by Dave Parnas [28], and the laws of software evolution postulated by Manny Lehman [22] agree that, without active countermeasures, the quality of a software system gradually degrades as the system evolves.\"],\"2171383742\":[\"Since the publication of Martin Fowler’s book on refactoring [9], this program transformation technique has gained widespread attention [26].\"],\"2341159485\":[\"The phenomenon of software aging, coined by Dave Parnas [28], and the laws of software evolution postulated by Manny Lehman [22] agree that, without active countermeasures, the quality of a software system gradually degrades as the system evolves.\"],\"2611589137\":[\"Given the amount of long-lived, industrial-size, open-source projects available today, it should be feasible to come up with such a benchmark [5].\"],\"2613285049\":[\"This seems to be a logical continuation of the research that was initiated by Lehman and Ramil in [18], and their theory of software evolution that was proposed in [21].\"]},\"PR\":[1506513518,2017671454,2103107119,2340864906,2148554434,2150098915,2153887189,1505489038,1649645444,2341159485,146458024,1964429554,2128780139,2132218581,2159682002,1800478330,1905213001,2158864412,1700302626,2008164297,1506513518,2017671454,2103107119,2340864906,2148554434,2150098915,2153887189,1505489038,1649645444,2341159485,146458024,1964429554,2128780139,2132218581,2159682002,1800478330,1905213001,2158864412,1700302626,2008164297],\"ANF\":[{\"FN\":\"Tom\",\"LN\":\"Mens\",\"S\":1},{\"FN\":\"Michel\",\"LN\":\"Wermelinger\",\"S\":2},{\"FN\":\"Stéphane\",\"LN\":\"Ducasse\",\"S\":3},{\"FN\":\"Serge\",\"LN\":\"Demeyer\",\"S\":4},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":5},{\"FN\":\"Mehdi\",\"LN\":\"Jazayeri\",\"S\":6}],\"BV\":\"Eighth International Workshop on Principles of Software Evolution (IWPSE'05)\",\"BT\":\"p\",\"PB\":\"IEEE\"}"},{"logprob":-18.891,"Id":2144114063,"Ty":"0","Ti":"a comparison of context oriented programming languages","Pt":"0","L":"en","Y":2009,"D":"2009-07-07","CC":96,"ECC":149,"RId":[2138363365,2143238865,2075642720,2150275961,1992443356,2089889705,2154597770,2115607078,2087175184,1501829296,1556513858,2097664691,1597389001,2014881790,2115899208,2294229253],"W":["comparison","context","languages","oriented","programming"],"AA":[{"DAuN":"Malte Appeltauer","AuN":"malte appeltauer","AuId":135591984,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":1},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":2},{"DAuN":"Michael Haupt","AuN":"michael haupt","AuId":2146662369,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":3},{"DAuN":"Jens Lincke","AuN":"jens lincke","AuId":2055148755,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":4},{"DAuN":"Michael Perscheid","AuN":"michael perscheid","AuId":698431335,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":5}],"F":[{"DFN":"Very high-level programming language","FN":"very high level programming language","FId":169796678},{"DFN":"Third-generation programming language","FN":"third generation programming language","FId":206146517},{"DFN":"Second-generation programming language","FN":"second generation programming language","FId":11164408},{"DFN":"Programming language theory","FN":"programming language theory","FId":18701968},{"DFN":"Programming language","FN":"programming language","FId":199360897},{"DFN":"Fourth-generation programming language","FN":"fourth generation programming language","FId":145628200},{"DFN":"First-generation programming language","FN":"first generation programming language","FId":570499},{"DFN":"Fifth-generation programming language","FN":"fifth generation programming language","FId":199305712},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Comparison of multi-paradigm programming languages","FN":"comparison of multi paradigm programming languages","FId":74149592}],"E":"{\"DN\":\"A comparison of context-oriented programming languages\",\"IA\":{\"IndexLength\":45,\"InvertedIndex\":{\"Context-oriented\":[0],\"programming\":[1],\"(COP)\":[2],\"extensions\":[3],\"have\":[4],\"been\":[5],\"implemented\":[6],\"for\":[7],\"several\":[8],\"languages.\":[9],\"Each\":[10],\"concrete\":[11],\"language\":[12],\"design\":[13],\"and\":[14,41],\"implementation\":[15],\"comes\":[16],\"with\":[17],\"different\":[18],\"variations\":[19],\"of\":[20,23,34],\"the\":[21,24],\"features\":[22],\"COP\":[25,36],\"paradigm.\":[26],\"In\":[27],\"this\":[28],\"paper,\":[29],\"we\":[30],\"provide\":[31],\"a\":[32],\"comparison\":[33],\"eleven\":[35],\"implementations,\":[37],\"discuss\":[38],\"their\":[39,43],\"designs,\":[40],\"evaluate\":[42],\"performance.\":[44]}},\"S\":[{\"Ty\":3,\"U\":\"http://soft.vub.ac.be/cop09/papers/a6-appeltauer.pdf\"},{\"Ty\":3,\"U\":\"http://www.hirschfeld.org/writings/media/AppeltauerHirschfeldHauptLinckePerscheid_2009_AComparisonOfContextOrientedProgrammingLanguages_AcmDL.pdf\"},{\"Ty\":3,\"U\":\"http://www.hpi.uni-potsdam.de/hirschfeld/publications/media/AppeltauerHirschfeldHauptLinckePerscheid_2009_AComparisonOfContextOrientedProgrammingLanguages_AcmDL.pdf\"},{\"Ty\":1,\"U\":\"https://dl.acm.org/citation.cfm?id=1562118\"},{\"Ty\":0,\"U\":\"http://dl.acm.org/citation.cfm?id=1562118\"}],\"VFN\":\"International Workshop on Context-Oriented Programming\",\"FP\":6,\"DOI\":\"10.1145/1562112.1562118\",\"CC\":{\"1501829296\":[\"It serves the purpose of demonstrating the applicability of a machine model and semantics for multi-dimensional separation of concerns [8] to COP.\"],\"1556513858\":[\"gramming languages were developed, namely ContextS [9] for Smalltalk, ContextR [15] for Ruby, ContextJS for JavaScript, ContextPy [16] and PyContext [17] for Python, and ContextG for Groovy.\"],\"1597389001\":[\"It is implemented as an aspect-oriented precompiler based on the LogicAJ [12] aspect language and provides a more convenient syntax than ContextJ*.\"],\"1992443356\":[\"ContextL [4,5] was the first COP extension to a programming language.\"],\"2014881790\":[\"The cj prototype [13, 14] is an implementation of a minimal subset of ContextJ.\"],\"2075642720\":[\"programming [3], and context-oriented programming (COP)\"],\"2087175184\":[\"gramming languages were developed, namely ContextS [9] for Smalltalk, ContextR [15] for Ruby, ContextJS for JavaScript, ContextPy [16] and PyContext [17] for Python, and ContextG for Groovy.\",\"PyContext [17] suggests the concepts of dynamic variables [7] and implicit layer activation.\"],\"2089889705\":[\"Aside from these dynamic languages, three COP extensions to the Java programming language exist, namely ContextJ [ 1 ], ContextJ* [10], and ContextLogicAJ [2].\\u001bThe rst ideas about a ContextJ language were presented in [5]; a language specication and compiler-based implementation of ContextJ is provided by [ 1 ].\"],\"2097664691\":[\"The cj prototype [13, 14] is an implementation of a minimal subset of ContextJ.\"],\"2115607078\":[\"Another approach to context-orientation is Ambience and its underlying Ambient Object System [6] that is based on Common Lisp.\"],\"2115899208\":[\"Aside from these dynamic languages, three COP extensions to the Java programming language exist, namely ContextJ [1], ContextJ* [10], and ContextLogicAJ [2].\"],\"2138363365\":[\"The separation of cross-cutting concerns is an issue that is considered by several programming language paradigms, such as aspect-oriented programming [ 11 ], feature-oriented programming [3], and context-oriented programming (COP) [10].\"],\"2143238865\":[\"The separation of cross-cutting concerns is an issue that is considered by several programming language paradigms, such as aspect-oriented programming [11], feature-oriented programming [3], and context-oriented programming (COP) [10].\"],\"2150275961\":[\"[10].\",\"For a detailed description of the concepts of COP, we refer to [10]; Section 2.\",\"Aside from these dynamic languages, three COP extensions to the Java programming language exist, namely ContextJ [1], ContextJ* [10], and ContextLogicAJ [2].\"],\"2154597770\":[\"ContextL [4,5] was the first COP extension to a programming language.\",\"The first ideas about a ContextJ language were presented in [5]; a language specification and compiler-based implementation of ContextJ is provided by [1].\"],\"2294229253\":[\"PyContext [17] suggests the concepts of dynamic variables [7] and implicit layer activation.\"]},\"PR\":[2150275961,1992443356,2089889705,2480195817,2087175184,2060640309,1556513858,1978875190,175922506,2115607078,2172169742,1724660581,2138363365,2145919358,1990911977,2145304606,1985637830,2089287449,1649645444,1665004853,2150275961,1992443356,2089889705,2480195817,2087175184,2060640309,1556513858,1978875190,175922506,2115607078,2172169742,1724660581,2138363365,2145919358,1990911977,2145304606,1985637830,2089287449,1649645444,1665004853],\"ANF\":[{\"FN\":\"Malte\",\"LN\":\"Appeltauer\",\"S\":1},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":2},{\"FN\":\"Michael\",\"LN\":\"Haupt\",\"S\":3},{\"FN\":\"Jens\",\"LN\":\"Lincke\",\"S\":4},{\"FN\":\"Michael\",\"LN\":\"Perscheid\",\"S\":5}],\"BV\":\"International Workshop on Context-Oriented Programming\",\"BT\":\"p\",\"PB\":\"ACM\"}"},{"logprob":-18.921,"Id":2045398665,"Ty":"0","Ti":"checks and balances constraint solving without surprises in object constraint programming languages","Pt":"3","L":"en","Y":2015,"D":"2015-10-23","CC":24,"ECC":24,"RId":[1480909796,2060440626,2123396057,2017035494,2432221968,2339376177,2053637323,2115261880,2168617729,2295061292,2339290067,2403131032,99012786,2019153550,2158148130,2120656140,2107596222,2103729840,2555448203,2143590189,2139272205,2247063045,1878147133],"W":["balances","checks","constraint","languages","object","programming","solving","surprises","without"],"AA":[{"DAuN":"Tim Felgentreff","AuN":"tim felgentreff","AuId":1964871710,"DAfN":"HPI, Germany","S":1},{"DAuN":"Todd D. Millstein","AuN":"todd d millstein","AuId":294596595,"DAfN":"University of California, Los Angeles","AfN":"university of california los angeles","AfId":161318765,"S":2},{"DAuN":"Alan Borning","AuN":"alan borning","AuId":2020136591,"DAfN":"University of Washington","AfN":"university of washington","AfId":201448701,"S":3},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"HPI, Germany","S":4}],"F":[{"DFN":"Theoretical computer science","FN":"theoretical computer science","FId":80444323},{"DFN":"Solver","FN":"solver","FId":2778770139},{"DFN":"Programming language","FN":"programming language","FId":199360897},{"DFN":"Imperative programming","FN":"imperative programming","FId":90871949},{"DFN":"Fifth-generation programming language","FN":"fifth generation programming language","FId":199305712},{"DFN":"Constraint satisfaction problem","FN":"constraint satisfaction problem","FId":199622910},{"DFN":"Constraint satisfaction","FN":"constraint satisfaction","FId":44616089},{"DFN":"Constraint programming","FN":"constraint programming","FId":173404611},{"DFN":"Constraint logic programming","FN":"constraint logic programming","FId":176783269},{"DFN":"Constraint (mathematics)","FN":"constraint","FId":30416901},{"DFN":"Computer science","FN":"computer science","FId":41008148}],"C":{"CN":"oopsla","CId":1138732554},"CI":{"CIN":"oopsla 2015","CIId":652141171},"E":"{\"DN\":\"Checks and balances: constraint solving without surprises in object-constraint programming languages\",\"IA\":{\"IndexLength\":235,\"InvertedIndex\":{\"Object-constraint\":[0],\"programming\":[1],\"systems\":[2,22,60],\"integrate\":[3],\"declarative\":[4],\"constraint\":[5,32,97,127],\"solving\":[6],\"with\":[7,20,205],\"imperative,\":[8],\"object-oriented\":[9,90],\"languages,\":[10],\"seamlessly\":[11],\"providing\":[12,179],\"the\":[13,31,36,57,64,67,84,88,93,96,123,126,142,146,160,171,174,185,200,222],\"power\":[14,29,65,124],\"of\":[15,66,86,92,110,125,145,162,173,184,196,202,228],\"both\":[16,180],\"paradigms.\":[17],\"However,\":[18],\"experience\":[19],\"object-constraint\":[21,130,176],\"has\":[23],\"shown\":[24],\"that\":[25,40,61,121,209,219],\"giving\":[26],\"too\":[27],\"much\":[28],\"to\":[30,104,132,212,217],\"solver\":[33,128],\"opens\":[34],\"up\":[35],\"potential\":[37],\"for\":[38,48,69,192],\"solutions\":[39,139],\"are\":[41],\"surprising\":[42,138],\"and\":[43,53,99,137,157,188,216,233],\"unintended\":[44],\"as\":[45,47,225],\"well\":[46],\"complex\":[49],\"interactions\":[50],\"between\":[51],\"constraints\":[52,73,149,153,158],\"imperative\":[54],\"code.\":[55],\"On\":[56],\"other\":[58],\"hand,\":[59],\"overly\":[62],\"limit\":[63],\"solver,\":[68],\"example\":[70],\"by\":[71],\"disallowing\":[72],\"involving\":[74,154],\"mutable\":[75,151],\"objects,\":[76,152],\"object\":[77,155],\"identity,\":[78,156],\"or\":[79],\"polymorphic\":[80],\"message\":[81,163],\"sends,\":[82],\"run\":[83,213],\"risk\":[85],\"excluding\":[87],\"core\":[89,194],\"features\":[91,144],\"language\":[94,177,187],\"from\":[95],\"part,\":[98],\"consequently\":[100],\"not\":[101],\"being\":[102],\"able\":[103],\"express\":[105],\"declaratively\":[106],\"a\":[107,189,193],\"large\":[108],\"set\":[109],\"interesting\":[111],\"problem\":[112],\"solutions.\":[113],\"In\":[114],\"this\":[115,203],\"paper\":[116],\"we\":[117],\"present\":[118,166],\"design\":[119],\"principles\":[120],\"tame\":[122],\"in\":[129,170,230],\"languages\":[131],\"avoid\":[133],\"difficult\":[134],\"corner\":[135],\"cases\":[136],\"while\":[140],\"retaining\":[141],\"key\":[143],\"approach,\":[147],\"including\":[148],\"over\":[150],\"on\":[159],\"results\":[161,224],\"sends.\":[164],\"We\":[165,198],\"our\":[167],\"solution\":[168],\"concretely\":[169],\"context\":[172],\"Babelsberg\":[175,229],\"framework,\":[178],\"an\":[181,206],\"informal\":[182],\"description\":[183],\"resulting\":[186],\"formal\":[190],\"semantics\":[191,204],\"subset\":[195],\"it.\":[197],\"validate\":[199],\"utility\":[201],\"executable\":[207],\"version\":[208],\"allows\":[210],\"us\":[211],\"test\":[214],\"programs\":[215],\"verify\":[218],\"they\":[220],\"provide\":[221],\"same\":[223],\"existing\":[226],\"implementations\":[227],\"JavaScript,\":[231],\"Ruby,\":[232],\"Smalltalk.\":[234]}},\"S\":[{\"Ty\":3,\"U\":\"http://www.vpri.org/pdf/tr2015002_oopsla15_babelsberg.pdf\"},{\"Ty\":1,\"U\":\"http://dblp.uni-trier.de/db/conf/oopsla/oopsla2015.html#FelgentreffMBH15\"},{\"Ty\":1,\"U\":\"https://dl.acm.org/citation.cfm?doid=2814270.2814311\"},{\"Ty\":1,\"U\":\"http://www.cs.ucla.edu/~todd/research/oopsla15.pdf\"}],\"VFN\":\"Conference on Object-Oriented Programming Systems, Languages, and Applications\",\"VSN\":\"OOPSLA\",\"V\":50,\"I\":10,\"FP\":767,\"LP\":782,\"DOI\":\"10.1145/2814270.2814311\",\"CC\":{\"99012786\":[\"Finally, αRby [18] is a language that embeds the Alloy specification language [12] in Ruby.\"],\"1480909796\":[\"We then evaluated a set of test programs in these executable semantics, using the Z3 solver [3] to provide heap and environment updates.\"],\"1878147133\":[\"First, we have implemented our natural semantics in the Relational Meta-Language (RML) [20], yielding executable semantics both for the core Babelsberg/UID language presented above, and for Babelsberg/Objects [6], an extended, object-oriented language, which includes support for classes, methods, and constraint definitions that can include polymorphic method calls.\"],\"2017035494\":[\"(A string theory exists for an older version of Z3 [23], but does not work in recent versions.\"],\"2019153550\":[\"Object-Constraint Programming (OCP) [4] integrates constraint satisfaction with common imperative and objectoriented features.\",\"Instances of Babelsberg include Babelsberg/R (a Ruby extension) [4], Babelsberg/JS (a JavaScript extension) [5], and Babelsberg/S (a Squeak extension) [10].\",\"We explicitly allowed such benign side effects in prior work [4, 5], but our formal semantics now disallows them.\",\"We explicitly allowed such methods in the original Babelsberg design, as long as the variables were used in static-single-assignment (SSA) fashion [4].\"],\"2053637323\":[\"Instead, we use the DeltaBlue local propagation solver [9] to propagate identity changes as they occur, and call any solvers for value constraints after that.\"],\"2060440626\":[\"Finally, αRby [18] is a language that embeds the Alloy specification language [12] in Ruby.\"],\"2103729840\":[\"Indeed, Babelsberg inherits the described issues, as well as its overall approach, from the earlier Kaleidoscope [8, 16] and Turtle [11] constraint imperative programming languages, and our approach is also useful for constraint systems such as BackTalk [19], Kaplan [14], and Squander [17] (see Section 5).\",\"Kaleidoscope [8, 16] was an early Constraint Imperative Programming (CIP) language, and had to address issues that\",\"Kaleidoscope’93 also included support for identity constraints [16], to express the distinction in object-oriented languages between object equality and identity.\"],\"2115261880\":[\"Indeed, Babelsberg inherits the described issues, as well as its overall approach, from the earlier Kaleidoscope [8, 16] and Turtle [11] constraint imperative programming languages, and our approach is also useful for constraint systems such as BackTalk [19], Kaplan [14], and Squander [17] (see Section 5).\",\"Turtle [11] is a more recent CIP language written from scratch, while Kaplan [14] provides constraints in Scala.\"],\"2120656140\":[\"Mozart/Oz [22] is a multi-paradigm language that supports functional, imperative, and logic programming.\"],\"2123396057\":[\", results such as 10 ≤ x ≤ 20 rather than a single value for x, and backtracking among multiple answers, as available in for example constraint logic programming [13], is not currently a goal.\"],\"2139272205\":[\"Object identity plays an essential role when using an objectoriented language to model aspects of the real world and so, in a language that integrates constraints with objectoriented features, we need to resolve the tension between these fundamental features [15].\"],\"2143590189\":[\"Indeed, Babelsberg inherits the described issues, as well as its overall approach, from the earlier Kaleidoscope [8, 16] and Turtle [11] constraint imperative programming languages, and our approach is also useful for constraint systems such as BackTalk [19], Kaplan [14], and Squander [17] (see Section 5).\",\"BackTalk [19, 21] and SQUANDER [17] explicitly allow the constraint solver to determine object structure, and\"],\"2158148130\":[\"Indeed, Babelsberg inherits the described issues, as well as its overall approach, from the earlier Kaleidoscope [8, 16] and Turtle [11] constraint imperative programming languages, and our approach is also useful for constraint systems such as BackTalk [19], Kaplan [14], and Squander [17] (see Section 5).\",\"Here we also include a notion from previous system [8] that the solver should always pick a solution that is “close” to the current state of the system.\",\"Kaleidoscope [8, 16] was an early Constraint Imperative Programming (CIP) language, and had to address issues that\"],\"2168617729\":[\"Indeed, Babelsberg inherits the described issues, as well as its overall approach, from the earlier Kaleidoscope [8, 16] and Turtle [11] constraint imperative programming languages, and our approach is also useful for constraint systems such as BackTalk [19], Kaplan [14], and Squander [17] (see Section 5).\",\"BackTalk [19, 21] and SQUANDER [17] explicitly allow the constraint solver to determine object structure, and\"],\"2295061292\":[\"Because our semantics relies on soft constraints, we use an experimental version of Z3 that supports them [1].\"],\"2339376177\":[\"The theory of read-only annotations applies only to single variables [2, 6] and we make the same restriction in our semantics below, but in practical languages we also permit read-only annotations\",\"There are a number of alternatives for the definition of what constitutes an optimal solution given competing soft constraints, each with their own advantages and disadvantages [2, 6].\",\"We assume that the solver supports our primitive types, records, and uninterpreted functions, as well as hard and soft constraints [2].\"],\"2403131032\":[\"Instances of Babelsberg include Babelsberg/R (a Ruby extension) [4], Babelsberg/JS (a JavaScript extension) [5], and Babelsberg/S (a Squeak extension) [10].\",\"The electrical circuit editor and simulator [5], for example, uses constraints and an appropriate solver to capture the relevant laws of physics such as Ohm’s Law and Kirchhoff’s Current Laws and to solve the resulting sets of simultaneous lin-\",\"The color picker and temperature converter [5] illustrates hard and soft constraints, as well as support for fast incremental re-solving during interactive editing.\",\"6 The examples we used are part of a published artifact [5], and are also available from the Babelsberg/JS repository at https://github.\",\"We explicitly allowed such benign side effects in prior work [4, 5], but our formal semantics now disallows them.\"],\"2555448203\":[\"Instances of Babelsberg include Babelsberg/R (a Ruby extension) [4], Babelsberg/JS (a JavaScript extension) [5], and Babelsberg/S (a Squeak extension) [10].\"]},\"PR\":[2308530788,2085158159,1497382039,2555448203,87201186,338442185,2168617729,2235113232,1505808374,2023431097,2119772607,2417401027,1721911782,102173736,2403875567,2117658650,2471419789,1586343560,2063760679,1580876082,2308530788,2085158159,1497382039,2555448203,87201186,338442185,2168617729,2235113232,1505808374,2023431097,2119772607,2417401027,1721911782,102173736,2403875567,2117658650,2471419789,1586343560,2063760679,1580876082],\"ANF\":[{\"FN\":\"Tim\",\"LN\":\"Felgentreff\",\"S\":1},{\"FN\":\"Todd D.\",\"LN\":\"Millstein\",\"S\":2},{\"FN\":\"Alan\",\"LN\":\"Borning\",\"S\":3},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":4}],\"BV\":\"Proceedings of the 2015 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications\",\"BT\":\"p\",\"PB\":\"ACM\"}"},{"logprob":-19.008,"Id":2089889705,"Ty":"0","Ti":"contextj context oriented programming with java","Pt":"1","L":"en@@@ja","Y":2011,"D":"2011-01-01","CC":75,"ECC":117,"RId":[2480195817,2143238865,2075642720,2150275961,2129063689,2070821087,1739798036,1992443356,2065646798,1480731572,2144114063,2118300983,2157920816,2154597770,2115607078,2087175184,956539890,1556513858,83189099,2097664691,2172169742,1490855506,2014881790,2115899208,2002568360],"W":["context","contextj","java","oriented","programming"],"AA":[{"DAuN":"Malte Appeltauer","AuN":"malte appeltauer","AuId":135591984,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":1},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":2},{"DAuN":"Michael Haupt","AuN":"michael haupt","AuId":2146662369,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":3},{"DAuN":"Hidehiko Masuhara","AuN":"hidehiko masuhara","AuId":2087436944,"DAfN":"University of Tokyo","AfN":"university of tokyo","AfId":74801974,"S":4}],"F":[{"DFN":"strictfp","FN":"strictfp","FId":174954855},{"DFN":"Very high-level programming language","FN":"very high level programming language","FId":169796678},{"DFN":"Real time Java","FN":"real time java","FId":132106392},{"DFN":"Programming language","FN":"programming language","FId":199360897},{"DFN":"Java","FN":"java","FId":548217200},{"DFN":"Higher-order programming","FN":"higher order programming","FId":67478104},{"DFN":"Generics in Java","FN":"generics in java","FId":172482141},{"DFN":"First-generation programming language","FN":"first generation programming language","FId":570499},{"DFN":"Extensible programming","FN":"extensible programming","FId":131531359},{"DFN":"Computer science","FN":"computer science","FId":41008148}],"J":{"JN":"journal of information processing","JId":192843772},"E":"{\"DN\":\"ContextJ: Context-oriented Programming with Java\",\"IA\":{\"IndexLength\":117,\"InvertedIndex\":{\"Context-oriented\":[0],\"programming\":[1,35],\"(COP)\":[2],\"allows\":[3],\"for\":[4,17,32,50],\"the\":[5,33,59,93,108],\"modularization\":[6],\"of\":[7,107,110],\"context-dependent\":[8],\"behavioral\":[9],\"variations.\":[10],\"So\":[11],\"far,\":[12],\"COP\":[13,48],\"has\":[14],\"been\":[15],\"implemented\":[16],\"dynamically-typed\":[18],\"languages\":[19],\"such\":[20],\"as\":[21],\"Lisp,\":[22],\"Smalltalk,\":[23],\"Python,\":[24],\"and\":[25,31,42,71,80,96,100,113],\"Ruby\":[26],\"relying\":[27],\"on\":[28,39],\"reflection\":[29],\"mechanisms,\":[30],\"statically-typed\":[34],\"language\":[36,95],\"Java\":[37,60],\"based\":[38],\"a\":[40,43,69,72],\"library\":[41],\"pre-processor.\":[44],\"ContextJ\":[45,63,94],\"is\":[46,64],\"our\":[47,111],\"implementation\":[49,109],\"Java.\":[51],\"It\":[52],\"properly\":[53],\"integrates\":[54],\"COP’s\":[55],\"layer\":[56],\"concept\":[57],\"into\":[58],\"type\":[61],\"system.\":[62],\"compiler-based.\":[65],\"As\":[66],\"confirmed\":[67],\"by\":[68],\"benchmark\":[70],\"case\":[73],\"study,\":[74],\"it\":[75],\"provides\":[76],\"both\":[77],\"better\":[78],\"performance\":[79],\"higher-level\":[81],\"abstraction\":[82],\"mechanisms\":[83],\"than\":[84],\"its\":[85,98],\"Java-based\":[86],\"predecessors.\":[87],\"In\":[88],\"this\":[89],\"paper,\":[90],\"we\":[91,103],\"present\":[92],\"explain\":[97],\"constructs\":[99],\"semantics.\":[101],\"Further,\":[102],\"give\":[104],\"an\":[105],\"overview\":[106],\"compiler\":[112],\"discuss\":[114],\"run-time\":[115],\"benchmarks.\":[116]}},\"S\":[{\"Ty\":3,\"U\":\"http://prg.is.titech.ac.jp/members/masuhara/papers/jssst2009.pdf\"},{\"Ty\":3,\"U\":\"https://www.jstage.jst.go.jp/article/imt/6/2/6_2_399/_pdf\"},{\"Ty\":1,\"U\":\"http://ci.nii.ac.jp/naid/130000770579\"},{\"Ty\":1,\"U\":\"https://www.jstage.jst.go.jp/article/imt/6/2/6_2_399/_article/-char/ja/\"}],\"VFN\":\"Journal of Information Processing\",\"V\":6,\"I\":2,\"FP\":399,\"LP\":419,\"DOI\":\"10.11185/imt.6.399\",\"PR\":[2150275961,1992443356,2060640309,2144114063,2480195817,175922506,2087175184,1556513858,1978875190,2172169742,2115607078,1724660581,2145304606,2033348393,2089287449,2138363365,6784408,1985637830,1990911977,2115899208,2150275961,1992443356,2060640309,2144114063,2480195817,175922506,2087175184,1556513858,1978875190,2172169742,2115607078,1724660581,2145304606,2033348393,2089287449,2138363365,6784408,1985637830,1990911977,2115899208],\"ANF\":[{\"FN\":\"Malte\",\"LN\":\"Appeltauer\",\"S\":1},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":2},{\"FN\":\"Michael\",\"LN\":\"Haupt\",\"S\":3},{\"FN\":\"Hidehiko\",\"LN\":\"Masuhara\",\"S\":4}],\"BV\":\"Journal of Information Processing\",\"BT\":\"a\",\"PB\":\"Information and Media Technologies Editorial Board\"}"},{"logprob":-19.293,"Id":1978875190,"Ty":"0","Ti":"an open implementation for context oriented layer composition in contextjs","Pt":"1","L":"en","Y":2011,"D":"2011-12-01","CC":50,"ECC":76,"RId":[2138363365,2143238865,2014309790,2075642720,2150275961,164488634,2172147300,2129063689,2045723688,1992443356,2065646798,2111898165,2115680394,2076638640,2144114063,2157920816,2089889705,1964757858,2075832738,2154597770,2115607078,2087175184,1527077815,1556513858,1602100009,2014881790,2166901142,1996647866,2115899208,2032415879,2089794420,2101876886,1529505352,2106193618,2002568360,2090124836,1482265802,46244955,2250050941],"W":["composition","context","contextjs","implementation","layer","open","oriented"],"AA":[{"DAuN":"Jens Lincke","AuN":"jens lincke","AuId":2055148755,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":1},{"DAuN":"Malte Appeltauer","AuN":"malte appeltauer","AuId":135591984,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":2},{"DAuN":"Bastian Steinert","AuN":"bastian steinert","AuId":2142371068,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":3},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":4}],"F":[{"DFN":"Theoretical computer science","FN":"theoretical computer science","FId":80444323},{"DFN":"Open implementation","FN":"open implementation","FId":2781022897},{"DFN":"Distributed computing","FN":"distributed computing","FId":120314980},{"DFN":"Control flow","FN":"control flow","FId":160191386},{"DFN":"Constructed language","FN":"constructed language","FId":94922259},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Composition (visual arts)","FN":"composition","FId":169260993},{"DFN":"Abstraction","FN":"abstraction","FId":124304363}],"J":{"JN":"scp","JId":21029587},"E":"{\"DN\":\"An open implementation for context-oriented layer composition in ContextJS\",\"IA\":{\"IndexLength\":159,\"InvertedIndex\":{\"Context-oriented\":[0],\"programming\":[1],\"(COP)\":[2],\"provides\":[3],\"dedicated\":[4],\"support\":[5],\"for\":[6,27,39,66,73,84,153],\"defining\":[7],\"and\":[8,69,124,147],\"composing\":[9],\"variations\":[10],\"to\":[11,92,109,121,128,132,156],\"a\":[12,22,32],\"basic\":[13],\"program\":[14],\"behavior.\":[15],\"A\":[16],\"variation,\":[17],\"which\":[18],\"is\":[19],\"defined\":[20],\"within\":[21],\"layer,\":[23],\"can\":[24,46,53,102],\"be\":[25,122,133],\"de-/activated\":[26],\"the\":[28,71,94,104,129,137],\"dynamic\":[29,56],\"extent\":[30],\"of\":[31,80,96,139],\"code\":[33],\"block.\":[34],\"While\":[35],\"this\":[36],\"mechanism\":[37],\"allows\":[38],\"control\":[40,61],\"flow-specific\":[41],\"scoping,\":[42],\"expressing\":[43],\"behavior\":[44,67],\"adaptations\":[45,52],\"demand\":[47],\"alternative\":[48],\"scopes.\":[49],\"For\":[50],\"instance,\":[51],\"depend\":[54],\"on\":[55],\"object\":[57],\"structure\":[58],\"rather\":[59],\"than\":[60],\"flow.\":[62],\"We\":[63,90,135],\"present\":[64,148],\"scenarios\":[65],\"adaptation\":[68],\"identify\":[70],\"need\":[72],\"new\":[74,85,149],\"scoping\":[75,81,97,142,150],\"mechanisms.\":[76],\"The\":[77],\"increasing\":[78],\"number\":[79],\"mechanisms\":[82,98,143,151],\"calls\":[83],\"language\":[86,106],\"abstractions\":[87],\"representing\":[88],\"them.\":[89],\"suggest\":[91],\"open\":[93,114],\"implementation\":[95,115,138],\"so\":[99],\"that\":[100,126],\"developers\":[101],\"extend\":[103],\"COP\":[105,141],\"core\":[107],\"according\":[108],\"their\":[110],\"specific\":[111],\"needs.\":[112],\"Our\":[113],\"moves\":[116],\"layer\":[117],\"composition\":[118],\"into\":[119],\"objects\":[120],\"affected\":[123],\"with\":[125],\"closer\":[127],\"method\":[130],\"dispatch\":[131],\"changed.\":[134],\"discuss\":[136],\"established\":[140],\"using\":[144],\"our\":[145,154],\"approach\":[146],\"developed\":[152],\"enhancements\":[155],\"Lively\":[157],\"Kernel.\":[158]}},\"S\":[{\"Ty\":1,\"U\":\"https://www.sciencedirect.com/science/article/pii/S0167642310002121\"},{\"Ty\":1,\"U\":\"http://dblp.uni-trier.de/db/journals/scp/scp76.html#LinckeASH11\"},{\"Ty\":0,\"U\":\"http://www.sciencedirect.com/science/article/pii/S0167642310002121\"}],\"VFN\":\"Science of Computer Programming\",\"V\":76,\"I\":12,\"FP\":1194,\"LP\":1209,\"DOI\":\"10.1016/j.scico.2010.11.013\",\"CC\":{\"46244955\":[\"Morphic, known from Self [38] and Squeak/Smalltalk [20], allows for direct interaction with primitive graphical objects such as rectangles, ellipses, and text fields, that can be composed to more complex objects up to rich user interface applications.\",\"Us changes message passing of Self [38] to incorporate perspectives.\"],\"1482265802\":[\"Our solution is based on an open implementation [23,25] in which layer composition strategies are encapsulated into objects.\"],\"1527077815\":[\"Having conducted several case studies inwhichwe applied COP to various projects [27,26] related to Lively Kernel [21],we identified needs for scoping strategies different from what has been proposed and implemented so far.\"],\"1529505352\":[\"Classboxes [10] support static scoping of behavioral adaptations.\",\"In future work, wewill analyze the applicability of other scopingmechanisms described in the literature, such as implicit layer activation [39] or Classboxes [10].\"],\"2014309790\":[\"Our first example is an adaptation of a xUnit-like test runner2 [9].\"],\"2014881790\":[\"A minimal subset of ContextJ, cj, is implemented for the delMDSOC kernel [31].\"],\"2065646798\":[\"For a comparison of AOP and COP as appropriate representation of behavioral variations, we distinguish between homogeneous and heterogeneous crosscutting concerns [1].\",\"AOP implementations of heterogeneous crosscuts tend to be less understandable to developers than layer-based implementations [1], since they have to mimic COP behavior using pointcuts with dynamic conditions and advice that are complex and fragile for changes.\"],\"2111898165\":[\"Modularization approaches such as traits [34,14] andmixins [11] allow for an additional inheritance relationship next to the class hierarchy, but do not offer dynamic adaptation like layers.\"],\"2154597770\":[\"ContextL [12,13], based on Lisp and the Common Lisp Object System (CLOS), was the first COP extension to a programming language.\"]},\"PR\":[2150275961,1992443356,2144114063,2089889705,2480195817,2060640309,2145304606,1724660581,175922506,2087175184,2342859941,2045723688,2115607078,1556513858,2138363365,1649645444,1985637830,2063274096,6784408,1527077815,2150275961,1992443356,2144114063,2089889705,2480195817,2060640309,2145304606,1724660581,175922506,2087175184,2342859941,2045723688,2115607078,1556513858,2138363365,1649645444,1985637830,2063274096,6784408,1527077815],\"ANF\":[{\"FN\":\"Jens\",\"LN\":\"Lincke\",\"S\":1},{\"FN\":\"Malte\",\"LN\":\"Appeltauer\",\"S\":2},{\"FN\":\"Bastian\",\"LN\":\"Steinert\",\"S\":3},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":4}],\"BV\":\"Science of Computer Programming\",\"BT\":\"a\",\"PB\":\"Elsevier\"}"},{"logprob":-19.386,"Id":1491095550,"Ty":"0","Ti":"aspects aspect oriented programming with squeak","Pt":"0","L":"en","Y":2002,"D":"2002-10-07","CC":119,"ECC":185,"RId":[2138363365,2480195817,2143238865,2139907081,1770006921,1552830686,1539723268,2782959840,158038449],"W":["aspect","aspects","oriented","programming","squeak"],"AA":[{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"NTT DoCoMo","AfN":"ntt docomo","AfId":99157191,"S":1}],"F":[{"DFN":"Virtual machine","FN":"virtual machine","FId":25344961},{"DFN":"Squeak","FN":"squeak","FId":2780281086},{"DFN":"Smalltalk","FN":"smalltalk","FId":2777293101},{"DFN":"Programming language","FN":"programming language","FId":199360897},{"DFN":"Pointcut","FN":"pointcut","FId":2776219908},{"DFN":"Metaobject","FN":"metaobject","FId":2778335927},{"DFN":"Elegance","FN":"elegance","FId":2778698498},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"AspectJ","FN":"aspectj","FId":2781009160},{"DFN":"Aspect-oriented programming","FN":"aspect oriented programming","FId":60051680}],"E":"{\"DN\":\"AspectS - Aspect-Oriented Programming with Squeak\",\"IA\":{\"IndexLength\":73,\"InvertedIndex\":{\"AspectS\":[0,39,54,62],\"is\":[1],\"an\":[2],\"approach\":[3],\"to\":[4,23,31],\"general-purpose\":[5],\"aspect-oriented\":[6],\"programming\":[7],\"in\":[8,38],\"the\":[9,19,25,65],\"Squeak/Smalltalk\":[10],\"environment.\":[11],\"Based\":[12],\"on\":[13],\"concepts\":[14],\"of\":[15,49,67],\"AspectJ\":[16],\"it\":[17],\"extends\":[18],\"Smalltalk\":[20,56],\"metaobject\":[21,46],\"protocol\":[22],\"accommodate\":[24],\"aspect\":[26],\"modularity\":[27],\"mechanism.\":[28],\"In\":[29],\"contrast\":[30],\"systems\":[32],\"like\":[33],\"AspectJ,\":[34],\"weaving\":[35],\"and\":[36,71],\"unweaving\":[37],\"happens\":[40],\"dynamically\":[41],\"at\":[42],\"runtime,\":[43],\"on-demand,\":[44],\"employing\":[45],\"composition.\":[47],\"Instead\":[48],\"introducing\":[50],\"new\":[51],\"language\":[52],\"constructs,\":[53],\"utilizes\":[55],\"itself\":[57],\"as\":[58],\"its\":[59,69],\"pointcut\":[60],\"language.\":[61],\"benefits\":[63],\"from\":[64],\"expressiveness\":[66],\"Smalltalk,\":[68],\"elegance\":[70],\"power.\":[72]}},\"S\":[{\"Ty\":3,\"U\":\"http://www.hirschfeld.org/writings/media/Hirschfeld_2003_AspectSAspectOrientedProgrammingWithSqueak_Lncs2591.pdf\"},{\"Ty\":3,\"U\":\"https://link.springer.com/content/pdf/10.1007%2F3-540-36557-5_17.pdf\"},{\"Ty\":3,\"U\":\"https://rd.springer.com/content/pdf/10.1007%2F3-540-36557-5_17.pdf\"},{\"Ty\":1,\"U\":\"https://link.springer.com/chapter/10.1007/3-540-36557-5_17\"},{\"Ty\":1,\"U\":\"https://rd.springer.com/chapter/10.1007%2F3-540-36557-5_17\"},{\"Ty\":1,\"U\":\"https://dl.acm.org/citation.cfm?id=744231\"},{\"Ty\":0,\"U\":\"http://dl.acm.org/citation.cfm?id=744231\"}],\"VFN\":\"NODe '02 Revised Papers from the International Conference NetObjectDays on Objects, Components, Architectures, Services, and Applications for a Networked World\",\"FP\":216,\"LP\":232,\"DOI\":\"10.1007/3-540-36557-5_17\",\"CC\":{\"158038449\":[\"It benefits greatly from the simple, elegant, and open architecture of Squeak itself as well [6, 9, 17].\"],\"1539723268\":[\"As of today there are several approaches that support aspect-oriented concepts, ranging from general-purpose aspect languages like AspectJ [1, 13] to domainspecific aspect languages such as RG or D [15,  14 ].\"],\"1770006921\":[\"It benefits greatly from the simple, elegant, and open architecture of Squeak itself as well [6, 9, 17].\"],\"2138363365\":[\"Aspect-Oriented Programming (AOP) is based on the assumption that crosscutting is inherent to complex systems [ 12 ].\"],\"2139907081\":[\"4 The notation used in this text is based on OOSE/Objectory [10].\"],\"2782959840\":[\"It mainly draws on the results of two projects: the first is AspectJ from Xerox PARC, a general-purpose aspect-oriented language extension to Java, and the second is John Brant’s MethodWrappers, a powerful mechanism to add behavior to a compiled Smalltalk method [2, 16].\"]},\"PR\":[2480195817,2138363365,2088018252,2782959840,1649645444,2061180491,2172147300,1970558557,1527793496,2079777989,1970462831,1770006921,2135522367,1500536239,2097964082,1851327982,1972328015,2040348150,2134119432,1531869376,2480195817,2138363365,2088018252,2782959840,1649645444,2061180491,2172147300,1970558557,1527793496,2079777989,1970462831,1770006921,2135522367,1500536239,2097964082,1851327982,1972328015,2040348150,2134119432,1531869376],\"ANF\":[{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":1}],\"BV\":\"NODe '02 Revised Papers from the International Conference NetObjectDays on Objects, Components, Architectures, Services, and Applications for a Networked World\",\"BT\":\"a\",\"PB\":\"Springer, Berlin, Heidelberg\"}"},{"logprob":-19.538,"Id":2154597770,"Ty":"0","Ti":"efficient layer activation for switching context dependent behavior","Pt":"1","L":"en","Y":2006,"D":"2006-09-13","CC":46,"ECC":70,"RId":[2480195817,1510817841,2106529232,1610570299,2045723688,25798763,2061180491,2491720856,1992443356,2223702412,2088018252,1862143637,2132055297,2495956853,2068606617,2295265000,2098884586,2114436200,2404209845,1491095550,1592272620,1615603009,2109469978,2073021358,2110520096,2058751520,2335857705,2505960402,2167049910,2486498742,2080674003,2032415879,1582123168,2296688603,2034993345,2036632668,2724223853,28766398,1975091685,2170051897,2510569334,1997532030,2151435956,1484642024,2803199099,185175612,2526773621],"W":["activation","behavior","context","dependent","efficient","layer","switching"],"AA":[{"DAuN":"Pascal Costanza","AuN":"pascal costanza","AuId":2286412295,"DAfN":"Vrije Universiteit Brussel","AfN":"vrije universiteit brussel","AfId":13469542,"S":1},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"Hasso-Plattner-Institut, Universität Potsdam, Potsdam, Germany\t","S":2},{"DAuN":"Wolfgang De Meuter","AuN":"wolfgang de meuter","AuId":93654309,"DAfN":"Vrije Universiteit Brussel","AfN":"vrije universiteit brussel","AfId":13469542,"S":3}],"F":[{"DFN":"Reactive programming","FN":"reactive programming","FId":150762246},{"DFN":"Programming language implementation","FN":"programming language implementation","FId":201997060},{"DFN":"Procedural programming","FN":"procedural programming","FId":120558287},{"DFN":"Multiple inheritance","FN":"multiple inheritance","FId":200568363},{"DFN":"Modular programming","FN":"modular programming","FId":88482812},{"DFN":"Inductive programming","FN":"inductive programming","FId":50033165},{"DFN":"Dynamic programming","FN":"dynamic programming","FId":37404715},{"DFN":"Distributed computing","FN":"distributed computing","FId":120314980},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Aspect-oriented programming","FN":"aspect oriented programming","FId":60051680}],"J":{"JN":"lncs","JId":106296714},"E":"{\"DN\":\"Efficient layer activation for switching context-dependent behavior\",\"IA\":{\"IndexLength\":133,\"InvertedIndex\":{\"Today’s\":[0],\"programming\":[1,31],\"platforms\":[2],\"do\":[3],\"not\":[4],\"provide\":[5],\"sufficient\":[6],\"constructs\":[7],\"that\":[8,34,51,70,99],\"allow\":[9],\"a\":[10,94],\"program’s\":[11],\"behavior\":[12,85],\"to\":[13],\"depend\":[14],\"on\":[15,59],\"the\":[16,26,114,127],\"context\":[17],\"in\":[18,74],\"which\":[19],\"it\":[20],\"is\":[21],\"executing.\":[22],\"This\":[23],\"paper\":[24],\"presents\":[25],\"design\":[27],\"and\":[28,56,108],\"implementation\":[29,118],\"of\":[30,39,66,83,97,116,126,130],\"language\":[32],\"extensions\":[33],\"explicitly\":[35],\"support\":[36],\"our\":[37,117],\"vision\":[38],\"Context-oriented\":[40,77],\"Programming.\":[41],\"In\":[42],\"this\":[43],\"model,\":[44],\"programs\":[45],\"can\":[46,52,71],\"be\":[47,53,72],\"partitioned\":[48],\"into\":[49],\"layers\":[50,98],\"dynamically\":[54],\"activated\":[55],\"deactivated\":[57],\"depending\":[58],\"their\":[60],\"execution\":[61],\"context.\":[62],\"Layers\":[63],\"are\":[64],\"sets\":[65],\"partial\":[67],\"program\":[68,84,110],\"definitions\":[69],\"composed\":[73],\"any\":[75],\"order.\":[76],\"Programming\":[78],\"encourages\":[79],\"rich,\":[80],\"dynamic\":[81,95],\"modifications\":[82],\"at\":[86],\"runtime,\":[87],\"requiring\":[88],\"an\":[89,121],\"efficient\":[90],\"implementation.\":[91],\"We\":[92,112],\"present\":[93],\"representation\":[96],\"yields\":[100],\"competitive\":[101],\"performance\":[102,115],\"characteristics\":[103],\"for\":[104,124],\"both\":[105],\"layer\":[106],\"activation/deactivation\":[107],\"overall\":[109],\"execution.\":[111],\"illustrate\":[113],\"by\":[119],\"providing\":[120],\"alternative\":[122],\"solution\":[123],\"one\":[125],\"prominent\":[128],\"examples\":[129],\"aspect-oriented\":[131],\"programming.\":[132]}},\"S\":[{\"Ty\":3,\"U\":\"http://www.p-cos.net/documents/context-switch.pdf\"},{\"Ty\":3,\"U\":\"https://rd.springer.com/content/pdf/10.1007%2F11860990_7.pdf\"},{\"Ty\":3,\"U\":\"https://link.springer.com/content/pdf/10.1007%2F11860990_7.pdf\"},{\"Ty\":3,\"U\":\"http://www.hirschfeld.org/writings/media/CostanzaHirschfeldDeMeuter_2006_EfficientLayerActivationForSwitchingContextDependentBehavior_AuthorsVersionLncs4228.pdf\"},{\"Ty\":3,\"U\":\"http://www.hpi.uni-potsdam.de/hirschfeld/publications/media/CostanzaHirschfeldDeMeuter_2006_EfficientLayerActivationForSwitchingContextDependentBehavior.pdf\"},{\"Ty\":1,\"U\":\"https://link.springer.com/chapter/10.1007/11860990_7\"},{\"Ty\":1,\"U\":\"https://rd.springer.com/chapter/10.1007/11860990_7\"},{\"Ty\":1,\"U\":\"http://dblp.uni-trier.de/db/conf/jmlc/jmlc2006.html#CostanzaHM06\"}],\"VFN\":\"Lecture Notes in Computer Science\",\"FP\":84,\"LP\":103,\"DOI\":\"10.1007/11860990_7\",\"CC\":{\"28766398\":[\"The only aspect-oriented technologies we are aware of approaching our notion of dynamically scoped activation of partial program definitions are AspectS [26,27], LasagneJ [43], CaesarJ [34] and the Steamloom virtual machine [6].\"],\"1491095550\":[\"The only aspect-oriented technologies we are aware of approaching our notion of dynamically scoped activation of partial program definitions are AspectS [26,27], LasagneJ [43], CaesarJ [34] and the Steamloom virtual machine [6].\"],\"1510817841\":[\"– Mobile applications running on mobile devices might need to dynamically adjust their behavior according to the geographical context in which they are used [12].\"],\"1582123168\":[\"The latest implementation of Steamloom explicitly addresses the above issues and is described in [ 7 ].\\u001bDelegation layers, as in the prototype-based languages Slate [ 39 ] and Us [40] and also combined into a class-based programming language in [38], are very similar to our approach.\\u001bAs in ContextL, delegation layers define layers that group behavior for sets of objects in [ 39 ,40] and for sets of classes in [38].\\u001bIn [ 39 ] and [40], the selection and ordering of layers is not fixed but layers can be arbitrarily recombined in\"],\"1615603009\":[\"Delegation layers, as in the prototype-based languages Slate [39] and Us [40] and also combined into a class-based programming language in [38], are very similar to our approach.\",\"As in ContextL, delegation layers define layers that group behavior for sets of objects in [39,40] and for sets of classes in [38].\",\"However, the hierarchy of layers is globally fixed in [38].\"],\"1862143637\":[\"As indicated, a similar implementation could in principle be achieved in a Java-based implementation as well: Classes can indeed be generated at runtime [20], a variant of dynamically scoped variables is already present in the form of thread-local variables [11], and it has already been described how to add multiple dispatch [13].\"],\"1975091685\":[\"Multiple inheritance typically results in the possible occurence of conflicting inherited members and thus in the need to determine a linearization of all superclasses [ 2 ].\"],\"1997532030\":[\"The only aspect-oriented technologies we are aware of approaching our notion of dynamically scoped activation of partial program definitions are AspectS [26, 27], LasagneJ [43], CaesarJ [34] and the Steamloom virtual machine [ 6 ].\\u001bThe Steamloom virtual machine [ 6 ] is another attempt to reduce the overhead of cflow-style poincuts.\\u001bInstead, a notion of context is added that essentially comes down to some form of first-class environments [ 24 ].\"],\"2032415879\":[\"The principal notion of such layers as partial program definitions has been suggested before ([3,40], cf.\",\"Delegation layers, as in the prototype-based languages Slate [39] and Us [40] and also combined into a class-based programming language in [38], are very similar to our approach.\",\"As in ContextL, delegation layers define layers that group behavior for sets of objects in [39,40] and for sets of classes in [38].\",\"In [39] and [40], the selection and ordering of layers is not fixed but layers can be arbitrarily recombined in the control flow of a program.\"],\"2034993345\":[\"In our approach, computational overhead occurs exclusively on the first activation/deactivation of a previously unused combination of layers and on the first message send in a previously unused combination of methods [30].\",\"See [30] for a discussion of implementation techniques for multiple dispatch in CLOS, and [10] for a general overview.\"],\"2045723688\":[\"See [30] for a discussion of implementation techniques for multiple dispatch in CLOS, and [ 10 ] for a general overview.\"],\"2058751520\":[\"Keays and Rakotonirainy [ 29 ] use the term context-oriented programming for an approach that separates code skeletons from context-filling code stubs that complete the code skeleton to actually perform some behavior.\"],\"2061180491\":[\"The only aspect-oriented technologies we are aware of approaching our notion of dynamically scoped activation of partial program definitions are AspectS [26,27], LasagneJ [43], CaesarJ [34] and the Steamloom virtual machine [6].\"],\"2068606617\":[\"While it is an extension to the Common Lisp Object System (CLOS, [4]), the features we describe are conceptually independent of that particular object model.\"],\"2073021358\":[\"Global (non-thread-local) activation/deactivation constructs, like in CaesarJ and ObjectTeams [ 45 ] are not sucient in this regard.\"],\"2088018252\":[\"The only aspect-oriented technologies we are aware of approaching our notion of dynamically scoped activation of partial program definitions are AspectS [26,27], LasagneJ [43], CaesarJ [34] and the Steamloom virtual machine [6].\",\"The Steamloom virtual machine [6] is another attempt to reduce the overhead of cflow-style poincuts.\"],\"2098884586\":[\"Common Lisp already has multimethods, and it is possible to add multimethods to Java – see for example MultiJava [13].\",\"How multimethods in MultiJava are translated into Java bytecode on a per-compilation-unit basis is described in [13].\",\"As indicated, a similar implementation could in principle be achieved in a Java-based implementation as well: Classes can indeed be generated at runtime [20], a variant of dynamically scoped variables is already present in the form of thread-local variables [11], and it has already been described how to add multiple dispatch [13].\"],\"2106529232\":[\"– Mobile code typically depends on the context of the runtime environment in which it is executed, such as applets or software agents [21].\"],\"2114436200\":[\"The only aspect-oriented technologies we are aware of approaching our notion of dynamically scoped activation of partial program definitions are AspectS [26,27], LasagneJ [43], CaesarJ [34] and the Steamloom virtual machine [6].\"],\"2167049910\":[\"The latest implementation of Steamloom explicitly addresses the above issues and is described in [7].\"],\"2170051897\":[\"– Exploration environments create safe contexts in which to execute applications and can considerably help users to learn how to use them, as has been shown by research in the field of Human-Computer Interaction [46].\"],\"2223702412\":[\"The performance anomaly as such may seem surprising, but in fact such anomalies occur frequently in performance benchmarks [25].\"],\"2296688603\":[\"In [18], we have introduced this idea and presented the programming language ContextL which is among the first language extensions that explicitly realize this vision.\",\"ContextL is one of our first programming language extensions that explicitly support a context-oriented programming style [18].\",\"For example, we have a prototypical implementation of a minimal version of ContextL that is solely based on dynamically scoped instance variables, a construct of ContextL not described here (“special slots”, see [18]).\",\"Related work for delegation is discussed in [18].\"],\"2480195817\":[\"This has led to the introduction of cflow-style constructs in AspectJ and subsequent AOP approaches [31].\"],\"2724223853\":[\"The principal notion of such layers as partial program definitions has been suggested before ([3,40], cf.\"],\"2803199099\":[\"However, subsets of multiple inheritance and their implementation have already been described, for example, for C# based on traits [37] and for Java based on interfaces with default implementations [35].\"]},\"PR\":[2150275961,1992443356,2075642720,2143238865,2140249393,2087175184,2480195817,1531869376,2088018252,2089889705,1556513858,2144114063,2014881790,2104754278,2157920816,1491095550,1527793496,1591471358,2065646798,2115899208,2150275961,1992443356,2075642720,2143238865,2140249393,2087175184,2480195817,1531869376,2088018252,2089889705,1556513858,2144114063,2014881790,2104754278,2157920816,1491095550,1527793496,1591471358,2065646798,2115899208],\"ANF\":[{\"FN\":\"Pascal\",\"LN\":\"Costanza\",\"S\":1},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":2},{\"FN\":\"Wolfgang De\",\"LN\":\"Meuter\",\"S\":3}],\"BV\":\"Lecture Notes in Computer Science\",\"BT\":\"a\",\"PB\":\"Springer\"}"},{"logprob":-19.604,"Id":175922506,"Ty":"0","Ti":"event specific software composition in context oriented programming","Pt":"1","L":"en","Y":2010,"D":"2010-07-01","CC":42,"ECC":75,"RId":[2480195817,2143238865,2075642720,2150275961,1610570299,2113547509,2029414465,2136033258,2070821087,2023546887,25798763,2499711114,2491720856,1992443356,2065646798,1531869376,2111898165,2115680394,2490354173,2144114063,2118300983,2157920816,2089889705,2610644214,1539693001,2159386446,1581096042,2125089485,2154597770,2115607078,2087175184,956539890,1556513858,2492486062,2172169742,1602100009,2014881790,2115899208,2002568360,2115773605,2251542064],"W":["composition","context","event","oriented","programming","software","specific"],"AA":[{"DAuN":"Malte Appeltauer","AuN":"malte appeltauer","AuId":135591984,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":1},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":2},{"DAuN":"Hidehiko Masuhara","AuN":"hidehiko masuhara","AuId":2087436944,"DAfN":"University of Tokyo","AfN":"university of tokyo","AfId":74801974,"S":3},{"DAuN":"Michael Haupt","AuN":"michael haupt","AuId":2146662369,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":4},{"DAuN":"Kazunori Kawauchi","AuN":"kazunori kawauchi","AuId":2095903912,"DAfN":"University of Tokyo","AfN":"university of tokyo","AfId":74801974,"S":5}],"F":[{"DFN":"Theoretical computer science","FN":"theoretical computer science","FId":80444323},{"DFN":"Programming language","FN":"programming language","FId":199360897},{"DFN":"Modular programming","FN":"modular programming","FId":88482812},{"DFN":"Java","FN":"java","FId":548217200},{"DFN":"Function composition (computer science)","FN":"function composition","FId":104637301},{"DFN":"Control flow","FN":"control flow","FId":160191386},{"DFN":"Constructed language","FN":"constructed language","FId":94922259},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Composition (visual arts)","FN":"composition","FId":169260993},{"DFN":"Abstraction","FN":"abstraction","FId":124304363}],"J":{"JN":"soco","JId":65753830},"E":"{\"DN\":\"Event-specific software composition in context-oriented programming\",\"IA\":{\"IndexLength\":85,\"InvertedIndex\":{\"Context-oriented\":[0],\"programming\":[1],\"(COP)\":[2],\"introduces\":[3],\"dedicated\":[4],\"abstractions\":[5],\"for\":[6,22,38,67],\"the\":[7,31],\"modularization\":[8],\"and\":[9,70,74],\"dynamic\":[10],\"composition\":[11,69],\"of\":[12,34],\"crosscutting\":[13],\"context-specific\":[14],\"functionality.\":[15],\"While\":[16],\"existing\":[17],\"COP\":[18,81],\"languages\":[19],\"offer\":[20],\"constructs\":[21,66],\"control-flow\":[23],\"specific\":[24],\"composition,\":[25],\"they\":[26],\"do\":[27],\"not\":[28],\"yet\":[29],\"consider\":[30],\"explicit\":[32,71],\"representation\":[33,73],\"event-specific\":[35,68],\"context-dependent\":[36],\"behavior,\":[37],\"which\":[39],\"we\":[40,62],\"observe\":[41],\"two\":[42],\"distinguishing\":[43],\"properties:\":[44],\"First,\":[45],\"context\":[46,72],\"can\":[47,54],\"affect\":[48],\"several\":[49],\"control\":[50],\"flows.\":[51],\"Second,\":[52],\"events\":[53],\"establish\":[55],\"new\":[56,64],\"contexts\":[57],\"asynchronously.\":[58],\"In\":[59],\"this\":[60],\"paper,\":[61],\"propose\":[63],\"language\":[65],\"introduce\":[75],\"their\":[76],\"implementation\":[77],\"in\":[78],\"JCop,\":[79],\"our\":[80],\"extension\":[82],\"to\":[83],\"Java.\":[84]}},\"S\":[{\"Ty\":3,\"U\":\"http://www.hirschfeld.org/writings/media/AppeltauerHirschfeldMasuharaHauptKawauchi_2010_EventSpecificSoftwareCompositionInContextOrientedProgramming_SpringerLNCS.pdf\"},{\"Ty\":3,\"U\":\"http://www.hpi.uni-potsdam.de/hirschfeld/publications/media/AppeltauerHirschfeldMasuharaHauptKawauchi_2010_EventSpecificSoftwareCompositionInContextOrientedProgramming_SpringerLNCS.pdf\"},{\"Ty\":1,\"U\":\"https://link.springer.com/chapter/10.1007/978-3-642-14046-4_4\"},{\"Ty\":1,\"U\":\"https://rd.springer.com/content/pdf/10.1007%2F978-3-642-14046-4_4.pdf\"}],\"VFN\":\"Soft Computing\",\"FP\":50,\"LP\":65,\"DOI\":\"10.1007/978-3-642-14046-4_4\",\"CC\":{\"956539890\":[\"In some languages, such as CaesarJ [6], aspects can be deployed for a dynamic extent at run-time, much like explicit with statements.\"],\"1539693001\":[\"In Ptolemy [28], code blocks are bound to events, similar to pointcut-advice binding in AOP.\"],\"1556513858\":[\"Most COP extensions have been developed for dynamic languages, such as Lisp [13, 14] Smalltalk [21], Python [31, 23], and the delMDSOC kernel [29].\"],\"1581096042\":[\"EventJava [17] models events as asynchronous methods and compound events by correlation patterns.\"],\"1602100009\":[\"Modularization approaches such as traits [30,15] andmixins [12] allow for an additional inheritance relationship next to the class hierarchy, but do not offer dynamic adaptation like layers.\"],\"1992443356\":[\"Most COP extensions have been developed for dynamic languages, such as Lisp [13, 14] Smalltalk [21], Python [31, 23], and the delMDSOC kernel [29].\"],\"2002568360\":[\"Most COP extensions have been developed for dynamic languages, such as Lisp [13, 14] Smalltalk [21], Python [31, 23], and the delMDSOC kernel [29].\"],\"2014881790\":[\"Most COP extensions have been developed for dynamic languages, such as Lisp [13, 14] Smalltalk [21], Python [31, 23], and the delMDSOC kernel [29].\"],\"2023546887\":[\"COP provides layers [9] as a modularization concept that can crosscut an object-oriented decomposition and encapsulate context-specific behavioral variations, represented as partial method definitions.\"],\"2065646798\":[\"More formally, we identify two different kinds of cross-cutting concerns, according to [1]: The actual behavioral variations implemented using layers are heterogeneous concerns, therefore they should be defined close to their respective objects.\"],\"2070821087\":[\"5 specification JastAddJ [16].\"],\"2075642720\":[\"Feature-oriented programming (FOP) [10] and its Java-based implementation AHEAD [8] provide layer-like modules to specify adaptations of methods and classes (and other software artifacts).\"],\"2087175184\":[\"Most COP extensions have been developed for dynamic languages, such as Lisp [13, 14] Smalltalk [21], Python [31, 23], and the delMDSOC kernel [29].\",\"Except for the Python extension PyContext [31] that provides implicit layer activation, none of the mentioned languages support event-based layer activation.\"],\"2111898165\":[\"Modularization approaches such as traits [30,15] andmixins [12] allow for an additional inheritance relationship next to the class hierarchy, but do not offer dynamic adaptation like layers.\"],\"2115607078\":[\"Based on the Ambient Object System [19], it supports behavior adaptations with partial method definitions and context objects, which correspond to COP layers.\"],\"2115680394\":[\"the definition of adaptations from their composition, distinguishing it from alternative multi-dimensional modularization techniques such as aspect-oriented programming [26] (AOP), Mixins [12], or Classboxes [11].\",\"Modularization approaches such as traits [30,15] andmixins [12] allow for an additional inheritance relationship next to the class hierarchy, but do not offer dynamic adaptation like layers.\"],\"2115773605\":[\"The CaesarJ extension ECaesarJ [27] supports the definition of context as a class implementing two events representing context entry and exit.\"],\"2115899208\":[\"In this paper, we motivate the need for explicit representation of event-specific context-dependent composition along a case study that we conducted using ContextJ [5, 3], our earlier COP extension to the Java programming language.\"],\"2118300983\":[\"The JCop compiler is implemented based on the JastAdd [20] meta-compiler framework and extends the Java 1.\"],\"2125089485\":[\"the definition of adaptations from their composition, distinguishing it from alternative multi-dimensional modularization techniques such as aspect-oriented programming [26] (AOP), Mixins [12], or Classboxes [11].\",\"The Classbox/J [11] module system extends Java’s packaging and scoping mechanism.\"],\"2136033258\":[\"In addition, we adopted the AspectJ method pattern grammar used by the abc compiler [7].\"],\"2143238865\":[\"the definition of adaptations from their composition, distinguishing it from alternative multi-dimensional modularization techniques such as aspect-oriented programming [26] (AOP), Mixins [12], or Classboxes [11].\",\"To address the issue of scattered with statements, we adopted features of AOP [26, 18], where scattered functionality is expressed by advice blocks bound to pointcuts quantifying over a set of join points, well-defined events in the execution graph.\"],\"2144114063\":[\"The COP languages implemented so far [2] support selective activation and deactivation of layer compositions, expressing programmatically when the application enters and leaves certain contexts.\",\"ContextJ [2, 3] is a COP implementation for Java.\",\"Layers can either be defined within the classes for which they provide behavioral variations (layer-in-class), or in a dedicated top-level layer similar to an aspect (class-in-layer) [22, 2].\",\"A detailed comparison of COP language features is provided in [2].\"],\"2150275961\":[\"Context-oriented programming [22] (COP) is an approach to representing context-specific concerns, focusing on dynamic composition of control flows.\",\"Layers can either be defined within the classes for which they provide behavioral variations (layer-in-class), or in a dedicated top-level layer similar to an aspect (class-in-layer) [22, 2].\"],\"2154597770\":[\"Most COP extensions have been developed for dynamic languages, such as Lisp [13, 14] Smalltalk [21], Python [31, 23], and the delMDSOC kernel [29].\"],\"2157920816\":[\"Feature-oriented programming (FOP) [10] and its Java-based implementation AHEAD [8] provide layer-like modules to specify adaptations of methods and classes (and other software artifacts).\"],\"2172169742\":[\"As a case study [4], we have developed a little IDE using ContextJ, whose GUI provides context-specific behavior.\"],\"2480195817\":[\"This feature has been previously introduced by other languages such as Common Lisp [24] and AspectJ [25].\",\"It contains an AspectJ-like method pattern [25] specifying those methods to whose dynamic extent a layer composition is to be applied.\",\"AspectJ [25] is a popular Java language extension that established the notion of join points, well-defined events in the execution of a program that can be described by pointcut predicates and can be adapted by advice blocks.\"]},\"PR\":[2150275961,2060640309,2089889705,1992443356,2144114063,2480195817,2145304606,1724660581,2087175184,1978875190,2172169742,2115607078,6784408,2000399282,1531869376,2033348393,1539693001,1556513858,1985637830,2032835129,2150275961,2060640309,2089889705,1992443356,2144114063,2480195817,2145304606,1724660581,2087175184,1978875190,2172169742,2115607078,6784408,2000399282,1531869376,2033348393,1539693001,1556513858,1985637830,2032835129],\"ANF\":[{\"FN\":\"Malte\",\"LN\":\"Appeltauer\",\"S\":1},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":2},{\"FN\":\"Hidehiko\",\"LN\":\"Masuhara\",\"S\":3},{\"FN\":\"Michael\",\"LN\":\"Haupt\",\"S\":4},{\"FN\":\"Kazunori\",\"LN\":\"Kawauchi\",\"S\":5}],\"BV\":\"Soft Computing\",\"BT\":\"a\",\"PB\":\"Springer, Berlin, Heidelberg\"}"},{"logprob":-19.767,"Id":1556513858,"Ty":"0","Ti":"an introduction to context oriented programming with contexts","Pt":"0","L":"en@@@es","Y":2007,"D":"2007-07-02","CC":41,"ECC":64,"RId":[2622427009,2143238865,1770006921,2075642720,2150275961,1851327982,2029414465,2172147300,2499711114,1992443356,2157920816,2068606617,2137252778,1491095550,2782959840,2154597770,2109469978,2492486062,2104754278,2032415879,70959085,1506052820,2510569334,1544322677,109048203],"W":["context","contexts","introduction","oriented","programming"],"AA":[{"DAuN":"Robert R. Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"Hasso-Plattner-Institut, Universität Potsdam, Potsdam, Germany D-14482\t","S":1},{"DAuN":"Pascal Costanza","AuN":"pascal costanza","AuId":2286412295,"DAfN":"Vrije Universiteit Brussel","AfN":"vrije universiteit brussel","AfId":13469542,"S":2},{"DAuN":"Michael Haupt","AuN":"michael haupt","AuId":2146662369,"DAfN":"Hasso-Plattner-Institut, Universität Potsdam, Potsdam, Germany D-14482\t","S":3}],"F":[{"DFN":"Reactive programming","FN":"reactive programming","FId":150762246},{"DFN":"Programming paradigm","FN":"programming paradigm","FId":34165917},{"DFN":"Programming language","FN":"programming language","FId":199360897},{"DFN":"Programming domain","FN":"programming domain","FId":119263510},{"DFN":"Procedural programming","FN":"procedural programming","FId":120558287},{"DFN":"Inductive programming","FN":"inductive programming","FId":50033165},{"DFN":"Functional reactive programming","FN":"functional reactive programming","FId":119489759},{"DFN":"Functional logic programming","FN":"functional logic programming","FId":96315309},{"DFN":"Extensible programming","FN":"extensible programming","FId":131531359},{"DFN":"Computer science","FN":"computer science","FId":41008148}],"E":"{\"DN\":\"An Introduction to Context-Oriented Programming with ContextS\",\"IA\":{\"IndexLength\":68,\"InvertedIndex\":{\"Context-oriented\":[0],\"Programming,\":[1],\"or\":[2],\"COP,\":[3],\"provides\":[4],\"programmers\":[5,33],\"with\":[6],\"dedicated\":[7],\"abstractions\":[8],\"and\":[9,25,53],\"mechanisms\":[10],\"to\":[11,34],\"concisely\":[12],\"represent\":[13],\"behavioral\":[14],\"variations\":[15],\"that\":[16,39],\"depend\":[17],\"on\":[18],\"execution\":[19],\"context.\":[20],\"By\":[21],\"treating\":[22],\"context\":[23],\"explicitly,\":[24],\"by\":[26,56],\"directly\":[27],\"supporting\":[28],\"dynamic\":[29],\"composition,\":[30],\"COP\":[31,49],\"allows\":[32],\"better\":[35],\"express\":[36],\"software\":[37],\"entities\":[38],\"adapt\":[40],\"their\":[41,51,54],\"behavior\":[42],\"late-bound\":[43],\"at\":[44],\"run-time.\":[45],\"Our\":[46],\"paper\":[47],\"illustrates\":[48],\"constructs,\":[50],\"application,\":[52],\"implementation\":[55],\"developing\":[57],\"a\":[58],\"sample\":[59],\"scenario,\":[60],\"using\":[61],\"ContextS\":[62],\"in\":[63],\"the\":[64],\"Squeak/Smalltalk\":[65],\"programming\":[66],\"environment.\":[67]}},\"S\":[{\"Ty\":3,\"U\":\"https://rd.springer.com/content/pdf/10.1007%2F978-3-540-88643-3_9.pdf\"},{\"Ty\":3,\"U\":\"http://www.hirschfeld.org/writings/media/HirschfeldCostanzaHaupt_2007_AnIntroductionToContextOrientedProgrammingWithContextS_AuthorsVersionLNCS.pdf\"},{\"Ty\":3,\"U\":\"https://link.springer.com/content/pdf/10.1007%2F978-3-540-88643-3_9.pdf\"},{\"Ty\":1,\"U\":\"https://link.springer.com/chapter/10.1007%2F978-3-540-88643-3_9\"},{\"Ty\":1,\"U\":\"https://rd.springer.com/chapter/10.1007/978-3-540-88643-3_9\"},{\"Ty\":1,\"U\":\"https://dialnet.unirioja.es/servlet/articulo?codigo=4861253\"},{\"Ty\":1,\"U\":\"https://dl.acm.org/citation.cfm?id=1462629\"},{\"Ty\":0,\"U\":\"http://dl.acm.org/citation.cfm?id=1462629\"}],\"VFN\":\"Generative and Transformational Techniques in Software Engineering II\",\"FP\":396,\"LP\":407,\"DOI\":\"10.1007/978-3-540-88643-3_9\",\"CC\":{\"70959085\":[\"While ContextS provides means to express heterogeneous crosscutting behavioral variations, we look into its extension to concisely implement homogeneous crosscutting concerns as well [1].\"],\"1491095550\":[\"The style presented here is inherited from AspectS [13], to take advantage of a set of metaobjects called method wrappers AspectS was built on [5].\"],\"1506052820\":[\"The style presented here is inherited from AspectS [13], to take advantage of a set of metaobjects called method wrappers AspectS was built on [ 5 ].\"],\"1544322677\":[\"Partial method definitions, as shown here, still use an advice-based style as introduced in PILOT [19] and popularized by CLOS [4] and AspectJ-style language extensions [16].\"],\"1770006921\":[\"ContextS is our COP extension to Squeak/Smalltalk to explore COP in latebound class-based programming environments [12,15].\"],\"1851327982\":[\"The focus of AOP is mainly on the establishments of inverse one-to-many relationships [17] to achieve their vision of quantification and obliviousness [ 10 ].\"],\"1992443356\":[\"Context-oriented programming (COP [6,14]) addresses the problem of dynamically composing context-dependent concerns, which are potentially crosscutting.\",\"There are several COP extensions to popular programming languages such as ContextL for Lisp [6], ContextS for Squeak/Smalltalk [14], ContextR for Ruby, ContextPy for Python, and ContextJ* for Java [14].\",\"COP, as introduced in [6,14], facilitates the modularization of context-dependent behavioral variations.\",\"Language Constructs for Context-oriented Programming – An Overview of ContextL [6].\"],\"2032415879\":[\"Procedural programming offers only one dimension to associate a unit of behavior with its activation [18].\",\"Object-oriented programming already uses two dimensions to associate a unit of behavior with its activation [18].\",\"Subjective programming as introduced in [18] goes one step further than object-oriented programming in that it adds a third dimension to message dispatch.\"],\"2075642720\":[\"FOP’s main concern is the compile-time selection and combination of variations, and the necessary algebraic means to reason about such layer compositions [3].\"],\"2104754278\":[\"Reflective Layer Activation in ContextL [7].\"],\"2143238865\":[\"This phenomenon, also known as crosscutting concerns, and some of the associated problems were documented by the aspect-oriented programming (AOP [16]) and the feature-oriented programming (FOP [2]) communities.\",\"Partial method definitions, as shown here, still use an advice-based style as introduced in PILOT [19] and popularized by CLOS [4] and AspectJ-style language extensions [16].\"],\"2150275961\":[\"Context-oriented programming (COP [6,14]) addresses the problem of dynamically composing context-dependent concerns, which are potentially crosscutting.\",\"There are several COP extensions to popular programming languages such as ContextL for Lisp [6], ContextS for Squeak/Smalltalk [14], ContextR for Ruby, ContextPy for Python, and ContextJ* for Java [14].\",\"COP, as introduced in [6,14], facilitates the modularization of context-dependent behavioral variations.\",\"Context-oriented Programming [14].\"],\"2154597770\":[\"Efficient Layer Activation for Switching Context-dependent Behavior [8].\"],\"2157920816\":[\"This phenomenon, also known as crosscutting concerns, and some of the associated problems were documented by the aspect-oriented programming (AOP [16]) and the feature-oriented programming (FOP [2]) communities.\"],\"2172147300\":[\"ContextS is our COP extension to Squeak/Smalltalk to explore COP in latebound class-based programming environments [12,15].\"],\"2782959840\":[\"The style presented here is inherited from AspectS [13], to take advantage of a set of metaobjects called method wrappers AspectS was built on [5].\"]},\"PR\":[2150275961,1992443356,2089889705,2144114063,2480195817,2087175184,2143238865,2172169742,2115607078,1978875190,2014881790,2154597770,2075642720,2115680394,1531869376,2115899208,2157920816,175922506,2002568360,2060640309,2150275961,1992443356,2089889705,2144114063,2480195817,2087175184,2143238865,2172169742,2115607078,1978875190,2014881790,2154597770,2075642720,2115680394,1531869376,2115899208,2157920816,175922506,2002568360,2060640309],\"ANF\":[{\"FN\":\"Robert R.\",\"LN\":\"Hirschfeld\",\"S\":1},{\"FN\":\"Pascal\",\"LN\":\"Costanza\",\"S\":2},{\"FN\":\"Michael\",\"LN\":\"Haupt\",\"S\":3}],\"BV\":\"Generative and Transformational Techniques in Software Engineering II\",\"BT\":\"a\",\"PB\":\"Springer Berlin Heidelberg\"}"},{"logprob":-19.809,"Id":2284072287,"Ty":"0","Ti":"studying the advancement in debugging practice of professional software developers","Pt":"1","L":"en","Y":2017,"D":"2017-03-01","CC":14,"ECC":14,"RId":[2031648200,2162376048,2123659430,1574060188,2113302524,1767990287,2156357889,1968847337,2132383311,2141109493,1993199499,2137270184,1843474218,2118529754,2127961981,2000711964,2146146233,1572075820,2092239677,2155788121,2037987349,1774013863,1989678938,2147045401,2794372210,1644965812,1502739415,107792539,151007792,2036887984],"W":["advancement","debugging","developers","practice","professional","software","studying"],"AA":[{"DAuN":"Michael Perscheid","AuN":"michael perscheid","AuId":698431335,"DAfN":"SAP Innovation Center","S":1},{"DAuN":"Benjamin Siegmund","AuN":"benjamin siegmund","AuId":2107713863,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":2},{"DAuN":"Marcel Taeumel","AuN":"marcel taeumel","AuId":83004794,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":3},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":4}],"F":[{"DFN":"Systems engineering","FN":"systems engineering","FId":201995342},{"DFN":"Software","FN":"software","FId":2777904410},{"DFN":"Debugging","FN":"debugging","FId":168065819},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Computer engineering","FN":"computer engineering","FId":113775141},{"DFN":"Algorithmic program debugging","FN":"algorithmic program debugging","FId":136388014}],"J":{"JN":"sqj","JId":7504070},"E":"{\"DN\":\"Studying the advancement in debugging practice of professional software developers\",\"IA\":{\"IndexLength\":144,\"InvertedIndex\":{\"In\":[0],\"1997,\":[1],\"Henry\":[2],\"Lieberman\":[3],\"stated\":[4],\"that\":[5,67,113,135],\"debugging\":[6,19,41,75,101,122,133],\"is\":[7,42,52],\"the\":[8,34,38,71,83,116],\"dirty\":[9],\"little\":[10],\"secret\":[11],\"of\":[12,74],\"computer\":[13],\"science.\":[14],\"Since\":[15],\"then,\":[16],\"several\":[17,97],\"promising\":[18],\"technologies\":[20],\"have\":[21,59],\"been\":[22,60],\"developed\":[23],\"such\":[24],\"as\":[25,115],\"back-in-time\":[26],\"debuggers\":[27],\"and\":[28,49,86,91,102],\"automatic\":[29],\"fault\":[30],\"localization\":[31],\"methods.\":[32],\"However,\":[33],\"last\":[35],\"study\":[36,92],\"about\":[37,88,105],\"state-of-the-art\":[39],\"in\":[40,62,76],\"still\":[43],\"more\":[44],\"than\":[45],\"15\":[46],\"years\":[47],\"old\":[48],\"so\":[50],\"it\":[51],\"not\":[53],\"clear\":[54],\"whether\":[55],\"these\":[56,126],\"new\":[57,130,139],\"approaches\":[58,90],\"applied\":[61],\"practice\":[63,134],\"or\":[64],\"not.\":[65],\"For\":[66],\"reason,\":[68],\"we\":[69,81,95,109,128],\"investigate\":[70],\"current\":[72,89],\"state\":[73],\"a\":[77,111,119],\"comprehensive\":[78],\"study.\":[79],\"First,\":[80],\"review\":[82],\"available\":[84],\"literature\":[85],\"learn\":[87],\"results.\":[93],\"Second,\":[94],\"observe\":[96],\"professional\":[98],\"developers\":[99],\"while\":[100],\"interview\":[103],\"them\":[104],\"their\":[106],\"experiences.\":[107],\"Third,\":[108],\"create\":[110],\"questionnaire\":[112],\"serves\":[114],\"basis\":[117],\"for\":[118,141],\"larger\":[120],\"online\":[121],\"survey.\":[123],\"Based\":[124],\"on\":[125],\"results,\":[127],\"present\":[129],\"insights\":[131],\"into\":[132],\"help\":[136],\"to\":[137],\"suggest\":[138],\"directions\":[140],\"future\":[142],\"research.\":[143]}},\"S\":[{\"Ty\":1,\"U\":\"https://link.springer.com/article/10.1007%2Fs11219-015-9294-2\"},{\"Ty\":1,\"U\":\"http://dblp.uni-trier.de/db/journals/sqj/sqj25.html#PerscheidSTH17\"}],\"VFN\":\"Software Quality Journal\",\"V\":25,\"I\":1,\"FP\":83,\"LP\":110,\"DOI\":\"10.1007/s11219-015-9294-2\",\"PR\":[2794673032,2604560923,2039179155,2527840817,2067436653,649949742,2726267606,2770272372,2293310672,1973924171,2008424891,2052885256,2497849102,2291724978,1571919519,2088137140,2030348613,2491623261,2767603763,2900485839,2794673032,2604560923,2039179155,2527840817,2067436653,649949742,2726267606,2770272372,2293310672,1973924171,2008424891,2052885256,2497849102,2291724978,1571919519,2088137140,2030348613,2491623261,2767603763,2900485839],\"ANF\":[{\"FN\":\"Michael\",\"LN\":\"Perscheid\",\"S\":1},{\"FN\":\"Benjamin\",\"LN\":\"Siegmund\",\"S\":2},{\"FN\":\"Marcel\",\"LN\":\"Taeumel\",\"S\":3},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":4}],\"BV\":\"Software Quality Journal\",\"BT\":\"a\",\"PB\":\"Springer US\"}"},{"logprob":-19.829,"Id":1985637830,"Ty":"0","Ti":"contextfj a minimal core calculus for context oriented programming","Pt":"3","L":"en","Y":2011,"D":"2011-03-21","CC":30,"ECC":30,"RId":[2150275961,2033348393,1949851419,1992443356,2168986107,2060640309,2089889705,1978875190,2059639972,1556513858,2165534348,2016945749,2097664691,2181829784],"W":["calculus","context","contextfj","core","minimal","oriented","programming"],"AA":[{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"Hasso-Plattner-Institut Potsdam","S":1},{"DAuN":"Atsushi Igarashi","AuN":"atsushi igarashi","AuId":2097080023,"DAfN":"Kyoto University","AfN":"kyoto university","AfId":22299242,"S":2},{"DAuN":"Hidehiko Masuhara","AuN":"hidehiko masuhara","AuId":2087436944,"DAfN":"University of Tokyo","AfN":"university of tokyo","AfId":74801974,"S":3}],"F":[{"DFN":"Type erasure","FN":"type erasure","FId":48522483},{"DFN":"Theoretical computer science","FN":"theoretical computer science","FId":80444323},{"DFN":"Programming language theory","FN":"programming language theory","FId":18701968},{"DFN":"Programming language","FN":"programming language","FId":199360897},{"DFN":"Operational semantics","FN":"operational semantics","FId":156325763},{"DFN":"Modeling language","FN":"modeling language","FId":179603123},{"DFN":"First-generation programming language","FN":"first generation programming language","FId":570499},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Calculus","FN":"calculus","FId":33577790}],"C":{"CN":"foal","CId":2626864766},"E":"{\"DN\":\"ContextFJ: a minimal core calculus for context-oriented programming\",\"IA\":{\"IndexLength\":59,\"InvertedIndex\":{\"We\":[0,41],\"develop\":[1],\"a\":[2,24,32,44],\"minimal\":[3],\"core\":[4,37],\"calculus\":[5],\"called\":[6],\"ContextFJ\":[7,22],\"to\":[8,50],\"model\":[9],\"language\":[10],\"mechanisms\":[11],\"for\":[12],\"context-oriented\":[13],\"programming\":[14],\"(COP).\":[15],\"Unlike\":[16],\"other\":[17],\"formal\":[18],\"models\":[19],\"of\":[20,35,38],\"COP,\":[21],\"has\":[23],\"direct\":[25],\"operational\":[26],\"semantics\":[27],\"that\":[28,48],\"can\":[29],\"serve\":[30],\"as\":[31],\"precise\":[33],\"description\":[34],\"the\":[36],\"COP\":[39],\"languages.\":[40],\"also\":[42],\"discuss\":[43],\"simple\":[45],\"type\":[46],\"system\":[47],\"helps\":[49],\"prevent\":[51],\"undefined\":[52],\"methods\":[53],\"from\":[54],\"being\":[55],\"accessed\":[56],\"via\":[57],\"proceed.\":[58]}},\"S\":[{\"Ty\":3,\"U\":\"http://www.fos.kuis.kyoto-u.ac.jp/~igarashi/papers/pdf/contextfj-full.pdf\"},{\"Ty\":3,\"U\":\"http://prg.is.titech.ac.jp/members/masuhara/papers/foal2011-contextfj.pdf\"},{\"Ty\":1,\"U\":\"https://doi.acm.org/10.1145/1960510.1960515\"}],\"VFN\":\"Foundations of Aspect-Oriented Languages\",\"VSN\":\"FOAL\",\"FP\":19,\"LP\":23,\"DOI\":\"10.1145/1960510.1960515\",\"CC\":{\"1556513858\":[\"Many COP extensions including those designed on top of Java [2], Smalltalk [6], Common Lisp [4] and JavaScript [10], are based on object-oriented programming languages and introduce layers of partial methods for defining and organizing behavioral variations, and layer activation mechanisms for layer selection and composition.\"],\"1949851419\":[\"Feature-oriented programming (FOP) [3] and delta-oriented programming (DOP) [12] also advocate the use of layers or delta modules respectively to describe behavioral variations.\"],\"1978875190\":[\"Many COP extensions including those designed on top of Java [2], Smalltalk [6], Common Lisp [4] and JavaScript [10], are based on object-oriented programming languages and introduce layers of partial methods for defining and organizing behavioral variations, and layer activation mechanisms for layer selection and composition.\",\"1Variants of COP languages allow to manage layer compositions on a perinstance basis [9, 10], which is left as future work in the paper.\"],\"1992443356\":[\"Many COP extensions including those designed on top of Java [2], Smalltalk [6], Common Lisp [4] and JavaScript [10], are based on object-oriented programming languages and introduce layers of partial methods for defining and organizing behavioral variations, and layer activation mechanisms for layer selection and composition.\"],\"2016945749\":[\"Thus, formal models of FOP [1, 5] and DOP [13] typically give translational semantics.\"],\"2033348393\":[\"We present a small calculus called ContextFJ that is an extension of Featherweight Java (FJ) [ 8 ].\"],\"2059639972\":[\"Thus, formal models of FOP [1, 5] and DOP [13] typically give translational semantics.\"],\"2060640309\":[\"1 V ariants of COP languages allow to manage layer compositions on a perinstance basis [ 9 , 10], which is left as future work in the paper.\"],\"2089889705\":[\"Many COP extensions including those designed on top of Java [2], Smalltalk [6], Common Lisp [4] and JavaScript [10], are based on object-oriented programming languages and introduce layers of partial methods for defining and organizing behavioral variations, and layer activation mechanisms for layer selection and composition.\"],\"2097664691\":[\"Related Work The operational semantics of cj, a context-oriented extension to the j language family, is expressed using a delegationbased calculus [14].\"],\"2150275961\":[\"Context-oriented programming (COP) is an approach to improving modularity of behavioral variations that depend on the dynamic context of the execution environment [ 7 ].\\u001bJava [ 2 ], Smalltalk [6], Common Lisp [4] and JavaScript [10], are based on object-oriented programming languages and introduce layers of partial methods for defining and organizing behavioral variations, and layer activation mechanisms for layer selection and composition.\"],\"2165534348\":[\"Thus, formal models of FOP [1, 5] and DOP [13] typically give translational semantics.\"],\"2168986107\":[\"We present a small calculus called ContextFJ that is an extension of Featherweight Java (FJ) [8].\"],\"2181829784\":[\"Another approach to providing an operational semantics of COP layer constructs and their application is based on graph transformations [11].\"]},\"PR\":[2150275961,1992443356,2033348393,2148878240,2060640309,2089889705,2124489158,2144114063,2182749898,2145304606,1978875190,116001958,1665004853,2480195817,175922506,1792109404,2073585991,2115607078,2145919358,1692608920,2150275961,1992443356,2033348393,2148878240,2060640309,2089889705,2124489158,2144114063,2182749898,2145304606,1978875190,116001958,1665004853,2480195817,175922506,1792109404,2073585991,2115607078,2145919358,1692608920],\"ANF\":[{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":1},{\"FN\":\"Atsushi\",\"LN\":\"Igarashi\",\"S\":2},{\"FN\":\"Hidehiko\",\"LN\":\"Masuhara\",\"S\":3}],\"BV\":\"Proceedings of the 10th international workshop on Foundations of aspect-oriented languages\",\"BT\":\"p\",\"PB\":\"ACM\"}"},{"logprob":-19.833,"Id":2111576674,"Ty":"0","Ti":"declarative layer composition with the jcop programming language","Pt":"1","Y":2013,"D":"2013-01-01","CC":20,"ECC":20,"RId":[2138363365,1967661515,1882088395,2480195817,2143238865,41699526,2075642720,2126225516,1739798036,1992443356,2065646798,2157920816,2089889705,1539693001,1978875190,1581096042,2115607078,2161291379,1724660581,956539890,1556513858,2172169742,2000399282,1597389001,2014881790,2032415879,2002568360,2090124836,2006015625,1990628165,2027457117,2115773605,2037048706,2105053310,140370410],"W":["composition","declarative","jcop","language","layer","programming"],"AA":[{"DAuN":"Malte Appeltauer","AuN":"malte appeltauer","AuId":135591984,"S":1},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"S":2},{"DAuN":"Jens Lincke","AuN":"jens lincke","AuId":2055148755,"S":3}],"F":[{"DFN":"Source code","FN":"source code","FId":43126263},{"DFN":"Separation of concerns","FN":"separation of concerns","FId":76214141},{"DFN":"Programming language","FN":"programming language","FId":199360897},{"DFN":"Language construct","FN":"language construct","FId":48859967},{"DFN":"Implementation","FN":"implementation","FId":26713055},{"DFN":"Control flow","FN":"control flow","FId":160191386},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Composition (visual arts)","FN":"composition","FId":169260993}],"J":{"JN":"the journal of object technology","JId":172897590},"E":"{\"DN\":\"Declarative Layer Composition with the JCop Programming Language\",\"IA\":{\"IndexLength\":264,\"InvertedIndex\":{\"Program\":[0],\"behavior\":[1,41,114,134],\"that\":[2,57,184,217,235],\"relies\":[3],\"on\":[4],\"contextual\":[5],\"information,\":[6],\"such\":[7],\"as\":[8,123,180],\"physical\":[9],\"location\":[10],\"or\":[11],\"network\":[12],\"accessibility,\":[13],\"is\":[14,28,100,135],\"common\":[15],\"in\":[16,115,198,202],\"today's\":[17],\"appli-\":[18],\"cations,\":[19],\"yet\":[20],\"its\":[21],\"representation\":[22],\"at\":[23,154],\"the\":[24,83,86,90,103,129,142,146,186,209,253],\"source\":[25,84,98,130],\"code\":[26,99,144,221],\"level\":[27],\"not\":[29],\"suciently\":[30],\"supported\":[31],\"by\":[32,121],\"programming\":[33],\"languages.\":[34],\"With\":[35],\"context-oriented\":[36],\"program-\":[37],\"ming\":[38],\"(COP),\":[39],\"context-dependent\":[40,61,113,133],\"can\":[42],\"be\":[43,73,118,152],\"explicitly\":[44],\"modularized\":[45],\"and\":[46,63,259],\"dynamically\":[47],\"activated.\":[48],\"The\":[49,108],\"available\":[50],\"COP\":[51,93,122,241],\"implementations\":[52],\"oer\":[53],\"lan-\":[54],\"guage\":[55],\"constructs\":[56,79],\"allow\":[58],\"to\":[59,64,82,94,102,128,165,220],\"describe\":[60],\"functionality\":[62,71],\"specify\":[65],\"for\":[66,208],\"which\":[67,162],\"control\":[68,111,139,158,176],\"flows\":[69],\"this\":[70,124,170,191,244],\"should\":[72],\"exe-\":[74],\"cuted.\":[75],\"Since\":[76],\"these\":[77,157],\"language\":[78,251],\"require\":[80],\"modifications\":[81],\"code,\":[85],\"contemporary\":[87],\"approaches\":[88],\"limit\":[89],\"use\":[91],\"of\":[92,156,169,188,212,215,256,261],\"program\":[95],\"parts\":[96],\"whose\":[97],\"accessible\":[101],\"developer\":[104],\"(the\":[105],\"user\":[106,147],\"code).\":[107],\"dy-\":[109],\"namic\":[110],\"over\":[112,177],\"frameworks\":[116],\"cannot\":[117],\"directly\":[119],\"addressed\":[120,136,153],\"would\":[125],\"imply\":[126],\"changes\":[127],\"code.\":[131,148],\"Instead,\":[132],\"whenever\":[137],\"a\":[138,166,173,181,226,229,239],\"flow\":[140,159],\"from\":[141],\"framework\":[143],\"enters\":[145],\"Context\":[149],\"composition\":[150,197,258],\"must\":[151],\"any\":[155],\"entry\":[160],\"points,\":[161],\"may\":[163],\"lead\":[164,219],\"redundant\":[167],\"specification\":[168],\"functionality.\":[171],\"As\":[172],\"result,\":[174],\"dynamic\":[175],\"layers\":[178,216],\"emerges\":[179],\"crosscutting\":[182,195],\"concern\":[183],\"obstructs\":[185],\"separation\":[187],\"concerns.\":[189],\"In\":[190],\"article,\":[192],\"we\":[193,205,236,246],\"discuss\":[194,206],\"layer\":[196,257,262],\"framework-\":[199],\"based\":[200],\"applications\":[201],\"detail.\":[203],\"Moreover,\":[204],\"limitations\":[207],\"ex-\":[210],\"pression\":[211],\"semantic\":[213],\"relationships\":[214],\"might\":[218],\"du-\":[222],\"plication.\":[223],\"We\":[224],\"present\":[225],\"framework-based\":[227],\"application,\":[228],\"simple\":[230],\"action\":[231],\"ad-\":[232],\"venture\":[233],\"game\":[234],\"implemented\":[237],\"using\":[238],\"conventional\":[240],\"language.\":[242],\"Along\":[243],\"example,\":[245],\"show\":[247],\"how\":[248],\"our\":[249],\"JCop\":[250],\"supports\":[252],\"decla-\":[254],\"ration\":[255],\"expression\":[260],\"relationships.\":[263]}},\"S\":[{\"Ty\":3,\"U\":\"http://www.jot.fm/issues/issue_2013_06/article4.pdf\"},{\"Ty\":1,\"U\":\"http://www.jot.fm/contents/issue_2013_06/article4.html\"},{\"Ty\":1,\"U\":\"http://dblp.uni-trier.de/db/journals/jot/jot12.html#AppeltauerHL13\"}],\"VFN\":\"The Journal of Object Technology\",\"V\":12,\"I\":2,\"DOI\":\"10.5381/jot.2013.12.2.a4\",\"PR\":[2150275961,2144114063,2129732645,169634360,1992443356,2090124836,2156011560,2469053383,2754864316,2527095743,2297998882,2296688603,2293157443,2623403331,2093659090,2084028549,2555016675,2267923570,1554217755,175223090,2150275961,2144114063,2129732645,169634360,1992443356,2090124836,2156011560,2469053383,2754864316,2527095743,2297998882,2296688603,2293157443,2623403331,2093659090,2084028549,2555016675,2267923570,1554217755,175223090],\"ANF\":[{\"FN\":\"Malte\",\"LN\":\"Appeltauer\",\"S\":1},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":2},{\"FN\":\"Jens\",\"LN\":\"Lincke\",\"S\":3}],\"BV\":\"The Journal of Object Technology\",\"BT\":\"a\"}"},{"logprob":-20.066,"Id":2097664691,"Ty":"0","Ti":"delegation based semantics for modularizing crosscutting concerns","Pt":"3","L":"en","Y":2008,"D":"2008-10-19","CC":24,"ECC":24,"RId":[1489092837,2150275961,1971860760,1965418329,1970558557,1992443356,1513136098,2124476310,2000090290,2154597770,1501829296,2017743728,2091857576,2159410989,2068706008,2112780297,193724929,2020782492,21047038,1838409627,2152722217,75835960],"W":["concerns","crosscutting","delegation","modularizing","semantics"],"AA":[{"DAuN":"Hans Schippers","AuN":"hans schippers","AuId":2121358362,"DAfN":"University of Antwerp","AfN":"university of antwerp","AfId":149213910,"S":1},{"DAuN":"Dirk Janssens","AuN":"dirk janssens","AuId":2113706355,"DAfN":"University of Antwerp","AfN":"university of antwerp","AfId":149213910,"S":2},{"DAuN":"Michael Haupt","AuN":"michael haupt","AuId":2146662369,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":3},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":4}],"F":[{"DFN":"Well-founded semantics","FN":"well founded semantics","FId":89497691},{"DFN":"Third-generation programming language","FN":"third generation programming language","FId":206146517},{"DFN":"Semantics (computer science)","FN":"semantics","FId":184337299},{"DFN":"Second-generation programming language","FN":"second generation programming language","FId":11164408},{"DFN":"Programming language theory","FN":"programming language theory","FId":18701968},{"DFN":"Programming language","FN":"programming language","FId":199360897},{"DFN":"Programming domain","FN":"programming domain","FId":119263510},{"DFN":"Natural language processing","FN":"natural language processing","FId":204321447},{"DFN":"Fifth-generation programming language","FN":"fifth generation programming language","FId":199305712},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Comparison of multi-paradigm programming languages","FN":"comparison of multi paradigm programming languages","FId":74149592},{"DFN":"Artificial intelligence","FN":"artificial intelligence","FId":154945302}],"C":{"CN":"oopsla","CId":1138732554},"CI":{"CIN":"oopsla 2008","CIId":635565840},"E":"{\"DN\":\"Delegation-based semantics for modularizing crosscutting concerns\",\"IA\":{\"IndexLength\":122,\"InvertedIndex\":{\"We\":[0,40,67],\"describe\":[1],\"semantic\":[2],\"mappings\":[3],\"of\":[4,18,50,57,63,100,113],\"four\":[5],\"high-level\":[6,65],\"programming\":[7],\"languages\":[8,20],\"to\":[9,36,72,86],\"our\":[10,70],\"delegation-based\":[11],\"machine\":[12],\"model\":[13,71],\"for\":[14],\"aspect-oriented\":[15,101],\"programming.\":[16],\"One\":[17],\"the\":[19,51,55,64,95,107],\"is\":[21],\"a\":[22,58,110,119],\"class-based\":[23,92],\"object-oriented\":[24,93],\"one.\":[25],\"The\":[26],\"other\":[27],\"three\":[28],\"represent\":[29],\"extensions\":[30],\"thereof\":[31],\"that\":[32,43,77],\"support\":[33,88],\"various\":[34],\"approaches\":[35],\"modularizing\":[37],\"crosscutting\":[38],\"concerns.\":[39],\"explain\":[41],\"informally\":[42],\"an\":[44],\"operational\":[45],\"semantics\":[46],\"expressed\":[47],\"in\":[48,61,76,84],\"terms\":[49],\"model's\":[52],\"concepts\":[53],\"preserves\":[54],\"behavior\":[56],\"program\":[59],\"written\":[60],\"one\":[62],\"languages.\":[66],\"hence\":[68],\"argue\":[69],\"be\":[73],\"semantically\":[74],\"sound\":[75],\"sense,\":[78],\"as\":[79,81,91],\"well\":[80],\"sufficiently\":[82],\"expressive\":[83],\"order\":[85],\"correctly\":[87],\"features\":[89],\"such\":[90],\"programming,\":[94,102,115],\"open-classes\":[96],\"and\":[97,103],\"pointcut-and-advice\":[98],\"flavors\":[99],\"dynamic\":[104],\"layers.\":[105],\"For\":[106],\"latter,\":[108],\"being\":[109],\"core\":[111],\"feature\":[112],\"context-oriented\":[114],\"we\":[116],\"also\":[117],\"provide\":[118],\"formal\":[120],\"semantics.\":[121]}},\"S\":[{\"Ty\":3,\"U\":\"http://www.hirschfeld.org/writings/media/SchippersJanssensHauptHirschfeld_2008_DelegationBasedSemanticsForModularizingCrosscuttingConcerns_AcmDL_WithErrata.pdf\"},{\"Ty\":3,\"U\":\"http://www.hpi.uni-potsdam.de/hirschfeld/publications/media/SchippersJanssensHauptHirschfeld_2008_DelegationBasedSemanticsForModularizingCrosscuttingConcerns_AcmDL_WithErrata.pdf\"},{\"Ty\":1,\"U\":\"http://dblp.uni-trier.de/db/conf/oopsla/oopsla2008.html#SchippersJHH08\"},{\"Ty\":1,\"U\":\"https://doi.acm.org/10.1145/1449764.1449806\"},{\"Ty\":1,\"U\":\"https://dl.acm.org/citation.cfm?doid=1449764.1449806\"},{\"Ty\":0,\"U\":\"http://dl.acm.org/citation.cfm?doid=1449764.1449806\"}],\"VFN\":\"Conference on Object-Oriented Programming Systems, Languages, and Applications\",\"VSN\":\"OOPSLA\",\"V\":43,\"I\":10,\"FP\":525,\"LP\":542,\"DOI\":\"10.1145/1449764.1449806\",\"CC\":{\"21047038\":[\"Implementation-wise, a number of projects are concerned with virtual machine support for aspect-orientation [19,  20 , 11, 10, 22].\\u001bAmong these, PROSE 2 [ 20 ] is the only one to adopt, like our machine model, a view on the running application that explicitly regards all points in the execution as potential join points by default.\"],\"75835960\":[\"This paper demonstrates how the operational semantics of j, ij, aj [21] and cj, four high-level programming languages, can be mapped onto the operational semantics of our machine model, as well as provides an informal argument suggesting their behavior is preserved in the process.\",\"The languages are formally described by means of an operational semantics for each of them [21].\",\"• we show how the semantics of the j, ij, and aj languages [21] can be directly expressed in terms of our model’s semantics [12], • we explain informally that these semantics are equivalent with their original counterparts, • we provide, for the first time, a formal semantics for cj, and hence, for one flavor of context-oriented programming, and map it to our model’s semantics like for the other three languages.\",\"However, a strategy supporting exactly one formal parameter which is always called x, similar to the one used in the original definitions of the j language family [21], can be straightforwardly implemented.\",\"This section will introduce the j, ij, aj [21] and cj languages, along with their operational semantics.\",\"The original operational semantics of the languages is expressed by means of a rewriting function defined through a number of reduction rules [21].\",\"An EBNF-style definition of the syntax of j [21] is given in Lst.\",\"This is expressed by the new! operation [21], which essentially boils down to:\",\"Recall that the Delι function determines the delegate of the object at address ι , while AllFields returns the fields of a class and all its super classes, and getMethods [21] results in a collection of the methods defined by one specific class.\",\"Finally, the super function [21] determines the name of a class’ super class.\"],\"193724929\":[\"In [1], Aldrich introduces TinyAspect, a language with pointcuts and around advice.\"],\"1501829296\":[\"In previous work [12], we have introduced a machine model for aspect-oriented programming (AOP), which is centered\",\"• we show how the semantics of the j, ij, and aj languages [21] can be directly expressed in terms of our model’s semantics [12], • we explain informally that these semantics are equivalent with their original counterparts, • we provide, for the first time, a formal semantics for cj, and hence, for one flavor of context-oriented programming, and map it to our model’s semantics like for the other three languages.\",\"We restrict the presentation of the machine model we use in this work [12] to a brief summary of the model and its semantics to facilitate an easier understanding of the semantic mappings described in Sec.\",\"2 recapitulate, in condensed form, material that has been published in [12], while Sec.\",\"The formal, operational semantics of the machine model, provided in [12], is based on the δ calculus [2].\",\"At the heart of the semantics are the Clone (1) and Select (2) operations [12], which respectively handle object creation and message sending:\",\"This matches the common semantics of delegation-based object-oriented programming and is crucial for the proper functioning of the model [12].\",\"Finally, in order to be able to support class-wide manipulations of the delegation chain, a proxy object should be inserted for each class, as outlined in [12].\",\"In our machine model, however, inter-type declarations are supported directly, and in fact implemented as dynamic introductions [12].\",\"Additionally, complex pointcut specifications, including cflow, are supported, while we did not yet cover a language exhibiting those features, although our machine model itself has the ability to handle cflow [12].\"],\"1513136098\":[\"The model was shown to elegantly support a wide range of core mechanisms and features of both the object- and aspect-oriented programming paradigms, such as classes, inheritance, open classes [17] in the form of dynamic introductions and pointcut-andadvice based AOP [15].\",\"Thus, ij represents an implementation of the open classes flavor of AOP, and aj, one of the pointcuts-andadvice flavor [15].\",\"The Aspect Sand Box [15] is an experimental workbench for different styles of aspect-oriented programming, centered on a small object-oriented base language, called BASE,\"],\"1838409627\":[\"Implementation-wise, a number of projects are concerned with virtual machine support for aspect-orientation [19, 20, 11, 10, 22].\"],\"1965418329\":[\"Wand et al. [ 24 ] consider a procedural subset of BASE in order to investigate the formal semantics of a number of aspect-oriented features, including dynamic join points, pointcut designators and before, after and around advice.\"],\"1970558557\":[\"Implementation-wise, a number of projects are concerned with virtual machine support for aspect-orientation [19, 20, 11, 10, 22].\"],\"1971860760\":[\"Composition filters [3] is another approach which exploits the language level, rather than the machine level.\"],\"1992443356\":[\"It does not include the features of ij and aj, but instead adopts context-oriented programming (COP) [ 5 , 13], a layer-based approach to the modularization of crosscutting concerns.\\u001bUnlike ij and aj, cj implements the concepts of context-oriented programming (COP) [ 5 , 13], and is basically a subset of ContextJ [6].\"],\"2000090290\":[\"Implementation-wise, a number of projects are concerned with virtual machine support for aspect-orientation [19, 20, 11, 10, 22].\"],\"2017743728\":[\"The model was shown to elegantly support a wide range of core mechanisms and features of both the object- and aspect-oriented programming paradigms, such as classes, inheritance, open classes [17] in the form of dynamic introductions and pointcut-andadvice based AOP [15].\"],\"2020782492\":[\"Implementation-wise, a number of projects are concerned with virtual machine support for aspect-orientation [19, 20, 11, 10, 22].\"],\"2091857576\":[\"Lämmel [14] observes that method call interception (MCI), which can be regarded as a more explicit form of delegation, is a powerful construct which can capture several aspect-oriented features.\"],\"2112780297\":[\"Clifton and Leavens [ 4 ] introduce MiniMAO0, a small object-oriented language for which an operational semantics is provided.\"],\"2124476310\":[\"[23] also use an intermediate model with inherent support for aspects.\"],\"2150275961\":[\"It does not include the features of ij and aj, but instead adopts context-oriented programming (COP) [5, 13], a layer-based approach to the modularization of crosscutting concerns.\",\"Unlike ij and aj, cj implements the concepts of context-oriented programming (COP) [5, 13], and is basically a subset of ContextJ [6].\"],\"2152722217\":[\"Objects are, using a prototype-based object-oriented environment, consistently represented as \\\"seas of fragments\\\" [18]: each object is visible to others only in the form of a proxy.\"],\"2154597770\":[\"cj can be considered a subset of ContextJ [ 6 ].\\u001bUnlike ij and aj, cj implements the concepts of context-oriented programming (COP) [5, 13], and is basically a subset of ContextJ [ 6 ].\"],\"2159410989\":[\"Aspectual CAML [16] is an aspect-oriented extension to OCAML, with join points for typical functional features such as curried function calls and variant construction, as well as support for inter-type declarations.\"]},\"PR\":[2150275961,1501829296,2480195817,1992443356,2138363365,2014881790,2060640309,2070821087,1692608920,91042594,2610393394,192290799,635351216,1502533643,1554509881,1569437219,2789548184,117888344,1533406808,2898787727,2150275961,1501829296,2480195817,1992443356,2138363365,2014881790,2060640309,2070821087,1692608920,91042594,2610393394,192290799,635351216,1502533643,1554509881,1569437219,2789548184,117888344,1533406808,2898787727],\"ANF\":[{\"FN\":\"Hans\",\"LN\":\"Schippers\",\"S\":1},{\"FN\":\"Dirk\",\"LN\":\"Janssens\",\"S\":2},{\"FN\":\"Michael\",\"LN\":\"Haupt\",\"S\":3},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":4}],\"BV\":\"Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications\",\"BT\":\"p\",\"PB\":\"ACM\"}"},{"logprob":-20.084,"Id":2172169742,"Ty":"0","Ti":"improving the development of context dependent java applications with contextj","Pt":"0","L":"en","Y":2009,"D":"2009-07-07","CC":27,"ECC":27,"RId":[2138363365,2480195817,2143238865,2075642720,2150275961,1739798036,1992443356,1531869376,2157920816,2089889705,2154597770,2087175184,956539890,1556513858],"W":["applications","context","contextj","dependent","development","improving","java"],"AA":[{"DAuN":"Malte Appeltauer","AuN":"malte appeltauer","AuId":135591984,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":1},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":2},{"DAuN":"Hidehiko Masuhara","AuN":"hidehiko masuhara","AuId":2087436944,"DAfN":"University of Tokyo","AfN":"university of tokyo","AfId":74801974,"S":3}],"F":[{"DFN":"Real time Java","FN":"real time java","FId":132106392},{"DFN":"Programming paradigm","FN":"programming paradigm","FId":34165917},{"DFN":"Programming language","FN":"programming language","FId":199360897},{"DFN":"Programming domain","FN":"programming domain","FId":119263510},{"DFN":"Java","FN":"java","FId":548217200},{"DFN":"Graphical user interface","FN":"graphical user interface","FId":37789001},{"DFN":"Fourth-generation programming language","FN":"fourth generation programming language","FId":145628200},{"DFN":"Fifth-generation programming language","FN":"fifth generation programming language","FId":199305712},{"DFN":"Event-driven programming","FN":"event driven programming","FId":77362995},{"DFN":"Computer science","FN":"computer science","FId":41008148}],"E":"{\"DN\":\"Improving the development of context-dependent Java applications with ContextJ\",\"IA\":{\"IndexLength\":68,\"InvertedIndex\":{\"Context-oriented\":[0],\"programming\":[1,19],\"languages\":[2],\"ease\":[3],\"the\":[4,17,26,33,54],\"design\":[5],\"and\":[6,58],\"implementation\":[7],\"of\":[8,28,35],\"context-dependent\":[9],\"applications.\":[10],\"ContextJ\":[11,29,51,63],\"is\":[12],\"a\":[13,36,43],\"context-oriented\":[14],\"extension\":[15],\"to\":[16,62,64],\"Java\":[18],\"language.\":[20],\"In\":[21],\"this\":[22],\"paper,\":[23],\"we\":[24],\"assess\":[25],\"applicability\":[27],\"language\":[30],\"abstractions\":[31],\"for\":[32],\"development\":[34],\"graphical\":[37],\"user\":[38],\"interface-based\":[39],\"application.\":[40],\"We\":[41],\"present\":[42],\"text\":[44],\"editor\":[45],\"that\":[46],\"has\":[47],\"been\":[48],\"implemented\":[49],\"with\":[50],\"based\":[52],\"on\":[53],\"Qt\":[55],\"Jambi\":[56],\"framework\":[57],\"discuss\":[59],\"possible\":[60],\"extensions\":[61],\"improve\":[65],\"its\":[66],\"applicability.\":[67]}},\"S\":[{\"Ty\":3,\"U\":\"http://www.hpi.uni-potsdam.de/hirschfeld/publications/media/AppeltauerHirschfeldMasuhara_2009_ImprovingTheDevelopmentOfContextDependentJavaApplicationsWithContextJ_AcmDL.pdf\"},{\"Ty\":3,\"U\":\"http://soft.vub.ac.be/cop09/papers/a5-appeltauer.pdf\"},{\"Ty\":3,\"U\":\"http://www.hirschfeld.org/writings/media/AppeltauerHirschfeldMasuhara_2009_ImprovingTheDevelopmentOfContextDependentJavaApplicationsWithContextJ_AcmDL.pdf\"},{\"Ty\":1,\"U\":\"https://dl.acm.org/ft_gateway.cfm?id=1562117&type=pdf\"},{\"Ty\":1,\"U\":\"https://doi.acm.org/10.1145/1562112.1562117\"}],\"VFN\":\"International Workshop on Context-Oriented Programming\",\"FP\":5,\"DOI\":\"10.1145/1562112.1562117\",\"CC\":{\"956539890\":[\"Java-based aspect-oriented programming languages, such as AspectJ [9] or CaesarJ [2], also provide abstractions to modularize crosscutting concerns but focus on functionality that is repeatedly used at different points in a program.\",\"The CaesarJ [2] language unifies classes, aspects, and packages.\"],\"1531869376\":[\"Java-based aspect-oriented programming languages, such as AspectJ [9] or CaesarJ [ 2 ], also provide abstractions to modularize crosscutting concerns but focus on functionality that is repeatedly used at dierent points in a program.\\u001bThe CaesarJ [ 2 ] language unies classes, aspects, and packages.\"],\"1556513858\":[\"Several COP extensions have been developed for dynamic programming languages such as Lisp [5], Smalltalk [ 7 ], Python [14,15], and Ruby [13].\"],\"1739798036\":[\"CaesarJ supports virtual classes [11], a concept that enables dynamic class extension, depending on the caller’s scope.\"],\"1992443356\":[\"Several COP extensions have been developed for dynamic programming languages such as Lisp [ 5 ], Smalltalk [7], Python [14,15], and Ruby [13].\"],\"2075642720\":[\"The maintenance and development of software productlines is addressed by feature-oriented programming [4].\"],\"2087175184\":[\"Several COP extensions have been developed for dynamic programming languages such as Lisp [5], Smalltalk [7], Python [14, 15 ], and Ruby [13].\"],\"2089889705\":[\"ContextJ [ 1 ] is our compiler-based COP extension to the\"],\"2138363365\":[\"Such distributed functionality is denoted as crosscutting concern [ 10 ].\"],\"2143238865\":[\"Such distributed functionality is denoted as crosscutting concern [10].\"],\"2150275961\":[\"Context-oriented programming [8] (COP) addresses the development of systems, whose behavior varies depending on their context of use.\",\"Context that requires a composition of behavioral variations can be everything that is computationally accessible [8], such as state, control flow, or properties of the system’s environment.\",\"2 ContextJ The ContextJ programming language features the layersin-class style [8]: each class affected by a layer L contains a declaration of L that contains partial methods for its class.\",\"The first Java-based prototype is ContextJ* [8], a Java library that implements the core concepts of COP.\"],\"2154597770\":[\"First ideas about a COP language extension to Java have been presented in [6], but neither provide a language specification, nor an implementation.\"],\"2157920816\":[\"The Java-based AHEAD Tool Suite [3] provides a Java language extension supporting constructs such as class refinements for static feature-oriented composition.\"],\"2480195817\":[\"Java-based aspect-oriented programming languages, such as AspectJ [9] or CaesarJ [2], also provide abstractions to modularize crosscutting concerns but focus on functionality that is repeatedly used at different points in a program.\"]},\"PR\":[2150275961,2089889705,2144114063,1992443356,2480195817,1556513858,175922506,2087175184,2115607078,2060640309,1724660581,1539693001,1581096042,1531869376,1978875190,2143238865,2145304606,2014881790,2032835129,2075642720,2150275961,2089889705,2144114063,1992443356,2480195817,1556513858,175922506,2087175184,2115607078,2060640309,1724660581,1539693001,1581096042,1531869376,1978875190,2143238865,2145304606,2014881790,2032835129,2075642720],\"ANF\":[{\"FN\":\"Malte\",\"LN\":\"Appeltauer\",\"S\":1},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":2},{\"FN\":\"Hidehiko\",\"LN\":\"Masuhara\",\"S\":3}],\"BV\":\"International Workshop on Context-Oriented Programming\",\"BT\":\"p\",\"PB\":\"ACM\"}"},{"logprob":-20.089,"Id":2012948209,"Ty":"0","Ti":"squeakjs a modern and practical smalltalk that runs in any browser","Pt":"3","L":"en","Y":2015,"D":"2015-05-12","CC":8,"ECC":8,"RId":[1770006921,2099822290,2172147300,2156487548,1584747838,1493929095,2125897312,2160959221,2024901245,2021429765,2471814997,171056846],"W":["browser","modern","practical","runs","smalltalk","squeakjs"],"AA":[{"DAuN":"Bert Freudenberg","AuN":"bert freudenberg","AuId":2776489000,"DAfN":"Communications Design Group, Potsdam, Germany","S":1},{"DAuN":"Dan H.H. Ingalls","AuN":"dan ingalls","AuId":2101984334,"DAfN":"Communications Design Group, San Francisco, USA","S":2},{"DAuN":"Tim Felgentreff","AuN":"tim felgentreff","AuId":1964871710,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":3},{"DAuN":"Tobias Pape","AuN":"tobias pape","AuId":2114920648,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":4},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":5}],"F":[{"DFN":"World Wide Web","FN":"world wide web","FId":136764020},{"DFN":"Web development","FN":"web development","FId":79373723},{"DFN":"Virtual machine","FN":"virtual machine","FId":25344961},{"DFN":"Squeak","FN":"squeak","FId":2780281086},{"DFN":"Software deployment","FN":"software deployment","FId":105339364},{"DFN":"Smalltalk","FN":"smalltalk","FId":2777293101},{"DFN":"Programming language","FN":"programming language","FId":199360897},{"DFN":"JavaScript","FN":"javascript","FId":544833334},{"DFN":"Database","FN":"database","FId":77088390},{"DFN":"Computer science","FN":"computer science","FId":41008148}],"C":{"CN":"dls","CId":1133200404},"E":"{\"DN\":\"SqueakJS: a modern and practical smalltalk that runs in any browser\",\"IA\":{\"IndexLength\":99,\"InvertedIndex\":{\"We\":[0,63],\"report\":[1],\"our\":[2],\"experience\":[3,81],\"in\":[4,13,19,95],\"implementing\":[5],\"SqueakJS,\":[6],\"a\":[7,24,32,96],\"bit-compatible\":[8],\"implementation\":[9,38],\"of\":[10,79],\"Squeak/Smalltalk\":[11],\"written\":[12],\"pure\":[14],\"JavaScript.\":[15],\"SqueakJS\":[16],\"runs\":[17],\"entirely\":[18],\"the\":[20,49,58,74],\"Web\":[21,60],\"browser\":[22],\"with\":[23],\"virtual\":[25,76],\"filesystem\":[26],\"that\":[27],\"can\":[28],\"be\":[29],\"directed\":[30],\"to\":[31,48,85],\"server\":[33],\"or\":[34],\"client-side\":[35],\"storage.\":[36],\"Our\":[37],\"is\":[39,82],\"notable\":[40],\"for\":[41,73],\"simplicity\":[42],\"and\":[43,53,91],\"performance\":[44,71],\"gained\":[45,56],\"through\":[46,57],\"adaptation\":[47],\"host\":[50],\"object\":[51],\"memory\":[52],\"deployment\":[54],\"leverage\":[55],\"Lively\":[59],\"development\":[61],\"environment.\":[62,98],\"present\":[64],\"several\":[65],\"novel\":[66],\"techniques\":[67],\"as\":[68,70],\"well\":[69],\"measurements\":[72],\"resulting\":[75],\"machine.\":[77],\"Much\":[78],\"this\":[80],\"potentially\":[83],\"relevant\":[84],\"preserving\":[86],\"other\":[87],\"dynamic\":[88],\"language\":[89],\"systems\":[90],\"making\":[92],\"them\":[93],\"available\":[94],\"browser-based\":[97]}},\"S\":[{\"Ty\":3,\"U\":\"http://www.hirschfeld.org/writings/media/FreudenbergIngallsFelgentreffPapeHirschfeld_2014_SqueakJSAModernAndPracticalSmalltalkThatRunsInAnyBrowser_AcmDL.pdf\"},{\"Ty\":1,\"U\":\"https://publishup.uni-potsdam.de/frontdoor/index/index/docId/39176\"},{\"Ty\":1,\"U\":\"https://dl.acm.org/citation.cfm?doid=2661088.2661100\"},{\"Ty\":1,\"U\":\"https://doi.acm.org/10.1145/2661088.2661100\"},{\"Ty\":0,\"U\":\"http://dl.acm.org/citation.cfm?doid=2661088.2661100\"},{\"Ty\":0,\"U\":\"http://doi.acm.org/10.1145/2775052.2661100\"}],\"VFN\":\"Dynamic Languages Symposium\",\"VSN\":\"DLS\",\"V\":50,\"I\":2,\"FP\":57,\"LP\":66,\"DOI\":\"10.1145/2775052.2661100\",\"CC\":{\"171056846\":[\"Recent attempts at re-implementing or re-engineering the Squeak VM have shown that good performance is difficult to achieve [2, 13, 17].\"],\"1493929095\":[\"Recent attempts at re-implementing or re-engineering the Squeak VM have shown that good performance is difficult to achieve [2, 13, 17].\",\"The R/SqueakVM (based on the Spy [2]) is an RPythonbased implementation of Squeak that uses this scheme [17].\",\"R/SqueakVM, based on Spy [2], is an implementation of Squeak in the PyPy framework [17].\"],\"1584747838\":[\"The original Squeak VM is written in “Slang”, a subset of Smalltalk with C semantics, which can be translated to C easily [6].\",\"Both are written in Slang [6], a Smalltalk subset that directly translates to C.\"],\"1770006921\":[\"In contrast to such language implementations that host much of its core functionality inside of the VM, Squeak implements much of its kernel in Smalltalk [5] itself.\",\"Squeak virtual machines The root for all Squeak implementations is the original Squeak VM [8], that aims to provide an open Smalltalk-80 system [5].\"],\"2021429765\":[\"Other languages on top of JavaScript O’Browser [3] (OCaml), BicaVM8 (Java), and Doppio9 (Java), among others, are JavaScript implementations of VMs for static languages.\"],\"2024901245\":[\"In Lively, most tools are parts [10]—parts are compositions of morphs [11] with associated, instance-specific behavior.\"],\"2099822290\":[\"Educational applications such as Etoys [9] and early versions of Scratch [12], however, suffer from restrictions against installing native software in scholastic environments.\"],\"2125897312\":[\"Whalesong [19] (Racket), Biwa6 (Scheme), and Skulpt7 (Python), among others, are JavaScript implementations of VMs for dynamic languages.\"],\"2156487548\":[\"Dynamic languages such as Python or Ruby have successfully been translated into JavaScript using the automatic translation toolchain Emscripten [20].\"],\"2160959221\":[\"The RoarVM [16] implements Squeak with a focus on exploiting manycore hardware.\"],\"2172147300\":[\"The Squeak/Smalltalk development environment [8] and its derivatives are the basis for a number of interesting applications in research and education.\",\"The process to get it up and running roughly consists of the steps described by Dan Ingalls [8]:\",\"Squeak virtual machines The root for all Squeak implementations is the original Squeak VM [8], that aims to provide an open Smalltalk-80 system [5].\"],\"2471814997\":[\"However, even with RPython’s tracing just-in-time (JIT) compiler [1], the performance of pure-Smalltalk BitBlt is still about an order of magnitude slower than a C-based implementation, indicating that a native (which in our case means JavaScript) implementation is still preferable to achieve good performance.\"]},\"PR\":[2074211779,2739518953,2172147300,2145317012,2025169688,1582642138,2784299757,2790620778,2159392907,2400705738,2048102561,2518019954,1983462040,2126017151,2117191710,1982725024,2072005628,2368996010,72484077,2736093892,2074211779,2739518953,2172147300,2145317012,2025169688,1582642138,2784299757,2790620778,2159392907,2400705738,2048102561,2518019954,1983462040,2126017151,2117191710,1982725024,2072005628,2368996010,72484077,2736093892],\"ANF\":[{\"FN\":\"Bert\",\"LN\":\"Freudenberg\",\"S\":1},{\"FN\":\"Dan H.H.\",\"LN\":\"Ingalls\",\"S\":2},{\"FN\":\"Tim\",\"LN\":\"Felgentreff\",\"S\":3},{\"FN\":\"Tobias\",\"LN\":\"Pape\",\"S\":4},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":5}],\"BV\":\"dynamic languages symposium\",\"BT\":\"a\",\"PB\":\"ACM\"}"},{"logprob":-20.095,"Id":2065328158,"Ty":"0","Ti":"does revising the intrinsic and extrinsic subscales of the minnesota satisfaction questionnaire short form make a difference","Pt":"1","L":"en","Y":2000,"D":"2000-04-01","CC":160,"ECC":255,"RId":[2107031757,2159401492,2056434135,1984186949,188807262,2157209757,2125806375,2323132578,37476018,1983218278,2080057209,2030130848,2151217965,2025115221,2001095132,1578248918,2117132966,2070194468,2067421228,2158245035,2092063714,1585851474,21339,1956700811,2039929250,2064868813,2047641099,1974076431,1992693518,1980546737,2040693388,2027878598],"W":["difference","extrinsic","form","intrinsic","make","minnesota","questionnaire","revising","satisfaction","short","subscales"],"AA":[{"DAuN":"Robert R. Hirschfeld","AuN":"robert hirschfeld","AuId":2441726690,"DAfN":"Louisiana State University","AfN":"louisiana state university","AfId":121820613,"S":1}],"F":[{"DFN":"Test validity","FN":"test validity","FId":116211729},{"DFN":"Statistics","FN":"statistics","FId":105795698},{"DFN":"Social psychology","FN":"social psychology","FId":77805123},{"DFN":"Regression analysis","FN":"regression analysis","FId":152877465},{"DFN":"Psychometrics","FN":"psychometrics","FId":171606756},{"DFN":"Psychology","FN":"psychology","FId":15744967},{"DFN":"Multilevel model","FN":"multilevel model","FId":53059260},{"DFN":"Job satisfaction","FN":"job satisfaction","FId":2718322},{"DFN":"Discriminant validity","FN":"discriminant validity","FId":120107772},{"DFN":"Confirmatory factor analysis","FN":"confirmatory factor analysis","FId":40722632},{"DFN":"Absenteeism","FN":"absenteeism","FId":27400517}],"J":{"JN":"educ psychol meas","JId":176831015},"E":"{\"DN\":\"Does Revising the Intrinsic and Extrinsic Subscales of the Minnesota Satisfaction Questionnaire Short Form Make a Difference\",\"IA\":{\"IndexLength\":102,\"InvertedIndex\":{\"This\":[0],\"study\":[1],\"compared\":[2],\"the\":[3,10,39,45,51,78,90,99],\"original\":[4,40],\"intrinsic\":[5,52,91],\"and\":[6,41,53,71,92],\"extrinsic\":[7,54,93],\"subscales\":[8,18,26,43,94],\"of\":[9,38,48],\"Minnesota\":[11],\"Satisfaction\":[12],\"Questionnaire\":[13],\"short\":[14],\"form\":[15],\"to\":[16,30,77],\"revised\":[17,25,42],\"using\":[19],\"data\":[20],\"from\":[21,84],\"two\":[22],\"samples.\":[23],\"The\":[24,82],\"were\":[27,62],\"formed\":[28],\"according\":[29],\"critiques\":[31],\"by\":[32],\"several\":[33],\"researchers.\":[34],\"Confirmatory\":[35],\"factor\":[36],\"analysis\":[37],\"supported\":[44],\"discriminant\":[46],\"validity\":[47],\"scores\":[49],\"on\":[50],\"job\":[55,66,69,79],\"satisfaction\":[56,80],\"measures.\":[57],\"Several\":[58],\"hierarchical\":[59],\"regression\":[60],\"models\":[61],\"tested\":[63],\"that\":[64,88],\"included\":[65],\"involvement,\":[67],\"overall\":[68],\"satisfaction,\":[70],\"volitional\":[72],\"absence\":[73],\"variables,\":[74],\"in\":[75,98],\"addition\":[76],\"components.\":[81],\"analyses\":[83],\"both\":[85],\"samples\":[86],\"indicated\":[87],\"revising\":[89],\"made\":[95],\"little\":[96],\"difference\":[97],\"results\":[100],\"obtained.\":[101]}},\"S\":[{\"Ty\":1,\"U\":\"http://journals.sagepub.com/doi/abs/10.1177/00131640021970493\"},{\"Ty\":1,\"U\":\"https://eric.ed.gov/?id=EJ605955\"},{\"Ty\":0,\"U\":\"http://epm.sagepub.com/cgi/doi/10.1177/00131640021970493\"}],\"VFN\":\"Educational and Psychological Measurement\",\"V\":60,\"I\":2,\"FP\":255,\"LP\":270,\"DOI\":\"10.1177/00131640021970493\",\"CC\":{\"21339\":[\"Cook et al. (1981) suggested that some of the MSQ short-form items may not represent universally valued aspects of a job.\",\"’s (1993) and Cook et al.’s (1981) criticisms and suggestions makes little difference in relations of job satisfaction components with relevant variables and ostensibly does not result in improved construct validity of MSQ short-form scores.\"],\"37476018\":[\"For the second overall job satisfaction item, Andrews and Withey’s (1976) Delighted-Terrible 7-point response scale was used by respondents in responding to the question, “How do you feel about your job overall?” These two overall job satisfaction items were combined to form a composite measure with an alpha of .\"],\"188807262\":[\"Simply put, job satisfaction is the extent to which people like their jobs (Spector, 1997).\",\"Among managers, job satisfaction is often considered an important influence on employee behavior and, ultimately, organizational effectiveness (Spector, 1997).\",\"Due to its importance in organizational life, job satisfaction is studied more frequently by organizational researchers than any other variable in the domain of industrial-organizational psychology (Spector, 1997).\",\"For research on job satisfaction to be useful, it is imperative that job satisfaction scales are precise in measuring what they are designed to assess (Spector, 1997; Stone-Romero, 1994).\",\"Intrinsic job satisfaction is how people feel about the nature of the job tasks themselves, whereas extrinsic job satisfaction is how people feel about aspects of the work situation that are external to the job tasks or work itself (Spector, 1997).\",\", 1967) results in a lower-than-optimal level of construct validity (e.g., Arvey, Dewhirst, & Brown, 1978; Cook, Hepworth, Wall, & Warr, 1981; Schriesheim, Powers, Scandura, Gardiner, & Lankau, 1993; Spector, 1997).\"],\"1984186949\":[\"The present study also included a volitional absence variable intended to reflect the affective or emotive source of motivation (Bagozzi, 1992; Lazarus, 1991).\",\"When employees perceive their job tasks as providing the means for experiencing satisfaction and well-being, they are likely to exhibit greater positive (and less negative) anticipatory affect toward undertaking work tasks (Bagozzi, 1992; Lazarus, 1991).\"],\"2001095132\":[\"Consistent with the findings of Schriesheim et al. (1993), Items 13 (standardized parameter estimate or λ = .\"],\"2056434135\":[\"Bentler (1992) recommended a sample size to estimated parameter ratio of at least 5:1 to derive reliable parameter estimates in confirmatory factor analyses.\"],\"2070194468\":[\"Self-report measures of absence often have some advantages over archival data, and evidence exists supporting the reliability and validity of self-report absence measures (Harrison & Shaffer, 1994; Johns, 1994).\",\"This measure used a freeresponse format as recommended by Johns (1994) to mitigate common method variance concerns.\"],\"2080057209\":[\"Brown’s (1996) meta-analysis of job involvement substantiated distinct links between job involvement and intrinsic and extrinsic job satisfaction; the results suggested that job involvement is more strongly linked to intrinsic job satisfaction than to extrinsic job satisfaction.\"],\"2092063714\":[\"Spector (1997) identified the 20-item short form of the Minnesota Satisfaction Questionnaire (MSQ) (Weiss, Dawis, England, & Lofquist, 1967) as a popular facet measure that is frequently used in job satisfaction research.\",\"The single-item job-ingeneral scale used by Judge, Cable, Boudreau, and Bretz (1995) and Scarpello and Campbell (1983) was employed with the very dissatisfied (1) to very satisfied (5) response scale.\"],\"2117132966\":[\"Overall, the findings of the present study suggest that revising the intrinsic and extrinsic subscales in a way that is consistent with Schriesheim et al.’s (1993) and Cook et al.\"],\"2125806375\":[\"Overall job satisfaction, an expansive job satisfaction construct (Highhouse & Becker, 1993; Scarpello & Campbell, 1983; Wanous et al., 1997), was measured with two items.\"],\"2158245035\":[\"Despite this study’s limitations, the results should allow researchers to place more confidence in research findings using the original MSQ shortform intrinsic and extrinsic subscales (e.g., Arvey et al., 1989, 1994; Day & Bedeian, 1991; Moorman, 1993; Steiner & Truxillo, 1987, 1989; Vandenberg & Scarpello, 1990).\"],\"2323132578\":[\"The present study also included a volitional absence variable intended to reflect the affective or emotive source of motivation (Bagozzi, 1992; Lazarus, 1991).\",\"When employees perceive their job tasks as providing the means for experiencing satisfaction and well-being, they are likely to exhibit greater positive (and less negative) anticipatory affect toward undertaking work tasks (Bagozzi, 1992; Lazarus, 1991).\",\"The present study also included a volitional absence variable intended to reflect the affective or emotive source of motivation (Bagozzi, 1992; Lazarus, 1991). According to Bagozzi (1992), the cognitive appraisal of the implications that situational conditions (e.\"]},\"PR\":[1956700811,188807262,163832182,1978684417,2158517811,1990199118,1518638857,2076025404,1995113941,2041090984,1491549656,1971440513,2083174051,1556057683,1578556049,2038674454,2045181804,2048923737,2053749740,1820801730,1956700811,188807262,163832182,1978684417,2158517811,1990199118,1518638857,2076025404,1995113941,2041090984,1491549656,1971440513,2083174051,1556057683,1578556049,2038674454,2045181804,2048923737,2053749740,1820801730],\"ANF\":[{\"FN\":\"Robert R.\",\"LN\":\"Hirschfeld\",\"S\":1}],\"BV\":\"Educational and Psychological Measurement\",\"BT\":\"a\",\"PB\":\"SAGE Publications\"}"},{"logprob":-20.114,"Id":2097013380,"Ty":"0","Ti":"pycket a tracing jit for a functional language","Pt":"3","L":"en","Y":2015,"D":"2015-08-29","CC":20,"ECC":20,"RId":[1760551737,2884979488,2072737419,1982205631,2002301065,2116136092,1993335798,1973186567,2000050212,2128457714,2128303158,2101718506,1598886868,2101225843,2130262734,1993318777,2208923056,2084845478,1584951182,2073904768,1966981171,2004843654,2139672701,2058639022,2169661165,2055806388,1998416211,2135416495,2037159234,2126126443,2133240977,2114978795,2086833941,2126060880,150926849,2034918983,2148186462,2153293846,2168176277,2171070726,2040615980,1974715526,2137734935,1878889593,1566005068,1568267803,2053321753,2106411570,2001974029,633399213,100466825,1553881800,2112404227,1511619943,1594498566],"W":["functional","jit","language","pycket","tracing"],"AA":[{"DAuN":"Spenser Bauman","AuN":"spenser bauman","AuId":2226953758,"DAfN":"Indiana University","AfN":"indiana university","AfId":592451,"S":1},{"DAuN":"Carl Friedrich Bolz","AuN":"carl friedrich bolz","AuId":1964826138,"DAfN":"King's College London","AfN":"king s college london","AfId":183935753,"S":2},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"HPI, Germany","S":3},{"DAuN":"Vasily Kirilichev","AuN":"vasily kirilichev","AuId":2231957139,"DAfN":"HPI, Germany","S":4},{"DAuN":"Tobias Pape","AuN":"tobias pape","AuId":2114920648,"DAfN":"HPI, Germany","S":5},{"DAuN":"Jeremy G. Siek","AuN":"jeremy g siek","AuId":96750307,"DAfN":"Indiana University","AfN":"indiana university","AfId":592451,"S":6},{"DAuN":"Sam Tobin-Hochstadt","AuN":"sam tobinhochstadt","AuId":546024081,"DAfN":"Indiana University","AfN":"indiana university","AfId":592451,"S":7}],"F":[{"DFN":"Tracing just-in-time compilation","FN":"tracing just in time compilation","FId":50450317},{"DFN":"Tracing","FN":"tracing","FId":138673069},{"DFN":"Real-time computing","FN":"real time computing","FId":79403827},{"DFN":"Racket","FN":"racket","FId":2778707667},{"DFN":"Programming language","FN":"programming language","FId":199360897},{"DFN":"Interpreter","FN":"interpreter","FId":122783720},{"DFN":"Gradual typing","FN":"gradual typing","FId":2777703423},{"DFN":"Functional programming","FN":"functional programming","FId":42383842},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Compiler","FN":"compiler","FId":169590947},{"DFN":"Bytecode","FN":"bytecode","FId":2779818221}],"C":{"CN":"icfp","CId":1162793720},"CI":{"CIN":"icfp 2015","CIId":572285046},"E":"{\"DN\":\"Pycket: a tracing JIT for a functional language\",\"IA\":{\"IndexLength\":191,\"InvertedIndex\":{\"We\":[0,72],\"present\":[1],\"Pycket,\":[2],\"a\":[3,12,34,122,150,170,179],\"high-performance\":[4],\"tracing\":[5,106,171],\"JIT\":[6,45,107,172],\"compiler\":[7],\"for\":[8,57,101,169,184],\"Racket.\":[9],\"Pycket\":[10,39,52,85,120,138],\"supports\":[11,139],\"wide\":[13],\"variety\":[14],\"of\":[15,37,67,88,94,149],\"the\":[16,65,95,127,147,164],\"sophisticated\":[17],\"features\":[18],\"in\":[19],\"Racket\":[20,58],\"such\":[21],\"as\":[22,91],\"contracts,\":[23],\"continuations,\":[24],\"classes,\":[25],\"structures,\":[26],\"dynamic\":[27],\"binding,\":[28],\"and\":[29,46,69,131,143,155,187],\"more.\":[30],\"On\":[31],\"average,\":[32],\"over\":[33],\"standard\":[35],\"suite\":[36],\"benchmarks,\":[38],\"outperforms\":[40],\"existing\":[41,61,81],\"compilers,\":[42],\"both\":[43],\"Racket's\":[44],\"other\":[47],\"highly-optimizing\":[48],\"Scheme\":[49],\"compilers.\":[50],\"Further,\":[51],\"provides\":[53],\"much\":[54],\"better\":[55],\"performance\":[56,77,167],\"proxies\":[59],\"than\":[60,161],\"systems,\":[62],\"dramatically\":[63],\"reducing\":[64],\"overhead\":[66],\"contracts\":[68],\"gradual\":[70],\"typing.\":[71],\"validate\":[73],\"this\":[74],\"claim\":[75],\"with\":[76],\"evaluation\":[78],\"on\":[79,113,116,126,134],\"multiple\":[80],\"benchmark\":[82],\"suites.\":[83],\"The\":[84],\"implementation\":[86],\"is\":[87,121,173],\"independent\":[89],\"interest\":[90],\"an\":[92],\"application\":[93],\"RPython\":[96],\"meta-tracing\":[97,114],\"framework\":[98],\"(originally\":[99],\"created\":[100],\"PyPy),\":[102],\"which\":[103,175],\"automatically\":[104],\"generates\":[105],\"compilers\":[108],\"from\":[109],\"interpreters.\":[110],\"Prior\":[111],\"work\":[112],\"focuses\":[115],\"bytecode\":[117],\"interpreters,\":[118],\"whereas\":[119],\"high-level\":[123],\"interpreter\":[124],\"based\":[125],\"CEK\":[128],\"abstract\":[129,135],\"machine\":[130],\"operates\":[132],\"directly\":[133],\"syntax\":[136],\"trees.\":[137],\"proper\":[140],\"tail\":[141],\"calls\":[142],\"first-class\":[144],\"continuations.\":[145],\"In\":[146],\"setting\":[148],\"functional\":[151],\"language,\":[152],\"where\":[153],\"recursion\":[154],\"higher-order\":[156],\"functions\":[157],\"are\":[158],\"more\":[159],\"prevalent\":[160],\"explicit\":[162],\"loops,\":[163],\"most\":[165],\"significant\":[166],\"challenge\":[168],\"identifying\":[174,185],\"control\":[176],\"flows\":[177],\"constitute\":[178],\"loop---we\":[180],\"discuss\":[181],\"two\":[182],\"strategies\":[183],\"loops\":[186],\"measure\":[188],\"their\":[189],\"impact.\":[190]}},\"S\":[{\"Ty\":3,\"U\":\"http://www.ccs.neu.edu/home/samth/pycket-draft.pdf\"},{\"Ty\":1,\"U\":\"http://homes.soic.indiana.edu/samth/pycket-draft.pdf\"},{\"Ty\":1,\"U\":\"https://dl.acm.org/citation.cfm?id=2784740\"},{\"Ty\":1,\"U\":\"http://dblp.uni-trier.de/db/conf/icfp/icfp2015.html#BaumanBHKPST15\"},{\"Ty\":1,\"U\":\"https://kclpure.kcl.ac.uk/portal/en/publications/pycket(9602742d-d3f8-4086-b73f-2520b43f57ec).html\"},{\"Ty\":1,\"U\":\"https://publishup.uni-potsdam.de/opus4-ubp/frontdoor/index/index/docId/38613\"},{\"Ty\":0,\"U\":\"http://dl.acm.org/citation.cfm?doid=2784731.2784740\"}],\"VFN\":\"International Conference on Functional Programming\",\"VSN\":\"ICFP\",\"V\":50,\"I\":9,\"FP\":22,\"LP\":34,\"DOI\":\"10.1145/2784731.2784740\",\"CC\":{\"150926849\":[\"Rabbit, by Steele (1978), following on the initial design of the language, demonstrated the possibilities of continuationpassing style and of fast first-class functions.\"],\"1598886868\":[\"The importance of JavaScript in modern browsers has led to considerable research on JIT compilation, including both methodbased (Paleczny et al. 2001) and trace-based approaches (Gal et al.\",\"The Hotspot compiler (Paleczny et al. 2001) is representative of the Java JIT compilers.\"],\"1878889593\":[\"More generally, Pycket demonstrates the value of the RPython infrastructure (Marr et al. 2014): We have built in one year and 13,500 LOC a compiler competitive with existing mature systems.\"],\"1966981171\":[\"One goal of Lambdachine is to achieve deforestation (Wadler 1988; Gill et al. 1993) by applying allocation-removal techniques to traces.\"],\"1974715526\":[\"2013) and independently in similar form by V8 (Clifford et al. 2015).\"],\"1982205631\":[\"Traces are represented in SSA form (Cytron et al. 1991).\"],\"1993335798\":[\"However, for languages with different workloads, such as Python and Lua, tracing JITs are in widespread use (Bolz et al. 2009).\",\"This approach is used in PyPy (Bolz et al. 2009), but in the context of Pycket, too many non-loop code paths are detected (Section 4).\",\"1 This paper builds on unpublished, preliminary work presented by Bolz et al. (2014). This paper reports major improvements with respect to performance, optimizations, loop-finding, coverage of the Racket language, and breadth of benchmarks, including programs with contracts.\",\"The RPython (Bolz et al. 2009; Bolz and Tratt 2013) project consists of a language and tool chain for implementing dynamic language interpreters.\",\"This includes Racket-level functions as well as runtime system functions (Bolz et al. 2009).\",\"Most RPython-based interpreters use a bytecode instruction set, where the same approach can still be used (Bolz et al. 2009).\"],\"1998416211\":[\"Fortunately, RPython’s optimizer is able to see and remove allocations that do not live beyond the scope of a trace (Bolz et al. 2011).\"],\"2000050212\":[\"JIT compilation has been extensively studied in the context of object-oriented, dynamically typed languages (Aycock 2003). For Smalltalk-80, Deutsch and Schiffman (1984) developed a JIT compiler from bytecode to native code.\"],\"2040615980\":[\"coffee library (Disney et al. 2011), in both cases following the benchmarks conducted by Strickland et al.\",\"coffee library (Disney et al. 2011), in both cases following the benchmarks conducted by Strickland et al. (2012). For PyPy, we implemented a simple proxy using Python’s runtime metaprogramming facilities.\"],\"2053321753\":[\"Standard Optimizations RPython’s trace optimizer includes a suite of standard compiler optimizations, such as commonsubexpression elimination, copy propagation, constant folding, and many others (Ardö et al. 2012).\",\"RPython implements this in a particularly simple way, by peeling off a single iteration of the loop, and then performing its standard suite of forward analyses to optimize the loop further (Ardö et al. 2012).\"],\"2072737419\":[\"• Backward Branches: Any jump to a smaller address counts as a loop (Bala et al. 2000).\",\"In a tracing JIT for a low-level language, the program counter is typically used to detect loops: a loop is a change of the program counter to a smaller value (Bala et al. 2000).\"],\"2073904768\":[\"First, the program is converted to A-normal form (ANF), ensuring that all non-trivial expressions are named (Danvy 1991; Flanagan et al. 1993).\"],\"2084845478\":[\"• Static Detection: Identify loops statically, either from explicit loop constructs (Bebenita et al. 2010) or through static analysis of control flow (Gal and Franz 2006).\"],\"2112404227\":[\"Rabbit, by Steele (1978), following on the initial design of the language, demonstrated the possibilities of continuationpassing style and of fast first-class functions.\"],\"2114978795\":[\"• Cyclic Paths: Returning to the same static program location counts as a loop (Hiniker et al. 2005).\"],\"2126126443\":[\"conducted by Strickland et al. (2012). For PyPy, we implemented a simple proxy using Python’s runtime metaprogramming facilities.\"],\"2130262734\":[\"In a tracing JIT compiler such as RPython, inlining comes for free from tracing (Gal et al. 2006).\"],\"2133240977\":[\"• Call Stack Comparison: To detect recursive functions, Hayashizaki et al. (2011) inspect the call stack to determine when the target of the current function call is already on the stack.\",\"This approach is a simplified version of the one proposed by Hayashizaki et al. (2011). Their solution looks at more levels of the stack to decide whether something is a false loop.\"],\"2135416495\":[\"The RPython JIT specializes mutable collections using the storage strategies approach that was pioneered in the context of the PyPy project (Bolz et al. 2013).\",\"For a large vector, this is an expensive operation, and thus strategies depend for their performance on 1) the hypothesis that representation-changing mutations are rare on large data structures, and 2) the change to a more general strategy is a one-way street (Bolz et al. 2013).\"],\"2137734935\":[\"The two macrobenchmarks are an ODE solver and a binomial heap, replaying a trace from a computer vision application, a benchmark originally developed for lazy contract checking (Findler et al. 2008).\"],\"2148186462\":[\"Here again, the cost of these wrappers has proved significant (St-Amour et al. 2012).\"],\"2169661165\":[\"In Racket, contracts are implemented using the chaperone and impersonator proxying mechanism (Strickland et al. 2012), and make heavy use of Racket’s structure system.\",\"Chaperone benchmarks To measure the impact of our optimizations of contracts and proxies, we use the benchmarks created by Strickland et al. (2012). We run all of the micro-benchmarks (244 LOC) from that paper, and two of the macro-benchmarks (1,438\"],\"2171070726\":[\"The performance impact of type information was studied in the context of ActionScript (Chang et al. 2011).\"]},\"PR\":[1993335798,2058213389,2135416495,1493929095,2116136092,2086833941,2028053566,2100327319,2117538871,2166894669,1600900769,2162354621,60185894,2091228796,2122875791,2144963663,2731881248,2007146206,2168779926,2108185070,1993335798,2058213389,2135416495,1493929095,2116136092,2086833941,2028053566,2100327319,2117538871,2166894669,1600900769,2162354621,60185894,2091228796,2122875791,2144963663,2731881248,2007146206,2168779926,2108185070],\"ANF\":[{\"FN\":\"Spenser\",\"LN\":\"Bauman\",\"S\":1},{\"FN\":\"Carl Friedrich\",\"LN\":\"Bolz\",\"S\":2},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":3},{\"FN\":\"Vasily\",\"LN\":\"Kirilichev\",\"S\":4},{\"FN\":\"Tobias\",\"LN\":\"Pape\",\"S\":5},{\"FN\":\"Jeremy G.\",\"LN\":\"Siek\",\"S\":6},{\"FN\":\"Sam\",\"LN\":\"Tobin-Hochstadt\",\"S\":7}],\"BV\":\"Proceedings of the 20th ACM SIGPLAN International Conference on Functional Programming\",\"BT\":\"p\",\"PB\":\"ACM\"}"},{"logprob":-20.172,"Id":2149068053,"Ty":"0","Ti":"dynamic service adaptation","Pt":"3","L":"en","Y":2004,"D":"2004-01-01","CC":33,"ECC":63,"RId":[2138363365,2480195817,2143238865,1644882639,1770006921,2013886348,2496223582,1527793496,1610570299,1910673522,1851327982,2172147300,2134119432,2168287017,1539723268,1591471358,1560867643,1491095550,2000090290,1654534824,2782959840,193395745,2338202556,1991374650,1550429157,131247682,2110006268,109043198],"W":["adaptation","dynamic","service"],"AA":[{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"NTT DoCoMo","AfN":"ntt docomo","AfId":99157191,"S":1},{"DAuN":"Katsuya Kawamura","AuN":"katsuya kawamura","AuId":2140200352,"DAfN":"NTT DoCoMo","AfN":"ntt docomo","AfId":99157191,"S":2}],"F":[{"DFN":"sync","FN":"sync","FId":3913047},{"DFN":"Real-time computing","FN":"real time computing","FId":79403827},{"DFN":"Process management","FN":"process management","FId":195094911},{"DFN":"Next-generation network","FN":"next generation network","FId":110994511},{"DFN":"Mobile telephony","FN":"mobile telephony","FId":95491727},{"DFN":"Mobile computing","FN":"mobile computing","FId":144543869},{"DFN":"Context-aware services","FN":"context aware services","FId":2777315530},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Aspect-oriented programming","FN":"aspect oriented programming","FId":60051680},{"DFN":"Application software","FN":"application software","FId":134317101}],"C":{"CN":"icdcsw","CId":2623493804},"CI":{"CIN":"icdcsw 2004","CIId":2668046473},"E":"{\"DN\":\"Dynamic service adaptation\",\"IA\":{\"IndexLength\":144,\"InvertedIndex\":{\"Change\":[0],\"can\":[1,43],\"be\":[2,26],\"observed\":[3],\"in\":[4,8,15,28,128],\"our\":[5,22,126],\"environment\":[6,17],\"and\":[7,20,77,106,108,114,138],\"the\":[9,16,31,40,66,90,129],\"technology\":[10,23],\"we\":[11,42,49],\"build.\":[12],\"While\":[13],\"changes\":[14,41],\"happen\":[18],\"continuously\":[19],\"implicitly,\":[21],\"has\":[24],\"to\":[25,64,104,112,119,135],\"kept\":[27],\"sync\":[29],\"with\":[30],\"changing\":[32],\"world\":[33],\"around\":[34],\"it.\":[35],\"Although\":[36],\"for\":[37,45,55,141],\"some\":[38],\"of\":[39,47,68,94,99,116,131],\"prepare,\":[44],\"most\":[46],\"them\":[48],\"cannot.\":[50],\"This\":[51],\"is\":[52,75],\"especially\":[53],\"true\":[54],\"next\":[56],\"generation\":[57],\"mobile\":[58],\"communication\":[59],\"systems\":[60],\"that\":[61],\"are\":[62,102,110],\"expected\":[63],\"support\":[65],\"creation\":[67],\"a\":[69],\"ubiquitous\":[70],\"society\":[71],\"where\":[72],\"virtually\":[73],\"everything\":[74],\"connected\":[76],\"made\":[78],\"available\":[79],\"within\":[80],\"an\":[81],\"organic\":[82],\"information\":[83],\"network.\":[84],\"Resources\":[85],\"frequently\":[86],\"join\":[87],\"or\":[88,96],\"leave\":[89],\"network,\":[91],\"new\":[92,97],\"types\":[93],\"media\":[95],\"combinations\":[98],\"existing\":[100],\"ones\":[101],\"used\":[103],\"interact\":[105],\"cooperate,\":[107],\"services\":[109],\"tailored\":[111],\"preferences\":[113],\"needs\":[115],\"individual\":[117],\"customers\":[118],\"better\":[120],\"meet\":[121],\"their\":[122],\"needs.\":[123],\"We\":[124],\"outline\":[125],\"research\":[127],\"area\":[130],\"dynamic\":[132],\"service\":[133],\"adaptation\":[134],\"provide\":[136],\"concepts\":[137],\"technologies\":[139],\"allowing\":[140],\"such\":[142],\"environments.\":[143]}},\"S\":[{\"Ty\":3,\"U\":\"http://www.hirschfeld.org/writings/media/HirschfeldKawamura_2006_DynamicServiceAdaptation_WileySPE.pdf\"},{\"Ty\":1,\"U\":\"https://dl.acm.org/citation.cfm?id=977399.977870\"},{\"Ty\":1,\"U\":\"https://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1284045\"},{\"Ty\":1,\"U\":\"http://dblp.uni-trier.de/db/conf/icdcsw/icdcsw2004.html#HirschfeldK04\"},{\"Ty\":0,\"U\":\"http://dl.acm.org/citation.cfm?id=977870\"}],\"VFN\":\"International Conference on Distributed Computing Systems Workshops\",\"VSN\":\"ICDCSW\",\"FP\":290,\"LP\":297,\"DOI\":\"10.1109/ICDCSW.2004.1284045\",\"CC\":{\"109043198\":[\"PerspectiveS enables greater SOC of a base system from its context-dependent behavior [28].\"],\"131247682\":[\"Examples of aspects that can be commonly observed are architectural or design constraints, features [22], and systemic properties or behaviors such as error recovery, logging, or transactional behavior [23].\"],\"193395745\":[\"purpose aspect languages such as AspectJ or AspectS to domain-specific aspect languages such as RG [ 20  ]o r D[ 21].\"],\"1491095550\":[\"AspectS [15, 16 ] employs a runtime weaver to transform the base system according to the aspects involved.\\u001bEmploying AspectS [15, 16 ], we constructed an advice (AsAroundAdvice) that provides code to be executed instead of the original quit method of FaureWorld.\"],\"1527793496\":[\"The woven code is based on method wrappers [3], reflection [19, 23] and metaprogramming [ 16 ].\\u001bSome of its most remarkable properties are its extensive reflection support covering both introspection and intercession, its powerful metaobject protocol [ 16 ] that gives us full access to the computational properties of our platform, and its support for very late binding to defer binding decisions until the point when they actually need to be made.\"],\"1539723268\":[\"As of today there are several approaches that support aspect-oriented concepts, ranging from general-purpose aspect languages like AspectJ or AspectS to domainspecific aspect languages such as RG [20] or D [ 18 ].\"],\"1550429157\":[\"In contrast to more traditional approaches, we combine aspect-oriented programming (AOP) [2–5] with computational reflection and late binding to adapt services and service platforms when changes actually require doing so, as late as possible, preferably without disruption of service.\",\"AOP [2–5] is a new software technology addressing the issues of separation of concerns (SOC) [10].\"],\"1560867643\":[\"Please note that we decided to base our research environment on Squeak because we wanted to take advantage of its many innovative applications, including the Open Croquet platform [29,30].\"],\"1591471358\":[\"Examples of aspects that can be commonly observed are architectural or design constraints, features [22], and systemic properties or behaviors such as error recovery, logging, or transactional behavior [23].\"],\"1610570299\":[\"AspectJ [ 14 ] is an example for compile-time weaving.\"],\"1644882639\":[\"Here, the weaver parses an AspectJ program, transform the AspectJ abstract syntax tree (AST) into a valid Java [ 8 ] AST, and then generates Java byte code for a standard Java virtual machine.\"],\"1654534824\":[\"JMangler [13,14] performs load-time transformation of Java class files.\"],\"1770006921\":[\"Running bit-identically on a great variety of platforms—ranging from server machines to small devices (Figure 3), Squeak/Smalltalk serves as a very dynamic object-oriented multimedia scripting environment [25–27].\"],\"1851327982\":[\"In contrast to more traditional approaches, we combine aspect-oriented programming (AOP, [ 6 , 15]) with computational reflection and late binding to adapt services and service platforms when changes actually\\u001bAOP ([ 6 , 15]) is a new software technology addressing the issues of separation of concerns (SOC, [5, 11]).\"],\"1910673522\":[\"Variation points, also called hotspots [ 22 ], allow us to designate module boundaries in a system’s design where we expect changes to happen without explicitly naming them.\"],\"1991374650\":[\"The woven code is based on method wrappers [3], reflection [19,  23 ] and metaprogramming [16].\"],\"2000090290\":[\"Java-based context, we would like to mention Reflex, an open and portable system for behavioral reflection and AOP in Java [31].\"],\"2013886348\":[\"Here, the weaver parses an AspectJ program, transforms the AspectJ abstract syntax tree (AST) into a valid Java [ 12 ] AST, and then generates Java byte code for a standard Java virtual machine.\"],\"2110006268\":[\"In contrast to more traditional approaches, we combine aspect-oriented programming (AOP) [2–5] with computational reflection and late binding to adapt services and service platforms when changes actually require doing so, as late as possible, preferably without disruption of service.\",\"AOP [2–5] is a new software technology addressing the issues of separation of concerns (SOC) [10].\"],\"2134119432\":[\"The concept of adaptability is closely related to that of modularity [6] and variation points [7,8].\",\"By organizing a complex system into smaller, less complex subsystems and then recombining these subsystems in a principled way, we are trying to improve the comprehensibility of a system as well as its flexibility and so reducing its development time [6].\",\"We design modules to hide from each other complex design decisions or design decisions which are more likely to change [6].\"],\"2138363365\":[\"In contrast to more traditional approaches, we combine aspect-oriented programming (AOP, [6,  15 ]) with computational reflection and late binding to adapt services and service platforms when changes actually\\u001bAOP ([6,  15 ]) is a new software technology addressing the issues of separation of concerns (SOC, [5, 11]).\"],\"2143238865\":[\"In contrast to more traditional approaches, we combine aspect-oriented programming (AOP) [2–5] with computational reflection and late binding to adapt services and service platforms when changes actually require doing so, as late as possible, preferably without disruption of service.\",\"AOP [2–5] is a new software technology addressing the issues of separation of concerns (SOC) [10].\"],\"2168287017\":[\"The woven code is based on method wrappers [3], reflection [ 19 , 23] and metaprogramming [16].\\u001bReflective architectures are implemented by systems that incorporate structures representing (aspects of) themselves [ 19 ].\"],\"2172147300\":[\"Squeak/Smalltalk serves us a very dynamic objectoriented multimedia scripting environment [7,  12 ].\"],\"2338202556\":[\"The woven code is based on method wrappers [17], reflection [18], and metaprogramming [19].\",\"Reflective architectures are implemented by systems that incorporate structures representing (aspects of) themselves [18].\"],\"2496223582\":[\"The concept of adaptability is closely related to that of modularity [6] and variation points [7,8].\"],\"2782959840\":[\"The woven code is based on method wrappers [17], reflection [18], and metaprogramming [19].\"]},\"PR\":[2480195817,2138363365,1851327982,2168287017,1999815750,2071150379,2047103606,2214243916,2158941637,1993599183,1018677844,594233172,1526385399,2062901430,2106145512,2167500728,1965909212,2090607284,2141517713,2058831055,2480195817,2138363365,1851327982,2168287017,1999815750,2071150379,2047103606,2214243916,2158941637,1993599183,1018677844,594233172,1526385399,2062901430,2106145512,2167500728,1965909212,2090607284,2141517713,2058831055],\"ANF\":[{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":1},{\"FN\":\"Katsuya\",\"LN\":\"Kawamura\",\"S\":2}],\"BV\":\"24th International Conference on Distributed Computing Systems Workshops, 2004. Proceedings.\",\"BT\":\"p\",\"PB\":\"IEEE\"}"},{"logprob":-20.264,"Id":2104754278,"Ty":"0","Ti":"reflective layer activation in contextl","Pt":"3","L":"en","Y":2007,"D":"2007-03-11","CC":24,"ECC":24,"RId":[2099213660,2335925185,2075642720,1527793496,2061180491,1992443356,2140249393,2088018252,2068606617,2114436200,1491095550,2154597770,1615603009,2073021358,2338202556,2032415879,1582123168,2296688603,28766398,1518364836,2030961719,2526773621],"W":["activation","contextl","layer","reflective"],"AA":[{"DAuN":"Pascal Costanza","AuN":"pascal costanza","AuId":2286412295,"DAfN":"Vrije Universiteit Brussel","AfN":"vrije universiteit brussel","AfId":13469542,"S":1},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"Universität Potsdam, Potsdam, Germany","S":2}],"F":[{"DFN":"Real-time computing","FN":"real time computing","FId":79403827},{"DFN":"Function composition (computer science)","FN":"function composition","FId":104637301},{"DFN":"Computer science","FN":"computer science","FId":41008148}],"C":{"CN":"sac","CId":2754781246},"E":"{\"DN\":\"Reflective layer activation in ContextL\",\"IA\":{\"IndexLength\":77,\"InvertedIndex\":{\"Expressing\":[0],\"layer\":[1,53],\"dependencies\":[2,43],\"in\":[3],\"Context-oriented\":[4],\"Programming\":[5],\"is\":[6],\"cumbersome\":[7],\"because\":[8],\"until\":[9],\"now\":[10],\"no\":[11],\"facility\":[12],\"has\":[13],\"been\":[14],\"introduced\":[15],\"to\":[16],\"control\":[17,34],\"the\":[18,47,55],\"activation\":[19,48,56,63],\"and\":[20],\"deactivation\":[21,50,58,65],\"of\":[22,51,59,66],\"layers.\":[23],\"This\":[24,38],\"paper\":[25],\"presents\":[26],\"a\":[27,52],\"novel\":[28],\"reflective\":[29],\"interface\":[30],\"that\":[31],\"provides\":[32],\"such\":[33],\"without\":[35],\"compromising\":[36],\"efficiency.\":[37],\"allows\":[39],\"expressing\":[40],\"complex\":[41],\"application-defined\":[42,75],\"between\":[44],\"layers\":[45,68],\"where\":[46],\"or\":[49,57,64],\"requires\":[54],\"another\":[60],\"one.\":[61],\"The\":[62],\"specific\":[67],\"can\":[69],\"also\":[70],\"be\":[71],\"prohibited\":[72],\"based\":[73],\"on\":[74],\"conditions.\":[76]}},\"S\":[{\"Ty\":3,\"U\":\"http://www.p-cos.net/documents/context-meta.pdf\"},{\"Ty\":3,\"U\":\"http://www.hirschfeld.org/writings/media/CostanzaHirschfeld_2007_ReflectiveLayerActivationInContextL_AuthorsVersionAcm.pdf\"},{\"Ty\":3,\"U\":\"http://www.hpi.uni-potsdam.de/hirschfeld/publications/media/CostanzaHirschfeld_2007_ReflectiveLayerActivationInContextL_AuthorsVersion.pdf\"},{\"Ty\":1,\"U\":\"http://dblp.uni-trier.de/db/conf/sac/sac2007.html#CostanzaH07\"},{\"Ty\":1,\"U\":\"http://portal.acm.org/citation.cfm?id=1244279\"},{\"Ty\":1,\"U\":\"https://dl.acm.org/citation.cfm?id=1244279\"},{\"Ty\":1,\"U\":\"https://doi.acm.org/10.1145/1244002.1244279\"}],\"VFN\":\"ACM Symposium on Applied Computing\",\"VSN\":\"SAC\",\"FP\":1280,\"LP\":1285,\"DOI\":\"10.1145/1244002.1244279\",\"CC\":{\"28766398\":[\"Aspect-oriented technologies approaching the context-oriented notion of dynamically scoped activation of partial program definitions are AspectS [7, 8], LasagneJ [21], CaesarJ [12], and Steamloom [3].\"],\"1491095550\":[\"Aspect-oriented technologies approaching the context-oriented notion of dynamically scoped activation of partial program definitions are AspectS [7, 8], LasagneJ [21], CaesarJ [12], and Steamloom [3].\"],\"1518364836\":[\"Computational reflection provides programs with the ability to inspect and change data and functions at the metalevel that represent and execute them [17].\"],\"1527793496\":[\"For example, there exists a specification of a metaobject protocol for the Common Lisp Object System (CLOS MOP) that is expressed in terms of CLOS itself, that is in terms of classes, generic functions and methods [ 10 ].\"],\"1582123168\":[\"Slate [ 15 ] and Us [18] and also combined into a class-based programming language in [14], are very similar to Contextoriented Programming.\\u001bAs layers in ContextL, delegation layers group behavior for sets of objects [ 15 , 18] or sets of classes [14].\\u001bIn [ 15 ] and [18], the selection and ordering of layers is not fixed but layers can be arbitrarily recombined in the control flow of a program.\"],\"1615603009\":[\"Slate [15] and Us [18] and also combined into a class-based programming language in [ 14 ], are very similar to Contextoriented Programming.\\u001bAs layers in ContextL, delegation layers group behavior for sets of objects [15, 18] or sets of classes [ 14 ].\\u001bHowever, the hierarchy of layers is globally fixed in [ 14 ].\"],\"2032415879\":[\"Slate [15] and Us [ 18 ] and also combined into a class-based programming language in [14], are very similar to Contextoriented Programming.\\u001bAs layers in ContextL, delegation layers group behavior for sets of objects [15,  18 ] or sets of classes [14].\\u001bIn [15] and [ 18 ], the selection and ordering of layers is not fixed but layers can be arbitrarily recombined in the control flow of a program.\"],\"2061180491\":[\"Aspect-oriented technologies approaching the context-oriented notion of dynamically scoped activation of partial program definitions are AspectS [7, 8], LasagneJ [21], CaesarJ [12], and Steamloom [3].\"],\"2068606617\":[\"It is an extension to the Common Lisp Object System (CLOS, [2]), which in turn is based on the notion of generic functions instead of the more widespread class-based object model.\"],\"2075642720\":[\"Context-oriented Programming is related to the mixin layers approach [16] of feature-oriented programming [1], and an established approach for expressing feature dependencies in that field are feature diagrams [6, 9].\"],\"2088018252\":[\"Aspect-oriented technologies approaching the context-oriented notion of dynamically scoped activation of partial program definitions are AspectS [7, 8], LasagneJ [21], CaesarJ [12], and Steamloom [3].\"],\"2099213660\":[\"Context-oriented Programming is related to the mixin layers approach [16] of feature-oriented programming [1], and an established approach for expressing feature dependencies in that field are feature diagrams [6, 9].\"],\"2114436200\":[\"Aspect-oriented technologies approaching the context-oriented notion of dynamically scoped activation of partial program definitions are AspectS [7, 8], LasagneJ [21], CaesarJ [12], and Steamloom [3].\"],\"2154597770\":[\"We have illustrated this in [5] by demonstrating a context-oriented im-\",\"However, the contextoriented features of ContextL are conceptually independent of the CLOS object model, and a mapping of ContextL features to a hypothetical Java-style language extension called ContextJ has been described in [5].\",\"In [5], we have presented an implementation strategy for ContextL, and a benchmark in which a layer is repeatedly activated and deactivated again illustrates its efficiency.\",\"In our implementation described in [5], computational overhead occurs exclusively on the first activation/deactivation of a previously unused combination of layers and on the first message send in a previously unused combination of methods.\",\"Figure 1: The results of running the example from [5] in the new version of ContextL.\",\"the benchmark from [5] again, and the results of the various runs on different Common Lisp implementations are presented in Fig.\",\"As in [5], the entries in Fig.\",\"The overheads are in the same range as the ones reported in [5] based on the previous non-reflective implementation of ContextL, ranging from 3.\",\"See [5] for more details about this benchmark.\",\"Their lack of thread-local deactivation constructs makes cflow-style constructs necessary, for example to implement the figure editor example [5].\"],\"2296688603\":[\"In [4], we have introduced this idea and have presented the programming language ContextL which is among the first language extensions that explicitly realize this vision.\",\"guage extensions that explicitly support a context-oriented programming style [4].\"],\"2335925185\":[\"Context-oriented Programming is related to the mixin layers approach [16] of feature-oriented programming [1], and an established approach for expressing feature dependencies in that field are feature diagrams [6, 9].\"],\"2526773621\":[\"However, CaesarJ does not provide a corresponding thread-local deactivation construct, and LasagneJ restricts the use of thread-local activation to the main method of a Java program [13].\"]},\"PR\":[1992443356,2150275961,1527793496,2032415879,2089889705,2154597770,2480195817,6784408,175922506,2063274096,2144114063,1724660581,1978875190,2089287449,2134716336,2143238865,1491095550,1531869376,1556513858,2037048706,1992443356,2150275961,1527793496,2032415879,2089889705,2154597770,2480195817,6784408,175922506,2063274096,2144114063,1724660581,1978875190,2089287449,2134716336,2143238865,1491095550,1531869376,1556513858,2037048706],\"ANF\":[{\"FN\":\"Pascal\",\"LN\":\"Costanza\",\"S\":1},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":2}],\"BV\":\"Proceedings of the 2007 ACM symposium on Applied computing\",\"BT\":\"p\",\"PB\":\"ACM\"}"},{"logprob":-20.282,"Id":2014881790,"Ty":"0","Ti":"an implementation substrate for languages composing modularized crosscutting concerns","Pt":"3","L":"en","Y":2009,"D":"2009-03-08","CC":19,"ECC":19,"RId":[2143238865,1991604845,2150275961,2018045485,1970558557,2088018252,2135522367,1972328015,2132055297,2153964382,1501829296,2094057249,2097664691,21047038,1838409627,2152722217,75835960],"W":["composing","concerns","crosscutting","implementation","languages","modularized","substrate"],"AA":[{"DAuN":"Hans Schippers","AuN":"hans schippers","AuId":2121358362,"DAfN":"University of Antwerp","AfN":"university of antwerp","AfId":149213910,"S":1},{"DAuN":"Michael Haupt","AuN":"michael haupt","AuId":2146662369,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":2},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":3}],"F":[{"DFN":"Separation of concerns","FN":"separation of concerns","FId":76214141},{"DFN":"Programming language implementation","FN":"programming language implementation","FId":201997060},{"DFN":"Programming language","FN":"programming language","FId":199360897},{"DFN":"Modular programming","FN":"modular programming","FId":88482812},{"DFN":"Language construct","FN":"language construct","FId":48859967},{"DFN":"High-level programming language","FN":"high level programming language","FId":19024347},{"DFN":"First-generation programming language","FN":"first generation programming language","FId":570499},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Compiler","FN":"compiler","FId":169590947},{"DFN":"Aspect-oriented programming","FN":"aspect oriented programming","FId":60051680}],"C":{"CN":"sac","CId":2754781246},"CI":{"CIN":"sac 2009","CIId":127740037},"E":"{\"DN\":\"An implementation substrate for languages composing modularized crosscutting concerns\",\"IA\":{\"IndexLength\":70,\"InvertedIndex\":{\"We\":[0],\"present\":[1],\"the\":[2,56,60],\"implementation\":[3],\"of\":[4,13,18],\"several\":[5],\"programming\":[6],\"languages\":[7],\"with\":[8],\"support\":[9],\"for\":[10,27,66],\"multi-dimensional\":[11],\"separation\":[12],\"concerns\":[14],\"(MDSOC)\":[15],\"on\":[16],\"top\":[17],\"a\":[19,25,28,63],\"common\":[20],\"delegation-based\":[21],\"substrate,\":[22],\"which\":[23],\"is\":[24],\"prototype\":[26],\"dedicated\":[29],\"MDSOC\":[30,35],\"virtual\":[31],\"machine.\":[32],\"The\":[33,50],\"supported\":[34],\"language\":[36,52,68],\"constructs\":[37],\"range\":[38],\"from\":[39],\"aspects,\":[40],\"pointcuts\":[41],\"and\":[42,47],\"advice\":[43],\"to\":[44],\"dynamically\":[45],\"scoped\":[46],\"activated\":[48],\"layers.\":[49],\"presented\":[51],\"implementations\":[53],\"show\":[54],\"that\":[55],\"abstractions\":[57],\"offered\":[58],\"by\":[59],\"substrate\":[61],\"are\":[62],\"viable\":[64],\"target\":[65],\"high-level\":[67],\"compilers.\":[69]}},\"S\":[{\"Ty\":3,\"U\":\"http://www.hirschfeld.org/writings/media/SchippersHauptHirschfeld_2009_AnImplementationSubstrateForLanguagesComposingModularizedCrosscuttingConcerns_AcmDL.pdf\"},{\"Ty\":3,\"U\":\"http://www.hpi.uni-potsdam.de/hirschfeld/publications/media/SchippersHauptHirschfeld_2009_AnImplementationSubstrateForLanguagesComposingModularizedCrosscuttingConcerns_AcmDL.pdf\"},{\"Ty\":1,\"U\":\"http://dblp.uni-trier.de/db/conf/sac/sac2009.html#SchippersHH09\"},{\"Ty\":1,\"U\":\"https://doi.acm.org/10.1145/1529282.1529716\"},{\"Ty\":1,\"U\":\"https://dl.acm.org/citation.cfm?doid=1529282.1529716\"},{\"Ty\":0,\"U\":\"http://dl.acm.org/citation.cfm?doid=1529282.1529716\"}],\"VFN\":\"ACM Symposium on Applied Computing\",\"VSN\":\"SAC\",\"FP\":1944,\"LP\":1951,\"DOI\":\"10.1145/1529282.1529716\",\"CC\":{\"21047038\":[\"Hence, not all of the join points were instrumented, like in 2nd-generation PROSE [16], nor was a debugging infrastructure used for programming purposes.\"],\"75835960\":[\"More specifically, the j language family [17] was used.\",\"All languages are based on j [17], a Java subset, and gradually add mechanisms to facilitate the implementation of crosscutting concerns.\",\"j [17] is the core language and a subset of Java.\",\"ij and aj were originally introduced as two separate extensions to j in [17], with ij adding inter-type declarations, and aj adding aspects with pointcuts and (before and after) advice.\"],\"1501829296\":[\"In [6], we presented a machine model centered on the basic notions of objects, messages and delegation [9], which was\",\"The machine model we use in this work to implement several programming language approaches to modularizing crosscutting concerns has been introduced in [6].\",\"The model is able to represent control-flow dependent advice and dynamic introductions in very natural and simple ways [6].\",\"[6] and Sec.\",\"Field introductions are a bit more tricky, as elaborated in [6].\",\"This is achieved by means of continuous weaving (cw), as explained in [6].\",\"This implementation deviates from the model description [6] which utilizes delegate functions whose result depends on the thread.\"],\"1838409627\":[\"One of the most important driving forces in the development of Steamloom [1, 5] was high performance of woven code.\",\"The first projects that were described as general-purpose AOP kernels were Reflex [18] and Steamloom [5].\"],\"1970558557\":[\"The rst project to introduce VM-level support for AOP was PROSE [ 15 ], which utilized debugger breakpoints as provided by the Java Virtual Machine Debug Interface to notify an AOP infrastructure implemented at application level of join point occurrences.\"],\"1991604845\":[\"Programming language abstractions for crosscutting concern modularization and composition constitute a programming paradigm in its own right, which has been referred to as multi-dimensional separation of concerns (MDSOC) [19].\"],\"2018045485\":[\"An implementation of parsing expression grammars (PEGs) [3] was realized in the function part of COLA.\"],\"2088018252\":[\"One of the most important driving forces in the development of Steamloom [1, 5] was high performance of woven code.\"],\"2094057249\":[\"The first projects that were described as general-purpose AOP kernels were Reflex [18] and Steamloom [5].\"],\"2097664691\":[\"Subsequently, [4] provided mappings from the semantics of four languages supporting different modularization mechanisms to this model.\",\"cj [4] is an addition to the j language family.\"],\"2132055297\":[\"In [6], we presented a machine model centered on the basic notions of objects, messages and delegation [9], which was\",\"For an implementation of both the model and programming languages on top of it, a framework supporting prototype-based object-oriented programming with Liebermanstyle prototypes [9] is required.\"],\"2135522367\":[\"Where residual logic [10] is required, it relies on VM-level callbacks for performance.\"],\"2143238865\":[\"It has spawned several approaches, including aspect-oriented programming (AOP) [8] and context-oriented programming (COP) [7].\"],\"2150275961\":[\"It has spawned several approaches, including aspect-oriented programming (AOP) [8] and context-oriented programming (COP) [7].\",\"cj does not include the features of ij and aj, but instead adopts contextoriented programming (COP) [7], a layer-based approach to the modularization of crosscutting concerns.\",\"Unlike iaj, the cj extension to j implements the concepts of context-oriented programming (COP) [7].\"],\"2152722217\":[\"Objects are, using a prototype-based object-oriented environment, represented as “seas of fragments” [12]: each object is visible to others only in the form of a proxy.\"],\"2153964382\":[\"More recent implementations of the PROSE architecture [11] also feature sophisticated JIT compiler strategies to achieve performance.\"]},\"PR\":[2150275961,2143238865,1556513858,2144114063,2480195817,2089889705,1992443356,2154597770,2075642720,2115607078,2115899208,2111386044,2002568360,2087175184,2115680394,2157920816,2172169742,1551387242,2028277243,2105053310,2150275961,2143238865,1556513858,2144114063,2480195817,2089889705,1992443356,2154597770,2075642720,2115607078,2115899208,2111386044,2002568360,2087175184,2115680394,2157920816,2172169742,1551387242,2028277243,2105053310],\"ANF\":[{\"FN\":\"Hans\",\"LN\":\"Schippers\",\"S\":1},{\"FN\":\"Michael\",\"LN\":\"Haupt\",\"S\":2},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":3}],\"BV\":\"Proceedings of the 2009 ACM symposium on Applied Computing\",\"BT\":\"p\",\"PB\":\"ACM\"}"},{"logprob":-20.309,"Id":2403131032,"Ty":"0","Ti":"babelsberg js a browser based implementation of an object constraint language","Pt":"3","Y":2014,"D":"2014-01-01","CC":5,"ECC":5,"RId":[1480909796,2084944215,2116136092,1578785003,1519503479,2123396057,2171267342,2432221968,2339376177,2073536284,2078404830,2053637323,2139672701,2132233302,2164778826,2168617729,1527077815,2092889191,1964412230,2012072241,2041808580,2024901245,2342444439,2107596222,2103729840,2139272205],"W":["babelsberg","browser","constraint","implementation","js","language","object"],"AA":[{"DAuN":"Tim Felgentreff","AuN":"tim felgentreff","AuId":1964871710,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":1},{"DAuN":"Alan Borning","AuN":"alan borning","AuId":2020136591,"DAfN":"University of Washington","AfN":"university of washington","AfId":201448701,"S":2},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":3},{"DAuN":"Jens Lincke","AuN":"jens lincke","AuId":2055148755,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":4},{"DAuN":"Yoshiki Ohshima","AuN":"yoshiki ohshima","AuId":2122858989,"DAfN":"Viewpoints Research Institute","AfN":"viewpoints research institute","AfId":886105272,"S":5},{"DAuN":"Bert Freudenberg","AuN":"bert freudenberg","AuId":2776489000,"DAfN":"Viewpoints Research Institute","AfN":"viewpoints research institute","AfId":886105272,"S":6},{"DAuN":"Robert Krahn","AuN":"robert krahn","AuId":1836152203,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":7}],"F":[{"DFN":"Virtual machine","FN":"virtual machine","FId":25344961},{"DFN":"Theoretical computer science","FN":"theoretical computer science","FId":80444323},{"DFN":"Programming language","FN":"programming language","FId":199360897},{"DFN":"Object Constraint Language","FN":"object constraint language","FId":133264317},{"DFN":"JavaScript","FN":"javascript","FId":544833334},{"DFN":"Encapsulation (computer programming)","FN":"encapsulation","FId":123113035},{"DFN":"Constraint programming","FN":"constraint programming","FId":173404611},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Architecture","FN":"architecture","FId":123657996}],"C":{"CN":"ecoop","CId":1177184315},"CI":{"CIN":"ecoop 2014","CIId":549993},"E":"{\"DN\":\"Babelsberg/JS - A Browser-Based Implementation of an Object Constraint Language.\",\"IA\":{\"IndexLength\":261,\"InvertedIndex\":{\"��\":[0,6,9,36,53],\"�\":[1,2,3,4,5,7,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,54,55,56,57,58,59,60,61,62,63],\"���\":[8],\"Constraints\":[64],\"provide\":[65,203],\"a\":[66,79,86,122,188,198,245],\"useful\":[67],\"technique\":[68],\"for\":[69,159],\"ensuring\":[70],\"that\":[71,113,124,133,154,222,249],\"desired\":[72],\"properties\":[73],\"hold\":[74],\"in\":[75,85,121,135,209],\"an\":[76,105,110,157,172,185],\"application.\":[77],\"As\":[78],\"result,\":[80],\"they\":[81],\"have\":[82,163,224],\"been\":[83],\"used\":[84],\"wide\":[87],\"range\":[88],\"of\":[89,104,200],\"applications,\":[90,161],\"including\":[91],\"graphical\":[92],\"layout,\":[93],\"simulation,\":[94],\"scheduling,\":[95],\"and\":[96,102,127,132,202,233],\"problem-solving.\":[97],\"We\":[98,191],\"describe\":[99],\"the\":[100,118,149,193,213],\"design\":[101,232],\"implementation\":[103,186,234],\"Object\":[106,141,176],\"Constraint\":[107,142,177],\"Programming\":[108,143,178],\"language,\":[109,195],\"object-oriented\":[111,129],\"language\":[112,120],\"cleanly\":[114],\"integrates\":[115],\"constraints\":[116,208,225],\"with\":[117,184],\"underlying\":[119,150],\"way\":[123],\"respects\":[125],\"encapsulation\":[126],\"standard\":[128],\"programming\":[130],\"techniques,\":[131],\"runs\":[134],\"browser-based\":[136],\"applications.\":[137],\"Prior\":[138],\"work\":[139,254],\"on\":[140,147,197],\"languages\":[144],\"has\":[145],\"relied\":[146],\"modifying\":[148],\"Virtual\":[151,180],\"Machine,\":[152],\"but\":[153],\"is\":[155],\"not\":[156],\"option\":[158],\"web-based\":[160],\"which\":[162],\"become\":[164],\"increasingly\":[165],\"prominent.\":[166],\"In\":[167],\"this\":[168],\"paper,\":[169],\"we\":[170],\"present\":[171],\"approach\":[173],\"to\":[174,239,253,256],\"implementing\":[175],\"without\":[179,207],\"Machine\":[181],\"support,\":[182],\"along\":[183],\"as\":[187,216,242,244],\"JavaScript\":[189,218],\"extension.\":[190],\"demonstrate\":[192],\"resulting\":[194],\"Babelsberg/JS,\":[196],\"number\":[199],\"applications\":[201],\"performance\":[204],\"measurements.\":[205],\"Programs\":[206],\"Babelsberg/JS\":[210],\"run\":[211,229],\"at\":[212],\"same\":[214],\"speed\":[215],\"pure\":[217],\"versions,\":[219],\"while\":[220],\"programs\":[221],\"do\":[223],\"can\":[226],\"still\":[227],\"be\":[228],\"efficiently.\":[230],\"Our\":[231],\"also\":[235],\"incorporate\":[236],\"incremental\":[237],\"re-solving\":[238],\"support\":[240],\"interaction,\":[241],\"well\":[243],\"cooperating\":[246],\"solvers\":[247,252],\"architecture\":[248],\"allows\":[250],\"multiple\":[251],\"together\":[255],\"solve\":[257],\"more\":[258],\"difficult\":[259],\"problems.\":[260]}},\"S\":[{\"Ty\":3,\"U\":\"http://www.freudenbergs.de/bert/publications/Felgentreff-2014-BabelsbergJS.pdf\"},{\"Ty\":1,\"U\":\"http://dblp.uni-trier.de/db/conf/ecoop/ecoop2014.html#FelgentreffBHLOFK14\"}],\"VFN\":\"European Conference on Object-Oriented Programming\",\"VSN\":\"ECOOP\",\"FP\":411,\"LP\":436,\"PR\":[1558707871,2017385491,1640862671,2104280678,1566917135,2467515857,2149509898,2160298366,2166279570,2163762352,2793122378,2394200065,2405981421,1850161191,2108552356,2001914486,1992939259,2767137645,39793983,82137051,1558707871,2017385491,1640862671,2104280678,1566917135,2467515857,2149509898,2160298366,2166279570,2163762352,2793122378,2394200065,2405981421,1850161191,2108552356,2001914486,1992939259,2767137645,39793983,82137051],\"ANF\":[{\"FN\":\"Tim\",\"LN\":\"Felgentreff\",\"S\":1},{\"FN\":\"Alan\",\"LN\":\"Borning\",\"S\":2},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":3},{\"FN\":\"Jens\",\"LN\":\"Lincke\",\"S\":4},{\"FN\":\"Yoshiki\",\"LN\":\"Ohshima\",\"S\":5},{\"FN\":\"Bert\",\"LN\":\"Freudenberg\",\"S\":6},{\"FN\":\"Robert\",\"LN\":\"Krahn\",\"S\":7}],\"BV\":\"ECOOP\",\"BT\":\"p\"}"},{"logprob":-20.318,"Id":2166901142,"Ty":"0","Ti":"lively wiki a development environment for creating and sharing active web content","Pt":"3","L":"en","Y":2009,"D":"2009-10-25","CC":26,"ECC":26,"RId":[1649645444,1489092837,2153887189,2197000251,1585360772,2342082360,2172147300,2042616792,2038650831,2104148195,1587166076,2072735997,2143240678,1909822857,2110464036,1964757858,1527077815,150242075,2029551461,2001668586,1979817550,2101876886,1585324862,2111092718,149706467,2148534785,2157694390,1986292036,2070502162,2095613194,2217540956],"W":["active","content","creating","development","environment","lively","sharing","web","wiki"],"AA":[{"DAuN":"Robert Krahn","AuN":"robert krahn","AuId":1836152203,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":1},{"DAuN":"Dan Ingalls","AuN":"dan ingalls","AuId":2101984334,"DAfN":"Sun Microsystems Laboratories","AfN":"sun microsystems laboratories","AfId":177191879,"S":2},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":3},{"DAuN":"Jens Lincke","AuN":"jens lincke","AuId":2055148755,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":4},{"DAuN":"Krzysztof Palacz","AuN":"krzysztof palacz","AuId":2297867614,"DAfN":"Sun Microsystems Laboratories","AfN":"sun microsystems laboratories","AfId":177191879,"S":5}],"F":[{"DFN":"World Wide Web","FN":"world wide web","FId":136764020},{"DFN":"Web page","FN":"web page","FId":21959979},{"DFN":"Web content","FN":"web content","FId":2776324614},{"DFN":"Web application","FN":"web application","FId":118643609},{"DFN":"User interface","FN":"user interface","FId":89505385},{"DFN":"User innovation","FN":"user innovation","FId":2777347882},{"DFN":"Scalability","FN":"scalability","FId":48044578},{"DFN":"Personal wiki","FN":"personal wiki","FId":201033657},{"DFN":"Multimedia","FN":"multimedia","FId":49774154},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Collaboration","FN":"collaboration","FId":559553711}],"C":{"CN":"opensym","CId":2627083385},"E":"{\"DN\":\"Lively Wiki a development environment for creating and sharing active web content\",\"IA\":{\"IndexLength\":171,\"InvertedIndex\":{\"Wikis\":[0,11],\"are\":[1],\"Web-based\":[2],\"collaborative\":[3],\"systems\":[4],\"designed\":[5],\"to\":[6,16,39,55,64,93,131,135,164],\"help\":[7],\"people\":[8],\"share\":[9],\"information.\":[10],\"have\":[12],\"become\":[13],\"popular\":[14],\"due\":[15],\"their\":[17],\"openness\":[18],\"which\":[19,90],\"gives\":[20],\"users\":[21,38,54,92,161],\"complete\":[22],\"control\":[23],\"over\":[24],\"the\":[25,28,87,105,110,149,162,169],\"organization\":[26],\"and\":[27,48,50,70,82,96,100,118,138],\"content\":[29],\"of\":[30,168],\"wiki\":[31,35,57,111],\"pages.\":[32,58],\"Unfortunately\":[33],\"existing\":[34],\"engines\":[36],\"restrict\":[37],\"enter\":[40],\"only\":[41],\"passive\":[42],\"content,\":[43],\"such\":[44],\"as\":[45,125,127],\"text,\":[46],\"graphics,\":[47],\"videos\":[49],\"do\":[51],\"not\":[52],\"allow\":[53],\"customize\":[56,165],\"Thus,\":[59],\"wikis\":[60],\"cannot\":[61],\"be\":[62],\"used\":[63,153],\"host\":[65],\"or\":[66],\"author\":[67],\"rich\":[68,95],\"dynamic\":[69],\"interactive\":[71,97],\"content.\":[72],\"In\":[73],\"this\":[74],\"paper\":[75],\"we\":[76],\"present\":[77],\"Lively\":[78,88,107,144],\"Wiki,\":[79],\"a\":[80,114,120],\"development\":[81,150],\"collaboration\":[83],\"environment\":[84],\"based\":[85],\"on\":[86],\"Kernel\":[89],\"enables\":[91],\"create\":[94,132],\"Web\":[98,123,140],\"pages\":[99],\"applications\":[101],\"-\":[102],\"without\":[103],\"leaving\":[104],\"Web.\":[106],\"Wiki\":[108,145],\"combines\":[109],\"metaphor\":[112],\"with\":[113],\"direct-manipulation\":[115],\"user\":[116],\"interface\":[117],\"adds\":[119],\"concept\":[121],\"for\":[122,154],\"programming\":[124,128],\"well\":[126],\"tool\":[129],\"support\":[130],\"an\":[133],\"easy\":[134],\"use,\":[136],\"scalable,\":[137],\"extendable\":[139],\"authoring\":[141],\"tool.\":[142],\"Moreover,\":[143],\"is\":[146],\"self-supporting,\":[147],\"i.e.\":[148],\"tools\":[151],\"were\":[152],\"creating\":[155],\"its\":[156],\"own\":[157],\"implementation\":[158],\"thereby\":[159],\"giving\":[160],\"freedom\":[163],\"every\":[166],\"aspect\":[167],\"system.\":[170]}},\"S\":[{\"Ty\":3,\"U\":\"http://www.hirschfeld.org/writings/media/KrahnIngallsHirschfeldLinckePalacz_2009_LivelyWikiADevelopmentEnvironmentForCreatingAndSharingActiveWebContent_AcmDL.pdf\"},{\"Ty\":1,\"U\":\"http://www.wikisym.org/ws2009/procfiles/p109-krahn.pdf\"},{\"Ty\":1,\"U\":\"https://dl.acm.org/citation.cfm?id=1641324\"},{\"Ty\":1,\"U\":\"https://doi.acm.org/10.1145/1641309.1641324\"},{\"Ty\":0,\"U\":\"http://dl.acm.org/citation.cfm?id=1641324\"}],\"VFN\":\"International Symposium on Wikis and Open Collaboration\",\"VSN\":\"OpenSym\",\"FP\":9,\"DOI\":\"10.1145/1641309.1641324\",\"CC\":{\"149706467\":[\"• Bookmarklets are bookmarks that execute a JavaScript expression [30]\"],\"150242075\":[\"This paradigm shift towards Web-based software seems to continue [36, 34] and there are good reasons.\",\"• Mashups dynamically combine content from more than one Web site [34]\",\"Mashups are applications that dynamically combine content from Web sites into something new [34].\",\"mashup creation tools see [34].\"],\"1527077815\":[\"To implement our system we extended the Lively Kernel, a Web framework providing a convenient abstraction of different Web technologies [20].\",\"The Lively Kernel is a client side platform for Web application development running in modern Web browsers without installation and is implemented entirely in JavaScript [20, 35].\",\"should not be ”more complicated, less general, or any less fun than other modes of programming” [20].\",\"Therefore Lively Wiki’s development environment extends the Lively Kernel tooling with a system browser for viewing and manipulating all source code, a debugger-like stack viewer (using Lively Kernels shadow stack feature [20]), and a test framework.\"],\"1585360772\":[\"Having several entry points to worlds in a wiki can be useful [23].\",\"Wikis [23, 7] are one of the oldest of the Web application types that allow users to change Web content.\",\"Wikis have an extensible set of pages whose content and organization can be changed by users [23].\"],\"1587166076\":[\"In comparison, non Web-based development and authoring environments like HyperCard [3, 15] and Smalltalk programming environments [13], especially Squeak [19], make it easy to create these kind of applications due to their graphical and flexible UIs, uncomplicated programming interfaces, and direct development models.\",\"The three-structured display allows navigating and visualizing the structure of code similar to the original Smalltalk-80 class browser [13].\"],\"1649645444\":[\"Additionally there is the inherent multi-tier architecture which forces a conceptual separation into a presentation layer and domain/backup layer (server), resulting in complex software architectures using the Model-View-Controller [11] or Model-View-Presenter [10] design pattern even for simple applications.\"],\"1909822857\":[\"Client side Web development is emerging as a new field of software engineering empowering users to create applications by using nothing else than a Web browser [35].\",\"The Lively Kernel is a client side platform for Web application development running in modern Web browsers without installation and is implemented entirely in JavaScript [20, 35].\"],\"1964757858\":[\"Morphic is a user interface construction environment [27, 26].\"],\"1979817550\":[\"This paradigm shift towards Web-based software seems to continue [36, 34] and there are good reasons.\",\"server-hosted hypertext and the strict client/server architecture make creating applications for the Web different from and often more complicated than creating applications for desktop environments [36].\"],\"2001668586\":[\"In detail this means that developers have to integrate several different technologies at once [12, 39]: (X)HTML, XML, Cascading Style Sheets, JavaScript and the Document Object Model (DOM) interface, PHP, ASP, Java or another programming language for server side programming.\",\"Web programming is usually done on the Web server side using technologies like the Common Gateway Interface (CGI), Web server extensions with modules, or Web frameworks that integrate the different Web technologies [39].\"],\"2029551461\":[\"To allow openness, incremental changes, and collaboration we combined wiki principles [8] with a Web development model and programming tools.\",\"Lively Wiki follows the wiki design principles [8].\"],\"2038650831\":[\"In detail this means that developers have to integrate several different technologies at once [12, 39]: (X)HTML, XML, Cascading Style Sheets, JavaScript and the Document Object Model (DOM) interface, PHP, ASP, Java or another programming language for server side programming.\"],\"2042616792\":[\"• Programming systems implemented as Web browser extensions [6] allow to define and execute actions on DOM elements\"],\"2070502162\":[\"This allows users to deal directly with classes, methods, and functions, thereby making code reading and writing much easier as well as forcing programmers to write clean and structured code [14].\"],\"2072735997\":[\"wikis have become popular [25, 40] and are used in corporate, academic, and personal contexts [38].\"],\"2095613194\":[\"Articles would not just have a static form but combine text with non-linear complex systems into Active Essays as described by Kay [21, 44].\",\"• Active Web Essays [44] bring the authoring of Active Essays [21] to the Web\",\"Active Web Essays such as Chalkboard [44] are based on the Active Essay concept [21].\"],\"2101876886\":[\"We started to integrate visual data-flow programming tools [24] into the wiki for simplifying application development.\"],\"2110464036\":[\"Currently the browser is able to display source code of plain JavaScript les, Lively Kernel’s lkml denitions, and OMeta grammars [ 41 ].\\u001bThe SystemBrowser uses OMeta [ 41 ] to parse JavaScript sources.\"],\"2111092718\":[\"Additionally to reported use cases for End-user Web development [31, 4] we can imagine several other examples for using programming capabilities in the Web.\",\"It was argued that end-users need robust and constrained environments in order to create productive results [4].\",\"Application Wikis [4, 33] extend normal wikis with lightweight programming features for the creation of ad-hoc dynamic content.\",\"This approach, however, is restricting because language constructs are often domain specific (like in [4]) and users are bound to the form of writing code in or inside markup languages without being able to interact and inspect objects.\"],\"2143240678\":[\"In comparison, non Web-based development and authoring environments like HyperCard [3, 15] and Smalltalk programming environments [13], especially Squeak [19], make it easy to create these kind of applications due to their graphical and flexible UIs, uncomplicated programming interfaces, and direct development models.\"],\"2148534785\":[\"We plan to extend those capabilities with other visual programming approaches like Tile Scripting [42] and alternative programming language that are easier to use than JavaScript.\"],\"2153887189\":[\"as well as simple refactorings such as the Move Method refactoring [9].\"],\"2172147300\":[\"In comparison, non Web-based development and authoring environments like HyperCard [3, 15] and Smalltalk programming environments [13], especially Squeak [19], make it easy to create these kind of applications due to their graphical and flexible UIs, uncomplicated programming interfaces, and direct development models.\"],\"2217540956\":[\"wikis have become popular [25, 40] and are used in corporate, academic, and personal contexts [38].\"]},\"PR\":[1964757858,2172147300,1527077815,2045723688,2150275961,2167512141,1909822857,2101876886,2144114063,2537628607,2112243808,1043396318,2168903117,1980180739,2000934858,2024901245,1978875190,1981987203,2144783538,2340834585,1964757858,2172147300,1527077815,2045723688,2150275961,2167512141,1909822857,2101876886,2144114063,2537628607,2112243808,1043396318,2168903117,1980180739,2000934858,2024901245,1978875190,1981987203,2144783538,2340834585],\"ANF\":[{\"FN\":\"Robert\",\"LN\":\"Krahn\",\"S\":1},{\"FN\":\"Dan\",\"LN\":\"Ingalls\",\"S\":2},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":3},{\"FN\":\"Jens\",\"LN\":\"Lincke\",\"S\":4},{\"FN\":\"Krzysztof\",\"LN\":\"Palacz\",\"S\":5}],\"BV\":\"Proceedings of the 5th International Symposium on Wikis and Open Collaboration\",\"BT\":\"p\",\"PB\":\"ACM\"}"},{"logprob":-20.37,"Id":2115899208,"Ty":"0","Ti":"dedicated programming support for context aware ubiquitous applications","Pt":"3","L":"en","Y":2008,"D":"2008-09-01","CC":19,"ECC":19,"RId":[2480195817,2131415946,2150275961,1610570299,2012173916,2162673707,2150491652,2048440355,2000090290,170057163,2161291379,1597389001,1513110806,2160377668,169400382],"W":["applications","aware","context","dedicated","programming","support","ubiquitous"],"AA":[{"DAuN":"Malte Appeltauer","AuN":"malte appeltauer","AuId":135591984,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":1},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":2},{"DAuN":"Tobias Rho","AuN":"tobias rho","AuId":2140223330,"DAfN":"University of Bonn","AfN":"university of bonn","AfId":135140700,"S":3}],"F":[{"DFN":"Ubiquitous computing","FN":"ubiquitous computing","FId":172195944},{"DFN":"Software evolution","FN":"software evolution","FId":202105479},{"DFN":"Separation of concerns","FN":"separation of concerns","FId":76214141},{"DFN":"Reactive programming","FN":"reactive programming","FId":150762246},{"DFN":"Mobile telephony","FN":"mobile telephony","FId":95491727},{"DFN":"Mobile computing","FN":"mobile computing","FId":144543869},{"DFN":"Java","FN":"java","FId":548217200},{"DFN":"Distributed computing","FN":"distributed computing","FId":120314980},{"DFN":"Context awareness","FN":"context awareness","FId":2781368080},{"DFN":"Computer science","FN":"computer science","FId":41008148}],"C":{"CN":"ucs","CId":1171708086},"E":"{\"DN\":\"Dedicated Programming Support for Context-Aware Ubiquitous Applications\",\"IA\":{\"IndexLength\":85,\"InvertedIndex\":{\"Ubiquitous\":[0],\"mobile\":[1,83],\"applications\":[2,22],\"often\":[3],\"require\":[4],\"dynamic\":[5],\"context\":[6],\"information\":[7],\"for\":[8,19,61],\"user-specific\":[9],\"computation.\":[10],\"However,\":[11],\"state-of-the-art\":[12],\"platforms,\":[13],\"frameworks,\":[14],\"and\":[15,46,51,77],\"programming\":[16,75],\"languages\":[17],\"used\":[18],\"developing\":[20],\"such\":[21],\"do\":[23],\"not\":[24],\"directly\":[25],\"support\":[26],\"context-dependent\":[27],\"behavior\":[28],\"with\":[29,38],\"first\":[30],\"class\":[31],\"entities.\":[32],\"Instead,\":[33],\"context-aware\":[34],\"functionality\":[35],\"is\":[36],\"tangled\":[37],\"the\":[39,73],\"application's\":[40],\"core\":[41],\"concerns,\":[42],\"which\":[43],\"increases\":[44],\"complexity,\":[45],\"hinders\":[47],\"separation\":[48],\"of\":[49,68,80],\"concerns\":[50],\"further\":[52],\"software\":[53],\"evolution.\":[54],\"This\":[55],\"paper\":[56],\"motivates\":[57],\"Context-oriented\":[58],\"Programming\":[59],\"(COP)\":[60],\"ubiquitous\":[62],\"computing.\":[63],\"It\":[64],\"presents\":[65],\"an\":[66],\"overview\":[67],\"our\":[69],\"COP\":[70],\"extension\":[71],\"to\":[72],\"Java\":[74],\"language\":[76],\"a\":[78,81],\"scenario\":[79],\"context-oriented\":[82],\"application.\":[84]}},\"S\":[{\"Ty\":3,\"U\":\"http://www.hirschfeld.org/writings/media/AppeltauerHirschfeldRho_2008_ProgrammingSupportForContextAwareUbiquitousApplications.pdf\"},{\"Ty\":3,\"U\":\"http://www.hpi.uni-potsdam.de/hirschfeld/publications/media/AppeltauerHirschfeldRho_2008_ProgrammingSupportForContextAwareUbiquitousApplications.pdf\"},{\"Ty\":1,\"U\":\"http://yadda.icm.edu.pl/yadda/element/bwmeta1.element.ieee-000004641310\"},{\"Ty\":1,\"U\":\"http://ieeexplore.ieee.org/document/4641310/\"},{\"Ty\":1,\"U\":\"https://dl.acm.org/citation.cfm?id=1447566.1448068\"}],\"VFN\":\"Ubiquitous Computing Systems\",\"VSN\":\"UCS\",\"FP\":38,\"LP\":43,\"DOI\":\"10.1109/UBICOMM.2008.56\",\"CC\":{\"169400382\":[\"Later on, we will additionally implement services with ContextS for the Smalltalk-based Seaside [11] server.\"],\"170057163\":[\"Most context-dependent systems are developed based on context-management frameworks (e.g., [ 8 , 1]).\\u001bMobile community applications (e.g., [ 8 , 5]) allow users to share information about their mood, activities, location, and more.\\u001bSome mobile community projects provide functionality which is similar to our example (e.g., [ 8 ]).\\u001bOur infrastructure is based on IYOUIT and Android. IYOUIT [ 8 ] is a mobile community platform.\"],\"1513110806\":[\"Some AOP languages and systems come with explicit support for distributed AOP, such as AWED [9] and ReflexD [16].\"],\"1597389001\":[\"The listings presented in this paper are implemented with a second prototype, based on a generic aspect library, developed with LogicAJ1 [7].\",\"The OSGi-based aspect language CSLogicAJ [12] is an extension to LogicAJ [7].\"],\"1610570299\":[\"All terms have been coined by AspectJ [ 6 ] and have become standard.\"],\"2000090290\":[\"An open framework for Context-aware Aspects based on a reflective extension of Java [15] is proposed by [14].\"],\"2012173916\":[\"personalization and end-user development [17] or ontology-based context modeling [ 3 ].\"],\"2048440355\":[\"personalization and end-user development [17] or ontology-based context modeling [3].\"],\"2131415946\":[\"The Context Toolkit [13] influenced many of nowadays CMFs.\"],\"2150275961\":[\"Context-oriented Programming (COP) [ 4 ] enriches programming languages and execution environments with features to explicitly represent context-dependent behavior variations.\\u001bThe context-oriented Programming paradigm [ 4 ] features a new dimension of software modularization by supporting an explicit representation of context-dependent functionality.\\u001bFor a broad introduction to COP we refer to [ 4 ].\\u001bA first prototype, ContextJ* [ 4 ], has been developed previously as a proof of concept.\"],\"2150491652\":[\"Some AOP languages and systems come with explicit support for distributed AOP, such as AWED [9] and ReflexD [16].\"],\"2160377668\":[\"For a feature comparison of distributed AOP approaches, see [2].\"],\"2161291379\":[\"An open framework for Context-aware Aspects based on a reflective extension of Java [15] is proposed by [14].\"],\"2162673707\":[\"Most context-dependent systems are developed based on context-management frameworks (e.g., [8,  1 ]).\"],\"2480195817\":[\"All terms have been coined by AspectJ [6] and have become standard.\"]},\"PR\":[2150275961,2089889705,1992443356,2115607078,2144114063,1556513858,2087175184,2014881790,2143238865,2154597770,2480195817,2090764929,2061549030,2167773895,2757643432,2075642720,2074608206,2152087077,2123557157,2158731818,2150275961,2089889705,1992443356,2115607078,2144114063,1556513858,2087175184,2014881790,2143238865,2154597770,2480195817,2090764929,2061549030,2167773895,2757643432,2075642720,2074608206,2152087077,2123557157,2158731818],\"ANF\":[{\"FN\":\"Malte\",\"LN\":\"Appeltauer\",\"S\":1},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":2},{\"FN\":\"Tobias\",\"LN\":\"Rho\",\"S\":3}],\"BV\":\"2008 The Second International Conference on Mobile Ubiquitous Computing, Systems, Services and Technologies\",\"BT\":\"p\",\"PB\":\"IEEE\"}"},{"logprob":-20.434,"Id":2466549770,"Ty":"0","Ti":"babelsberg js","Pt":"3","Y":2014,"D":"2014-08-01","CC":5,"ECC":5,"RId":[1556566737,1480909796,2084944215,2116136092,1578785003,1519503479,2123396057,2171267342,2073536284,2078404830,2053637323,2139672701,2132233302,2164778826,2168617729,1527077815,2092889191,1964412230,2339290067,2012072241,2041808580,2024901245,2342444439,2107596222,2103729840,2139272205,2482730817],"W":["babelsberg","js"],"AA":[{"DAuN":"Tim Felgentreff","AuN":"tim felgentreff","AuId":1964871710,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":1},{"DAuN":"Alan Borning","AuN":"alan borning","AuId":2020136591,"DAfN":"University of Washington","AfN":"university of washington","AfId":201448701,"S":2},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":3},{"DAuN":"Jens Lincke","AuN":"jens lincke","AuId":2055148755,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":4},{"DAuN":"Yoshiki Ohshima","AuN":"yoshiki ohshima","AuId":2122858989,"DAfN":"Viewpoints Research Institute","AfN":"viewpoints research institute","AfId":886105272,"S":5},{"DAuN":"Bert Freudenberg","AuN":"bert freudenberg","AuId":2776489000,"DAfN":"Viewpoints Research Institute","AfN":"viewpoints research institute","AfId":886105272,"S":6},{"DAuN":"Robert Krahn","AuN":"robert krahn","AuId":1836152203,"DAfN":"SAP Labs, Communications Design Group, San Francisco, USA\t","S":7}],"F":[{"DFN":"Virtual machine","FN":"virtual machine","FId":25344961},{"DFN":"Theoretical computer science","FN":"theoretical computer science","FId":80444323},{"DFN":"Scheduling (computing)","FN":"scheduling","FId":113200698},{"DFN":"Programming language","FN":"programming language","FId":199360897},{"DFN":"JavaScript","FN":"javascript","FId":544833334},{"DFN":"Fifth-generation programming language","FN":"fifth generation programming language","FId":199305712},{"DFN":"Encapsulation (computer programming)","FN":"encapsulation","FId":123113035},{"DFN":"Constraint satisfaction","FN":"constraint satisfaction","FId":44616089},{"DFN":"Constraint programming","FN":"constraint programming","FId":173404611},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Architecture","FN":"architecture","FId":123657996}],"C":{"CN":"ecoop","CId":1177184315},"CI":{"CIN":"ecoop 2014","CIId":549993},"E":"{\"DN\":\"Babelsberg/JS\",\"IA\":{\"IndexLength\":197,\"InvertedIndex\":{\"Constraints\":[0],\"provide\":[1,139],\"a\":[2,15,22,58,124,134,181],\"useful\":[3],\"technique\":[4],\"for\":[5,95],\"ensuring\":[6],\"that\":[7,49,60,69,90,158,185],\"desired\":[8],\"properties\":[9],\"hold\":[10],\"in\":[11,21,57,71,145],\"an\":[12,41,46,93,108,121],\"application.\":[13],\"As\":[14],\"result,\":[16],\"they\":[17],\"have\":[18,99,160],\"been\":[19],\"used\":[20],\"wide\":[23],\"range\":[24],\"of\":[25,40,136],\"applications,\":[26,97],\"including\":[27],\"graphical\":[28],\"layout,\":[29],\"simulation,\":[30],\"scheduling,\":[31],\"and\":[32,38,63,68,138,169],\"problem-solving.\":[33],\"We\":[34,127],\"describe\":[35],\"the\":[36,54,85,129,149],\"design\":[37,168],\"implementation\":[39,122,170],\"Object\":[42,77,112],\"Constraint\":[43,78,113],\"Programming\":[44,79,114],\"language,\":[45,131],\"object-oriented\":[47,65],\"language\":[48,56],\"cleanly\":[50],\"integrates\":[51],\"constraints\":[52,144,161],\"with\":[53,120],\"underlying\":[55,86],\"way\":[59],\"respects\":[61],\"encapsulation\":[62],\"standard\":[64],\"programming\":[66],\"techniques,\":[67],\"runs\":[70],\"browser-based\":[72],\"applications.\":[73],\"Prior\":[74],\"work\":[75,190],\"on\":[76,83,133],\"languages\":[80],\"has\":[81],\"relied\":[82],\"modifying\":[84],\"Virtual\":[87,116],\"Machine,\":[88],\"but\":[89],\"is\":[91],\"not\":[92],\"option\":[94],\"web-based\":[96],\"which\":[98],\"become\":[100],\"increasingly\":[101],\"prominent.\":[102],\"In\":[103],\"this\":[104],\"paper,\":[105],\"we\":[106],\"present\":[107],\"approach\":[109],\"to\":[110,175,189,192],\"implementing\":[111],\"without\":[115,143],\"Machine\":[117],\"support,\":[118],\"along\":[119],\"as\":[123,152,178,180],\"JavaScript\":[125,154],\"extension.\":[126],\"demonstrate\":[128],\"resulting\":[130],\"Babelsberg/JS,\":[132],\"number\":[135],\"applications\":[137],\"performance\":[140],\"measurements.\":[141],\"Programs\":[142],\"Babelsberg/JS\":[146],\"run\":[147,165],\"at\":[148],\"same\":[150],\"speed\":[151],\"pure\":[153],\"versions,\":[155],\"while\":[156],\"programs\":[157],\"do\":[159],\"can\":[162],\"still\":[163],\"be\":[164],\"efficiently.\":[166],\"Our\":[167],\"also\":[171],\"incorporate\":[172],\"incremental\":[173],\"re-solving\":[174],\"support\":[176],\"interaction,\":[177],\"well\":[179],\"cooperating\":[182],\"solvers\":[183,188],\"architecture\":[184],\"allows\":[186],\"multiple\":[187],\"together\":[191],\"solve\":[193],\"more\":[194],\"difficult\":[195],\"problems.\":[196]}},\"S\":[{\"Ty\":1,\"U\":\"https://dl.acm.org/citation.cfm?id=2945664\"},{\"Ty\":0,\"U\":\"http://dl.acm.org/citation.cfm?id=2945664\"}],\"VFN\":\"European Conference on Object-Oriented Programming\",\"VSN\":\"ECOOP\",\"FP\":411,\"LP\":436,\"DOI\":\"10.1007/978-3-662-44202-9_17\",\"ANF\":[{\"FN\":\"Tim\",\"LN\":\"Felgentreff\",\"S\":1},{\"FN\":\"Alan\",\"LN\":\"Borning\",\"S\":2},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":3},{\"FN\":\"Jens\",\"LN\":\"Lincke\",\"S\":4},{\"FN\":\"Yoshiki\",\"LN\":\"Ohshima\",\"S\":5},{\"FN\":\"Bert\",\"LN\":\"Freudenberg\",\"S\":6},{\"FN\":\"Robert\",\"LN\":\"Krahn\",\"S\":7}],\"BV\":\"Proceedings of the 28th European Conference on ECOOP 2014 --- Object-Oriented Programming - Volume 8586\",\"BT\":\"p\",\"PB\":\"Springer-Verlag New York, Inc.\"}"},{"logprob":-20.447,"Id":2296688603,"Ty":"0","Ti":"language constructs for context oriented programming","Pt":"0","Y":2005,"D":"2005-01-01","CC":29,"ECC":29,"RId":[2622427009,1996974848,1527793496,2094282293,2045723688,1513136098,2088018252,2132055297,2068606617,1491095550,1592272620,1615603009,2109469978,2146645963,2058751520,2335857705,1996647866,2032415879,1582123168,2036632668,2724223853,7320905,28766398,1492801337,1499520738,2510569334,1997532030,2151435956,185175612],"W":["constructs","context","language","oriented","programming"],"AA":[{"DAuN":"Pascal Costanza","AuN":"pascal costanza","AuId":2286412295,"S":1},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"S":2}],"F":[{"DFN":"Theoretical computer science","FN":"theoretical computer science","FId":80444323},{"DFN":"Programming language","FN":"programming language","FId":199360897},{"DFN":"Language construct","FN":"language construct","FId":48859967},{"DFN":"Factoring","FN":"factoring","FId":177225278},{"DFN":"Control flow","FN":"control flow","FId":160191386},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Common Lisp Object System","FN":"common lisp object system","FId":2775879068}],"E":"{\"DN\":\"Language Constructs for Context-oriented Programming\",\"IA\":{\"IndexLength\":157,\"InvertedIndex\":{\"ContextL\":[0],\"is\":[1,45,58],\"an\":[2],\"extension\":[3],\"to\":[4,18,28,74,83,124,130],\"the\":[5,35,47,53,62,65,75,81,89,103,108,112,151],\"Common\":[6],\"Lisp\":[7],\"Object\":[8],\"System\":[9],\"that\":[10,64,118],\"allows\":[11],\"for\":[12],\"Context-oriented\":[13],\"Programming.\":[14],\"It\":[15],\"provides\":[16],\"means\":[17],\"associate\":[19],\"partial\":[20,48],\"class\":[21,142],\"and\":[22,27,30],\"method\":[23],\"definitions\":[24,49,143],\"with\":[25],\"layers\":[26,33,146],\"activate\":[29],\"deactivate\":[31],\"such\":[32,85],\"in\":[34,88,126],\"control\":[36],\"flow\":[37],\"of\":[38,52,67,77,115,148],\"a\":[39,43,68],\"running\":[40],\"program.\":[41,92],\"When\":[42],\"layer\":[44,57],\"activated,\":[46],\"become\":[50],\"part\":[51],\"program\":[54,69],\"until\":[55],\"this\":[56],\"deactivated.\":[59],\"This\":[60],\"has\":[61],\"eect\":[63],\"behavior\":[66],\"can\":[70,137],\"be\":[71,138],\"modified\":[72],\"according\":[73],\"context\":[76,86],\"its\":[78],\"use\":[79],\"without\":[80],\"need\":[82],\"mention\":[84],\"dependencies\":[87],\"aected\":[90],\"base\":[91],\"We\":[93],\"illustrate\":[94],\"these\":[95],\"ideas\":[96],\"by\":[97,121,140],\"providing\":[98],\"dierent\":[99,155],\"UI\":[100],\"views\":[101],\"on\":[102],\"same\":[104,109],\"object\":[105],\"while,\":[106],\"at\":[107],\"time,\":[110],\"keeping\":[111],\"conceptual\":[113],\"simplicity\":[114],\"objectoriented\":[116],\"programming\":[117],\"objects\":[119],\"know\":[120],\"themselves\":[122],\"how\":[123,129],\"behave,\":[125],\"our\":[127],\"case\":[128],\"display\":[131,152],\"themselves.\":[132],\"These\":[133],\"seemingly\":[134],\"contradictory\":[135],\"goals\":[136],\"achieved\":[139],\"separating\":[141],\"into\":[144,154],\"distinct\":[145],\"instead\":[147],\"factoring\":[149],\"out\":[150],\"code\":[153],\"classes.\":[156]}},\"S\":[{\"Ty\":3,\"U\":\"http://www.p-cos.net/documents/contextl-overview.pdf\"}],\"VFN\":\"\",\"CC\":{\"7320905\":[\"The basic notion that dierent partial classes can contribute to a compound final class was one of the original motivations for Flavors, the first object system for a Lisp dialect and one of the precursors of CLOS [ 5 , 30].\"],\"28766398\":[\"13 Special slots have already been described in [ 8 , 9]. Furthermore, the accessor for a slot can be a layered accessor which means that such a slot can only be accessed when the respective layer is active in which the corresponding class is defined.\\u001b14 Precursors of layered functions are dynamically scoped functions [7] and special functions [ 8 ] but they are fundamentally dierent in that they cannot be grouped into layers and must be defined one at a time.\\u001bNevertheless, there exist a number of aspect-oriented approaches that allow for dynamic aspect weaving, most notably Steamloom [3] and our AspectL [ 8 ] and AspectS [15].\\u001b16 See [ 16 ] for a paper that shows how this can be achieved in AspectS.\\u001bRelated work for special slots is discussed in [ 8 , 9]. Related work for special functions, precursors for layered functions, is discussed in [7, 8].\\u001bRelated work for special slots is discussed in [8, 9]. Related work for special functions, precursors for layered functions, is discussed in [7,  8 ].\"],\"1491095550\":[\"Nevertheless, there exist a number of aspect-oriented approaches that allow for dynamic aspect weaving, most notably Steamloom [3] and our AspectL [8] and AspectS [ 15 ].\"],\"1499520738\":[\"The basic notion that dierent partial classes can contribute to a compound final class was one of the original motivations for Flavors, the first object system for a Lisp dialect and one of the precursors of CLOS [5,  30 ].\"],\"1513136098\":[\"Aspect-oriented programming [ 24 ] is an umbrella term for a family of approaches that support modularization of crosscutting concerns.\"],\"1527793496\":[\"According to the CLOS Metaobject Protocol (MOP, [ 19 ]) specification, all slot accesses, including those of the automatically generated accessors, go through the function slot-value that takes an object and a slot name as parameters.\"],\"1582123168\":[\"Delegation layers, as in [ 26 , 27] and also combined into a class-based programming language in [25], are very similar to our approach.\"],\"1615603009\":[\"Delegation layers, as in [26, 27] and also combined into a class-based programming language in [ 25 ], are very similar to our approach.\\u001bLike in ContextL, delegation layers define layers that group behavior for sets of objects in [27] and for sets of classes in [ 25 ].\"],\"1996647866\":[\"For this reason, some more recent object systems like Self and Squeak have even changed their frameworks for presenting objects on the screen back to the original idea that objects maintain their own knowledge about how to display themselves (Morphic, [ 28 ]).\"],\"1996974848\":[\"Therefore, such code is separated into view objects that need to be notified of changes to model objects (such as instances of Rectangle or Person), leading to variants of the well-known Model-View-Controller (MVC) framework originally introduced with Smalltalk [ 22 ].\"],\"1997532030\":[\"Instead, a notion of context is added that essentially boils down to some form of first-class environments [ 13 ].\"],\"2032415879\":[\"The principal notion of such layers has been suggested before ([1,  27 ], cf. the section on related work in this paper) but in ContextL, we have combined this idea with the notion of dynamically scoped layer activation (see below), and we are convinced that this combination results in a viable approach for expressing context-dependent behavior.\\u001bDelegation layers, as in [26,  27 ] and also combined into a class-based programming language in [25], are very similar to our approach.\\u001bLike in ContextL, delegation layers define layers that group behavior for sets of objects in [ 27 ] and for sets of classes in [25].\"],\"2058751520\":[\"Keays and Rakotonirainy [ 18 ] use the term Context-oriented Programming for an approach that separates code skeletons from context-filling code stubs that complete the code skeleton to actually perform some behavior.\"],\"2088018252\":[\"Nevertheless, there exist a number of aspect-oriented approaches that allow for dynamic aspect weaving, most notably Steamloom [ 3 ] and our AspectL [8] and AspectS [15].\\u001bSee [ 3 ] for a discussion of other approaches to dynamic aspect weaving.\"],\"2132055297\":[\"Delegation, as defined in [ 23 ], is an inheritance mechanism on the object level as opposed to inheritance at the class level as provided by most mainstream programming languages.\"],\"2146645963\":[\"This has already been discovered and described as the notion of Open Implementations in [ 20 ].\"]},\"PR\":[2150275961,1992443356,2089889705,2073585991,1527793496,2060640309,2144114063,2148878240,1792109404,1985637830,2115680394,2124734282,2187859187,169634360,2469053383,2081295345,1977544362,2132055297,1548409917,134518568,2150275961,1992443356,2089889705,2073585991,1527793496,2060640309,2144114063,2148878240,1792109404,1985637830,2115680394,2124734282,2187859187,169634360,2469053383,2081295345,1977544362,2132055297,1548409917,134518568],\"ANF\":[{\"FN\":\"Pascal\",\"LN\":\"Costanza\",\"S\":1},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":2}],\"BT\":\"a\"}"},{"logprob":-20.449,"Id":2521797083,"Ty":"0","Ti":"lightning talk i solemnly pledge a manifesto for personal responsibility in the engineering of academic software","Pt":"0","L":"en","Y":2016,"D":"2016-01-01","CC":0,"ECC":0,"RId":[2302501749],"W":["academic","engineering","lightning","manifesto","personal","pledge","responsibility","software","solemnly","talk"],"AA":[{"DAuN":"Alice Allen","AuN":"alice allen","AuId":2530396141,"DAfN":"University of Maryland, College Park","AfN":"university of maryland college park","AfId":66946132,"S":1},{"DAuN":"Cecilia Aragon","AuN":"cecilia r aragon","AuId":2145075537,"DAfN":"University of Washington","AfN":"university of washington","AfId":201448701,"S":2},{"DAuN":"Christophe Becker","AuN":"christophe becker","AuId":2902043254,"DAfN":"University of Toronto","AfN":"university of toronto","AfId":185261750,"S":3},{"DAuN":"Jeffrey C. Carver","AuN":"jeffrey c carver","AuId":2145050651,"DAfN":"University of Alabama","AfN":"university of alabama","AfId":17301866,"S":4},{"DAuN":"Andrei Chis","AuN":"andrei chis","AuId":2018665499,"DAfN":"University of Bern","AfN":"university of bern","AfId":118564535,"S":5},{"DAuN":"Benoit Combemale","AuN":"benoit combemale","AuId":2778009771,"DAfN":"Centre national de la recherche scientifique","AfN":"centre national de la recherche scientifique","AfId":1294671590,"S":6},{"DAuN":"Mike Croucher","AuN":"mike croucher","AuId":2873647065,"DAfN":"University of Sheffield","AfN":"university of sheffield","AfId":91136226,"S":7},{"DAuN":"Kevin Crowston","AuN":"kevin crowston","AuId":1971183707,"DAfN":"Syracuse University","AfN":"syracuse university","AfId":70983195,"S":8},{"DAuN":"Daniel Garijo","AuN":"daniel garijo","AuId":2107149014,"DAfN":"Technical University of Madrid","AfN":"technical university of madrid","AfId":88060688,"S":9},{"DAuN":"Ashish Gehani","AuN":"ashish gehani","AuId":2264427410,"S":10},{"DAuN":"Carole Goble","AuN":"carole a goble","AuId":2122310831,"DAfN":"University of Manchester","AfN":"university of manchester","AfId":28407311,"S":11},{"DAuN":"Robert Haines","AuN":"robert haines","AuId":2156321245,"DAfN":"University of Manchester","AfN":"university of manchester","AfId":28407311,"S":12},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":13},{"DAuN":"James Howison","AuN":"james howison","AuId":2144071775,"DAfN":"University of Texas at Austin","AfN":"university of texas at austin","AfId":86519309,"S":14},{"DAuN":"Kathryn Huff","AuN":"kathryn d huff","AuId":2144363537,"DAfN":"Nuclear, Plasma, and Radiological Engineering","S":15},{"DAuN":"Caroline Jay","AuN":"caroline jay","AuId":2161063599,"DAfN":"University of Manchester","AfN":"university of manchester","AfId":28407311,"S":16},{"DAuN":"Daniel S. Katz","AuN":"daniel s katz","AuId":2162987587,"DAfN":"National Center for Supercomputing Applications","AfN":"national center for supercomputing applications","AfId":19908199,"S":17},{"DAuN":"Claude Kirchner","AuN":"claude kirchner","AuId":2168512137,"DAfN":"French Institute for Research in Computer Science and Automation","AfN":"french institute for research in computer science and automation","AfId":1326498283,"S":18},{"DAuN":"Kateryna Kuksenok","AuN":"kateryna kuksenok","AuId":2225322150,"DAfN":"University of Washington","AfN":"university of washington","AfId":201448701,"S":19},{"DAuN":"Ralf Lämmel","AuN":"ralf lammel","AuId":1921302331,"DAfN":"University of Koblenz and Landau","AfN":"university of koblenz and landau","AfId":2802076133,"S":20},{"DAuN":"Oscar Nierstrasz","AuN":"oscar nierstrasz","AuId":2485163583,"DAfN":"University of Bern","AfN":"university of bern","AfId":118564535,"S":21},{"DAuN":"Matthew Turk","AuN":"matthew j turk","AuId":2169060480,"DAfN":"National Center for Supercomputing Applications","AfN":"national center for supercomputing applications","AfId":19908199,"S":22},{"DAuN":"Rob V. Van Nieuwpoort","AuN":"rob van nieuwpoort","AuId":2805960361,"DAfN":"Netherlands EScience Center","S":23},{"DAuN":"Matthew Vaughn","AuN":"matthew w vaughn","AuId":2159717700,"DAfN":"University of Texas at Austin","AfN":"university of texas at austin","AfId":86519309,"S":24},{"DAuN":"Jurgen Vinju","AuN":"jurgen j vinju","AuId":2076191171,"DAfN":"Centrum Wiskunde & Informatica","AfN":"centrum wiskunde informatica","AfId":1341640284,"S":25}],"F":[{"DFN":"Work in process","FN":"work in process","FId":174998907},{"DFN":"Software development process","FN":"software development process","FId":180152950},{"DFN":"Software","FN":"software","FId":2777904410},{"DFN":"Publication","FN":"publication","FId":41458344},{"DFN":"Pledge","FN":"pledge","FId":2780643141},{"DFN":"Moral responsibility","FN":"moral responsibility","FId":111476811},{"DFN":"Manifesto","FN":"manifesto","FId":2778896172},{"DFN":"Lightning","FN":"lightning","FId":505276464},{"DFN":"Engineering ethics","FN":"engineering ethics","FId":55587333},{"DFN":"Computer science","FN":"computer science","FId":41008148}],"E":"{\"DN\":\"Lightning Talk: \\\"I solemnly pledge\\\": A Manifesto for Personal Responsibility in the Engineering of Academic Software\",\"IA\":{\"IndexLength\":128,\"InvertedIndex\":{\"Software\":[0],\"is\":[1,73],\"fundamental\":[2],\"to\":[3,35,84,94,99,113,117],\"academic\":[4,47,59,62,70],\"research\":[5],\"work,\":[6],\"both\":[7],\"as\":[8,14,91,93],\"part\":[9],\"of\":[10,17,46,58,69],\"the\":[11,15,43,56,61,66,96],\"method\":[12],\"and\":[13,33,49,65,87],\"result\":[16],\"research.\":[18],\"In\":[19],\"June\":[20],\"2016\":[21],\"25\":[22],\"people\":[23],\"gathered\":[24],\"at\":[25],\"Schloss\":[26],\"Dagstuhl\":[27,123],\"for\":[28],\"a\":[29,37,119],\"week-long\":[30],\"Perspectives\":[31],\"Workshop\":[32],\"began\":[34],\"develop\":[36],\"manifesto\":[38],\"which\":[39],\"places\":[40],\"emphasis\":[41],\"on\":[42,50],\"scholarly\":[44],\"value\":[45],\"software\":[48,63],\"personal\":[51],\"responsibility.\":[52],\"Twenty\":[53],\"pledges\":[54],\"cover\":[55],\"recognition\":[57],\"software,\":[60],\"process\":[64],\"intellectual\":[67],\"content\":[68],\"software.\":[71],\"This\":[72],\"still\":[74],\"work\":[75],\"in\":[76],\"progress.\":[77],\"Through\":[78],\"this\":[79],\"lightning\":[80],\"talk,\":[81],\"we\":[82],\"aim\":[83,116],\"get\":[85],\"feedback\":[86],\"hone\":[88],\"these\":[89],\"further,\":[90],\"well\":[92],\"inspire\":[95],\"WSSSPE\":[97],\"audience\":[98],\"think\":[100],\"about\":[101],\"actions\":[102,109],\"they\":[103,110],\"can\":[104],\"take\":[105],\"themselves\":[106],\"rather\":[107],\"than\":[108],\"want\":[111],\"others\":[112],\"take.\":[114],\"We\":[115],\"publish\":[118],\"more\":[120],\"fully\":[121],\"developed\":[122],\"Manifesto\":[124],\"by\":[125],\"December\":[126],\"2016.\":[127]}},\"S\":[{\"Ty\":3,\"U\":\"https://hal.inria.fr/hal-01367344/document\"},{\"Ty\":3,\"U\":\"https://pure.uva.nl/ws/files/23667536/WSSSPE4_paper_15.pdf\"},{\"Ty\":1,\"U\":\"https://boris.unibe.ch/96855/\"},{\"Ty\":1,\"U\":\"https://www.narcis.nl/publication/RecordID/oai%3Adare.uva.nl%3Apublications%2F37a146ad-52d5-4285-97cc-2d980f1ca655\"},{\"Ty\":1,\"U\":\"https://hal.inria.fr/hal-01367344\"},{\"Ty\":1,\"U\":\"https://experts.illinois.edu/en/publications/lightning-talk-i-solemnly-pledge-a-manifesto-for-personal-respons\"},{\"Ty\":1,\"U\":\"https://hal.archives-ouvertes.fr/hal-01367344v1\"}],\"VFN\":\"Fourth Workshop on Sustainable Software for Science: Practice and Experiences (WSSSPE4)\",\"V\":1686,\"DOI\":\"10.7892/boris.96855\",\"PR\":[2055875735,2243627161,1984746591,1535617328,2346187445,1021588059,2617336390,1521354048,1997778534,2742543470,2884535081,2621199374,2893071728,2738075047,169436347,2228849111,1576676987,2592231060,2259827210,2612281157,2055875735,2243627161,1984746591,1535617328,2346187445,1021588059,2617336390,1521354048,1997778534,2742543470,2884535081,2621199374,2893071728,2738075047,169436347,2228849111,1576676987,2592231060,2259827210,2612281157],\"ANF\":[{\"FN\":\"Alice\",\"LN\":\"Allen\",\"S\":1},{\"FN\":\"Cecilia\",\"LN\":\"Aragon\",\"S\":2},{\"FN\":\"Christophe\",\"LN\":\"Becker\",\"S\":3},{\"FN\":\"Jeffrey C.\",\"LN\":\"Carver\",\"S\":4},{\"FN\":\"Andrei\",\"LN\":\"Chis\",\"S\":5},{\"FN\":\"Benoit\",\"LN\":\"Combemale\",\"S\":6},{\"FN\":\"Mike\",\"LN\":\"Croucher\",\"S\":7},{\"FN\":\"Kevin\",\"LN\":\"Crowston\",\"S\":8},{\"FN\":\"Daniel\",\"LN\":\"Garijo\",\"S\":9},{\"FN\":\"Ashish\",\"LN\":\"Gehani\",\"S\":10},{\"FN\":\"Carole\",\"LN\":\"Goble\",\"S\":11},{\"FN\":\"Robert\",\"LN\":\"Haines\",\"S\":12},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":13},{\"FN\":\"James\",\"LN\":\"Howison\",\"S\":14},{\"FN\":\"Kathryn\",\"LN\":\"Huff\",\"S\":15},{\"FN\":\"Caroline\",\"LN\":\"Jay\",\"S\":16},{\"FN\":\"Daniel S.\",\"LN\":\"Katz\",\"S\":17},{\"FN\":\"Claude\",\"LN\":\"Kirchner\",\"S\":18},{\"FN\":\"Kateryna\",\"LN\":\"Kuksenok\",\"S\":19},{\"FN\":\"Ralf\",\"LN\":\"Lämmel\",\"S\":20},{\"FN\":\"Oscar\",\"LN\":\"Nierstrasz\",\"S\":21},{\"FN\":\"Matthew\",\"LN\":\"Turk\",\"S\":22},{\"FN\":\"Rob V. Van\",\"LN\":\"Nieuwpoort\",\"S\":23},{\"FN\":\"Matthew\",\"LN\":\"Vaughn\",\"S\":24},{\"FN\":\"Jurgen\",\"LN\":\"Vinju\",\"S\":25}],\"BV\":\"Fourth Workshop on Sustainable Software for Science: Practice and Experiences (WSSSPE4)\",\"BT\":\"a\",\"PB\":\"CEUR\"}"},{"logprob":-20.461,"Id":2031282842,"Ty":"0","Ti":"morphing aspects incompletely woven aspects and continuous weaving","Pt":"3","L":"en","Y":2004,"D":"2004-03-22","CC":32,"ECC":32,"RId":[1649645444,2138363365,1489092837,2480195817,2143238865,1770006921,2168287017,2061180491,1965418329,1970558557,1997502136,1526385399,2088018252,2135522367,2045337518,2063162028,1972328015,1491095550,2091071969,2782959840,1507413909,2073021358,1555768232,2295517865,2032396198,11589612,21047038,108504815],"W":["aspects","continuous","incompletely","morphing","weaving","woven"],"AA":[{"DAuN":"Stefan Hanenberg","AuN":"stefan hanenberg","AuId":637368604,"DAfN":"University of Duisburg-Essen","AfN":"university of duisburg essen","AfId":62318514,"S":1},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"NTT DoCoMo","AfN":"ntt docomo","AfId":99157191,"S":2},{"DAuN":"Rainer Unland","AuN":"rainer unland","AuId":664262605,"DAfN":"University of Duisburg-Essen","AfN":"university of duisburg essen","AfId":62318514,"S":3}],"F":[{"DFN":"Weaving","FN":"weaving","FId":54525549},{"DFN":"Real-time computing","FN":"real time computing","FId":79403827},{"DFN":"Programming language","FN":"programming language","FId":199360897},{"DFN":"Morphing","FN":"morphing","FId":50637493},{"DFN":"Just cause","FN":"just cause","FId":2780158331},{"DFN":"Join point","FN":"join point","FId":2776915473},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Compiler","FN":"compiler","FId":169590947},{"DFN":"Bytecode","FN":"bytecode","FId":2779818221},{"DFN":"AspectJ","FN":"aspectj","FId":2781009160},{"DFN":"Aspect-oriented programming","FN":"aspect oriented programming","FId":60051680}],"C":{"CN":"aosd","CId":1194005070},"E":"{\"DN\":\"Morphing aspects: incompletely woven aspects and continuous weaving\",\"IA\":{\"IndexLength\":164,\"InvertedIndex\":{\"Weaving\":[0],\"is\":[1,106],\"one\":[2],\"of\":[3,7,82,130,159],\"the\":[4,16,96,111,128,157],\"fundamental\":[5],\"mechanisms\":[6],\"aspect-oriented\":[8],\"systems.\":[9],\"A\":[10],\"weaver\":[11],\"composes\":[12],\"different\":[13],\"aspects\":[14,114,142,146],\"with\":[15,149],\"base\":[17],\"system\":[18],\"by\":[19,136],\"determining\":[20],\"and\":[21,86],\"adapting\":[22],\"all\":[23],\"parts\":[24],\"where\":[25],\"aspect\":[26],\"specific\":[27],\"elements\":[28],\"are\":[29,38,115],\"needed\":[30],\"eventually.\":[31],\"At\":[32],\"runtime,\":[33],\"timeconsuming\":[34],\"join\":[35,46,132,161],\"point\":[36,47,133,162],\"checks\":[37,58,84,134],\"necessary\":[39],\"to\":[40,51,95,117,155],\"determine\":[41],\"if\":[42],\"at\":[43],\"a\":[44,79,89],\"certain\":[45],\"aspect-specific\":[48,73],\"code\":[49],\"needs\":[50],\"be\":[52],\"executed.\":[53],\"Current\":[54],\"technologies\":[55],\"enforce\":[56],\"such\":[57],\"even\":[59,70],\"in\":[60,147],\"locations\":[61],\"that\":[62],\"only\":[63],\"temporarily\":[64],\"or\":[65],\"under\":[66],\"restrictive\":[67],\"conditions\":[68],\"(or\":[69],\"never)\":[71],\"execute\":[72],\"code.\":[74],\"In\":[75,123],\"more\":[76],\"complex\":[77],\"applications,\":[78],\"large\":[80],\"number\":[81],\"these\":[83],\"fail\":[85],\"just\":[87],\"cause\":[88],\"substantial\":[90],\"runtime\":[91],\"overhead\":[92],\"without\":[93],\"contributing\":[94],\"system's\":[97],\"overall\":[98],\"behavior.\":[99],\"The\":[100],\"main\":[101],\"reason\":[102],\"for\":[103],\"this\":[104,124],\"flaw\":[105],\"complete\":[108,137],\"weaving\":[109,152],\",\":[110],\"way\":[112],\"how\":[113],\"woven\":[116,145],\"an\":[118],\"application\":[119],\"using\":[120],\"current\":[121],\"technologies.\":[122],\"paper\":[125],\"we\":[126],\"discuss\":[127],\"problem\":[129,158],\"unnecessary\":[131],\"caused\":[135],\"weaving.\":[138],\"We\":[139],\"introduce\":[140],\"morphing\":[141],\"-\":[143,154],\"incompletely\":[144],\"combination\":[148],\"continuous\":[151],\"overcome\":[156],\"futile\":[160],\"checks.\":[163]}},\"S\":[{\"Ty\":3,\"U\":\"http://www.hirschfeld.org/writings/media/HanenbergHirschfeldUnland_2004_MorphingAspectsIncompletelyWovenAspectsAndContinuousWeaving_AcmDL.pdf\"},{\"Ty\":1,\"U\":\"https://dl.acm.org/citation.cfm?id=976270.976278\"}],\"VFN\":\"Aspect-Oriented Software Development\",\"VSN\":\"AOSD\",\"FP\":46,\"LP\":55,\"DOI\":\"10.1145/976270.976278\",\"CC\":{\"11589612\":[\"A similar use for a different purpose can be found for example in [6].\"],\"21047038\":[\"Dynamic weaving in combination with just-in-time aspects as proposed in [26,  27 ] is closely related to morphing aspects.\\u001bFurthermore, just in time aspects are woven to the application in one atomic step (see [ 27 ], page 101).\\u001bA number of systems such as PROSE [26,  27 ], AspectS [16], JAC [25], Object Teams [32, 15], or Caesar [23] fulfill this requirement while systems like AspectJ [18] or Sally [12] do not.\"],\"108504815\":[\"Figure 3 illustrates a typical implementation of the subjectobserver protocol in AspectJ based on the container introduction idiom [ 13 ].\"],\"1491095550\":[\"In order to reduce the number of conditional join point shadows we introduce the concept of morphing aspects which are incompletely woven aspects in combination with continuous weaving, an extension of dynamic weaving [ 16 , 26].\\u001bIn section 4, we discuss implementation issues of morphing aspects by proposing an implementation in AspectS [ 16 ].\\u001b2. EXAMPLES According to for example [ 16 , 20] and [11, 30, 32] tracing and\\u001bIn this section we introduce an exemplary implementation of a morphing aspect in AspectS (see [ 16 ] for a detailed introduction in AspectS).\\u001bAdvice is implemented by blocks (see [10] for an introduction to Smalltalk blocks, see [ 16 ] for a detailed description of how advice objects are created and executed using blocks).\\u001bA number of systems such as PROSE [26, 27], AspectS [ 16 ], JAC [25], Object Teams [32, 15], or Caesar [23] fulfill this requirement while systems like AspectJ [18] or Sally [12] do not.\"],\"1507413909\":[\"A number of systems such as PROSE [26, 27], AspectS [16], JAC [25], Object Teams [32,  15 ], or Caesar [23] fulfill this requirement while systems like AspectJ [18] or Sally [12] do not.\"],\"1526385399\":[\"A number of systems such as PROSE [26, 27], AspectS [16], JAC [25], Object Teams [32, 15], or Caesar [23] fulfill this requirement while systems like AspectJ [18] or Sally [12] do not.\"],\"1555768232\":[\"Another approach that relates to our work on morphing aspects is the selective just-in-time weaver as proposed in [ 28 ], an extension to the work of just-in-time aspects.\\u001bWhile breakpoints can be created much faster, their execution is time consuming (see [ 28 ] for a detailed discussion on the performance issues).\\u001bAs future work morphing aspects and selective weavers [ 28 ] should be combined in order to gain the benefit of both reducing unnecessary shadows as well as reducing the execution time of join point shadows.\"],\"1649645444\":[\"Perhaps the most frequently used example in the area of aspectoriented programming is the implementation of the observer design pattern [ 9 ] as discussed for example in [11, 30, 32].\\u001b^ implementors. ... AspectS is based on method wrappers [ 5 ].\"],\"1965418329\":[\"For example [22] describes a partial evaluator based on the definitional interpreter specified in [33] to reduce the number of unnecessary join point checks.\"],\"1970558557\":[\"In order to reduce the number of conditional join point shadows we introduce the concept of morphing aspects which are incompletely woven aspects in combination with continuous weaving, an extension of dynamic weaving [16,  26 ].\\u001bA similar use for a different purpose can be found for example in [ 6 ].\\u001bDynamic weaving in combination with just-in-time aspects as proposed in [ 26 , 27] is closely related to morphing aspects.\\u001bA number of systems such as PROSE [ 26 , 27], AspectS [16], JAC [25], Object Teams [32, 15], or Caesar [23] fulfill this requirement while systems like AspectJ [18] or Sally [12] do not.\"],\"1997502136\":[\"Aspect-oriented systems like AspectJ [18], Hyper/J [24] and Sally [12] that provide pure static weaving, i.\"],\"2045337518\":[\"2. EXAMPLES According to for example [16, 20] and [ 11 , 30, 32] tracing and\\u001bPerhaps the most frequently used example in the area of aspectoriented programming is the implementation of the observer design pattern [9] as discussed for example in [ 11 , 30, 32].\\u001bThis includes fields that are directly part of the subject as well as fields of objects which are directly or indirectly referenced by the subject (see for example [14,  11 ]).\\u001bThe pointcut language of AspectJ does not permit to declare the state change of every referenced object for a given subject (cf. [14,  11 ] for further discussion).\"],\"2061180491\":[\"The virtual machine Steamloom [4] belonging to the aspectoriented language Caesar [ 23 ] also tackles the problem of timeconsuming join point checks.\\u001bA number of systems such as PROSE [26, 27], AspectS [16], JAC [25], Object Teams [32, 15], or Caesar [ 23 ] fulfill this requirement while systems like AspectJ [18] or Sally [12] do not.\"],\"2063162028\":[\"2. EXAMPLES According to for example [16, 20] and [11,  30 , 32] tracing and\\u001bPerhaps the most frequently used example in the area of aspectoriented programming is the implementation of the observer design pattern [9] as discussed for example in [11,  30 , 32].\"],\"2073021358\":[\"2. EXAMPLES According to for example [16, 20] and [11, 30,  32 ] tracing and\\u001bPerhaps the most frequently used example in the area of aspectoriented programming is the implementation of the observer design pattern [9] as discussed for example in [11, 30,  32 ].\\u001bA number of systems such as PROSE [26, 27], AspectS [16], JAC [25], Object Teams [ 32 , 15], or Caesar [23] fulfill this requirement while systems like AspectJ [18] or Sally [12] do not.\"],\"2088018252\":[\"Performance measurements in [ 4 ] showed that a single woven cflow substantially decreases the overall performance of the system.\\u001bThe virtual machine Steamloom [ 4 ] belonging to the aspectoriented language Caesar [23] also tackles the problem of timeconsuming join point checks.\\u001bIn [ 4 ] the performance of advice making use of the join point checks on VM level and the statically woven aspects in AspectJ based on the cflow construct is measured.\"],\"2091071969\":[\"In [ 29 ] a reduction of join point checks is achieved by a static analysis of the call stack.\"],\"2135522367\":[\"In [22], locations that represent join points during runtime are called join point shadows.\",\"For example [22] describes a partial evaluator based on the definitional interpreter specified in [33] to reduce the number of unnecessary join point checks.\"],\"2138363365\":[\"1. INTRODUCTION Aspect-Oriented Programming [ 17 , 20] deals with code fragments\\u001bIn [ 17 ], join points are introduced as principled points in the execution of a program.\"],\"2143238865\":[\"INTRODUCTION Aspect-Oriented Programming [17, 20] deals with code fragments which logically belong to certain concerns but which cannot be modularized due to limited composition mechanisms of underlying programming languages and environments.\",\"In [17], join points are introduced as principled points in the execution of a program.\"],\"2168287017\":[\"For that purpose, the morphing process can make use of reflection [21]: the process reflects on the join point starting the morphing process and computes the dependent shadows.\"],\"2480195817\":[\"If such a check succeeds, the aspect-specific code (the advice code according to AspectJ terminology [18]) is executed.\",\"Aspect-oriented systems like AspectJ [18], Hyper/J [24] and Sally [12] that provide pure static weaving, i.\",\"the o f low pointcut designator [18].\",\"A number of systems such as PROSE [26, 27], AspectS [16], JAC [25], Object Teams [32, 15], or Caesar [23] fulfill this requirement while systems like AspectJ [18] or Sally [12] do not.\"],\"2782959840\":[\"AspectS is based on method wrappers [5].\"]},\"PR\":[2480195817,2079777989,1970558557,2088018252,1491095550,1649645444,2143238865,2135522367,1553047397,1970462831,1851327982,1972328015,2061180491,2075867419,2111141292,2293227920,21047038,1526385399,1533198137,1965418329,2480195817,2079777989,1970558557,2088018252,1491095550,1649645444,2143238865,2135522367,1553047397,1970462831,1851327982,1972328015,2061180491,2075867419,2111141292,2293227920,21047038,1526385399,1533198137,1965418329],\"ANF\":[{\"FN\":\"Stefan\",\"LN\":\"Hanenberg\",\"S\":1},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":2},{\"FN\":\"Rainer\",\"LN\":\"Unland\",\"S\":3}],\"BV\":\"Proceedings of the 3rd international conference on Aspect-oriented software development\",\"BT\":\"p\",\"PB\":\"ACM\"}"},{"logprob":-20.462,"Id":2101876886,"Ty":"0","Ti":"lively fabrik a web based end user programming environment","Pt":"3","L":"en","Y":2009,"D":"2009-01-01","CC":14,"ECC":14,"RId":[2099822290,1996138408,1534409782,1909822857,2395164350,1964757858,174053735,1964316648,218845089,2151957545,1563291876,2148534785,2157694390],"W":["end","environment","fabrik","lively","programming","user","web"],"AA":[{"DAuN":"Jens Lincke","AuN":"jens lincke","AuId":2055148755,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":1},{"DAuN":"Robert Krahn","AuN":"robert krahn","AuId":1836152203,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":2},{"DAuN":"Dan Ingalls","AuN":"dan ingalls","AuId":2101984334,"DAfN":"Sun Microsyst. Labs., Menlo Park, CA, USA","S":3},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":4}],"F":[{"DFN":"World Wide Web","FN":"world wide web","FId":136764020},{"DFN":"Web content","FN":"web content","FId":2776324614},{"DFN":"Web application","FN":"web application","FId":118643609},{"DFN":"User interface","FN":"user interface","FId":89505385},{"DFN":"The Internet","FN":"the internet","FId":110875604},{"DFN":"Scripting language","FN":"scripting language","FId":61423126},{"DFN":"Multimedia","FN":"multimedia","FId":49774154},{"DFN":"Mashup","FN":"mashup","FId":196126337},{"DFN":"Human–computer interaction","FN":"human computer interaction","FId":107457646},{"DFN":"End user","FN":"end user","FId":91262260},{"DFN":"Data manipulation language","FN":"data manipulation language","FId":56288433},{"DFN":"Computer science","FN":"computer science","FId":41008148}],"C":{"CN":"c5","CId":1201766282},"E":"{\"DN\":\"Lively Fabrik A Web-based End-user Programming Environment\",\"IA\":{\"IndexLength\":85,\"InvertedIndex\":{\"Lively\":[0,12,14,41],\"Fabrik\":[1,15,22,42],\"is\":[2,77,80],\"a\":[3,58],\"Web-based\":[4],\"general-purpose\":[5,68],\"end-user\":[6],\"programming\":[7],\"environment.\":[8],\"Based\":[9],\"on\":[10],\"the\":[11,17,20,63],\"Kernel,\":[13],\"extends\":[16],\"ideas\":[18],\"of\":[19],\"original\":[21],\"system\":[23],\"by\":[24],\"empowering\":[25],\"end-users\":[26],\"to\":[27,62,82],\"create\":[28],\"interactive\":[29,50],\"Web\":[30,35,37,45],\"content\":[31],\"entirely\":[32],\"within\":[33],\"their\":[34],\"browsers.\":[36],\"applications\":[38],\"created\":[39],\"with\":[40,72],\"typically\":[43],\"combine\":[44],\"sources,\":[46],\"data\":[47],\"manipulation,\":[48],\"and\":[49,74],\"user\":[51],\"interface\":[52],\"elements.\":[53],\"The\":[54],\"result\":[55],\"can\":[56],\"be\":[57],\"Mashup,\":[59],\"but\":[60],\"due\":[61],\"powerful\":[64],\"underlaying\":[65],\"system,\":[66],\"any\":[67],\"application.\":[69],\"Connecting\":[70],\"components\":[71,76],\"wires\":[73],\"scripting\":[75],\"all\":[78],\"that\":[79],\"needed\":[81],\"do\":[83],\"so.\":[84]}},\"S\":[{\"Ty\":3,\"U\":\"http://www.hirschfeld.org/writings/media/LinckeKrahnIngallsHirschfeld_2009_LivelyFabrik-AWebBasedEndUserProgrammingEnvironment_IEEE.pdf\"},{\"Ty\":1,\"U\":\"http://yadda.icm.edu.pl/yadda/element/bwmeta1.element.ieee-000005350243\"},{\"Ty\":1,\"U\":\"http://ieeexplore.ieee.org/document/5350243/\"},{\"Ty\":1,\"U\":\"https://dl.acm.org/citation.cfm?id=1673071.1673803\"}],\"VFN\":\"Conference on Creating, Connecting and Collaborating through Computing\",\"VSN\":\"C5\",\"FP\":11,\"LP\":19,\"DOI\":\"10.1109/C5.2009.8\",\"CC\":{\"174053735\":[\"Many visual programming languages use the metaphor of data-flow, popular representatives are LabView [3] and the Visual Language in Microsoft’s Robotic Studio [14].\"],\"218845089\":[\"Another approach to end-user development of Web applications is described in [16].\"],\"1534409782\":[\"Bringing Together User Interface and Behavior In contrast to typical user interface builders and visual languages like LabView [3], Fabrik allows the user to create the user interface and the behavior in one place.\",\"Many visual programming languages use the metaphor of data-flow, popular representatives are LabView [3] and the Visual Language in Microsoft’s Robotic Studio [14].\"],\"1909822857\":[\"More and more end-users treat the Web browser as their operating system [17].\"],\"1964316648\":[\"In an effort to remedy this situation, we have designed and implemented Lively Fabrik, a rich Web-based end-user programming environment built on Lively Kernel [5] and based on Fabrik [6].\",\"Lively Fabrik brings the ideas of Fabrik [6, 9] and Lively Kernel together to create an environment for end-users, where they can build their Web applications in a very direct and responsive manner.\",\"A visual program in the original Fabrik that generates a bar chart (Source [6])\",\"Bidirectional Fahrenheit Celsius converter in the original Fabrik (Source [6])\",\"Lively Fabrik is named after the experimental interactive programming environment Fabrik [6, 9].\"],\"1964757858\":[\"Visual Aids The user interface of Lively Kernel inherits its directness and liveliness fromMorphic [11], this enabled us to experiment with non standard user interfaces like halos as in Etoys [8].\"],\"1996138408\":[\"We have chosen wiring components as visual data-flow paradigm because it is intuitive and most users think in terms of data going from one place to another [2, 7].\",\"An overview of current visual data-flow languages is given in [7].\"],\"2099822290\":[\"We used JavaScript as a scripting language but we are planning to integrate a visual tile scripting language such as Etoys [8], Scratch [10], or TileScript [18] to make the scripting part more end-user friendly.\",\"Integrating tile scripting languages like Etoys [8] or Scratch [10] seems to be a promising alternative to JavaScript in FunctionComponents.\"],\"2148534785\":[\"We used JavaScript as a scripting language but we are planning to integrate a visual tile scripting language such as Etoys [8], Scratch [10], or TileScript [18] to make the scripting part more end-user friendly.\",\"TileScript [18] is a convincing example of how a textual scripting language like JavaScript can be transformed into a visual representation and back.\"],\"2151957545\":[\"Lively Fabrik brings the ideas of Fabrik [6, 9] and Lively Kernel together to create an environment for end-users, where they can build their Web applications in a very direct and responsive manner.\",\"To fit the components better into the data-flow and to minimize crossings of connections the position of the pins can be changed by dragging them (as described in [9]).\",\"Lively Fabrik is named after the experimental interactive programming environment Fabrik [6, 9].\"]},\"PR\":[1964757858,1527077815,2166901142,1909822857,1926033681,130667068,2751844271,1723740530,571661368,1821043378,2419565963,2340633896,2280469978,2472534521,1595419208,2840988197,2465773026,655573838,1501881606,121500586,1964757858,1527077815,2166901142,1909822857,1926033681,130667068,2751844271,1723740530,571661368,1821043378,2419565963,2340633896,2280469978,2472534521,1595419208,2840988197,2465773026,655573838,1501881606,121500586],\"ANF\":[{\"FN\":\"Jens\",\"LN\":\"Lincke\",\"S\":1},{\"FN\":\"Robert\",\"LN\":\"Krahn\",\"S\":2},{\"FN\":\"Dan\",\"LN\":\"Ingalls\",\"S\":3},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":4}],\"BV\":\"2009 Seventh International Conference on Creating, Connecting and Collaborating through Computing\",\"BT\":\"p\",\"PB\":\"IEEE\"}"},{"logprob":-20.515,"Id":2024901245,"Ty":"0","Ti":"the lively partsbin a cloud based repository for collaborative development of active web content","Pt":"3","L":"en","Y":2012,"D":"2012-01-01","CC":14,"ECC":14,"RId":[2084944215,1770006921,2104594675,614633328,2098417174,2172147300,2045723688,1587166076,1909822857,1964757858,1527077815,143231896,1584747838,1964316648,84194245,2166901142,2106193618,2067700994,2405925861,46244955],"W":["active","cloud","collaborative","content","development","lively","partsbin","repository","web"],"AA":[{"DAuN":"Jens Lincke","AuN":"jens lincke","AuId":2055148755,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":1},{"DAuN":"Robert Krahn","AuN":"robert krahn","AuId":1836152203,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":2},{"DAuN":"Dan Ingalls","AuN":"dan ingalls","AuId":2101984334,"DAfN":"SAP Res., Palo Alto, CA, USA","S":3},{"DAuN":"Marko Röder","AuN":"marko roder","AuId":2620202433,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":4},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":5}],"F":[{"DFN":"World Wide Web","FN":"world wide web","FId":136764020},{"DFN":"Web content","FN":"web content","FId":2776324614},{"DFN":"The Internet","FN":"the internet","FId":110875604},{"DFN":"Scripting language","FN":"scripting language","FId":61423126},{"DFN":"Multimedia","FN":"multimedia","FId":49774154},{"DFN":"Metaphor","FN":"metaphor","FId":2778311575},{"DFN":"Graphics","FN":"graphics","FId":21442007},{"DFN":"Content management","FN":"content management","FId":33039251},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Collaborative software","FN":"collaborative software","FId":554579003},{"DFN":"Cloud computing","FN":"cloud computing","FId":79974875}],"C":{"CN":"hicss","CId":1164519180},"CI":{"CIN":"hicss 2012","CIId":157280734},"E":"{\"DN\":\"The Lively PartsBin--A Cloud-Based Repository for Collaborative Development of Active Web Content\",\"IA\":{\"IndexLength\":88,\"InvertedIndex\":{\"The\":[0,58],\"Lively\":[1],\"Kernel\":[2],\"is\":[3,17,39],\"a\":[4,13,45,63],\"browser-based\":[5],\"environment\":[6],\"for\":[7,29,67,77,84],\"authoring\":[8,25],\"active\":[9,79],\"Web\":[10,69],\"content.\":[11,57],\"Being\":[12],\"self-supporting\":[14],\"system,\":[15],\"it\":[16,22],\"simple\":[18],\"and\":[19,54,71,83],\"compact,\":[20],\"yet\":[21],\"supports\":[23],\"rapid\":[24],\"with\":[26],\"little\":[27],\"need\":[28],\"programming\":[30],\"expertise.\":[31],\"Most\":[32],\"importantly,\":[33],\"the\":[34,43],\"entire\":[35],\"context\":[36],\"of\":[37],\"creation\":[38],\"now\":[40],\"embedded\":[41],\"in\":[42,48],\"cloud,\":[44],\"shared\":[46],\"space\":[47],\"which\":[49],\"to\":[50],\"find,\":[51],\"alter,\":[52],\"create\":[53],\"share\":[55],\"new\":[56,86],\"paper\":[59],\"focuses\":[60],\"specifically\":[61],\"on\":[62,72],\"``Parts\":[64],\"Bin''\":[65],\"metaphor\":[66,76],\"organizing\":[68],\"content\":[70],\"an\":[73],\"incremental\":[74],\"scripting\":[75],\"making\":[78],\"connections\":[80],\"between\":[81],\"components\":[82],\"forging\":[85],\"functionality.\":[87]}},\"S\":[{\"Ty\":3,\"U\":\"http://www.hirschfeld.org/writings/media/LinckeKrahnIngallsRoederHirschfeld_2012_TheLivelyPartsBinACloudBasedRepositoryForCollaborativeDevelopmentOfActiveWebContent_IEEE.pdf\"},{\"Ty\":1,\"U\":\"http://yadda.icm.edu.pl/yadda/element/bwmeta1.element.ieee-000006148978\"},{\"Ty\":1,\"U\":\"http://dblp.uni-trier.de/db/conf/hicss/hicss2012.html#LinckeKIRH12\"},{\"Ty\":1,\"U\":\"http://ieeexplore.ieee.org/document/6148978/\"}],\"VFN\":\"Hawaii International Conference on System Sciences\",\"VSN\":\"HICSS\",\"FP\":693,\"LP\":701,\"DOI\":\"10.1109/HICSS.2012.42\",\"CC\":{\"84194245\":[\"Squeak [6] is a Smalltalk-based programming environment that can be used as a personal multimedia authoring environment [5].\"],\"614633328\":[\"Second Life [15] is a virtual 3D world where most content is generated by users.\"],\"1527077815\":[\"The Lively Kernel [7] surprised and delighted many people by showing that it is possible to build a complete self-supporting computing kernel from nothing more than the language and graphics available in every browser.\",\"It was in this same way that we lifted our Selfsustaining System [7] development process up a level from programmer concepts like modules and classes to direct editing of end-user-accessible objects.\"],\"1587166076\":[\"It offers direct access to an SVN repository, the ability to parse conventional JavaScript source code files into classes and methods, and to present them with syntax highlighting in the style of a Smalltalk System Browser [3].\"],\"1770006921\":[\"The Lively Kernel begins with a Smalltalk-like class system [4], from which it defines a Morphicstyle1 [11, 12] graphics architecture, event handling,\"],\"1909822857\":[\"• editing objects (properties, style, composition) [16]\"],\"1964316648\":[\"” [8]\",\"Fabrik [8] is a visual programming environment that allowed one to program by visually connecting components dragged out of a PartsBin.\"],\"1964757858\":[\"The Lively Kernel begins with a Smalltalk-like class system [4], from which it defines a Morphicstyle1 [11, 12] graphics architecture, event handling,\"],\"2045723688\":[\"Self [19] explored this unification of state and behavior many years ago and our implementation language JavaScript builds on the same underlying concepts.\"],\"2067700994\":[\"Objects in Self can be transported from one Self world to another [18], but Self does not come with shared repositories of objects.\"],\"2084944215\":[\"A representative example is Scratch [13], a multimedia tile scripting programming environment for children that evolved from the Squeak Etoys work.\"],\"2098417174\":[\"A good example of this is our integration of Protovis [1].\",\"org server, process it, and display the data using a Protovis [1] diagram.\"],\"2104594675\":[\"js work [17].\",\"We use a server [17] to run JavaScript code sent from a client in our environment.\"],\"2166901142\":[\"This capability was further amplified by a client-side Wiki [10] that allowed worlds to be stored into an SVN repository, thus making it easy to share projects, and to retrieve or revert to old versions whenever desired.\",\"We then moved from editing JavaScript source files in external editors to editing modules and classes from within Lively [10] as seen in Figure 3.\"],\"2405925861\":[\"The SuperSwiki [14] allows users to share Squeak Etoy [9] projects over the internet.\"]},\"PR\":[1527077815,2172147300,1964757858,2150275961,1978875190,2045723688,2166901142,1496273986,2103211722,1993156370,2070198388,2000934858,2132641661,2162347787,2087357018,2773212418,2168903117,1534266087,1980180739,2110908061,1527077815,2172147300,1964757858,2150275961,1978875190,2045723688,2166901142,1496273986,2103211722,1993156370,2070198388,2000934858,2132641661,2162347787,2087357018,2773212418,2168903117,1534266087,1980180739,2110908061],\"ANF\":[{\"FN\":\"Jens\",\"LN\":\"Lincke\",\"S\":1},{\"FN\":\"Robert\",\"LN\":\"Krahn\",\"S\":2},{\"FN\":\"Dan\",\"LN\":\"Ingalls\",\"S\":3},{\"FN\":\"Marko\",\"LN\":\"Röder\",\"S\":4},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":5}],\"BV\":\"2012 45th Hawaii International Conference on System Sciences\",\"BT\":\"p\",\"PB\":\"IEEE\"}"},{"logprob":-20.546,"Id":43533246,"Ty":"0","Ti":"layered design approach for context aware systems","Pt":"3","Y":2007,"D":"2007-01-01","CC":18,"ECC":18,"RId":[2131415946,2113201637,2162673707,1992443356,1531869376,2082340512,2169934995,2075292595,2115434397,1507413909,2154597770,1487664461,1594638244,2104754278,1567451773,1528874491],"W":["approach","aware","context","design","layered","systems"],"AA":[{"DAuN":"Brecht Desmet","AuN":"brecht desmet","AuId":2000645914,"S":1},{"DAuN":"Jorge Vallejos","AuN":"jorge vallejos","AuId":2141614139,"S":2},{"DAuN":"Pascal Costanza","AuN":"pascal costanza","AuId":2286412295,"S":3},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"S":4}],"F":[{"DFN":"volatile","FN":"volatile","FId":64928576},{"DFN":"User expectations","FN":"user expectations","FId":2777911697},{"DFN":"Systems engineering","FN":"systems engineering","FId":201995342},{"DFN":"Systems development life cycle","FN":"systems development life cycle","FId":120617098},{"DFN":"Systems design","FN":"systems design","FId":31352089},{"DFN":"Software system","FN":"software system","FId":149091818},{"DFN":"Context model","FN":"context model","FId":183322885},{"DFN":"Computer science","FN":"computer science","FId":41008148}],"C":{"CN":"vamos","CId":1171878286},"E":"{\"DN\":\"Layered design approach for context-aware systems.\",\"IA\":{\"IndexLength\":106,\"InvertedIndex\":{\"The\":[0],\"omnipresent\":[1],\"integration\":[2],\"of\":[3,17,41,57],\"computer\":[4],\"technology\":[5],\"in\":[6,20,68],\"everyday\":[7],\"applications\":[8],\"introduces\":[9],\"new\":[10],\"opportunities\":[11],\"to\":[12,32,86,100],\"make\":[13],\"software\":[14,42,59,63],\"systems\":[15,27,43,64],\"aware\":[16],\"the\":[18,37,54],\"context\":[19,38,78],\"which\":[21],\"they\":[22],\"are\":[23,84],\"used.\":[24],\"Such\":[25],\"context-aware\":[26],\"can\":[28,65,97],\"respond\":[29],\"more\":[30],\"adequately\":[31],\"user\":[33],\"expectations.\":[34],\"However,\":[35],\"modelling\":[36],\"influence\":[39],\"inside\":[40],\"burdens\":[44],\"developers\":[45],\"for\":[46],\"several\":[47],\"reasons.\":[48],\"First,\":[49],\"context-dependent\":[50,71],\"behaviour\":[51,72],\"might\":[52],\"crosscut\":[53],\"application\":[55],\"logic\":[56],\"a\":[58],\"system.\":[60],\"Next,\":[61],\"since\":[62,77],\"simultaneously\":[66],\"reside\":[67],\"multiple\":[69],\"contexts,\":[70],\"should\":[73],\"be\":[74,98],\"composable.\":[75],\"Furthermore,\":[76],\"information\":[79],\"is\":[80],\"volatile,\":[81],\"these\":[82,103],\"compositions\":[83],\"subject\":[85],\"change\":[87],\"at\":[88],\"runtime.\":[89],\"This\":[90],\"paper\":[91],\"explores\":[92],\"how\":[93],\"layered\":[94],\"design\":[95],\"approaches\":[96],\"used\":[99],\"deal\":[101],\"with\":[102],\"specific\":[104],\"characteristics.\":[105]}},\"S\":[{\"Ty\":3,\"U\":\"http://www.hirschfeld.org/writings/media/DesmetVallejosCostanzaHirschfeld_2007_LayeredDesignApproachForContextAwareSystems_AuthorsVersion.pdf\"},{\"Ty\":3,\"U\":\"http://soft.vub.ac.be/Publications/2007/vub-prog-tr-07-02.pdf\"},{\"Ty\":3,\"U\":\"http://www.p-cos.net/documents/vub-prog-tr-07-02.pdf\"},{\"Ty\":3,\"U\":\"http://www.hpi.uni-potsdam.de/hirschfeld/publications/media/DesmetVallejosCostanzaHirschfeld_2007_LayeredDesignApproachForContextAwareSystems_AuthorsVersion.pdf\"},{\"Ty\":1,\"U\":\"http://dblp.uni-trier.de/db/conf/vamos/vamos2007.html#DesmetVCH07\"}],\"VFN\":\"Variability Modelling of Software-Intensive Systems\",\"VSN\":\"VaMoS\",\"FP\":157,\"LP\":165,\"CC\":{\"1487664461\":[\"[8] who used them to describe resolution strategies for aspects at shared join points.\"],\"1507413909\":[\"An ObjectTeam [12] is a collaboration unit integrated in Java which modularizes cross-cutting concerns in an independent and reusable fashion.\"],\"1528874491\":[\"To the best of our knowledge, the idea of expressing designs in terms of composable layers originates from Goldstein and Bobrow [ 7 ].\"],\"1531869376\":[\"CaesarJ [ 2 ] is a programming language which supports both aspect-oriented and component-oriented programming through the integration of aspects, virtual classes, and mixin composition.\"],\"1567451773\":[\"LasagneJ [14] is a language extension of Java which provides dedicated language constructs for the wrapper design pattern to support the dynamic evolution of collaborating objects.\"],\"1594638244\":[\"Mixin layers [16] are a means to achieve a layered design while overcoming the scalability issues of role-based designs indicated by Vanhilst and Notkin [17].\"],\"1992443356\":[\"In the following, we base our implementation of the cell phone scenario on ContextL, one of the first programming language extensions that explicitly support a context-oriented programming style [9].\"],\"2075292595\":[\"Context-aware computing is already established as a field in which the sensing of, and reasoning about, context information is explored [9, 6, 2].\",\"One could use existing tools like ContextToolkit [9], WildCAT [6], or Java Context Awareness Framework [2] to perform this job.\"],\"2082340512\":[\"Our layered design approach is established by composing layers in ContextL which is essentially a realization of a collaboration-based design [6].\"],\"2104754278\":[\"Dynamic deployment of layer compositions can be realized with the reflective infrastructure of ContextL [8] which allows introspection and intercession of layer activations and deactivations at runtime.\"],\"2113201637\":[\"This allows product line engineers to verify and debug their feature composition descriptions [4].\"],\"2115434397\":[\"A classbox [7] is a module system which allows for class extensions.\"],\"2131415946\":[\"Context-aware computing is already established as a field in which the sensing of, and reasoning about, context information is explored [9, 6, 2].\",\"One could use existing tools like ContextToolkit [9], WildCAT [6], or Java Context Awareness Framework [2] to perform this job.\"],\"2154597770\":[\"However, the context-oriented features of ContextL are conceptually independent of the CLOS object model, and a mapping of ContextL features to a hypothetical Java-style language extension called ContextJ has been described in [5].\"],\"2162673707\":[\"Context-aware computing is already established as a field in which the sensing of, and reasoning about, context information is explored [9, 6, 2].\",\"One could use existing tools like ContextToolkit [9], WildCAT [6], or Java Context Awareness Framework [2] to perform this job.\"],\"2169934995\":[\"Mixin layers [16] are a means to achieve a layered design while overcoming the scalability issues of role-based designs indicated by Vanhilst and Notkin [17].\"]},\"PR\":[1992443356,2150275961,2144114063,45273298,175922506,2060640309,2089889705,1597136223,2901607582,2014700001,1970108856,2144857780,2563657168,1724660581,2100176022,2766416763,2376345092,1973491470,426824952,2043097673,1992443356,2150275961,2144114063,45273298,175922506,2060640309,2089889705,1597136223,2901607582,2014700001,1970108856,2144857780,2563657168,1724660581,2100176022,2766416763,2376345092,1973491470,426824952,2043097673],\"ANF\":[{\"FN\":\"Brecht\",\"LN\":\"Desmet\",\"S\":1},{\"FN\":\"Jorge\",\"LN\":\"Vallejos\",\"S\":2},{\"FN\":\"Pascal\",\"LN\":\"Costanza\",\"S\":3},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":4}],\"BV\":\"VaMoS\",\"BT\":\"p\"}"},{"logprob":-20.547,"Id":2019153550,"Ty":"0","Ti":"specifying and solving constraints on object behavior","Pt":"1","Y":2014,"D":"2014-01-01","CC":9,"ECC":9,"RId":[2138363365,2339376177],"W":["behavior","constraints","object","solving","specifying"],"AA":[{"DAuN":"Tim Felgentreff","AuN":"tim felgentreff","AuId":1964871710,"S":1},{"DAuN":"Alan Borning","AuN":"alan borning","AuId":2020136591,"S":2},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"S":3}],"F":[{"DFN":"Theoretical computer science","FN":"theoretical computer science","FId":80444323},{"DFN":"Programming language","FN":"programming language","FId":199360897},{"DFN":"Computer science","FN":"computer science","FId":41008148}],"J":{"JN":"the journal of object technology","JId":172897590},"E":"{\"DN\":\"Specifying and Solving Constraints on Object Behavior.\",\"S\":[{\"Ty\":1,\"U\":\"http://www.jot.fm/contents/issue_2014_09/article1.html\"},{\"Ty\":1,\"U\":\"https://doi.org/10.5381/jot.2014.13.4.a1\"}],\"VFN\":\"The Journal of Object Technology\",\"V\":13,\"I\":4,\"DOI\":\"10.5381/jot.2014.13.4.a1\",\"PR\":[2131813762,1601692025,1973697328,2552637150,2743114672,137102142,1571504853,2620713733,2066852529,2069459650,1591212393,2148904864,2389054299,2129856423,2013398477,43413856,1834331905,1496243523,1529354938,1978251919,2131813762,1601692025,1973697328,2552637150,2743114672,137102142,1571504853,2620713733,2066852529,2069459650,1591212393,2148904864,2389054299,2129856423,2013398477,43413856,1834331905,1496243523,1529354938,1978251919],\"ANF\":[{\"FN\":\"Tim\",\"LN\":\"Felgentreff\",\"S\":1},{\"FN\":\"Alan\",\"LN\":\"Borning\",\"S\":2},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":3}],\"BV\":\"The Journal of Object Technology\",\"BT\":\"a\"}"},{"logprob":-20.548,"Id":2182749898,"Ty":"0","Ti":"a type system for dynamic layer composition","Pt":"0","Y":2012,"D":"2012-01-01","CC":14,"ECC":14,"RId":[1557561422,2033348393,1949851419,1980939032,81897732,1992443356,2080648611,2169934995,2089889705,1978875190,2044590882,2059639972,1556513858,1985637830,1591849443,2165534348,2148878240,1556091067],"W":["composition","dynamic","layer","system","type"],"AA":[{"DAuN":"Atsushi Igarashi","AuN":"atsushi igarashi","AuId":2097080023,"DAfN":"Kyoto University","AfN":"kyoto university","AfId":22299242,"S":1},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":2},{"DAuN":"Hidehiko Masuhara","AuN":"hidehiko masuhara","AuId":2087436944,"DAfN":"Association for Computing Machinery","AfN":"association for computing machinery","AfId":1321014770,"S":3}],"F":[{"DFN":"Soundness","FN":"soundness","FId":39920170},{"DFN":"Modularity","FN":"modularity","FId":100648641},{"DFN":"Distributed computing","FN":"distributed computing","FId":120314980},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Composition (visual arts)","FN":"composition","FId":169260993}],"E":"{\"DN\":\"A Type System for Dynamic Layer Composition\",\"IA\":{\"IndexLength\":93,\"InvertedIndex\":{\"Dynamic\":[0],\"layer\":[1,66],\"composition\":[2],\"is\":[3],\"one\":[4],\"of\":[5,18,27,36,73,82],\"the\":[6,24,28,71],\"key\":[7],\"features\":[8],\"in\":[9,55],\"contextoriented\":[10],\"programming\":[11],\"(COP),\":[12],\"an\":[13],\"approach\":[14],\"to\":[15,44,49],\"improving\":[16],\"modularity\":[17],\"behavioral\":[19],\"variations\":[20],\"that\":[21,41],\"depend\":[22],\"on\":[23,79],\"dynamic\":[25,65],\"context\":[26],\"execution\":[29],\"environment.\":[30],\"It\":[31],\"allows\":[32],\"a\":[33,56,61,80,84],\"layer—a\":[34],\"set\":[35],\"new\":[37],\"or\":[38,50],\"overriding\":[39],\"methods\":[40],\"can\":[42],\"belong\":[43],\"several\":[45],\"classes—to\":[46],\"be\":[47],\"added\":[48],\"removed\":[51],\"from\":[52],\"existing\":[53],\"objects\":[54,74],\"disciplined\":[57],\"way.\":[58],\"We\":[59],\"develop\":[60],\"type\":[62],\"system\":[63],\"for\":[64,87],\"composition,\":[67],\"which\":[68],\"may\":[69],\"change\":[70],\"interfaces\":[72],\"at\":[75],\"run\":[76],\"time,\":[77],\"based\":[78],\"variant\":[81],\"ContextFJ,\":[83],\"core\":[85],\"calculus\":[86],\"COP,\":[88],\"and\":[89],\"prove\":[90],\"its\":[91],\"soundness.\":[92]}},\"S\":[{\"Ty\":3,\"U\":\"http://prg.is.titech.ac.jp/members/masuhara/papers/fool2012.pdf\"},{\"Ty\":3,\"U\":\"http://www.fos.kuis.kyoto-u.ac.jp/~igarashi/papers/pdf/dlc-fool2012.pdf\"},{\"Ty\":3,\"U\":\"http://www.cs.uwm.edu/faculty/boyland/fool2012/slides/9.pdf\"}],\"VFN\":\"\",\"CC\":{\"1556091067\":[\"A key idea of our development is the introduction of an explicitly declared inter-layer dependency relation, which plays a role similar to required methods in type systems for mixins [4, 8, 14].\",\"An idea similar to our requires clauses can be found in type systems for mixins [4, 8, 14], where a mixin specifies the interface of classes to be composed.\",\"set of method signatures [4, 14] or Java-like interfaces adapted for layers.\"],\"1556513858\":[\"Many COP extensions including those designed on top of Java [2], Smalltalk [9], Common Lisp [6], and JavaScript [15], are based on object-oriented programming languages and introduce layers of partial methods for defining and organizing behavioral variations and layer activation mechanisms for layer selection and composition.\",\"4Variants of COP languages allow to manage layer compositions on a perinstance basis [9, 13], which is left as future work in the paper.\"],\"1557561422\":[\"Type soundness is shown via subject reduction and progress properties [16, 22].\"],\"1591849443\":[\"A key idea of our development is the introduction of an explicitly declared inter-layer dependency relation, which plays a role similar to required methods in type systems for mixins [4, 8, 14].\",\"An idea similar to our requires clauses can be found in type systems for mixins [4, 8, 14], where a mixin specifies the interface of classes to be composed.\",\"set of method signatures [4, 14] or Java-like interfaces adapted for layers.\"],\"1949851419\":[\"Feature-oriented programming (FOP) [3] and delta-oriented programming (DOP) [17] also advocate the use of layers or delta modules respectively to describe behavioral variations.\"],\"1978875190\":[\"Many COP extensions including those designed on top of Java [2], Smalltalk [9], Common Lisp [6], and JavaScript [15], are based on object-oriented programming languages and introduce layers of partial methods for defining and organizing behavioral variations and layer activation mechanisms for layer selection and composition.\"],\"1985637830\":[\"We formalize the type system for a variant of ContextFJ [11], a COP extension of Featherweight Java [12], and prove its soundness.\",\"This paper is a continuation of our work [11], in which ContextFJ is formalized.\",\"The present version of ContextFJ replaces with and without for layer (de)activation found in the original version [11] with ensure.\"],\"1992443356\":[\"Many COP extensions including those designed on top of Java [2], Smalltalk [9], Common Lisp [6], and JavaScript [15], are based on object-oriented programming languages and introduce layers of partial methods for defining and organizing behavioral variations and layer activation mechanisms for layer selection and composition.\"],\"2033348393\":[\"We formalize the type system for a variant of ContextFJ [11], a COP extension of Featherweight Java [12], and prove its soundness.\",\"In this section, we give the syntax and operational semantics of ContextFJ, which is an extension of Featherweight Java (FJ) [12] with (around-type) partial methods, ensure for layer activation, proceed, and super.\"],\"2044590882\":[\"Typestate checking [20] is a technique to keep track of state transition of computational resources (such as files and sockets) during program execution statically.\"],\"2059639972\":[\"Their type systems [1, 7, 18] also use explicitly declared dependencies, often called feature models, for modular typechecking.\"],\"2080648611\":[\"A key idea of our development is the introduction of an explicitly declared inter-layer dependency relation, which plays a role similar to required methods in type systems for mixins [4, 8, 14].\",\"An idea similar to our requires clauses can be found in type systems for mixins [4, 8, 14], where a mixin specifies the interface of classes to be composed.\"],\"2089889705\":[\"Many COP extensions including those designed on top of Java [2], Smalltalk [9], Common Lisp [6], and JavaScript [15], are based on object-oriented programming languages and introduce layers of partial methods for defining and organizing behavioral variations and layer activation mechanisms for layer selection and composition.\"],\"2148878240\":[\"In fact, Clarke and Sergey [5] independently formalize a core language (also called ContextFJ) for context-oriented programming (with both with and without but no inheritance) and develop such a type system.\"],\"2165534348\":[\"Their type systems [1, 7, 18] also use explicitly declared dependencies, often called feature models, for modular typechecking.\"],\"2169934995\":[\"Related Work A layer in COP languages is essentially a set of mixins (or a mixin layer [19]), which can be composed or decomposed at run time.\"]},\"PR\":[2150275961,1985637830,1992443356,2033348393,2089889705,2060640309,2124489158,2145304606,2148878240,6784408,2103680982,2115607078,2144114063,175922506,1978875190,2055190380,2081821914,2087175184,2480195817,2756046501,2150275961,1985637830,1992443356,2033348393,2089889705,2060640309,2124489158,2145304606,2148878240,6784408,2103680982,2115607078,2144114063,175922506,1978875190,2055190380,2081821914,2087175184,2480195817,2756046501],\"ANF\":[{\"FN\":\"Atsushi\",\"LN\":\"Igarashi\",\"S\":1},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":2},{\"FN\":\"Hidehiko\",\"LN\":\"Masuhara\",\"S\":3}],\"BT\":\"a\"}"},{"logprob":-20.552,"Id":130651513,"Ty":"0","Ti":"aspect oriented programming with aspects","Pt":"1","Y":2002,"D":"2002-01-01","CC":36,"ECC":55,"RId":[2480195817,2143238865,2139907081,1770006921,1539723268,2782959840,193395745,158038449],"W":["aspect","aspects","oriented","programming"],"AA":[{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"Communications Laboratories","S":1}],"F":[{"DFN":"Smalltalk","FN":"smalltalk","FId":2777293101},{"DFN":"Programming paradigm","FN":"programming paradigm","FId":34165917},{"DFN":"Programming language implementation","FN":"programming language implementation","FId":201997060},{"DFN":"Programming language","FN":"programming language","FId":199360897},{"DFN":"Object-oriented programming","FN":"object oriented programming","FId":73752529},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Class (computer programming)","FN":"class","FId":22414024},{"DFN":"Aspect-oriented programming","FN":"aspect oriented programming","FId":60051680}],"J":{"JN":"lncs","JId":106296714},"E":"{\"DN\":\"Aspect-Oriented Programming with AspectS\",\"VFN\":\"Lecture Notes in Computer Science\",\"CC\":{\"158038449\":[\"It benefits greatly from the simple, elegant, and open architecture of Squeak itself as well [6,  9 , 17].\"],\"1539723268\":[\"As of today there are several approaches that support aspect-oriented concepts, ranging from general-purpose aspect languages like AspectJ [1, 13] to domainspecific aspect languages such as RG or D [15,  14 ].\"],\"2139907081\":[\"4 The notation used in this text is based on OOSE/Objectory [ 10 ].\"]},\"PR\":[2480195817,2061180491,2138363365,1970558557,1527793496,1649645444,2000090290,1855341394,2088018252,2132055297,1491095550,1546640765,1770006921,1972328015,2097964082,2115680394,2124734282,21047038,1501829296,1513136098,2480195817,2061180491,2138363365,1970558557,1527793496,1649645444,2000090290,1855341394,2088018252,2132055297,1491095550,1546640765,1770006921,1972328015,2097964082,2115680394,2124734282,21047038,1501829296,1513136098],\"ANF\":[{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":1}],\"BV\":\"Lecture Notes in Computer Science\",\"BT\":\"a\"}"},{"logprob":-20.594,"Id":2552637150,"Ty":"0","Ti":"declaring constraints on object oriented collections","Pt":"1","L":"en","Y":2016,"D":"2016-01-01","CC":0,"ECC":0,"RId":[1480909796,2172147300,2045398665,1909822857,2073536284,2339464104,2101512909,2053637323,2103668392,2168617729,1556513858,2109276114,1617230687,2339290067,2466549770,2019153550,2110382134,2103729840],"W":["collections","constraints","declaring","object","oriented"],"AA":[{"DAuN":"Tim Felgentreff","AuN":"tim felgentreff","AuId":1964871710,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":1},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":2},{"DAuN":"Maria Graber","AuN":"maria graber","AuId":2231566632,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":3},{"DAuN":"Alan Borning","AuN":"alan borning","AuId":2020136591,"DAfN":"University of Washington","AfN":"university of washington","AfId":201448701,"S":4},{"DAuN":"Hidehiko Masuhara","AuN":"hidehiko masuhara","AuId":2087436944,"DAfN":"Tokyo Institute of Technology","AfN":"tokyo institute of technology","AfId":114531698,"S":5}],"F":[{"DFN":"Theoretical computer science","FN":"theoretical computer science","FId":80444323},{"DFN":"Object-oriented programming","FN":"object oriented programming","FId":73752529},{"DFN":"Inductive programming","FN":"inductive programming","FId":50033165},{"DFN":"Fifth-generation programming language","FN":"fifth generation programming language","FId":199305712},{"DFN":"Constraint satisfaction","FN":"constraint satisfaction","FId":44616089},{"DFN":"Constraint programming","FN":"constraint programming","FId":173404611},{"DFN":"Constraint learning","FN":"constraint learning","FId":29230964},{"DFN":"Constraint (mathematics)","FN":"constraint","FId":30416901},{"DFN":"Concurrent constraint logic programming","FN":"concurrent constraint logic programming","FId":204306468},{"DFN":"Computer science","FN":"computer science","FId":41008148}],"J":{"JN":"journal of information processing","JId":192843772},"E":"{\"DN\":\"Declaring Constraints on Object-oriented Collections\",\"S\":[{\"Ty\":1,\"U\":\"https://www.jstage.jst.go.jp/article/ipsjjip/24/6/24_917/_article\"},{\"Ty\":1,\"U\":\"http://dblp.uni-trier.de/db/journals/jip/jip24.html#FelgentreffHGBM16\"},{\"Ty\":0,\"U\":\"https://www.jstage.jst.go.jp/article/ipsjjip/24/6/24_917/_pdf\"}],\"VFN\":\"Journal of Information Processing\",\"V\":24,\"I\":6,\"FP\":917,\"LP\":927,\"DOI\":\"10.2197/ipsjjip.24.917\",\"PR\":[2798639187,152399527,1976066707,2013398477,104039687,2623650524,2002120191,2066852529,18346774,1548690989,1487692308,2030929333,137102142,598166810,33308240,1588746435,116714339,112594251,2124140439,1759883707,2798639187,152399527,1976066707,2013398477,104039687,2623650524,2002120191,2066852529,18346774,1548690989,1487692308,2030929333,137102142,598166810,33308240,1588746435,116714339,112594251,2124140439,1759883707],\"ANF\":[{\"FN\":\"Tim\",\"LN\":\"Felgentreff\",\"S\":1},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":2},{\"FN\":\"Maria\",\"LN\":\"Graber\",\"S\":3},{\"FN\":\"Alan\",\"LN\":\"Borning\",\"S\":4},{\"FN\":\"Hidehiko\",\"LN\":\"Masuhara\",\"S\":5}],\"BV\":\"Journal of Information Processing\",\"BT\":\"a\",\"PB\":\"Information Processing Society of Japan\"}"},{"logprob":-20.64,"Id":1774013863,"Ty":"0","Ti":"test driven fault navigation for debugging reproducible failures","Pt":"1","L":"en@@@ja","Y":2012,"D":"2012-01-01","CC":10,"ECC":10,"RId":[2014309790,2079317829,2101819268,2162376048,2106588364,2162045655,2036196659,2166007208,1964962870,2099332975,2164372721,1574060188,2165663378,2136213879,1673079227,2134876531,2002985857,2070321219,2782959840,2028530550,1507612039,2166633979,2162541525,175708229,2125825154,2092239677,2136887998,1482473201,2155848253,1972151373,2065296680,2066031375,169400382,2130237836,152925115],"W":["debugging","driven","failures","fault","navigation","reproducible","test"],"AA":[{"DAuN":"Michael Perscheid","AuN":"michael perscheid","AuId":698431335,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":1},{"DAuN":"Michael Haupt","AuN":"michael haupt","AuId":2146662369,"DAfN":"Oracle Corporation","AfN":"oracle corporation","AfId":1342911587,"S":2},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":3},{"DAuN":"Hidehiko Masuhara","AuN":"hidehiko masuhara","AuId":2087436944,"DAfN":"University of Tokyo","AfN":"university of tokyo","AfId":74801974,"S":4}],"F":[{"DFN":"Test case","FN":"test case","FId":128942645},{"DFN":"Real-time computing","FN":"real time computing","FId":79403827},{"DFN":"Failure causes","FN":"failure causes","FId":28944875},{"DFN":"Debugging","FN":"debugging","FId":168065819},{"DFN":"Debugger","FN":"debugger","FId":2778485113},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Algorithmic program debugging","FN":"algorithmic program debugging","FId":136388014}],"J":{"JN":"journal of information processing","JId":192843772},"E":"{\"DN\":\"Test-driven Fault Navigation for Debugging Reproducible Failures\",\"IA\":{\"IndexLength\":213,\"InvertedIndex\":{\"Debugging\":[0],\"failing\":[1,174],\"test\":[2,122,175,195],\"cases,\":[3,123,196],\"particularly\":[4],\"the\":[5,18,29,64,140,191,197,204],\"search\":[6,32,155],\"for\":[7,91,132,156,164,177,193],\"failure\":[8,65,117,159],\"causes,\":[9],\"is\":[10,69,88,167],\"often\":[11],\"a\":[12,152,168],\"laborious\":[13],\"and\":[14,49,116,136,161,203],\"timeconsuming\":[15],\"activity.\":[16],\"With\":[17],\"help\":[19],\"of\":[20,187,200,208],\"spectrum-based\":[21],\"fault\":[22,105],\"localization\":[23],\"developers\":[24,51,129,163],\"are\":[25],\"able\":[26],\"to\":[27,54,82,100,183],\"reduce\":[28],\"potentially\":[30],\"large\":[31],\"space\":[33],\"by\":[34,59],\"detecting\":[35],\"anomalies\":[36,43,115],\"in\":[37,139],\"tested\":[38],\"program\":[39],\"entities.\":[40],\"However,\":[41],\"such\":[42],\"do\":[44],\"not\":[45,74],\"necessarily\":[46],\"indicate\":[47],\"defects\":[48],\"so\":[50],\"still\":[52],\"have\":[53],\"analyze\":[55],\"numerous\":[56],\"candidates\":[57],\"one\":[58,60],\"until\":[61],\"they\":[62],\"find\":[63],\"cause.\":[66],\"This\":[67],\"procedure\":[68],\"inefficient\":[70],\"since\":[71],\"it\":[72],\"does\":[73],\"take\":[75],\"into\":[76],\"account\":[77],\"how\":[78,96],\"suspicious\":[79,126],\"entities\":[80],\"relate\":[81],\"each\":[83],\"other,\":[84],\"whether\":[85],\"another\":[86],\"developer\":[87],\"better\":[89],\"qualified\":[90,131],\"debugging\":[92,110,194],\"this\":[93],\"failure,\":[94],\"or\":[95],\"erroneous\":[97,137],\"behavior\":[98,138,176],\"comes\":[99],\"be.\":[101],\"We\":[102],\"present\":[103],\"test-driven\":[104],\"navigation\":[106],\"as\":[107],\"an\":[108],\"interconnected\":[109],\"guide\":[111],\"that\":[112,172],\"integrates\":[113],\"spectrumbased\":[114],\"causes.\":[118],\"By\":[119],\"analyzing\":[120],\"failure-reproducing\":[121],\"we\":[124],\"reveal\":[125],\"system\":[127],\"parts,\":[128],\"most\":[130],\"addressing\":[133],\"localized\":[134],\"faults,\":[135],\"execution\":[141],\"history.\":[142],\"The\":[143,185],\"Paths\":[144],\"tool\":[145,211],\"suite\":[146],\"realizes\":[147],\"our\":[148,188,209],\"approach:\":[149],\"PathMap\":[150],\"supports\":[151],\"breadth\":[153],\"first\":[154],\"narrowing\":[157],\"down\":[158],\"causes\":[160],\"recommends\":[162],\"help;\":[165],\"PathFinder\":[166],\"lightweight\":[169],\"back-in-time\":[170],\"debugger\":[171],\"classifies\":[173],\"easily\":[178],\"following\":[179],\"infection\":[180],\"chains\":[181],\"back\":[182],\"defects.\":[184],\"evaluation\":[186],\"approach\":[189],\"illustrates\":[190],\"improvements\":[192],\"high\":[198],\"accuracy\":[199],\"recommended\":[201],\"developers,\":[202],\"fast\":[205],\"response\":[206],\"times\":[207],\"corresponding\":[210],\"suite.\":[212]}},\"S\":[{\"Ty\":3,\"U\":\"http://www.hirschfeld.org/writings/media/PerscheidHauptHirschfeldMasuhara_2012_TestDrivenFaultNavigationForDebuggingReproducibleFailures_JSSST.pdf\"},{\"Ty\":3,\"U\":\"http://prg.is.titech.ac.jp/members/masuhara/papers/compsoft2012.pdf\"},{\"Ty\":1,\"U\":\"http://ci.nii.ac.jp/naid/130003324424\"},{\"Ty\":1,\"U\":\"https://www.jstage.jst.go.jp/article/imt/7/4/7_1377/_article\"}],\"VFN\":\"Journal of Information Processing\",\"V\":7,\"I\":4,\"FP\":1377,\"LP\":1400,\"DOI\":\"10.11185/imt.7.1377\",\"CC\":{\"1972151373\":[\"29,No.3 (2012),pp.\"],\"2162045655\":[\"Information and Media Technologies 7(4): 1377-1400 (2012) reprinted from: Computer Software 29(3): 188-211 (2012) © Japan Society for Software Science and Technology\"]},\"PR\":[2111708921,2001919024,2775592182,2062154010,1219082078,2807730630,1605507930,1574060188,2598366710,66783427,2004141756,2118315969,2082732081,2578469907,2762915977,1860170051,2154701440,1994816063,1574571988,2096761130,2111708921,2001919024,2775592182,2062154010,1219082078,2807730630,1605507930,1574060188,2598366710,66783427,2004141756,2118315969,2082732081,2578469907,2762915977,1860170051,2154701440,1994816063,1574571988,2096761130],\"ANF\":[{\"FN\":\"Michael\",\"LN\":\"Perscheid\",\"S\":1},{\"FN\":\"Michael\",\"LN\":\"Haupt\",\"S\":2},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":3},{\"FN\":\"Hidehiko\",\"LN\":\"Masuhara\",\"S\":4}],\"BV\":\"Journal of Information Processing\",\"BT\":\"a\",\"PB\":\"Information and Media Technologies Editorial Board\"}"},{"logprob":-20.669,"Id":2504111155,"Ty":"0","Ti":"the bipolar book history neurobiology and treatment","Pt":"5","L":"en","Y":2015,"D":"2015-06-01","CC":10,"ECC":10,"W":["bipolar","book","history","neurobiology","treatment"],"AA":[{"DAuN":"Ana Cristina Andreazza","AuN":"ana cristina andreazza","AuId":2902433456,"S":1},{"DAuN":"Jean-Michel Azorin","AuN":"j m azorin","AuId":2285999556,"S":2},{"DAuN":"Christopher Bailey","AuN":"christopher bailey","AuId":2902298455,"S":3},{"DAuN":"Ross Baldessarini","AuN":"ross j baldessarini","AuId":2056849856,"S":4},{"DAuN":"Richard Balon","AuN":"richard balon","AuId":2902198165,"S":5},{"DAuN":"Michael Bauer","AuN":"michael bauer","AuId":1966600928,"S":6},{"DAuN":"Joseph Calabrese","AuN":"joseph calabrese","AuId":2903212880,"S":7},{"DAuN":"Kiki Chang","AuN":"kiki chang","AuId":2903520859,"S":8},{"DAuN":"Elizabeth Crocco","AuN":"elizabeth crocco","AuId":2902682518,"S":9},{"DAuN":"Melissa DelBello","AuN":"melissa delbello","AuId":2902759779,"S":10},{"DAuN":"Colin Depp","AuN":"colin depp","AuId":2903540800,"S":11},{"DAuN":"Konstantinos Fountoulakis","AuN":"konstantinos n fountoulakis","AuId":1508345381,"S":12},{"DAuN":"Keming Gao","AuN":"keming gao","AuId":2903098685,"S":13},{"DAuN":"Allison Greene","AuN":"allison greene","AuId":2903385820,"S":14},{"DAuN":"Heinz Grunze","AuN":"heinz grunze","AuId":2903229590,"S":15},{"DAuN":"Gabriel Fries","AuN":"gabriel fries","AuId":2903540786,"S":16},{"DAuN":"Sabrina Maria Gippert","AuN":"sabrina maria gippert","AuId":2903040017,"S":17},{"DAuN":"Philip Harvey","AuN":"philip harvey","AuId":2903468545,"S":18},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2903139603,"S":19},{"DAuN":"Julie Hyman","AuN":"julie hyman","AuId":2903381995,"S":20},{"DAuN":"Richard Jope","AuN":"richard jope","AuId":2903087290,"S":21},{"DAuN":"Flávio Kapczinski","AuN":"flavio kapczinski","AuId":1965321838,"S":22},{"DAuN":"Paul Keck","AuN":"paul keck","AuId":2902497169,"S":23},{"DAuN":"Charles Kellner","AuN":"charles kellner","AuId":2902481335,"S":24},{"DAuN":"Levente Kriston","AuN":"levente kriston","AuId":2903131983,"S":25},{"DAuN":"Rodrigo Machado-Vieira","AuN":"rodrigo machadovieira","AuId":2903004273,"S":26},{"DAuN":"Susan McElroy","AuN":"susan mcelroy","AuId":2903328451,"S":27},{"DAuN":"Roger S. McIntyre","AuN":"roger s mcintyre","AuId":2903557791,"S":28},{"DAuN":"Kathleen R. Merikangas","AuN":"kathleen r merikangas","AuId":2136310305,"S":29},{"DAuN":"Charles Nemeroff","AuN":"charles nemeroff","AuId":2903376343,"S":30},{"DAuN":"Alexander Neumeister","AuN":"alexander neumeister","AuId":2903034705,"S":31},{"DAuN":"Dost Öngür","AuN":"dost ongur","AuId":2902690511,"S":32},{"DAuN":"Carmine Pariante","AuN":"carmine pariante","AuId":2902108422,"S":33},{"DAuN":"Roy Perlis","AuN":"roy perlis","AuId":2902345128,"S":34},{"DAuN":"Jesus Pérez","AuN":"jesus perez","AuId":2154393912,"S":35},{"DAuN":"Giampaolo Perna","AuN":"giampaolo perna","AuId":2902182665,"S":36},{"DAuN":"Dina Popovic","AuN":"dina popovic","AuId":2125174543,"S":37},{"DAuN":"Robert Post","AuN":"robert post","AuId":2903440689,"S":38},{"DAuN":"Michelle Primeau","AuN":"michelle primeau","AuId":2903292802,"S":39},{"DAuN":"Pedro Ruiz","AuN":"pedro ruiz","AuId":2902640107,"S":40},{"DAuN":"Ihsan Salloum","AuN":"ihsan salloum","AuId":2902094132,"S":41},{"DAuN":"Paola Salvatore","AuN":"paola salvatore","AuId":2106220987,"S":42},{"DAuN":"Marsal Sanches","AuN":"marsal sanches","AuId":2902403243,"S":43},{"DAuN":"Noreen Reilly-Harrington","AuN":"noreen reillyharrington","AuId":2902948959,"S":44},{"DAuN":"Jan Scott","AuN":"jan scott","AuId":2128065443,"S":45},{"DAuN":"Emanuel Severus","AuN":"emanuel severus","AuId":1987585812,"S":46},{"DAuN":"Jair Soares","AuN":"jair c soares","AuId":2134620377,"S":47},{"DAuN":"Trisha Suppes","AuN":"trisha suppes","AuId":2902182998,"S":48},{"DAuN":"Janusz Rybakowski","AuN":"janusz k rybakowski","AuId":1553332564,"S":49},{"DAuN":"Giacomo Salvadore","AuN":"giacomo salvadore","AuId":2903368205,"S":50},{"DAuN":"Thomas Schlaepfer","AuN":"thomas schlaepfer","AuId":2902698079,"S":51},{"DAuN":"Stephen Strakowski","AuN":"stephen strakowski","AuId":2902708618,"S":52},{"DAuN":"Leonardo Tondo","AuN":"leonardo tondo","AuId":2135093417,"S":53},{"DAuN":"Juan Undurraga","AuN":"juan undurraga","AuId":2131982177,"S":54},{"DAuN":"Gustavo Vázquez","AuN":"gustavo h vazquez","AuId":2396359795,"S":55},{"DAuN":"Eduard Vieta","AuN":"eduard vieta","AuId":2126554348,"S":56},{"DAuN":"Janet Wozniak","AuN":"janet wozniak","AuId":2902510150,"S":57},{"DAuN":"Ayşegül Yıldız","AuN":"aysegul yildiz","AuId":2117659761,"S":58},{"DAuN":"Allan H. Young","AuN":"allan h young","AuId":2117841170,"S":59},{"DAuN":"Eric A. Youngstrom","AuN":"eric a youngstrom","AuId":2902483384,"S":60}],"F":[{"DFN":"Psychology","FN":"psychology","FId":15744967},{"DFN":"Psychiatry","FN":"psychiatry","FId":118552586},{"DFN":"Neuroscience","FN":"neuroscience","FId":169760540}],"E":"{\"DN\":\"The Bipolar Book History, Neurobiology, and Treatment\",\"S\":[{\"Ty\":1,\"U\":\"http://oxfordmedicine.com/view/10.1093/med/9780199300532.001.0001/med-9780199300532\"}],\"VFN\":\"\",\"DOI\":\"10.1093/med/9780199300532.001.0001\",\"PR\":[2119206236,265704777,2145141773,2884006149,2396626415,2594535677,2603226971,2618476084,2122070776,2502225480,1973895193,2731951577,419842890,1585174351,2313644017,2166396761,1553986757,2479453599,1550137430,2328001937,2119206236,265704777,2145141773,2884006149,2396626415,2594535677,2603226971,2618476084,2122070776,2502225480,1973895193,2731951577,419842890,1585174351,2313644017,2166396761,1553986757,2479453599,1550137430,2328001937],\"ANF\":[{\"FN\":\"Ana Cristina\",\"LN\":\"Andreazza\",\"S\":1},{\"FN\":\"Jean-Michel\",\"LN\":\"Azorin\",\"S\":2},{\"FN\":\"Christopher\",\"LN\":\"Bailey\",\"S\":3},{\"FN\":\"Ross\",\"LN\":\"Baldessarini\",\"S\":4},{\"FN\":\"Richard\",\"LN\":\"Balon\",\"S\":5},{\"FN\":\"Michael\",\"LN\":\"Bauer\",\"S\":6},{\"FN\":\"Joseph\",\"LN\":\"Calabrese\",\"S\":7},{\"FN\":\"Kiki\",\"LN\":\"Chang\",\"S\":8},{\"FN\":\"Elizabeth\",\"LN\":\"Crocco\",\"S\":9},{\"FN\":\"Melissa\",\"LN\":\"DelBello\",\"S\":10},{\"FN\":\"Colin\",\"LN\":\"Depp\",\"S\":11},{\"FN\":\"Konstantinos\",\"LN\":\"Fountoulakis\",\"S\":12},{\"FN\":\"Keming\",\"LN\":\"Gao\",\"S\":13},{\"FN\":\"Allison\",\"LN\":\"Greene\",\"S\":14},{\"FN\":\"Heinz\",\"LN\":\"Grunze\",\"S\":15},{\"FN\":\"Gabriel\",\"LN\":\"Fries\",\"S\":16},{\"FN\":\"Sabrina Maria\",\"LN\":\"Gippert\",\"S\":17},{\"FN\":\"Philip\",\"LN\":\"Harvey\",\"S\":18},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":19},{\"FN\":\"Julie\",\"LN\":\"Hyman\",\"S\":20},{\"FN\":\"Richard\",\"LN\":\"Jope\",\"S\":21},{\"FN\":\"Flávio\",\"LN\":\"Kapczinski\",\"S\":22},{\"FN\":\"Paul\",\"LN\":\"Keck\",\"S\":23},{\"FN\":\"Charles\",\"LN\":\"Kellner\",\"S\":24},{\"FN\":\"Levente\",\"LN\":\"Kriston\",\"S\":25},{\"FN\":\"Rodrigo\",\"LN\":\"Machado-Vieira\",\"S\":26},{\"FN\":\"Susan\",\"LN\":\"McElroy\",\"S\":27},{\"FN\":\"Roger S.\",\"LN\":\"McIntyre\",\"S\":28},{\"FN\":\"Kathleen R.\",\"LN\":\"Merikangas\",\"S\":29},{\"FN\":\"Charles\",\"LN\":\"Nemeroff\",\"S\":30},{\"FN\":\"Alexander\",\"LN\":\"Neumeister\",\"S\":31},{\"FN\":\"Dost\",\"LN\":\"Öngür\",\"S\":32},{\"FN\":\"Carmine\",\"LN\":\"Pariante\",\"S\":33},{\"FN\":\"Roy\",\"LN\":\"Perlis\",\"S\":34},{\"FN\":\"Jesus\",\"LN\":\"Pérez\",\"S\":35},{\"FN\":\"Giampaolo\",\"LN\":\"Perna\",\"S\":36},{\"FN\":\"Dina\",\"LN\":\"Popovic\",\"S\":37},{\"FN\":\"Robert\",\"LN\":\"Post\",\"S\":38},{\"FN\":\"Michelle\",\"LN\":\"Primeau\",\"S\":39},{\"FN\":\"Pedro\",\"LN\":\"Ruiz\",\"S\":40},{\"FN\":\"Ihsan\",\"LN\":\"Salloum\",\"S\":41},{\"FN\":\"Paola\",\"LN\":\"Salvatore\",\"S\":42},{\"FN\":\"Marsal\",\"LN\":\"Sanches\",\"S\":43},{\"FN\":\"Noreen\",\"LN\":\"Reilly-Harrington\",\"S\":44},{\"FN\":\"Jan\",\"LN\":\"Scott\",\"S\":45},{\"FN\":\"Emanuel\",\"LN\":\"Severus\",\"S\":46},{\"FN\":\"Jair\",\"LN\":\"Soares\",\"S\":47},{\"FN\":\"Trisha\",\"LN\":\"Suppes\",\"S\":48},{\"FN\":\"Janusz\",\"LN\":\"Rybakowski\",\"S\":49},{\"FN\":\"Giacomo\",\"LN\":\"Salvadore\",\"S\":50},{\"FN\":\"Thomas\",\"LN\":\"Schlaepfer\",\"S\":51},{\"FN\":\"Stephen\",\"LN\":\"Strakowski\",\"S\":52},{\"FN\":\"Leonardo\",\"LN\":\"Tondo\",\"S\":53},{\"FN\":\"Juan\",\"LN\":\"Undurraga\",\"S\":54},{\"FN\":\"Gustavo\",\"LN\":\"Vázquez\",\"S\":55},{\"FN\":\"Eduard\",\"LN\":\"Vieta\",\"S\":56},{\"FN\":\"Janet\",\"LN\":\"Wozniak\",\"S\":57},{\"FN\":\"Ayşegül\",\"LN\":\"Yıldız\",\"S\":58},{\"FN\":\"Allan H.\",\"LN\":\"Young\",\"S\":59},{\"FN\":\"Eric A.\",\"LN\":\"Youngstrom\",\"S\":60}],\"BT\":\"b\"}"},{"logprob":-20.692,"Id":2331893321,"Ty":"0","Ti":"visibility of context oriented behavior and state in l","Pt":"1","L":"en@@@ja","Y":2016,"D":"2016-01-01","CC":3,"ECC":3,"RId":[1770006921,2150275961,1578785003,25798763,2244800645,2484238088,143490393,2111576674,2128029766,2341113088,1977379208],"W":["behavior","context","l","oriented","state","visibility"],"AA":[{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":1},{"DAuN":"Hidehiko Masuhara","AuN":"hidehiko masuhara","AuId":2087436944,"DAfN":"Tokyo Institute of Technology","AfN":"tokyo institute of technology","AfId":114531698,"S":2},{"DAuN":"Atsushi Igarashi","AuN":"atsushi igarashi","AuId":2097080023,"DAfN":"Kyoto University","AfN":"kyoto university","AfId":22299242,"S":3},{"DAuN":"Tim Felgentreff","AuN":"tim felgentreff","AuId":1964871710,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":4}],"F":[{"DFN":"Visibility","FN":"visibility","FId":123403432},{"DFN":"Theoretical computer science","FN":"theoretical computer science","FId":80444323},{"DFN":"Distributed computing","FN":"distributed computing","FId":120314980},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Composition (visual arts)","FN":"composition","FId":169260993}],"J":{"JN":"journal of information processing","JId":192843772},"E":"{\"DN\":\"Visibility of Context-oriented Behavior and State in L\",\"IA\":{\"IndexLength\":79,\"InvertedIndex\":{\"One\":[0],\"of\":[1,4,11,40,51,58,76],\"the\":[2,9,21,33,74],\"properties\":[3],\"context-oriented\":[5],\"programming\":[6],\"languages\":[7],\"is\":[8],\"composition\":[10],\"partial\":[12,27],\"module\":[13,34],\"definitions.\":[14],\"While\":[15],\"in\":[16,60],\"most\":[17],\"such\":[18],\"language\":[19,63],\"extensions\":[20],\"state\":[22],\"and\":[23,48,53,55],\"behavior\":[24],\"introduced\":[25],\"by\":[26],\"definitions\":[28],\"are\":[29],\"treated\":[30],\"equally\":[31],\"at\":[32],\"level,\":[35],\"we\":[36,66],\"propose\":[37,67],\"a\":[38,68],\"refinement\":[39],\"that\":[41],\"approach\":[42],\"to\":[43,72],\"allow\":[44],\"for\":[45],\"both\":[46],\"public\":[47],\"restricted\":[49],\"visibility\":[50,57],\"methods\":[52],\"local\":[54],\"shared\":[56],\"fields\":[59],\"our\":[61],\"experimental\":[62],\"L.\":[64],\"Furthermore,\":[65],\"new\":[69],\"lookup\":[70],\"mechanism\":[71],\"reduce\":[73],\"risk\":[75],\"name\":[77],\"captures.\":[78]}},\"S\":[{\"Ty\":3,\"U\":\"http://prg.is.titech.ac.jp/members/masuhara/papers/hirschfeld2015compsoft.pdf\"},{\"Ty\":3,\"U\":\"http://www.hirschfeld.org/writings/media/HirschfeldMasuharaIgarashiHirschfeld_2015_VisibilityOfContextOrientedBehaviorAndStateInL_JSSST.pdf\"}],\"VFN\":\"Journal of Information Processing\",\"V\":11,\"FP\":11,\"LP\":20,\"DOI\":\"10.11185/imt.11.11\",\"CC\":{\"1977379208\":[\"L is our exploration of the design of a COP language that tries to avoid asymmetry between module constructs for capturing partial or full implementations of system properties [10].\",\"Lone [10] was our first attempt to work on a symmetric approach to modularity in a layer-based language.\",\"In Ltwo [10], we removed the concept of a base layer entirely by moving state declarations into partial object definitions.\",\"(next [11] is similar to CLOS’ call-next-method [14] or ContextFJ’s proceed) [10] in that it invokes the next available partial method defintion of the same name and signature in the current composition.\"]},\"PR\":[2054578147,2008868264,1559532479,1597270641,2469734232,2170694982,1576697052,52191265,1995624218,1487904045,2095324918,1523296850,2206718831,2577018547,1499145217,2036035740,1522102076,161339450,1541407110,1796206066,2054578147,2008868264,1559532479,1597270641,2469734232,2170694982,1576697052,52191265,1995624218,1487904045,2095324918,1523296850,2206718831,2577018547,1499145217,2036035740,1522102076,161339450,1541407110,1796206066],\"ANF\":[{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":1},{\"FN\":\"Hidehiko\",\"LN\":\"Masuhara\",\"S\":2},{\"FN\":\"Atsushi\",\"LN\":\"Igarashi\",\"S\":3},{\"FN\":\"Tim\",\"LN\":\"Felgentreff\",\"S\":4}],\"BV\":\"Journal of Information Processing\",\"BT\":\"a\",\"PB\":\"Information and Media Technologies Editorial Board\"}"},{"logprob":-20.825,"Id":2136885942,"Ty":"0","Ti":"explicit use case representation in object oriented programming languages","Pt":"3","L":"en","Y":2011,"D":"2011-10-24","CC":11,"ECC":11,"RId":[2138363365,2139907081,1500250067,2128581098,1552830686,2075642720,2150275961,2163960678,2148357053,2129559874,2125682153,1574060188,2101730275,2162363818,2121234902,2104354357,2041853131,2113647890,2113476536,2539187648,2111014165,1563647787,2001033929,2002454301,2072661102,2077997855,1984129195,2151318864,1510987657,2803343605,2169540278,2169326591,149861366,1998033538,2133815117],"W":["case","explicit","languages","object","oriented","programming","representation"],"AA":[{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":1},{"DAuN":"Michael Perscheid","AuN":"michael perscheid","AuId":698431335,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":2},{"DAuN":"Michael Haupt","AuN":"michael haupt","AuId":2146662369,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":3}],"F":[{"DFN":"Theoretical computer science","FN":"theoretical computer science","FId":80444323},{"DFN":"Source code","FN":"source code","FId":43126263},{"DFN":"Separation of concerns","FN":"separation of concerns","FId":76214141},{"DFN":"Second-generation programming language","FN":"second generation programming language","FId":11164408},{"DFN":"Programming paradigm","FN":"programming paradigm","FId":34165917},{"DFN":"Programming language","FN":"programming language","FId":199360897},{"DFN":"Intentional programming","FN":"intentional programming","FId":24125291},{"DFN":"Fourth-generation programming language","FN":"fourth generation programming language","FId":145628200},{"DFN":"Fifth-generation programming language","FN":"fifth generation programming language","FId":199305712},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Computer programming","FN":"computer programming","FId":33857546}],"C":{"CN":"dls","CId":1133200404},"E":"{\"DN\":\"Explicit use-case representation in object-oriented programming languages\",\"IA\":{\"IndexLength\":171,\"InvertedIndex\":{\"Use-cases\":[0],\"are\":[1],\"considered\":[2],\"an\":[3,87,153],\"integral\":[4],\"part\":[5],\"of\":[6,22,29,49,66,124,136,155],\"most\":[7],\"contemporary\":[8],\"development\":[9,41,160],\"processes\":[10],\"since\":[11],\"they\":[12],\"describe\":[13],\"a\":[14],\"software\":[15],\"system's\":[16],\"expected\":[17],\"behavior\":[18],\"from\":[19],\"the\":[20,27,47,67,96,100,107,110,130,134,167],\"perspective\":[21],\"its\":[23,164],\"prospective\":[24],\"users.\":[25,131],\"However,\":[26],\"presence\":[28],\"and\":[30,60,76,99,109,117,140,163],\"traceability\":[31],\"to\":[32,54,70,89,119,129,143,158,166],\"use-cases\":[33,72,91,104],\"is\":[34,73],\"increasingly\":[35],\"lost\":[36],\"in\":[37,57,94,106,161],\"later\":[38],\"more\":[39],\"code-centric\":[40],\"activities.\":[42],\"Use-cases,\":[43],\"being\":[44],\"well-encapsulated\":[45],\"at\":[46],\"level\":[48],\"requirements\":[50],\"descriptions,\":[51],\"eventually\":[52],\"lead\":[53],\"crosscutting\":[55],\"concerns\":[56],\"system\":[58,68,112],\"design\":[59],\"source\":[61,146],\"code.\":[62],\"Tracing\":[63],\"which\":[64,71],\"parts\":[65],\"contribute\":[69],\"therefore\":[74],\"hard\":[75],\"so\":[77],\"limits\":[78],\"understandability.\":[79],\"In\":[82],\"this\":[83],\"paper,\":[84],\"we\":[85],\"propose\":[86],\"approach\":[88,157],\"making\":[90],\"first-class\":[92],\"entities\":[93],\"both\":[95],\"programming\":[97],\"language\":[98],\"runtime\":[101],\"environment.\":[102],\"Having\":[103],\"present\":[105,151],\"code\":[108,147],\"running\":[111],\"will\":[113],\"allow\":[114],\"developers,\":[115],\"maintainers,\":[116],\"operators\":[118],\"easily\":[120],\"associate\":[121,145],\"their\":[122],\"units\":[123],\"work\":[125],\"with\":[126,148],\"what\":[127],\"matters\":[128],\"We\":[132,150],\"suggest\":[133],\"combination\":[135],\"use-cases,\":[137],\"acceptance\":[138],\"tests,\":[139],\"dynamic\":[141],\"analysis\":[142],\"automatically\":[144],\"use-cases.\":[149],\"UseCasePy,\":[152],\"implementation\":[154],\"our\":[156],\"use-case-centered\":[159],\"Python,\":[162],\"application\":[165],\"Django\":[168],\"Web\":[169],\"framework.\":[170]}},\"S\":[{\"Ty\":3,\"U\":\"http://www.hpi.uni-potsdam.de/hirschfeld/publications/media/HirschfeldPerscheidHaupt_2011_Explicit%20UseCaseRepresentationInObjectOrientedProgrammingLanguages_AcmDL.pdf\"},{\"Ty\":3,\"U\":\"http://www.hirschfeld.org/writings/media/HirschfeldPerscheidHaupt_2011_Explicit%20UseCaseRepresentationInObjectOrientedProgrammingLanguages_AcmDL.pdf\"},{\"Ty\":1,\"U\":\"https://dl.acm.org/citation.cfm?id=2047856\"},{\"Ty\":1,\"U\":\"https://publishup.uni-potsdam.de/opus4-ubp/frontdoor/index/index/docId/36139\"},{\"Ty\":0,\"U\":\"http://dl.acm.org/citation.cfm?id=2047856\"}],\"VFN\":\"Dynamic Languages Symposium\",\"VSN\":\"DLS\",\"V\":47,\"I\":2,\"FP\":51,\"LP\":60,\"DOI\":\"10.1145/2047849.2047856\",\"CC\":{\"1510987657\":[\"AspectU [28] introduces an aspect entity at the use-case requirement level similar to AspectJ at implementation level.\"],\"1563647787\":[\"Moreover, dependencies between usecase implementations are not obvious, leading to missing or erroneous annotations [18].\"],\"1574060188\":[\"Developers have to follow the infection chain backwards from the observable failure to the past defect, which is largely a search problem in time and space of programs [35].\"],\"1984129195\":[\"Contemporary object-oriented programming languages are very limited when it comes to reflecting the users’ perspectives in the actual source code of the system [34].\",\"Further research has refined this concept by defining metrics [23, 34] and heuristics [14] or interactively analyzing features at the sub-method level [10] to quantify features and source code more precisely.\"],\"1998033538\":[\"Further research has refined this concept by defining metrics [23, 34] and heuristics [14] or interactively analyzing features at the sub-method level [10] to quantify features and source code more precisely.\"],\"2001033929\":[\"It is hardly possible to determine solely from source code how objects contribute to the run-time behavior of the system, which is to a large degree due to language features such as late binding or polymorphism [8].\"],\"2002454301\":[\"Feature Localization Feature engineering [30] introduces features as the natural organization of a system’s functionality from the users’ point of view.\"],\"2041853131\":[\"Besides dynamic analysis, there are alternative approaches based on information retrieval techniques [24, 36].\"],\"2072661102\":[\"The TraceAnalyzer [12] is similar to our approach since it uses run-time information of scenarios to recover traceability links.\"],\"2077997855\":[\"Based on a few links created manually, LeanArt [16] recovers traceability links between use-case diagrams and types and variables.\"],\"2101730275\":[\"Feature-oriented programming (FOP) [4] and context-oriented programming (COP) [19] are paradigms that capture increments in program functionality.\"],\"2104354357\":[\"Similar concepts [6] focus on test coverage [3] and recovering architectural entities [5].\"],\"2111014165\":[\"A further approach uses static and dynamic concepts with several tools such as parser and processor emulation [1] solving difficulties of collecting dynamic data and combining features and micro architecture together.\"],\"2113476536\":[\"Further research has refined this concept by defining metrics [23, 34] and heuristics [14] or interactively analyzing features at the sub-method level [10] to quantify features and source code more precisely.\"],\"2113647890\":[\"Due to the crosscutting characteristics of use-cases in design and implementation activities [21, 22], their realizing objects end up being scattered over and tangled with the rest of the system.\",\"Aspects Use-case modularity [21] argues that aspect-oriented programming can provide the missing link between use-cases and implementation.\"],\"2121234902\":[\"Developers frequently have to associate requirements expressed by a customer or user with the responsible locations in a system’s implementation [32].\",\"After test execution, the collected traces are used to map source code entities to use-case objects in a so-called use-case method-map (adapted from feature analysis [17, 32])—use-case implementations are said to refer to a method when that method has been executed at least once in a specific use-case trace.\",\"The Software Reconnaissance technique [32, 33] was the first to use dynamic analysis to locate features.\"],\"2125682153\":[\"Another approach extends the idea with static analysis of dependency graphs and formal concept analysis [13].\"],\"2128581098\":[\"There are also some approaches based on information retrieval [2, 26].\"],\"2129559874\":[\"Requirements Traceability Requirements traceability refers to the ability to follow the life of a requirement, both forwards and backwards [15].\",\"This reuse of requirements documents can lead to a significant decrease in time, effort, and costs of software development [15].\"],\"2133815117\":[\"Similar concepts [6] focus on test coverage [3] and recovering architectural entities [5].\"],\"2148357053\":[\"This initial task consists of studying and analyzing an often only partially understood system to store the mappings of system functionalities to source code [25], which is likely to be nontrivial and timeconsuming.\"],\"2150275961\":[\"Feature-oriented programming (FOP) [4] and context-oriented programming (COP) [19] are paradigms that capture increments in program functionality.\"],\"2151318864\":[\"The Software Reconnaissance technique [32, 33] was the first to use dynamic analysis to locate features.\"],\"2163960678\":[\"There are also some approaches based on information retrieval [2, 26].\"],\"2169326591\":[\"Similar concepts [6] focus on test coverage [3] and recovering architectural entities [5].\"],\"2169540278\":[\"Further research has refined this concept by defining metrics [23, 34] and heuristics [14] or interactively analyzing features at the sub-method level [10] to quantify features and source code more precisely.\"],\"2539187648\":[\"Besides dynamic analysis, there are alternative approaches based on information retrieval techniques [24, 36].\",\"For instance, latent semantic indexing will be used to locate similar source code identifiers in different documents [24].\"],\"2803343605\":[\"After test execution, the collected traces are used to map source code entities to use-case objects in a so-called use-case method-map (adapted from feature analysis [17, 32])—use-case implementations are said to refer to a method when that method has been executed at least once in a specific use-case trace.\",\"The usefulness of considering features as the missing link between the users’ point of view and the implementation level was evaluated in several publications explaining the correlation between features and code, characterizing the functional role of classes and methods, and revealing how developers develop features [17].\"]},\"PR\":[2795148395,194409236,1547182252,2469219848,204461497,37128026,2154778832,2181829784,2182619624,2550782796,2186224784,1606671338,192257153,2782050458,2273196620,2602532206,2259495429,2183043735,1561331312,2407603019,2795148395,194409236,1547182252,2469219848,204461497,37128026,2154778832,2181829784,2182619624,2550782796,2186224784,1606671338,192257153,2782050458,2273196620,2602532206,2259495429,2183043735,1561331312,2407603019],\"ANF\":[{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":1},{\"FN\":\"Michael\",\"LN\":\"Perscheid\",\"S\":2},{\"FN\":\"Michael\",\"LN\":\"Haupt\",\"S\":3}],\"BV\":\"Proceedings of the 7th symposium on Dynamic languages\",\"BT\":\"p\",\"PB\":\"ACM\"}"},{"logprob":-20.829,"Id":2002568360,"Ty":"0","Ti":"dynamic contract layers","Pt":"3","L":"en","Y":2010,"D":"2010-03-22","CC":14,"ECC":14,"RId":[2138363365,2480195817,2143238865,2161825580,2052363833,2150275961,2886283850,2125682153,1555946950,1574060188,2111706174,1992443356,1531869376,2090496119,2144114063,166270156,61997153,1491095550,2105142318,2087175184,2165121897,1601712140,956539890,1556513858,2172169742,1584704555,2803343605,221784231,2164859807,2146987093,2118399307],"W":["contract","dynamic","layers"],"AA":[{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":1},{"DAuN":"Michael Perscheid","AuN":"michael perscheid","AuId":698431335,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":2},{"DAuN":"Christian Schubert","AuN":"christian schubert","AuId":2493869840,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":3},{"DAuN":"Malte Appeltauer","AuN":"malte appeltauer","AuId":135591984,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":4}],"F":[{"DFN":"dBc","FN":"dbc","FId":193523891},{"DFN":"Thread (computing)","FN":"thread","FId":138101251},{"DFN":"Real-time computing","FN":"real time computing","FId":79403827},{"DFN":"Python (programming language)","FN":"python","FId":519991488},{"DFN":"Implementation","FN":"implementation","FId":26713055},{"DFN":"Function composition (computer science)","FN":"function composition","FId":104637301},{"DFN":"Enforcement","FN":"enforcement","FId":2779777834},{"DFN":"Design by contract","FN":"design by contract","FId":80291951},{"DFN":"Contract management","FN":"contract management","FId":55451941},{"DFN":"Computer science","FN":"computer science","FId":41008148}],"C":{"CN":"sac","CId":2754781246},"E":"{\"DN\":\"Dynamic contract layers\",\"IA\":{\"IndexLength\":170,\"InvertedIndex\":{\"Design\":[0],\"by\":[1,116,161],\"Contract\":[2,45],\"(DBC)\":[4],\"is\":[5,143],\"a\":[6,35,117],\"programming\":[7,155],\"technique\":[8],\"to\":[9,26,70,82,165],\"separate\":[10],\"contract\":[11,97,105,131],\"enforcement\":[12,46,132],\"from\":[13,43,110],\"application\":[14],\"code.\":[15],\"DBC\":[16,40,115],\"provides\":[17],\"information\":[18],\"about\":[19],\"the\":[20,29,71,83,153,166],\"applicability\":[21],\"of\":[22,34,74,126,141],\"methods\":[23],\"and\":[24,61,76,103,124,129],\"helps\":[25],\"narrow\":[27],\"down\":[28],\"search\":[30],\"space\":[31],\"in\":[32,65],\"case\":[33],\"software\":[36],\"failure.\":[37],\"However,\":[38],\"most\":[39],\"implementations\":[41],\"suffer\":[42],\"inflexibility:\":[44],\"can\":[47],\"only\":[48],\"be\":[49,63,79],\"activated\":[50],\"or\":[51,55],\"deactivated\":[52],\"at\":[53,133],\"compile-time\":[54],\"start-up,\":[56],\"contracts\":[57,77,164],\"are\":[58],\"checked\":[59],\"globally\":[60],\"cannot\":[62,78],\"restricted\":[64],\"their\":[66],\"scope\":[67],\"such\":[68,127],\"as\":[69],\"current\":[72],\"thread\":[73],\"execution,\":[75],\"grouped\":[80],\"according\":[81],\"concerns\":[84],\"they\":[85],\"relate\":[86],\"to.\":[87],\"In\":[90],\"this\":[91],\"paper,\":[92],\"we\":[93,113],\"present\":[94],\"dynamic\":[96],\"layers\":[98],\"(DCL)\":[99],\"for\":[101,120,152],\"fine-grained\":[102],\"flexible\":[104],\"management.\":[106],\"Based\":[107],\"on\":[108],\"ideas\":[109],\"context-oriented\":[111],\"programming,\":[112],\"extend\":[114],\"grouping\":[118],\"mechanism\":[119],\"contracts,\":[121],\"thread-local\":[122],\"activation\":[123],\"deactivation\":[125],\"groups,\":[128],\"selective\":[130],\"run-time.\":[134],\"PyDCL\":[136,163],\",\":[137,148],\"our\":[138,149,159],\"proof-of-concept\":[139],\"implementation\":[140],\"DCL,\":[142],\"built\":[144],\"onto\":[145],\"ContextPy\":[147],\"COP\":[150],\"extension\":[151],\"Python\":[154],\"language.\":[156],\"We\":[157],\"evaluate\":[158],\"approach\":[160],\"applying\":[162],\"Moin-Moin\":[167],\"Wiki\":[168],\"framework.\":[169]}},\"S\":[{\"Ty\":3,\"U\":\"http://www.hirschfeld.org/writings/media/HirschfeldPerscheidSchubertAppeltauer_2010_DynamicContractLayers_AcmDL.pdf\"},{\"Ty\":1,\"U\":\"https://doi.acm.org/10.1145/1774088.1774546\"},{\"Ty\":1,\"U\":\"http://dblp.uni-trier.de/db/conf/sac/sac2010.html#HirschfeldPSA10\"},{\"Ty\":1,\"U\":\"https://dl.acm.org/ft_gateway.cfm?id=1774546&type=pdf\"}],\"VFN\":\"ACM Symposium on Applied Computing\",\"VSN\":\"SAC\",\"FP\":2169,\"LP\":2175,\"DOI\":\"10.1145/1774088.1774546\",\"CC\":{\"61997153\":[\"PyDCL is our implementation of DCL in and for the Python programming language [28].\"],\"166270156\":[\"iContract by Kramer [20] uses structured comments (like [25, 31]) for specifying contracts and provides a preprocessor that instruments the original source code with contract checks.\"],\"956539890\":[\"Some AOP languages, such as CaesarJ [3] and AspectS [12] overcome this limitation and provide dynamic aspect weaving, though they lack in supporting annotationbased pointcuts.\"],\"1491095550\":[\"Some AOP languages, such as CaesarJ [3] and AspectS [12] overcome this limitation and provide dynamic aspect weaving, though they lack in supporting annotationbased pointcuts.\"],\"1555946950\":[\"The ideas of DBC [21] and their first incarnation in the Eiffel programming language [22] have contributed to software engineering for almost two decades now [27].\"],\"1556513858\":[\"So far, COP has been implemented for several languages such as Lisp [5], Smalltalk [13], Python [29], 1 employerLayer = layer(\\\"Employer\\\")\"],\"1574060188\":[\"In future work, we are interested in exploring inductive debugging concepts in combination with automatically generated contracts [32].\",\"Future work will be concerned with inductive debugging techniques [32].\"],\"1584704555\":[\"In Duncan and Hölzle’s Handshake [6] contracts are read from a separate file with a Java-like syntax.\"],\"1992443356\":[\"So far, COP has been implemented for several languages such as Lisp [5], Smalltalk [13], Python [29], 1 employerLayer = layer(\\\"Employer\\\")\"],\"2052363833\":[\"With Design by Contract (DBC [16, 21]) programmers can separate the specification of pre- and postconditions and invariants from their application code to improve code comprehensibility and quality.\",\"The ideas of DBC [21] and their first incarnation in the Eiffel programming language [22] have contributed to software engineering for almost two decades now [27].\",\"Besides the original DBC implementation in Eiffel [21], we can find DBC extensions to several other programming languages.\"],\"2087175184\":[\"So far, COP has been implemented for several languages such as Lisp [5], Smalltalk [13], Python [29], 1 employerLayer = layer(\\\"Employer\\\")\",\"PyContext [29] is another COP library in Python.\"],\"2090496119\":[\"With Design by Contract (DBC [16, 21]) programmers can separate the specification of pre- and postconditions and invariants from their application code to improve code comprehensibility and quality.\"],\"2111706174\":[\"The roots of DBC can be traced back to the work of Floyd [8] and Hoare [15].\"],\"2118399307\":[\"The ideas of DBC [21] and their first incarnation in the Eiffel programming language [22] have contributed to software engineering for almost two decades now [27].\"],\"2125682153\":[\"For instance, grouping contracts related to specific requirements is almost impossible since the implementation of most of the requirements are spread over several classes and so cannot be related to a single one [7, 9].\"],\"2143238865\":[\"Aspect-oriented programming [19] (AOP) provides language abstractions to encapsulate crosscutting concerns, thus it is conceptually related to COP.\"],\"2144114063\":[\"An overview of most of them is provided in [1].\",\"It supports the layer-in-class approach [1] and with that allows developers to define their partial methods within the scope of the actual classes these methods are contributing to.\"],\"2146987093\":[\"Guerreiro [10] implements contracts for C++.\"],\"2150275961\":[\"In this paper, we present dynamic contract layers (DCL), which augment the flexibility of state-of-theart DBC approaches by combining them with ideas from context-oriented programming (COP [14]).\",\"It turns out that context-oriented programming [14] (COP) is an ideal base for our extension to DBC.\",\"A broader introduction to COP is provided in [14].\"],\"2161825580\":[\"During the evaluation of an assertion all subsequent method calls must be executed without any evaluation [23].\"],\"2164859807\":[\"Today, there are at least three freely available implementations of DBC in Python: Design by Contract by Plösch [25], ContractPy [31], and PyDBC [4].\",\"iContract by Kramer [20] uses structured comments (like [25, 31]) for specifying contracts and provides a preprocessor that instruments the original source code with contract checks.\"],\"2165121897\":[\"Later work by Parnas [24] already\"],\"2172169742\":[\"Ruby [26], and Java [2].\"],\"2480195817\":[\"Contract4J [30] is an AspectJ [18] based tool that supports classic DBC.\"],\"2803343605\":[\"For instance, grouping contracts related to specific requirements is almost impossible since the implementation of most of the requirements are spread over several classes and so cannot be related to a single one [7, 9].\",\"Feature analysis [9] is a research area that provides an answer to the question which methods are concerned in which features.\"]},\"PR\":[1992443356,1556513858,2065646798,2087175184,2143238865,2144114063,2150275961,2286558606,1572825593,2014881790,2075642720,2115607078,34876640,260230765,2136563725,2022299558,2593584386,778258840,2142650158,2135583192,1992443356,1556513858,2065646798,2087175184,2143238865,2144114063,2150275961,2286558606,1572825593,2014881790,2075642720,2115607078,34876640,260230765,2136563725,2022299558,2593584386,778258840,2142650158,2135583192],\"ANF\":[{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":1},{\"FN\":\"Michael\",\"LN\":\"Perscheid\",\"S\":2},{\"FN\":\"Christian\",\"LN\":\"Schubert\",\"S\":3},{\"FN\":\"Malte\",\"LN\":\"Appeltauer\",\"S\":4}],\"BV\":\"Proceedings of the 2010 ACM Symposium on Applied Computing\",\"BT\":\"p\",\"PB\":\"ACM\"}"},{"logprob":-20.84,"Id":1965245408,"Ty":"0","Ti":"columnar objects improving the performance of analytical applications","Pt":"3","L":"en","Y":2015,"D":"2015-10-21","CC":4,"ECC":4,"RId":[1523201922,1770006921,1979300931,1977330283,2130642985,2172147300,1993335798,11774449,2058213389,2295562782,2036862988,1506075075,2058639022,1998416211,137313736,1597864774,2027416917,2084819966,70887012,2405929300],"W":["analytical","applications","columnar","improving","objects","performance"],"AA":[{"DAuN":"Toni Mattis","AuN":"toni mattis","AuId":2229898846,"DAfN":"HPI, Germany","S":1},{"DAuN":"Johannes Henning","AuN":"johannes henning","AuId":2223724161,"DAfN":"HPI, Germany","S":2},{"DAuN":"Patrick Rein","AuN":"patrick rein","AuId":2229220081,"DAfN":"HPI, Germany","S":3},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"HPI, Germany","S":4},{"DAuN":"Malte Appeltauer","AuN":"malte appeltauer","AuId":135591984,"DAfN":"SAP, Germany","S":5}],"F":[{"DFN":"Tree traversal","FN":"tree traversal","FId":140745168},{"DFN":"Tracing just-in-time compilation","FN":"tracing just in time compilation","FId":50450317},{"DFN":"Theoretical computer science","FN":"theoretical computer science","FId":80444323},{"DFN":"Python (programming language)","FN":"python","FId":519991488},{"DFN":"Leverage (finance)","FN":"leverage","FId":81931697},{"DFN":"Just-in-time compilation","FN":"just in time compilation","FId":76782552},{"DFN":"Interpreter","FN":"interpreter","FId":122783720},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Computer data storage","FN":"computer data storage","FId":194739806},{"DFN":"Business logic","FN":"business logic","FId":146222976}],"C":{"CN":"onward","CId":2759899939},"E":"{\"DN\":\"Columnar objects: improving the performance of analytical applications\",\"IA\":{\"IndexLength\":170,\"InvertedIndex\":{\"Growing\":[0],\"volumes\":[1],\"of\":[2,74,88,102],\"data\":[3,27,49],\"increase\":[4],\"the\":[5,61,71,103,150,162],\"demand\":[6],\"to\":[7,13,43,56,67,81,85,99,110,139,144],\"use\":[8],\"it\":[9],\"in\":[10,90,117],\"analytical\":[11,44,131],\"applications\":[12],\"make\":[14],\"informed\":[15],\"decisions.\":[16],\"Unfortunately,\":[17],\"object-oriented\":[18,83,135,166],\"runtimes\":[19,84,167],\"experience\":[20],\"performance\":[21],\"problems\":[22,30,159],\"when\":[23],\"dealing\":[24],\"with\":[25,123],\"large\":[26],\"volumes.\":[28],\"Similar\":[29],\"have\":[31],\"been\":[32],\"addressed\":[33],\"by\":[34,106],\"column-oriented\":[35,92],\"in-memory\":[36],\"databases,\":[37],\"whose\":[38],\"memory\":[39,93],\"layout\":[40,94,105],\"is\":[41,65],\"tailored\":[42],\"workloads.\":[45],\"As\":[46],\"a\":[47,58,91,97,119,124],\"result,\":[48],\"storage\":[50],\"and\":[51,95,168],\"processing\":[52],\"are\":[53,76,137],\"often\":[54],\"delegated\":[55],\"such\":[57],\"database.\":[59],\"However,\":[60],\"more\":[62,72],\"domain\":[63],\"logic\":[64],\"moved\":[66],\"this\":[68],\"separate\":[69],\"system,\":[70],\"benefits\":[73],\"object-orientation\":[75],\"lost.\":[77],\"We\":[78,113],\"propose\":[79],\"modifications\":[80],\"dynamic\":[82],\"store\":[86],\"collections\":[87],\"objects\":[89],\"leverage\":[96],\"jit\":[98],\"take\":[100],\"advantage\":[101],\"adjusted\":[104],\"mapping\":[107],\"object\":[108],\"traversal\":[109],\"array\":[111],\"operations.\":[112],\"implemented\":[114],\"our\":[115,145],\"concept\":[116],\"PyPy,\":[118],\"Python\":[120],\"interpreter\":[121],\"equipped\":[122],\"tracing\":[125],\"jit.\":[126],\"Finally,\":[127],\"we\":[128],\"show\":[129],\"that\":[130],\"algorithms,\":[132],\"expressed\":[133],\"through\":[134],\"code,\":[136],\"up\":[138],\"three\":[140],\"times\":[141],\"faster\":[142],\"due\":[143],\"optimizations,\":[146],\"without\":[147],\"substantially\":[148],\"impairing\":[149],\"paradigm.\":[151],\"Hopefully,\":[152],\"extending\":[153],\"these\":[154],\"concepts\":[155],\"will\":[156],\"mitigate\":[157],\"some\":[158],\"originating\":[160],\"from\":[161],\"paradigm\":[163],\"mismatch\":[164],\"between\":[165],\"databases.\":[169]}},\"S\":[{\"Ty\":3,\"U\":\"http://www.hirschfeld.org/writings/media/MattisHenningReinHirschfeldAppeltauer_2015_ColumnarObjectsImprovingThePerformanceOfAnalyticalApplications_AuthorsVersion.pdf\"},{\"Ty\":1,\"U\":\"http://dblp.uni-trier.de/db/conf/oopsla/onward2015.html#MattisHRHA15\"},{\"Ty\":1,\"U\":\"https://dl.acm.org/citation.cfm?id=2814230\"}],\"VFN\":\"SIGPLAN symposium on New ideas, new paradigms, and reflections on programming and software\",\"VSN\":\"Onward!\",\"FP\":197,\"LP\":210,\"DOI\":\"10.1145/2814228.2814230\",\"CC\":{\"70887012\":[\"This idea has been explored before in compiler-based transformations to speed up simulations in Java [17] and Kedama [18] (see sections 6.\",\"Noth [17] proposed a modification to the Java language introducing the exploded keyword.\"],\"137313736\":[\"One example for a columnar database based on the described concepts is SanssouciDB, which influenced the design of SAP HANA [19, 21].\"],\"1597864774\":[\"Elo-Ranking Given a set of competing players and a large amount of data recording which player or strategy outperformed or defeated an opponent, the Elo rating [7] puts a rating on each competitor, quantifying its overall performance.\"],\"1770006921\":[\"1A notable exception are object tables known from Smalltalk, which implement a location-independent notion of object identity [8] 3.\"],\"1977330283\":[\"However, most analytical algorithms only use a subset of these columns [19, 20].\"],\"1979300931\":[\"The estimator is mathematically defined and has a straightforward implementation as a product [11].\"],\"1993335798\":[\"The resulting trace undergoes a register allocation step and is compiled to architecture-specific native code [4].\",\"Program design that optimizes for a meta-tracing JIT is likely transferable to other language implementations based on it [4].\"],\"1998416211\":[\"The most important optimization we will address in this paper is the removal of object allocations inside a trace [5].\"],\"2027416917\":[\"The OOPAL model [15] aims to extend the object-oriented model with concepts from array programming, as found for example in APL.\"],\"2036862988\":[\"The GemStone/S system [13] is an object database which is capable of running a full application.\"],\"2058213389\":[\"1 PyPy is a meta-traced Python interpreter build in RPython [22] 2.\"],\"2058639022\":[\"Dynamic languages usually link an attribute name to its offset via a structure called map [3, 6, 23] or hidden class [9] referenced by the object header and shared between objects with the same structure.\"],\"2130642985\":[\"1) [1].\"],\"2172147300\":[\"It is integrated into the eToys system, which itself is build on top of Squeak [10], a Smalltalk system.\"],\"2295562782\":[\"References to an object are implemented as pointers to the object’s memory [12] 1.\",\"2 also known as surrogate in the context of object identity [12] We also introduce a class ID column to record the most specific subclass responsible for a particular column offset and to guarantee correct polymorphic message dispatch in co-variant collections and attributes.\"],\"2405929300\":[\"This idea has been explored before in compiler-based transformations to speed up simulations in Java [17] and Kedama [18] (see sections 6.\",\"The Kedama [18] educational parallel programming system allows users to program “turtles”, a sort of agents that interact with their environment, organized as a grid.\"]},\"PR\":[2256532437,2255712816,2592205526,2899200806,2742163642,2106771621,2892366630,2414240756,42977290,2058829268,2786320458,1589893694,48121001,2749944597,2674334413,2291177998,2227555601,2041701365,2769729463,2242016257,2256532437,2255712816,2592205526,2899200806,2742163642,2106771621,2892366630,2414240756,42977290,2058829268,2786320458,1589893694,48121001,2749944597,2674334413,2291177998,2227555601,2041701365,2769729463,2242016257],\"ANF\":[{\"FN\":\"Toni\",\"LN\":\"Mattis\",\"S\":1},{\"FN\":\"Johannes\",\"LN\":\"Henning\",\"S\":2},{\"FN\":\"Patrick\",\"LN\":\"Rein\",\"S\":3},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":4},{\"FN\":\"Malte\",\"LN\":\"Appeltauer\",\"S\":5}],\"BV\":\"2015 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software (Onward!)\",\"BT\":\"p\",\"PB\":\"ACM\"}"},{"logprob":-20.886,"Id":2006015625,"Ty":"0","Ti":"context oriented programming for mobile devices jcop on android","Pt":"0","L":"en","Y":2011,"D":"2011-07-25","CC":7,"ECC":7,"RId":[2168867823,2150275961,2168397291,2060640309,2089889705,2154597770,175922506,2090764929,2115899208],"W":["android","context","devices","jcop","mobile","oriented","programming"],"AA":[{"DAuN":"Christopher Schuster","AuN":"christopher schuster","AuId":2225215592,"DAfN":"University of California, Davis","AfN":"university of california davis","AfId":84218800,"S":1},{"DAuN":"Malte Appeltauer","AuN":"malte appeltauer","AuId":135591984,"DAfN":"Software Architecture Group, Hasso-Plattner-Institut, Germany","S":2},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"Software Architecture Group, Hasso-Plattner-Institut, Germany","S":3}],"F":[{"DFN":"Theoretical computer science","FN":"theoretical computer science","FId":80444323},{"DFN":"Semantics","FN":"semantics","FId":124246873},{"DFN":"Proof of concept","FN":"proof of concept","FId":124978682},{"DFN":"Modularity","FN":"modularity","FId":100648641},{"DFN":"Mobile device","FN":"mobile device","FId":186967261},{"DFN":"Mobile computing","FN":"mobile computing","FId":144543869},{"DFN":"Control flow","FN":"control flow","FId":160191386},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Compiler","FN":"compiler","FId":169590947},{"DFN":"Android (operating system)","FN":"android","FId":557433098}],"E":"{\"DN\":\"Context-oriented programming for mobile devices: JCop on Android\",\"IA\":{\"IndexLength\":145,\"InvertedIndex\":{\"The\":[0],\"behavior\":[1,31,49],\"of\":[2,47,106,129],\"mobile\":[3,19,59,133],\"applications\":[4,60,108],\"is\":[5,61],\"particularly\":[6],\"affected\":[7],\"by\":[8,43,64,72,88],\"their\":[9],\"execution\":[10],\"context,\":[11],\"such\":[12],\"as\":[13],\"location\":[14],\"and\":[15,67,74,119,138],\"state\":[16],\"a\":[17,38,84,130],\"the\":[18,80,104,113,121,126],\"device.\":[20],\"Among\":[21],\"other\":[22],\"approaches,\":[23],\"context-oriented\":[24],\"programming\":[25],\"can\":[26],\"help\":[27],\"to\":[28,37,103],\"achieve\":[29],\"context-dependent\":[30],\"without\":[32],\"sacrificing\":[33],\"modularity\":[34],\"or\":[35,41],\"adhering\":[36],\"certain\":[39],\"framework\":[40],\"library\":[42],\"enabling\":[44],\"fine-grained\":[45],\"adaptation\":[46,90],\"default\":[48],\"per\":[50],\"control-flow.\":[51],\"However,\":[54],\"context\":[55],\"information\":[56],\"relevant\":[57],\"for\":[58,109,116],\"mostly\":[62],\"defined\":[63],\"external\":[65],\"events\":[66],\"sensor\":[68],\"data\":[69],\"rather\":[70],\"than\":[71],\"code\":[73],\"control\":[75],\"flow.\":[76],\"To\":[77],\"accommodate\":[78],\"this,\":[79],\"JCop\":[81,102],\"language\":[82,114],\"provides\":[83],\"more\":[85],\"declarative\":[86],\"approach\":[87,137],\"pointcut-like\":[89],\"rules.\":[91],\"In\":[94],\"this\":[95],\"paper,\":[96],\"we\":[97,100,111,124],\"explain\":[98],\"how\":[99],\"applied\":[101],\"development\":[105],\"Android\":[107],\"which\":[110],\"extended\":[112],\"semantics\":[115],\"static\":[117],\"contexts\":[118],\"modified\":[120],\"compiler.\":[122],\"Additionally,\":[123],\"outline\":[125],\"successful\":[127],\"implementation\":[128],\"simple,\":[131],\"proof-of-concept\":[132],\"application\":[134],\"using\":[135],\"our\":[136],\"report\":[139],\"on\":[140],\"promising\":[141],\"early\":[142],\"evaluation\":[143],\"results.\":[144]}},\"S\":[{\"Ty\":3,\"U\":\"http://www.hpi.uni-potsdam.de/hirschfeld/publications/media/SchusterAppeltauerHirschfeld_2011_ContextOrientedProgrammingForMobileDevicesJCopOnAndroid_AcmDL.pdf\"},{\"Ty\":3,\"U\":\"http://www.hirschfeld.org/writings/media/SchusterAppeltauerHirschfeld_2011_ContextOrientedProgrammingForMobileDevicesJCopOnAndroid_AcmDL.pdf\"},{\"Ty\":1,\"U\":\"https://dl.acm.org/citation.cfm?doid=2068736.2068741\"}],\"VFN\":\"Proceedings of the 3rd International Workshop on Context-Oriented Programming\",\"FP\":5,\"DOI\":\"10.1145/2068736.2068741\",\"CC\":{\"175922506\":[\"Therefore, we applied the Java-based JCop language [2] to the Android system.\",\"The JCop language [2] extends Java with COP constructs.\",\"A thorough presentation of JCop can be found in previous work [2].\"],\"2060640309\":[\"The EventCJ [9] language is closely related to JCop.\"],\"2090764929\":[\"Du and Wang presented a solution [7] that also helps the programmer with context-aware code on mobile devices.\"],\"2115899208\":[\"Core COP functionality has been implemented by the language prototypes ContextJ* [8] and ContextLogicAJ [3] and by the ContextJ [1] extension that supports language constructs and concrete syntax for layer declaration within classes and explicit layer composition.\"],\"2150275961\":[\"Core COP functionality has been implemented by the language prototypes ContextJ* [8] and ContextLogicAJ [3] and by the ContextJ [1] extension that supports language constructs and concrete syntax for layer declaration within classes and explicit layer composition.\"],\"2154597770\":[\"The first ideas about a COP extension to Java have been presented [6] to improve the accessibility of the ContextL code discussed in that paper.\"],\"2168397291\":[\"Solutions like CARMEN [5] on the other side, are using policies and profiles to change the behavior of an application depending on the context.\"],\"2168867823\":[\"Aura [4] is more task-oriented and does not provide context-awareness for just a few lines of code.\"]},\"PR\":[2078700749,2360850817,1979170223,2158046992,2148598061,1885607155,2294648988,1506118547,2016524933,1601065112,1991573380,2171162929,2681207598,2085523245,2144826721,2065806868,2028018597,122347058,16250742,2409574047,2078700749,2360850817,1979170223,2158046992,2148598061,1885607155,2294648988,1506118547,2016524933,1601065112,1991573380,2171162929,2681207598,2085523245,2144826721,2065806868,2028018597,122347058,16250742,2409574047],\"ANF\":[{\"FN\":\"Christopher\",\"LN\":\"Schuster\",\"S\":1},{\"FN\":\"Malte\",\"LN\":\"Appeltauer\",\"S\":2},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":3}],\"BV\":\"Proceedings of the 3rd International Workshop on Context-Oriented Programming\",\"BT\":\"p\",\"PB\":\"ACM\"}"},{"logprob":-20.915,"Id":2051994214,"Ty":"0","Ti":"coexist overcoming aversion to change","Pt":"3","L":"en","Y":2012,"D":"2012-10-22","CC":9,"ECC":9,"RId":[1493688518,2611278845,2153887189,18855373,2092601000,2105045857,2152364132,2045732064,2046882143,2116525104,2071873073,2121459566,2020708636,2053729218,1811607892,2103711160,2108401299,2034240757,2035062020,118488368],"W":["aversion","change","coexist","overcoming"],"AA":[{"DAuN":"Bastian Steinert","AuN":"bastian steinert","AuId":2142371068,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":1},{"DAuN":"Damien Cassou","AuN":"damien cassou","AuId":1514817921,"DAfN":"French Institute for Research in Computer Science and Automation","AfN":"french institute for research in computer science and automation","AfId":1326498283,"S":2},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":3}],"F":[{"DFN":"Squeak","FN":"squeak","FId":2780281086},{"DFN":"Source code","FN":"source code","FId":43126263},{"DFN":"Smalltalk","FN":"smalltalk","FId":2777293101},{"DFN":"Real-time computing","FN":"real time computing","FId":79403827},{"DFN":"Programming language","FN":"programming language","FId":199360897},{"DFN":"Debugging","FN":"debugging","FId":168065819},{"DFN":"Continuous testing","FN":"continuous testing","FId":2776641920},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Best practice","FN":"best practice","FId":184356942}],"C":{"CN":"dls","CId":1133200404},"E":"{\"DN\":\"CoExist: overcoming aversion to change\",\"IA\":{\"IndexLength\":131,\"InvertedIndex\":{\"Programmers\":[0,54],\"make\":[1],\"many\":[2],\"changes\":[3],\"to\":[4,7,64,82,118,124],\"the\":[5,40],\"program\":[6],\"eventually\":[8],\"find\":[9],\"a\":[10,14,32],\"good\":[11],\"solution\":[12],\"for\":[13,30,80],\"given\":[15],\"task.\":[16],\"In\":[17],\"this\":[18,88],\"course\":[19],\"of\":[20,27,42,69,73,128],\"change,\":[21],\"every\":[22],\"intermediate\":[23],\"development\":[24,71],\"state\":[25],\"can\":[26,95,101],\"value,\":[28],\"when,\":[29],\"example,\":[31],\"promising\":[33],\"ideas\":[34],\"suddenly\":[35],\"turn\":[36],\"out\":[37,45],\"inappropriate\":[38],\"or\":[39],\"interplay\":[41],\"objects\":[43],\"turns\":[44],\"more\":[46],\"complex\":[47],\"than\":[48],\"initially\":[49],\"expected\":[50],\"before\":[51],\"making\":[52],\"changes.\":[53],\"would\":[55],\"benefit\":[56],\"from\":[57],\"tool\":[58,92],\"support\":[59],\"that\":[60,105],\"provides\":[61],\"immediate\":[62],\"access\":[63],\"source\":[65],\"code\":[66],\"and\":[67,85],\"run-time\":[68],\"previous\":[70],\"states\":[72],\"interest.\":[74],\"We\":[75],\"present\":[76],\"IDE\":[77],\"extensions,\":[78],\"implemented\":[79],\"Squeak/Smalltalk,\":[81],\"preserve,\":[83],\"retrieve,\":[84],\"work\":[86,96],\"with\":[87,108],\"information.\":[89],\"With\":[90],\"such\":[91],\"support,\":[93],\"programmers\":[94],\"without\":[97],\"worries\":[98],\"because\":[99],\"they\":[100],\"rely\":[102],\"on\":[103],\"tools\":[104],\"help\":[106],\"them\":[107],\"whatever\":[109],\"their\":[110],\"explorations\":[111],\"will\":[112],\"reveal.\":[113],\"They\":[114],\"no\":[115],\"longer\":[116],\"have\":[117],\"follow\":[119],\"certain\":[120],\"best\":[121],\"practices\":[122],\"only\":[123],\"avoid\":[125],\"undesired\":[126],\"consequences\":[127],\"hanging\":[129],\"code.\":[130]}},\"S\":[{\"Ty\":1,\"U\":\"https://doi.acm.org/10.1145/2384577.2384591\"},{\"Ty\":1,\"U\":\"https://dl.acm.org/citation.cfm?doid=2384577.2384591\"}],\"VFN\":\"Dynamic Languages Symposium\",\"VSN\":\"DLS\",\"V\":48,\"I\":2,\"FP\":107,\"LP\":118,\"DOI\":\"10.1145/2384577.2384591\",\"PR\":[2240266541,153470659,2053729218,2189041151,2083128715,2472181181,2007888916,1494161293,2185567741,2033081802,1952163302,2250875552,2548983280,1988853232,2102116747,2296576990,2139613682,21744011,2617889889,405971428,2240266541,153470659,2053729218,2189041151,2083128715,2472181181,2007888916,1494161293,2185567741,2033081802,1952163302,2250875552,2548983280,1988853232,2102116747,2296576990,2139613682,21744011,2617889889,405971428],\"ANF\":[{\"FN\":\"Bastian\",\"LN\":\"Steinert\",\"S\":1},{\"FN\":\"Damien\",\"LN\":\"Cassou\",\"S\":2},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":3}],\"BV\":\"Proceedings of the 8th symposium on Dynamic languages\",\"BT\":\"p\",\"PB\":\"ACM\"}"},{"logprob":-20.969,"Id":2157977745,"Ty":"0","Ti":"disentangling virtual machine architecture","Pt":"1","L":"en","Y":2009,"D":"2009-01-01","CC":11,"ECC":11,"RId":[2138363365,1971903460,2480195817,1480157704,2122960384,1553037668,1489800325,2083469471,1583464938,2102839400,2133254848,2111141292,2079777989,2126225516,2116244845,1595905761,1553047397,2023499869,2115248168,2343398847,2045337518,1565608745,2138622732,2117669281,2044512256,2140638092,1830619643,2038670810,2108945477,2295334076,1988668615,1838409627,2169998214,1743700406,1985265967,2040852985,2134033927,2466959312,2017380502,1553616198],"W":["architecture","disentangling","machine","virtual"],"AA":[{"DAuN":"Michael Haupt","AuN":"michael haupt","AuId":2146662369,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":1},{"DAuN":"Bram Adams","AuN":"bram adams","AuId":2115051412,"DAfN":"Ghent University","AfN":"ghent university","AfId":32597200,"S":2},{"DAuN":"Stijn Timbermont","AuN":"stijn timbermont","AuId":2271331946,"DAfN":"Vrije Universiteit Brussel","AfN":"vrije universiteit brussel","AfId":13469542,"S":3},{"DAuN":"Celina Gibbs","AuN":"celina gibbs","AuId":2136468240,"DAfN":"University of Victoria","AfN":"university of victoria","AfId":212119943,"S":4},{"DAuN":"Yvonne Coady","AuN":"yvonne coady","AuId":2197039416,"DAfN":"University of Victoria","AfN":"university of victoria","AfId":212119943,"S":5},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":6}],"F":[{"DFN":"Virtual machine","FN":"virtual machine","FId":25344961},{"DFN":"User interface","FN":"user interface","FId":89505385},{"DFN":"Source code","FN":"source code","FId":43126263},{"DFN":"Software architecture","FN":"software architecture","FId":35869016},{"DFN":"Real-time computing","FN":"real time computing","FId":79403827},{"DFN":"Implementation","FN":"implementation","FId":26713055},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Aspect-oriented programming","FN":"aspect oriented programming","FId":60051680},{"DFN":"Architecture description language","FN":"architecture description language","FId":185245429},{"DFN":"Architecture","FN":"architecture","FId":123657996}],"J":{"JN":"iet software","JId":164201770},"E":"{\"DN\":\"Disentangling virtual machine architecture\",\"IA\":{\"IndexLength\":94,\"InvertedIndex\":{\"Virtual\":[0],\"machine\":[1],\"(VM)\":[2],\"implementations\":[3,27],\"are\":[4,58],\"made\":[5],\"of\":[6,18,47,89],\"intricately\":[7],\"intertwined\":[8],\"subsystems,\":[9],\"interacting\":[10],\"largely\":[11],\"through\":[12,51],\"implicit\":[13],\"dependencies.\":[14],\"As\":[15],\"the\":[16,87,90],\"degree\":[17],\"crosscutting\":[19],\"present\":[20],\"in\":[21,82],\"VMs\":[22,39],\"is\":[23,80],\"very\":[24],\"high,\":[25],\"VM\":[26,43,73,76],\"exhibit\":[28],\"significant\":[29],\"internal\":[30],\"complexity.\":[31],\"This\":[32],\"study\":[33],\"proposes\":[34],\"an\":[35],\"architecture\":[36,77],\"approach\":[37],\"for\":[38],\"that\":[40],\"regards\":[41],\"a\":[42,45,83],\"as\":[44],\"composite\":[46],\"service\":[48],\"modules\":[49],\"coordinated\":[50],\"explicit\":[52],\"bidirectional\":[53],\"interfaces.\":[54],\"Aspect-oriented\":[55],\"programming\":[56],\"techniques\":[57],\"used\":[59],\"to\":[60,64,69],\"establish\":[61],\"these\":[62],\"interfaces,\":[63],\"coordinate\":[65],\"module\":[66],\"interaction,\":[67],\"and\":[68],\"declaratively\":[70],\"express\":[71],\"concrete\":[72],\"architectures.\":[74],\"A\":[75],\"description\":[78],\"language\":[79],\"presented\":[81],\"case\":[84],\"study,\":[85],\"illustrating\":[86],\"application\":[88],\"proposed\":[91],\"architectural\":[92],\"principles.\":[93]}},\"S\":[{\"Ty\":3,\"U\":\"http://www.hirschfeld.org/writings/media/HauptAdamsTimbermontGibbsCoadyHirschfeld_2009_DisentanglingVirtualMachineArchitecture_IET.pdf\"},{\"Ty\":1,\"U\":\"http://yadda.icm.edu.pl/yadda/element/bwmeta1.element.ieee-000005035597\"},{\"Ty\":1,\"U\":\"https://www.infona.pl/resource/bwmeta1.element.ieee-art-000005035597\"},{\"Ty\":1,\"U\":\"http://ieeexplore.ieee.org/xpl/articleDetails.jsp?reload=true&arnumber=5035597&filter%3DAND%28p_IS_Number%3A5034999%29\"}],\"VFN\":\"IET Software\",\"V\":3,\"I\":3,\"FP\":201,\"LP\":218,\"DOI\":\"10.1049/iet-sen.2007.0121\",\"CC\":{\"1480157704\":[\"They normally consist of several subsystems, such as an emulation engine, a memory manager, and so forth [1].\"],\"1553037668\":[\"NesC [36] is an extension to C designed to capture key abstractions in TinyOS [37].\"],\"1553047397\":[\"Another extension allows for quantifying over interconnections between objects on the heap [11].\"],\"1553616198\":[\"Three projects that deserve attention are JavaInJava [42], JnJVM [43], and ORP [44].\",\"JavaInJava is extremely simple, featuring a plain bytecode interpreter and entirely relying on the host JVM for memory management—it is not surprising that the achieved architecture is reported to be well-modularised and understandable [42].\"],\"1565608745\":[\"Part of the Jikes RVM architectural overview [23] centers on the optimisations of the M:N threading model implemented by inserting yield points at principled points throughout the system and associating required functionality at those points in terms of related services.\"],\"1595905761\":[\"More general component models from this community include the THINK framework for building OS kernels [38].\"],\"1743700406\":[\"In previous work, it has been demonstrated how the Jikes RVM’s modularity can be enhanced even with a na¨ive implementation of aspects, and how these aspects impact system evolution [ 9 ].\"],\"1838409627\":[\"It has been shown that the employment of AOP techniques does not have to have a negative impact on performance at all [24].\"],\"1971903460\":[\"NesC [36] is an extension to C designed to capture key abstractions in TinyOS [37].\"],\"1985265967\":[\"Aspicere2 [25, 26] was used as the aspect language.\",\"4, C is the target language used for the VM implementation, and Aspicere2 [25, 26] is used as the AOP language.\"],\"1988668615\":[\"For example, the GCspy [ 14 ] heap visualization framework is designed to visualize a wide variety of memory management systems.\"],\"2017380502\":[\"More recent developments have explored the use of logic-based pointcut languages [7] and added capabilities to let a pointcut match when certain join points occur in a given order over a period of time [8, 9, 10].\"],\"2023499869\":[\"The resulting AspectJ code touches 12 classes in the Jikes RVM, has a 1:1 ratio of pointcuts to advice, and uses a collection that spans before/after/around advice and can be further characterized as a heterogenous concern [ 5 ,2].\"],\"2038670810\":[\"Three projects that deserve attention are JavaInJava [42], JnJVM [43], and ORP [44].\"],\"2079777989\":[\"However, their implementations typically entail the extensive use of residual code [12] that, depending on its implementation, may have significant impacts on performance.\"],\"2083469471\":[\"Operating systems such as SPIN [34] set the stage to consider issues such as granularity and composition of extensions in OS code.\"],\"2102839400\":[\", the Jikes Research VM [2, 3]—, or that should be deployable on different platforms—e.\",\"The Jikes RVM [2, 3] is a rich testbed for research in the area of advanced virtual machine technologies.\"],\"2108945477\":[\"The systems software kernel MACH [31] exhibited a modular infrastructure key to its improved scalability and extensibility relative to its monolithic counterparts.\"],\"2111141292\":[\"More recent developments have explored the use of logic-based pointcut languages [7] and added capabilities to let a pointcut match when certain join points occur in a given order over a period of time [8, 9, 10].\"],\"2115248168\":[\"More recent developments have explored the use of logic-based pointcut languages [7] and added capabilities to let a pointcut match when certain join points occur in a given order over a period of time [8, 9, 10].\"],\"2116244845\":[\"The opposite extreme restricts the join points which can be advised by explicitly exposing possible join points [13, 14].\",\"While this clearly resembles the crosscut programming interfaces (XPI) [13] or open modules [14] approaches, we refrain from modularising absolutely all features into services and connecting their parts through bidirectional interfaces.\",\"On the other hand, the interface exposes certain points of interest that occur internally and may be of interest to other services (the service’s XPI [13, 14]).\",\"Service modules share this property with open modules [14].\",\"Service modules’ bidirectional interfaces as met in VMADL are conceptually very close to both crosscutting interfaces (XPIs) [13] and open modules [14].\"],\"2117669281\":[\"DAOP-ADL [41] is an aspect-oriented architecture description language.\"],\"2122960384\":[\"Further, microkernel architectures, such as Exokernel [32] and Nemesis [33] echoed the need for identifying the right abstractions and exposing the right interfaces within the kernel in order to support OS services in user space.\"],\"2126225516\":[\"The opposite extreme restricts the join points which can be advised by explicitly exposing possible join points [13, 14].\",\"While this clearly resembles the crosscut programming interfaces (XPI) [13] or open modules [14] approaches, we refrain from modularising absolutely all features into services and connecting their parts through bidirectional interfaces.\",\"On the other hand, the interface exposes certain points of interest that occur internally and may be of interest to other services (the service’s XPI [13, 14]).\",\"Service modules’ bidirectional interfaces as met in VMADL are conceptually very close to both crosscutting interfaces (XPIs) [13] and open modules [14].\",\"Bidirectional interfaces are also different from XPIs in that the latter merely serve to expose pointcut definitions [13], while the former support the exposure of join points, the specification of interactions with other modules, and API definitions.\"],\"2133254848\":[\"Previous work on architecture languages includes Darwin [39] and ArchJava [40].\"],\"2134033927\":[\"Three projects that deserve attention are JavaInJava [42], JnJVM [43], and ORP [44].\"],\"2138363365\":[\"We believe that VM implementations contain many crosscutting concerns [ 12 ] that represent coordination between subsystems.\"],\"2138622732\":[\"The resulting AspectJ code touches 12 classes in the Jikes RVM, has a 1:1 ratio of pointcuts to advice, and uses a collection that spans before/after/around advice and can be further characterized as a heterogenous concern [5, 2 ].\"],\"2140638092\":[\", by dynamically adapting memory management strategies in response to the running applications’ requirements [5].\"],\"2169998214\":[\"Advice Our survey indicates the need for some concerns to interact in a detached way; utilizing asynchronous advice [ 4 ], as met in the AWED language [6].\"],\"2466959312\":[\"Similarly, work aimed at extending VMs [35] considers ways in which lower-level interfaces can be safely accessed by user applications.\"],\"2480195817\":[\"The first mature pointcut languages could quantify over the execution of applications in terms of method call and execution, field access, exception handler execution and the like [6].\",\"Its pointcut and advice syntax resemble those of AspectJ [6, 27], hence the examples should be easily accessible to readers familiar with that language.\"]},\"PR\":[1770006921,2058213389,2087858921,1881565431,2150552322,1533755745,2021110465,2159975265,2111182052,2512935904,1527494104,2073091267,1990766784,172886639,2006957966,2148434514,1524727142,2075581635,2313135654,2465029754,1770006921,2058213389,2087858921,1881565431,2150552322,1533755745,2021110465,2159975265,2111182052,2512935904,1527494104,2073091267,1990766784,172886639,2006957966,2148434514,1524727142,2075581635,2313135654,2465029754],\"ANF\":[{\"FN\":\"Michael\",\"LN\":\"Haupt\",\"S\":1},{\"FN\":\"Bram\",\"LN\":\"Adams\",\"S\":2},{\"FN\":\"Stijn\",\"LN\":\"Timbermont\",\"S\":3},{\"FN\":\"Celina\",\"LN\":\"Gibbs\",\"S\":4},{\"FN\":\"Yvonne\",\"LN\":\"Coady\",\"S\":5},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":6}],\"BV\":\"IET Software\",\"BT\":\"a\",\"PB\":\"IET\"}"},{"logprob":-20.973,"Id":2157065728,"Ty":"0","Ti":"tool supported refactoring of aspect oriented programs","Pt":"3","L":"de@@@en","Y":2008,"D":"2008-03-31","CC":17,"ECC":17,"RId":[1649645444,2138363365,2153887189,2534652523,2480195817,301824129,1491178396,2013886348,2119736157,1487664366,1532926224,1498770298,2150231504,2159682002,2126225516,2164067955,1991601392,2133241651,2136531538,1508660681,1553047397,2106697582,2045337518,2079027980,1855341394,50561030,2071935327,2244034457,1588437460,1608143967,177742612,2105379554,1987702312,1507413909,1610521571,1573866550,1533198137,1996427106,2154677029,2152039290,1544810854,2148305550,2901852340,2171464342,1518218347,2150195659,2061316037,2139834193,1865850859,123316651,1505385311,2253448825,148107450,1543310791,88111200,2153324799,2028048600,2129062550,2045352263,44538238,197385785,110366777,1494697806,115306370,88923034,1745726755],"W":["aspect","oriented","programs","refactoring","supported","tool"],"AA":[{"DAuN":"Jan Wloka","AuN":"jan wloka","AuId":2031385620,"DAfN":"Rutgers University","AfN":"rutgers university","AfId":102322142,"S":1},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"Hasso-Plattner-Institut, Potsdam, Germany","S":2},{"DAuN":"Joachim Hänsel","AuN":"joachim hansel","AuId":2896318158,"DAfN":"Fraunhofer FIRST, Berlin, Germany","S":3}],"F":[{"DFN":"Static program analysis","FN":"static program analysis","FId":137287247},{"DFN":"Programming language","FN":"programming language","FId":199360897},{"DFN":"Program analysis","FN":"program analysis","FId":98183937},{"DFN":"Pointcut","FN":"pointcut","FId":2776219908},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Code refactoring","FN":"code refactoring","FId":152752567},{"DFN":"Code generation","FN":"code generation","FId":133162039},{"DFN":"Aspect-oriented programming","FN":"aspect oriented programming","FId":60051680},{"DFN":"Abstract syntax tree","FN":"abstract syntax tree","FId":58646249},{"DFN":"Abstract syntax","FN":"abstract syntax","FId":114408938}],"C":{"CN":"aosd","CId":1194005070},"E":"{\"DN\":\"Tool-supported refactoring of aspect-oriented programs\",\"IA\":{\"IndexLength\":151,\"InvertedIndex\":{\"Aspect-oriented\":[0],\"programming\":[1],\"languages\":[2],\"provide\":[3],\"new\":[4,102],\"composition\":[5],\"mechanisms\":[6],\"for\":[7,104,115],\"improving\":[8],\"the\":[9,49,68,88,96,113,117],\"modularity\":[10],\"of\":[11,15,36,38,51,90,98],\"crosscutting\":[12],\"concerns.\":[13],\"Implementations\":[14],\"such\":[16],\"language\":[17],\"support\":[18],\"use\":[19],\"advanced\":[20],\"program\":[21,39,129],\"representations,\":[22],\"like\":[23],\"abstract\":[24],\"syntax\":[25],\"trees\":[26],\"or\":[27,134],\"stack\":[28],\"traces,\":[29],\"to\":[30],\"enable\":[31],\"an\":[32],\"indirect\":[33],\"specification\":[34],\"(pointcut)\":[35],\"executions\":[37],\"elements\":[40],\"at\":[41],\"which\":[42],\"aspect\":[43],\"code\":[44],\"(advice)\":[45],\"is\":[46,110,149],\"invoked.\":[47],\"During\":[48],\"evolution\":[50,84],\"a\":[52,77],\"program,\":[53],\"this\":[54,73,83,124],\"representations\":[55],\"will\":[56],\"change\":[57,91,118],\"and,\":[58],\"hence,\":[59],\"advice\":[60],\"may\":[61],\"not\":[62],\"be\":[63,143],\"executed\":[64],\"as\":[65,112],\"intended\":[66],\"by\":[67,86],\"developer.\":[69],\"In\":[72],\"paper\":[74],\"we\":[75,126],\"present\":[76],\"tool-supported\":[78],\"refactoring\":[79],\"approach\":[80],\"that\":[81],\"addresses\":[82],\"problem\":[85],\"automating\":[87],\"detection\":[89],\"effects\":[92],\"on\":[93,120,123],\"pointcuts\":[94,106],\"and\":[95,145],\"generation\":[97],\"pointcut\":[99,140],\"updates.\":[100],\"A\":[101],\"model\":[103],\"decomposing\":[105],\"into\":[107],\"simpler\":[108],\"expressions\":[109],\"used\":[111],\"base\":[114],\"deriving\":[116],\"impact\":[119],\"pointcuts.\":[121],\"Based\":[122],\"model,\":[125],\"show\":[127],\"how\":[128,138],\"analysis\":[130],\"can\":[131,142],\"detect\":[132],\"affected\":[133],\"even\":[135],\"broken\":[136],\"pointcuts,\":[137],\"suitable\":[139],\"adjustments\":[141],\"derived,\":[144],\"when\":[146],\"developer\":[147],\"feedback\":[148],\"unavoidable.\":[150]}},\"S\":[{\"Ty\":3,\"U\":\"http://www.hpi.uni-potsdam.de/hirschfeld/publications/media/WlokaHirschfeldHaensel_2007_ToolSupportedRefactoringOfAspectOrientedPrograms.pdf\"},{\"Ty\":3,\"U\":\"http://hirschfeld.org/writings/media/wlokahirschfeldhaensel_2007_toolsupportedrefactoringofaspectorientedprograms.pdf\"},{\"Ty\":1,\"U\":\"https://doi.acm.org/10.1145/1353482.1353499\"},{\"Ty\":1,\"U\":\"https://depositonce.tu-berlin.de/handle/11303/2005\"},{\"Ty\":1,\"U\":\"https://dl.acm.org/citation.cfm?doid=1353482.1353499\"}],\"VFN\":\"Aspect-Oriented Software Development\",\"VSN\":\"AOSD\",\"FP\":132,\"LP\":143,\"DOI\":\"10.1145/1353482.1353499\",\"CC\":{\"88923034\":[\"This direct exclusion/inclusion of individual matches is already proposed by other refactoring approaches for AOP [20, 10].\",\"Rura and Lerner advance the AO-specific refactoring constraints [20].\"],\"110366777\":[\"Various pointcut languages have been proposed, ranging from regular expressions [4, 52], over XML-based queries [25], to complete logic meta-programming approaches [50, 72].\",\"To this end, various approaches to AOP have been studied, concentrating on extensions to the programming language Java [6, 7, 69, 74, 81, 89, 91] and concepts for advanced pointcut languages [4, 25, 37, 50, 72, 99].\",\"Various approaches for the selection of joinpoints were studied during the preparation of this thesis [4, 6, 25, 37, 50, 72, 74, 91, 99].\",\"Furthermore, some advanced AOP approaches [4, 72, 99] also provide access to runtime representations, like stack trace, execution trace, or object heap.\",\"The observation that any seemingly safe modification in the base program’s representation can alter the behavior of aspect-oriented programs leaded to several enhancements to existing pointcut languages [4, 37, 72, 99].\",\"called tracematches [4] and an extension to the language JAsCo of De Fraine et al.\",\"There are two general disadvantages when control flow graphs are used to represent the property execution sequence as used in AOP [4, 99].\",\"Example is taken from [4], the term observer pattern is defined in [30] p.\"],\"115306370\":[\"Aspects can re-use the functionalities defined by other aspects, which make them more reusable [82, 100].\"],\"123316651\":[\"Eaddy and Aho present an approach for combining statement-level annotations and pointcuts to support the advising of instances and statements [21].\"],\"148107450\":[\"Various approaches have been proposed to cope with evolution issues in aspect-oriented programs [9, 13, 26].\"],\"177742612\":[\"To this end, various approaches to AOP have been studied, concentrating on extensions to the programming language Java [6, 7, 69, 74, 81, 89, 91] and concepts for advanced pointcut languages [4, 25, 37, 50, 72, 99].\",\"Various approaches for the selection of joinpoints were studied during the preparation of this thesis [4, 6, 25, 37, 50, 72, 74, 91, 99].\",\"A few approaches support symmetric composition [81, 91] that makes no distinction between aspects and other components of the system, and provides the same composition mechanisms for component-component, aspect-aspect, and class-class compositions [43].\"],\"301824129\":[\"[18], Section 22.\"],\"1487664366\":[\"William Opdyke has discovered a set of syntactic and semantic program properties for object-oriented programs, which must not be violated if the program behavior should be preserved [70].\",\"[70], Section 4.\",\", for overriding methods, or informs the developer that the refactoring (if performed) cannot be prevented from altering the program behavior [70, 75].\",\"Such properties are related to fundamental concepts of a programming language and were originally introduced for the refactoring of objectoriented programs by William Opdyke [70].\",\"The developed framework is basically an extension of the framework for refactoring object-oriented programs developed by Opdyke [70].\",\"Existing refactoring tools check a predefined set of syntactical and semantical program properties [70] to prevent a refactoring from altering the program behavior.\",\"thesis [70] a framework for automating the refactoring of object-oriented programs.\"],\"1491178396\":[\"The term program transformation was originally coined in the field of constructing interpreters, compilers and optimizers [3].\",\"4 or Chapter 1 in [3]).\",\"[3], Section 10.\"],\"1494697806\":[\"Some approaches are already known in the field of pointcut generation in general [11, 12] and within aspect-oriented refactoring [39, 95].\",\"have developed an approach for generating pointcuts from any structural property available in a static joinpoint model [11, 12].\",\"In contrast to general approaches to pointcut generation [11, 95], we can use for the generation of adjusted pointcuts the original pointcut and the change impact information.\"],\"1498770298\":[\"In addition, he identified bigger refactorings which belong to the category ”Refactoring to Patterns” [51], such as Extract Worker Object Creation, Replace Argument Trickle by Wormhole.\",\"80) and Solution Sprawl ([51], p.\",\", however, also demonstrates effectively that powerful tool support is essential for configuring such refactorings, similar powerful as for big (object-oriented) refactorings of the category ”Refactorings to Patterns” [51].\"],\"1505385311\":[\"While AOP as a modularization concept has shown several benefits [31, 57, 35], its composition mechanisms still cause serious problems when aspect-oriented programs are evolved [56, 65, 86, 94].\",\"Second, more research is required to identify all conflicting situations between different aspects and non-AOP components, such as discovered by Störzer and Krinke [86].\"],\"1507413909\":[\", add additional members to a class or object, or define new inheritance relations [44, 52].\"],\"1508660681\":[\"If the preconditions are satisfied, the tool performs the refactoring in an automated way [75].\",\"The major problem within the context of refactoring tools is that behavior preservation is often difficult to prove and the analyses that must be performed to ensure it are difficult to compute [75].\",\"In automated refactoring , a refactoring is defined as a program transformation that has particular preconditions which must be satisfied before the transformation can be safely performed [75].\",\"[75], p.\",\", for overriding methods, or informs the developer that the refactoring (if performed) cannot be prevented from altering the program behavior [70, 75].\"],\"1518218347\":[\"Various pointcut languages have been proposed, ranging from regular expressions [4, 52], over XML-based queries [25], to complete logic meta-programming approaches [50, 72].\",\"To this end, various approaches to AOP have been studied, concentrating on extensions to the programming language Java [6, 7, 69, 74, 81, 89, 91] and concepts for advanced pointcut languages [4, 25, 37, 50, 72, 99].\",\"Various approaches for the selection of joinpoints were studied during the preparation of this thesis [4, 6, 25, 37, 50, 72, 74, 91, 99].\",\"The second pointcut is defined as XML-based path description using an XQuery-based approach for specifying pointcuts [25].\",\"[25], as most suitable for our refactoring support.\"],\"1532926224\":[\"[60] p.\"],\"1533198137\":[\"To this end, various approaches to AOP have been studied, concentrating on extensions to the programming language Java [6, 7, 69, 74, 81, 89, 91] and concepts for advanced pointcut languages [4, 25, 37, 50, 72, 99].\",\"Various approaches for the selection of joinpoints were studied during the preparation of this thesis [4, 6, 25, 37, 50, 72, 74, 91, 99].\",\"Furthermore, some advanced AOP approaches [4, 72, 99] also provide access to runtime representations, like stack trace, execution trace, or object heap.\",\"The observation that any seemingly safe modification in the base program’s representation can alter the behavior of aspect-oriented programs leaded to several enhancements to existing pointcut languages [4, 37, 72, 99].\",\"called Stateful Aspects [99].\",\"There are two general disadvantages when control flow graphs are used to represent the property execution sequence as used in AOP [4, 99].\"],\"1543310791\":[\"They are described in a pattern-like form, as common for ”traditional” refactorings [29], and are systematically documented within a catalogue [67].\",\"The developed catalogue of refactorings depicts 27 aspect-oriented refactorings [67], which target these code smells, i.\"],\"1544810854\":[\"Ossher and Tarr investigated the pros and cons of statement-level joinpoints and highlighted the unpredictability of change effects on statement-level weaving as major problem [71].\"],\"1553047397\":[\"More advanced approaches, such as [2, 16, 24], also use properties of dynamic representations, like the stack trace (cflow), execution trace (trace match) and object heap (instance values).\"],\"1573866550\":[\"This direct exclusion/inclusion of individual matches is already proposed by other refactoring approaches for AOP [20, 10].\",\"describe initial ideas on how to treat pointcuts within a refactoring workflow [10].\"],\"1588437460\":[\"We refactor an extended version of the Simple Insurance Application used in [6].\",\"[6].\"],\"1610521571\":[\"Recent publications have shown two major potentials for automating such refactorings: (i) the identification of candidate aspects in a given program (aspect mining) [14, 63, 93, 96], and (ii) the semantic-preserving\"],\"1649645444\":[\"Example is taken from [4], the term observer pattern is defined in [30] p.\"],\"1745726755\":[\"Various approaches have been proposed to cope with evolution issues in aspect-oriented programs [9, 13, 26].\"],\"1855341394\":[\"[20].\"],\"1865850859\":[\"They reviewed existing code smells for object-oriented programs, considering the aspect-oriented modularization concept and proposed new smells indicating more AOP-specific weaknesses code smells [68, 66].\"],\"1987702312\":[\"They propose a specific refactoring workflow that generates a single pointcut for every extracted program element.Hannemann et al.present in [ 11 ] also a tool for extracting crosscutting concerns into aspects.\"],\"1991601392\":[\"While AOP as a modularization concept has shown several benefits [31, 57, 35], its composition mechanisms still cause serious problems when aspect-oriented programs are evolved [56, 65, 86, 94].\"],\"1996427106\":[\"present in recent publications [73, 79, 84] a change impact analysis to find test cases that are potentially affected by a source code edit (set of changes).\",\"[84] could make program edits more amenable to program analysis.\"],\"2028048600\":[\"Anbalagan and Xie built and Automated Pointcut Testing Framework (APTE) [5] for validating the correctness of pointcut expressions.\",\"Such a verifiable specification of the developer’s intension could be even more interesting for aspect-oriented refactoring if it is combined with a distance measure as proposed by Anbalagan and Xie [5].\",\"effectively demonstrates this problem, and also Anbalagan and Xie address issues arisen by almost matching elements [5].\",\"To this end, we are planning to integrate a computation of boundary matches , as proposed by Anabalagan and Xie [5].\"],\"2045352263\":[\"developed a similar approach for extracting crosscutting concerns into aspects [42, 41].\"],\"2061316037\":[\"We use a similar notion for an atomic change as introduced by change impact analysis approaches for object-oriented programs [18, 21].\",\"[18, 21] we divide program edits (performed by a refactoring) into their constituent atomic changes.\"],\"2071935327\":[\"In particular, Monteiro et al.have developed a catalogue of new refactorings and bad smells for AspectJ programs [ 14 ].Ceccato et al.developed an AOPMigrator [5] which supports the extraction of class members and statements into aspects.\"],\"2079027980\":[\"present in recent publications [73, 79, 84] a change impact analysis to find test cases that are potentially affected by a source code edit (set of changes).\",\"in [73, 79], we have developed an abstract change model that represents program edits through atomic changes.\"],\"2105379554\":[\"Other approaches [12,  23 ] resolve only complete pointcuts and computejoinpoint shadows[12].\\u001bAn approach that detects differently bound advices by comparing two program versions is presented bySt ¨ orzer and Grafin [ 23 ].\"],\"2119736157\":[\", the language C [15].\"],\"2126225516\":[\"A recent approach for supporting the modular reasoning in aspect-oriented programs and also the evolution problems is the introduction of aspect-aware interfaces [16, 36, 54].\",\"propose an approach for defining aspect-aware interfaces called XPI [36].\",\"Unlike an API, an XPI abstracts a crosscutting behavior rather than a localized procedure implementation” [36].\",\"A more promising alternative is an explicitly expressed expectation that can be automatically verified [36].\"],\"2129062550\":[\"Rura and Lerner present in [77, 78] a framework for refactoring aspect-oriented programs, which advances the initial work of Hanenberg et al.\"],\"2133241651\":[\"While AOP as a modularization concept has shown several benefits [31, 57, 35], its composition mechanisms still cause serious problems when aspect-oriented programs are evolved [56, 65, 86, 94].\"],\"2139834193\":[\"To this end, various approaches to AOP have been studied, concentrating on extensions to the programming language Java [6, 7, 69, 74, 81, 89, 91] and concepts for advanced pointcut languages [4, 25, 37, 50, 72, 99].\",\"They emphasize strong dependencies to implementation details, which make aspects less reusable and more vulnerable to implementation changes [7].\"],\"2148305550\":[\", for C-like macros [32, 33].\"],\"2150231504\":[\"In the current implementation we propose a tree-map [48] or seesoft [26] visualization for properties of static program representations and a graph-based visualization for cflow properties.\"],\"2152039290\":[\"Another definition defines a concern as ”an interest which pertains to the system’s development, its operation or any other matters that are critical or otherwise important to one or more stakeholders” [98].\",\"Another definition characterizes joinpoints as ”points of interest in some modules in the software lifecycle through which two or more concerns may be composed” [98].\",\"It can be seen as the common frame of reference defining what kinds of joinpoints are available and how they can be accessed and used [98].\",\"Such a specification addresses a single property of an element and is often called predicate or pointcut designator [98].\",\"In general, the integration of multiple software artifacts into a coherent whole is called software composition [98].\"],\"2153324799\":[\"A recent approach for supporting the modular reasoning in aspect-oriented programs and also the evolution problems is the introduction of aspect-aware interfaces [16, 36, 54].\"],\"2153887189\":[\"The term is commonly used as the process for improving the design of existing code without altering its external behavior [15, 8].\",\"This program is now restructured using the Move Method refactoring [8].\"],\"2154677029\":[\"The shadow is defined as the static projection of a joinpoint onto the program code [64].\"],\"2159682002\":[\"In short, refactoring is intended to keep a software evolvable and should be an essential activity in software engineering, according to Lehman’s second law ”increasing complexity: as a program is evolved its complexity increases unless work is done to maintain or reduce it” [61].\"],\"2171464342\":[\", for C-like macros [32, 33].\"],\"2244034457\":[\"Various pointcut languages have been proposed, ranging from regular expressions [4, 52], over XML-based queries [25], to complete logic meta-programming approaches [50, 72].\",\"To this end, various approaches to AOP have been studied, concentrating on extensions to the programming language Java [6, 7, 69, 74, 81, 89, 91] and concepts for advanced pointcut languages [4, 25, 37, 50, 72, 99].\",\"Various approaches for the selection of joinpoints were studied during the preparation of this thesis [4, 6, 25, 37, 50, 72, 74, 91, 99].\",\"[50, 49].\"],\"2534652523\":[\"The employed detection algorithm, originally developed by Tarjan [90], is able to detect SCCs in linear time.\"],\"2901852340\":[\"While AOP as a modularization concept has shown several benefits [31, 57, 35], its composition mechanisms still cause serious problems when aspect-oriented programs are evolved [56, 65, 86, 94].\"]},\"PR\":[2480195817,2020923349,2138363365,2010155134,2064950154,1964399875,65251406,2045352263,2110166749,2051801900,2009391152,1604652841,2248600244,2042191231,2119919165,1649645444,1865850859,1987702312,2071935327,2129621441,2480195817,2020923349,2138363365,2010155134,2064950154,1964399875,65251406,2045352263,2110166749,2051801900,2009391152,1604652841,2248600244,2042191231,2119919165,1649645444,1865850859,1987702312,2071935327,2129621441],\"ANF\":[{\"FN\":\"Jan\",\"LN\":\"Wloka\",\"S\":1},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":2},{\"FN\":\"Joachim\",\"LN\":\"Hänsel\",\"S\":3}],\"BV\":\"Proceedings of the 7th international conference on Aspect-oriented software development\",\"BT\":\"p\",\"PB\":\"ACM\"}"},{"logprob":-20.978,"Id":2419951300,"Ty":"0","Ti":"towards reducing the need for algorithmic primitives in dynamic language vms through a tracing jit","Pt":"3","L":"en","Y":2015,"D":"2015-07-04","CC":4,"ECC":4,"RId":[1585665690,2097879961,1770006921,2072737419,64760530,2116136092,2172147300,1993335798,2021246880,2167997514,2058639022,143231896,2135416495,2012948209,1493929095,2126060880,1511848167,2302621689,2217187236],"W":["algorithmic","dynamic","jit","language","primitives","reducing","towards","tracing","vms"],"AA":[{"DAuN":"Tim Felgentreff","AuN":"tim felgentreff","AuId":1964871710,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":1},{"DAuN":"Tobias Pape","AuN":"tobias pape","AuId":2114920648,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":2},{"DAuN":"Lars Wassermann","AuN":"lars wassermann","AuId":2491860676,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":3},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":4},{"DAuN":"Carl Friedrich Bolz","AuN":"carl friedrich bolz","AuId":1964826138,"DAfN":"King's College London","AfN":"king s college london","AfId":183935753,"S":5}],"F":[{"DFN":"Virtual machine","FN":"virtual machine","FId":25344961},{"DFN":"Tracing just-in-time compilation","FN":"tracing just in time compilation","FId":50450317},{"DFN":"Tracing","FN":"tracing","FId":138673069},{"DFN":"Squeak","FN":"squeak","FId":2780281086},{"DFN":"Smalltalk","FN":"smalltalk","FId":2777293101},{"DFN":"Real-time computing","FN":"real time computing","FId":79403827},{"DFN":"Programming language","FN":"programming language","FId":199360897},{"DFN":"Parallel computing","FN":"parallel computing","FId":173608175},{"DFN":"Interpreter","FN":"interpreter","FId":122783720},{"DFN":"Implementation","FN":"implementation","FId":26713055},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Compiler","FN":"compiler","FId":169590947}],"C":{"CN":"icooolps","CId":2624819336},"E":"{\"DN\":\"Towards reducing the need for algorithmic primitives in dynamic language VMs through a tracing JIT\",\"IA\":{\"IndexLength\":197,\"InvertedIndex\":{\"When\":[0],\"implementing\":[1],\"virtual\":[2],\"machines,\":[3],\"besides\":[4],\"the\":[5,20,49,56,70,90,94,103,120,130,163,187,190],\"interpreter\":[6],\"and\":[7,135,145,181],\"optimization\":[8],\"facilities,\":[9],\"we\":[10,40,101,128,161],\"have\":[11],\"to\":[12,60,77,108,116,186],\"include\":[13],\"a\":[14,140,165],\"set\":[15],\"of\":[16,26,96,114],\"primitive\":[17,30,37,144,176],\"functions\":[18],\"that\":[19,159,184],\"client\":[21,50,121,146],\"language\":[22],\"can\":[23,193],\"use.\":[24],\"Some\":[25],\"these\":[27],\"implement\":[28],\"truly\":[29],\"behavior,\":[31],\"such\":[32],\"as\":[33],\"arithmetic\":[34],\"operations.\":[35],\"Other\":[36],\"functions,\":[38],\"which\":[39],\"call\":[41],\"algorithmic\":[43,106],\"primitives\":[44,68,107],\",\":[45],\"are\":[46,53],\"expressible\":[47],\"in\":[48,55,69,83,119,136,150,172,178],\"language,\":[51],\"but\":[52],\"implemented\":[54,118],\"vm\":[58,72,86,152,167],\"improve\":[61],\"performance.\":[62],\"However,\":[65],\"having\":[66],\"many\":[67],\"makes\":[74],\"it\":[75],\"harder\":[76],\"maintain\":[78],\"them,\":[79],\"or\":[80],\"re-use\":[81],\"them\":[82,115],\"alternative\":[84],\"implementations\":[88,177],\"for\":[89,105,169],\"same\":[91],\"language.\":[92,122],\"With\":[93],\"advent\":[95],\"efficient\":[97],\"tracing\":[98,155,188],\"just-in-time\":[99,156],\"compilers\":[100],\"believe\":[102],\"need\":[104],\"be\":[109,117,194],\"much\":[110],\"diminished,\":[111],\"allowing\":[112],\"more\":[113],\"In\":[125],\"this\":[126],\"work,\":[127],\"investigate\":[129],\"trade-offs\":[131],\"when\":[132],\"creating\":[133],\"primitives,\":[134],\"particular\":[137],\"how\":[138],\"large\":[139],\"difference\":[141],\"remains\":[142],\"between\":[143],\"function\":[147],\"run\":[148],\"times\":[149],\"s\":[153],\"with\":[154],\"compiler.\":[157],\"To\":[158],\"end,\":[160],\"extended\":[162],\"RSqueak/VM,\":[164],\"Squeak/Smalltalk\":[170],\"written\":[171],\"RPython.\":[173],\"We\":[174],\"compare\":[175],\"C,\":[179],\"RPython,\":[180],\"Smalltalk,\":[182],\"showing\":[183],\"due\":[185],\"JIT\":[189],\"performance\":[191],\"gap\":[192],\"significantly\":[195],\"reduced.\":[196]}},\"S\":[{\"Ty\":3,\"U\":\"http://www.labri.fr/perso/fmoranda/icooolps15/p8.pdf\"},{\"Ty\":1,\"U\":\"https://dl.acm.org/citation.cfm?id=2843915.2843924\"},{\"Ty\":1,\"U\":\"https://kclpure.kcl.ac.uk/portal/en/publications/towards-reducing-the-need-for-algorithmic-primitives-in-dynamic-language-vms-through-a-tracing-jit(869a37e5-9e72-41e6-9012-7e658cef9ce0).html\"}],\"VFN\":\"Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems\",\"VSN\":\"ICOOOLPS\",\"FP\":7,\"DOI\":\"10.1145/2843915.2843924\",\"CC\":{\"1493929095\":[\"To explore and evaluate the trade-offs for implementing primitive functions, we use Squeak/Smalltalk running on top of the RSqueak/VM [3], an open-source2 implementation that uses the RPython meta-tracing just-in-time compiler (JIT) toolchain which also powers PyPy [4].\"],\"1770006921\":[\"BitBlt was originally published as Smalltalk code [10].\",\"The Smalltalk code for the primitives we presented has been in development for a long time — the BitBlt code originated with Smalltalk-80 [10], the replaceFrom:to:with:startingAt: method is too old to have a correct timestamp, and the large integer operations\"],\"1993335798\":[\"To explore and evaluate the trade-offs for implementing primitive functions, we use Squeak/Smalltalk running on top of the RSqueak/VM [3], an open-source2 implementation that uses the RPython meta-tracing just-in-time compiler (JIT) toolchain which also powers PyPy [4].\"],\"2012948209\":[\"Even in a community as small (compared to more mainstream languages like Ruby and Python) as Squeak/Smalltalk, there exist multiple different VM-implementations besides the one we already presented: the RoarVM [14] for running on multiprocessor systems, SqueakJS [8] which runs in the browser, Potato9 for running on the JVM.\"],\"2021246880\":[\"Writing primitive behavior in the same language as the nonprimitive user code has also been done in the Maxine VM [18].\"],\"2058639022\":[\"In Self [6], primitives are indicated by their selectors— methods whose slot name starts with underscore (_) call a primitive function.\"],\"2097879961\":[\"We show the arithmetic mean of all runs along with bootstrapped [7] confidence intervals for a 95 % confidence level.\"],\"2116136092\":[\"TraceMonkey [9], the JavaScript JIT formerly used in Firefox, also traces DOM-operations that were re-implemented in JavaScript5.\"],\"2126060880\":[\"We remove the impact of JIT warm-up from our measurements by running each benchmark 200 times in a freshly booted image, and using the last 20 results [2].\"],\"2135416495\":[\"Third, we are working to fully apply strategies [5] to RSqueak/VM.\"],\"2172147300\":[\"The original Squeak VM [13] is written in a subset of Smalltalk called Slang.\",\"BitBlt is an algorithm that combines one block of bits with another according to certain rules, and was developed to speed up graphical operations for one bit displays [11], but later extended to handle up to 32 bit of color [13].\"],\"2217187236\":[\"BitBlt is an algorithm that combines one block of bits with another according to certain rules, and was developed to speed up graphical operations for one bit displays [11], but later extended to handle up to 32 bit of color [13].\"]},\"PR\":[2590158173,2891780843,1814688937,2010448353,2051540028,2094269821,2762530511,1790698481,1993335798,2553746381,2029501338,2110403837,2095629905,2028577120,1494218080,1991722833,2126614224,2119818055,2306852532,2772827996,2590158173,2891780843,1814688937,2010448353,2051540028,2094269821,2762530511,1790698481,1993335798,2553746381,2029501338,2110403837,2095629905,2028577120,1494218080,1991722833,2126614224,2119818055,2306852532,2772827996],\"ANF\":[{\"FN\":\"Tim\",\"LN\":\"Felgentreff\",\"S\":1},{\"FN\":\"Tobias\",\"LN\":\"Pape\",\"S\":2},{\"FN\":\"Lars\",\"LN\":\"Wassermann\",\"S\":3},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":4},{\"FN\":\"Carl Friedrich\",\"LN\":\"Bolz\",\"S\":5}],\"BV\":\"Proceedings of the 10th Workshop on Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems\",\"BT\":\"p\",\"PB\":\"ACM\"}"},{"logprob":-21,"Id":2012451248,"Ty":"0","Ti":"interleaving of modification and use in data driven tool development","Pt":"3","L":"en","Y":2014,"D":"2014-10-20","CC":9,"ECC":9,"RId":[1539495021,2110001365,2148357053,2100894766,2130344546,2157943826,2097750323,2104686990,1660714679,2162831261,1964757858,90361031,2001033929,1594284843,1917216709,2107472520,2113908489,1597340042,1964316648,2145512597,2030836928,2012072241,2101876886,1967922118,2081968687,1659767374,2136885942,2103211722,1972151373,2090696691,2040040157,2031995884,1965549686],"W":["data","development","driven","interleaving","modification","tool"],"AA":[{"DAuN":"Marcel Taeumel","AuN":"marcel taeumel","AuId":83004794,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":1},{"DAuN":"Michael Perscheid","AuN":"michael perscheid","AuId":698431335,"DAfN":"SAP Innovation Center Potsdam, Germany, Potsdam, Germany","S":2},{"DAuN":"Bastian Steinert","AuN":"bastian steinert","AuId":2142371068,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":3},{"DAuN":"Jens Lincke","AuN":"jens lincke","AuId":2055148755,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":4},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":5}],"F":[{"DFN":"Squeak","FN":"squeak","FId":2780281086},{"DFN":"Smalltalk","FN":"smalltalk","FId":2777293101},{"DFN":"Shell script","FN":"shell script","FId":150631331},{"DFN":"Scripting language","FN":"scripting language","FId":61423126},{"DFN":"Programming language","FN":"programming language","FId":199360897},{"DFN":"Modularity","FN":"modularity","FId":100648641},{"DFN":"Missing data","FN":"missing data","FId":9357733},{"DFN":"Interleaving","FN":"interleaving","FId":28034677},{"DFN":"GLUE","FN":"glue","FId":2779937294},{"DFN":"Computer science","FN":"computer science","FId":41008148}],"C":{"CN":"onward","CId":2759899939},"E":"{\"DN\":\"Interleaving of Modification and Use in Data-driven Tool Development\",\"IA\":{\"IndexLength\":145,\"InvertedIndex\":{\"Programmers\":[0],\"working\":[1],\"in\":[2,18,89,136],\"a\":[3,24,55,87],\"Unix-like\":[4],\"environment\":[5],\"can\":[6,129],\"easily\":[7,48],\"build\":[8],\"custom\":[9],\"tools\":[10,41,60,128],\"by\":[11,50],\"configuring\":[12],\"and\":[13,27,69,80,107,118,142],\"combining\":[14],\"small\":[15],\"filter\":[16],\"programs\":[17],\"shell\":[19],\"scripts.\":[20],\"When\":[21],\"leaving\":[22],\"such\":[23,103,114],\"text-based\":[25],\"world\":[26],\"entering\":[28],\"one\":[29],\"that\":[30,61,91,123],\"is\":[31,36],\"graphics-based,\":[32],\"however,\":[33],\"tool\":[34,94],\"building\":[35],\"more\":[37],\"difficult\":[38],\"because\":[39],\"graphical\":[40,59,127],\"are\":[42],\"typically\":[43],\"not\":[44],\"prepared\":[45],\"to\":[46,75],\"be\":[47],\"re-programmed\":[49],\"their\":[51],\"users.\":[52],\"We\":[53,121],\"propose\":[54],\"data-driven\":[56],\"perspective\":[57,125],\"on\":[58,126],\"uses\":[62],\"concise\":[63],\"scripts\":[64],\"as\":[65,73,104,115],\"glue\":[66],\"between\":[67],\"data\":[68,78],\"views\":[70],\"but\":[71,109],\"also\":[72,110],\"means\":[74],\"express\":[76],\"missing\":[77],\"transformations\":[79],\"view\":[81],\"items.\":[82],\"Given\":[83],\"this,\":[84],\"we\":[85],\"built\":[86],\"framework\":[88],\"Squeak/Smalltalk\":[90],\"promotes\":[92],\"low-effort\":[93],\"construction;\":[95],\"it\":[96],\"works\":[97],\"well\":[98],\"for\":[99,111,138],\"basic\":[100],\"programming\":[101],\"tools,\":[102],\"code\":[105],\"editors\":[106],\"debuggers,\":[108],\"other\":[112],\"domains,\":[113],\"developer\":[116],\"chats\":[117],\"issue\":[119],\"browsers.\":[120],\"think\":[122],\"this\":[124],\"inspire\":[130],\"the\":[131],\"creation\":[132],\"of\":[133],\"new\":[134],\"trade-offs\":[135],\"modularity\":[137],\"both\":[139],\"data-providing\":[140],\"projects\":[141],\"interactive\":[143],\"views.\":[144]}},\"S\":[{\"Ty\":1,\"U\":\"https://doi.acm.org/10.1145/2661136.2661150\"},{\"Ty\":1,\"U\":\"https://dl.acm.org/citation.cfm?doid=2661136.2661150\"},{\"Ty\":0,\"U\":\"http://dl.acm.org/citation.cfm?doid=2661136.2661150\"}],\"VFN\":\"SIGPLAN symposium on New ideas, new paradigms, and reflections on programming and software\",\"VSN\":\"Onward!\",\"FP\":185,\"LP\":200,\"DOI\":\"10.1145/2661136.2661150\",\"PR\":[2040040157,2172147300,183550334,1547182252,2795148395,2576360137,2294433813,2014738545,2100595214,2557937871,2486569610,2337914944,2498902211,2273196620,2610948442,1124016543,2886686348,2128383602,1972107637,401714238,2040040157,2172147300,183550334,1547182252,2795148395,2576360137,2294433813,2014738545,2100595214,2557937871,2486569610,2337914944,2498902211,2273196620,2610948442,1124016543,2886686348,2128383602,1972107637,401714238],\"ANF\":[{\"FN\":\"Marcel\",\"LN\":\"Taeumel\",\"S\":1},{\"FN\":\"Michael\",\"LN\":\"Perscheid\",\"S\":2},{\"FN\":\"Bastian\",\"LN\":\"Steinert\",\"S\":3},{\"FN\":\"Jens\",\"LN\":\"Lincke\",\"S\":4},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":5}],\"BV\":\"Proceedings of the 2014 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming & Software\",\"BT\":\"p\",\"PB\":\"ACM\"}"},{"logprob":-21.029,"Id":2141588683,"Ty":"0","Ti":"dynamic service adaptation","Pt":"1","L":"en","Y":2006,"D":"2006-09-01","CC":10,"ECC":10,"RId":[2496223582,1527793496,1910673522,1851327982,2172147300,2134119432,1539723268,1591471358,1491095550,2000090290,2782959840,193395745,1511848167,1550429157,2110006268],"W":["adaptation","dynamic","service"],"AA":[{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"NTT DoCoMo","AfN":"ntt docomo","AfId":99157191,"S":1},{"DAuN":"Katsuya Kawamura","AuN":"katsuya kawamura","AuId":2140200352,"DAfN":"NTT DoCoMo","AfN":"ntt docomo","AfId":99157191,"S":2}],"F":[{"DFN":"sync","FN":"sync","FId":3913047},{"DFN":"Systems engineering","FN":"systems engineering","FId":201995342},{"DFN":"Simulation","FN":"simulation","FId":44154836},{"DFN":"Petroleum engineering","FN":"petroleum engineering","FId":78762247},{"DFN":"Mobile telephony","FN":"mobile telephony","FId":95491727},{"DFN":"Engineering","FN":"engineering","FId":127413603},{"DFN":"Aspect-oriented programming","FN":"aspect oriented programming","FId":60051680}],"J":{"JN":"spe","JId":122199241},"E":"{\"DN\":\"Dynamic service adaptation\",\"IA\":{\"IndexLength\":155,\"InvertedIndex\":{\"Change\":[0],\"can\":[1,38],\"be\":[2,26,103,112],\"observed\":[3],\"in\":[4,8,15,28,131],\"our\":[5,22,129],\"environment\":[6,17],\"and\":[7,20,76,107,109,116,141],\"the\":[9,16,31,43,65,90,132],\"technology\":[10,23],\"we\":[11,37,49],\"build.\":[12],\"While\":[13],\"changes\":[14,44],\"happen\":[18],\"continuously\":[19],\"implicitly,\":[21],\"has\":[24],\"to\":[25,63,105,114,121,138],\"kept\":[27],\"sync\":[29],\"with\":[30],\"changing\":[32],\"world\":[33],\"around\":[34],\"it.\":[35],\"Although\":[36],\"prepare\":[39],\"for\":[40,45,55,144],\"some\":[41],\"of\":[42,47,67,94,99,118,134],\"most\":[46],\"them\":[48],\"cannot.\":[50],\"This\":[51,126],\"is\":[52,74],\"especially\":[53],\"true\":[54],\"next-generation\":[56],\"mobile\":[57],\"communication\":[58],\"systems\":[59],\"that\":[60],\"are\":[61],\"expected\":[62],\"support\":[64],\"creation\":[66],\"a\":[68],\"ubiquitous\":[69],\"society\":[70],\"where\":[71],\"virtually\":[72],\"everything\":[73],\"connected\":[75],\"made\":[77],\"available\":[78],\"within\":[79],\"an\":[80],\"organic\":[81],\"information\":[82],\"network.\":[83],\"Resources\":[84],\"will\":[85,102,111],\"frequently\":[86],\"join\":[87],\"or\":[88,96],\"leave\":[89],\"network,\":[91],\"new\":[92,97],\"types\":[93,101],\"media\":[95],\"combinations\":[98],\"existing\":[100],\"used\":[104],\"interact\":[106],\"cooperate,\":[108],\"services\":[110],\"tailored\":[113],\"preferences\":[115],\"needs\":[117],\"individual\":[119],\"customers\":[120],\"better\":[122],\"meet\":[123],\"their\":[124],\"needs.\":[125],\"paper\":[127],\"outlines\":[128],\"research\":[130],\"area\":[133],\"dynamic\":[135],\"service\":[136],\"adaptation\":[137],\"provide\":[139],\"concepts\":[140],\"technologies\":[142],\"allowing\":[143],\"such\":[145],\"environments.\":[146],\"Copyright\":[147],\"©\":[148],\"2006\":[149],\"John\":[150],\"Wiley\":[151],\"&\":[152],\"Sons,\":[153],\"Ltd.\":[154]}},\"S\":[{\"Ty\":1,\"U\":\"http://onlinelibrary.wiley.com/doi/10.1002/spe.766/full\"}],\"VFN\":\"Software - Practice and Experience\",\"V\":36,\"FP\":1115,\"LP\":1131,\"DOI\":\"10.1002/spe.766\",\"PR\":[2419352534,2120956620,2747670149,2660253449,1482332007,2126614445,199798891,2104849056,2081084370,2150675375,2059372311,1572308717,2119433984,2121961640,2135747027,47543248,2184211814,1783401868,2186581767,1541389750,2419352534,2120956620,2747670149,2660253449,1482332007,2126614445,199798891,2104849056,2081084370,2150675375,2059372311,1572308717,2119433984,2121961640,2135747027,47543248,2184211814,1783401868,2186581767,1541389750],\"ANF\":[{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":1},{\"FN\":\"Katsuya\",\"LN\":\"Kawamura\",\"S\":2}],\"BV\":\"Software - Practice and Experience\",\"BT\":\"a\",\"PB\":\"John Wiley & Sons, Ltd.\"}"},{"logprob":-21.03,"Id":1990628165,"Ty":"0","Ti":"layered method dispatch with invokedynamic an implementation study","Pt":"0","L":"en","Y":2010,"D":"2010-06-22","CC":10,"ECC":10,"RId":[2150275961,2144114063,2118300983,2089889705,2086014732,1491095550,1556513858,2172169742,2014881790],"W":["dispatch","implementation","invokedynamic","layered"],"AA":[{"DAuN":"Malte Appeltauer","AuN":"malte appeltauer","AuId":135591984,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":1},{"DAuN":"Michael Haupt","AuN":"michael haupt","AuId":2146662369,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":2},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":3}],"F":[{"DFN":"strictfp","FN":"strictfp","FId":174954855},{"DFN":"Virtual machine","FN":"virtual machine","FId":25344961},{"DFN":"Spite","FN":"spite","FId":181836184},{"DFN":"Real time Java","FN":"real time java","FId":132106392},{"DFN":"Programming language","FN":"programming language","FId":199360897},{"DFN":"Java concurrency","FN":"java concurrency","FId":181907185},{"DFN":"Java","FN":"java","FId":548217200},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Compiler","FN":"compiler","FId":169590947},{"DFN":"Bytecode","FN":"bytecode","FId":2779818221}],"E":"{\"DN\":\"Layered method dispatch with INVOKEDYNAMIC: an implementation study\",\"IA\":{\"IndexLength\":79,\"InvertedIndex\":{\"This\":[0],\"paper\":[1],\"describes\":[2],\"an\":[3],\"implementation\":[4,38,64,76],\"study\":[5],\"in\":[6,65],\"which\":[7],\"we\":[8],\"use\":[9],\"the\":[10,18,25,36,43,57,66,73],\"upcoming\":[11],\"INVOKEDYNAMIC\":[12],\"bytecode\":[13],\"instruction---to\":[14],\"be\":[15],\"supported\":[16],\"by\":[17],\"standard\":[19],\"Java\":[20,28,67],\"virtual\":[21,68],\"machine\":[22],\"starting\":[23],\"with\":[24,40],\"release\":[26],\"of\":[27,42,51,56,59,72],\"7---to\":[29],\"implement\":[30],\"layered\":[31],\"method\":[32],\"dispatch.\":[33],\"We\":[34],\"compare\":[35],\"resulting\":[37],\"approach\":[39],\"that\":[41],\"existing\":[44],\"JCop\":[45,75],\"compiler,\":[46],\"and\":[47],\"present\":[48],\"preliminary\":[49],\"results\":[50],\"comparative\":[52],\"benchmarks.\":[53],\"In\":[54],\"spite\":[55],\"as\":[58],\"now\":[60],\"not\":[61],\"optimized\":[62],\"INVOKEDYAMIC\":[63],\"machine,\":[69],\"performance\":[70],\"characteristics\":[71],\"INVOKEDYNAMIC-based\":[74],\"are\":[77],\"promising.\":[78]}},\"S\":[{\"Ty\":1,\"U\":\"https://dl.acm.org/citation.cfm?id=1930021.1930025\"}],\"VFN\":\"Proceedings of the 2nd International Workshop on Context-Oriented Programming\",\"FP\":4,\"DOI\":\"10.1145/1930021.1930025\",\"CC\":{\"1491095550\":[\"ContextS is based on the dynamic aspect language AspectS [ 6 ], which manages dynamic recomposition.\"],\"1556513858\":[\"COP extensions related to our ID approach make use of their host languages’ support for dynamic delegation, such as ContextS [ 7 ] and cj/delMDSOC [11], much like ID does for Java.\"],\"2014881790\":[\"COP extensions related to our ID approach make use of their host languages’ support for dynamic delegation, such as ContextS [7] and cj/delMDSOC [ 11 ], much like ID does for Java.\"],\"2086014732\":[\"The upcoming Java 7 release includes a powerful extension to the language’s meta programming facilities: the INVOKEDYNAMIC (henceforth abbreviated “ID”) instruction 1 [ 10 ].\"],\"2089889705\":[\"Some language constructs, such as top-level layer declarations and layered fields, are first transformed into an intermediate aspect representation that is then woven into the byte code classes, see Figure 3. In the following, we only refer to core COP features that have been developed in our previous work on ContextJ [ 3 ].\"],\"2118300983\":[\"JCop [1], our current context-oriented Java language extension is implemented as a JastAdd [ 5 ] compiler extension, offering a convenient syntax extension and generating plain Java bytecode.\"],\"2144114063\":[\"In previous work [ 2 ], we conducted several microbenchmarks to measure possible performance decreases of our implementation of layer-aware method lookup.\\u001bCOP are performance issues in previous implementations, as discussed along micro-benchmarks in previous work [ 2 ].\\u001bFor more details on this benchmark, see [ 2 ].\\u001bSeveral other COP languages also implement a layer-based recomposition that taking place at composition time, where method references are re-linked at any occurrence of with and without [ 2 ].\"],\"2150275961\":[\"We show both implementations along the classic COP example of a class Person that provides a layered method toString for which a partial method is defined in the layer Address [ 8 ].\"],\"2172169742\":[\"In previous work, we did the latter for the Java programming language and developed two extensions with dedicated COP language constructs [ 4 , 1].\"]},\"PR\":[55389199,2837098351,252190987,2828477504,2391215804,2278018869,2736703304,2166864541,2020191041,1947486167,2334289172,2147249227,2152619630,183374640,2083874451,1502238044,2120003701,1978875190,2480195817,2160581408,55389199,2837098351,252190987,2828477504,2391215804,2278018869,2736703304,2166864541,2020191041,1947486167,2334289172,2147249227,2152619630,183374640,2083874451,1502238044,2120003701,1978875190,2480195817,2160581408],\"ANF\":[{\"FN\":\"Malte\",\"LN\":\"Appeltauer\",\"S\":1},{\"FN\":\"Michael\",\"LN\":\"Haupt\",\"S\":2},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":3}],\"BV\":\"Proceedings of the 2nd International Workshop on Context-Oriented Programming\",\"BT\":\"p\",\"PB\":\"ACM\"}"},{"logprob":-21.039,"Id":156159649,"Ty":"0","Ti":"aspects aop with squeak","Pt":"0","Y":2001,"D":"2001-01-01","CC":20,"ECC":20,"RId":[2480195817,2143238865,1539723268,158038449],"W":["aop","aspects","squeak"],"AA":[{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2440418316,"S":1}],"F":[{"DFN":"Squeak","FN":"squeak","FId":2780281086},{"DFN":"Smalltalk","FN":"smalltalk","FId":2777293101},{"DFN":"Programming language","FN":"programming language","FId":199360897},{"DFN":"Language model","FN":"language model","FId":137293760},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Aspect-oriented programming","FN":"aspect oriented programming","FId":60051680}],"E":"{\"DN\":\"AspectS - AOP with Squeak\",\"VFN\":\"\",\"CC\":{\"1539723268\":[\"As of today there are several approaches that support aspect-oriented concepts, ranging from general-purpose aspect languages like AspectJ [AJ01, Kicz+01] to domain -specific aspect languages such as RG or D [MKL97,  Lope97 ].\"]},\"PR\":[2480195817,2143238865,1649645444,1971860760,2057334711,1988978715,162234675,2103953153,2539925735,1539723268,1851327982,2115248168,2134119432,2148017497,130651513,1599812333,595349243,5182058,1529323326,1262379696,2480195817,2143238865,1649645444,1971860760,2057334711,1988978715,162234675,2103953153,2539925735,1539723268,1851327982,2115248168,2134119432,2148017497,130651513,1599812333,595349243,5182058,1529323326,1262379696],\"ANF\":[{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":1}],\"BT\":\"a\"}"},{"logprob":-21.062,"Id":28766398,"Ty":"0","Ti":"extending advice activation in aspects","Pt":"0","Y":2005,"D":"2005-01-01","CC":8,"ECC":8,"RId":[1770006921,2172147300,1992443356,1491095550,2782959840,143231896],"W":["activation","advice","aspects","extending"],"AA":[{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":1},{"DAuN":"Pascal Costanza","AuN":"pascal costanza","AuId":2286412295,"DAfN":"Vrije Universiteit Brussel","AfN":"vrije universiteit brussel","AfId":13469542,"S":2}],"F":[{"DFN":"Metaprogramming","FN":"metaprogramming","FId":35390924},{"DFN":"Management science","FN":"management science","FId":539667460},{"DFN":"Computer science","FN":"computer science","FId":41008148}],"E":"{\"DN\":\"Extending Advice Activation in AspectS\",\"IA\":{\"IndexLength\":71,\"InvertedIndex\":{\"AspectS\":[0,33,62],\"provides\":[1],\"a\":[2,8,66],\"mechanism\":[3],\"called\":[4],\"activation\":[5],\"blocks\":[6],\"as\":[7],\"means\":[9],\"to\":[10,26,30,35,39,54,69],\"control\":[11],\"the\":[12,32,60],\"invocation\":[13],\"of\":[14],\"advice\":[15,56],\"code\":[16,57],\"at\":[17],\"instrumented\":[18],\"join-point\":[19],\"shadows.\":[20],\"We\":[21],\"describe\":[22],\"all\":[23],\"steps\":[24],\"necessary\":[25],\"utilize\":[27],\"this\":[28,52],\"device\":[29],\"adapt\":[31],\"framework\":[34,67],\"new\":[36,44],\"situations\":[37],\"and\":[38],\"carry\":[40],\"out\":[41],\"experiments\":[42],\"with\":[43],\"composition\":[45],\"properties.\":[46],\"As\":[47],\"an\":[48],\"example,\":[49],\"we\":[50],\"exercise\":[51],\"recipe\":[53],\"make\":[55],\"processaware,\":[58],\"emphasizing\":[59],\"flexibility\":[61],\"gained\":[63],\"from\":[64],\"taking\":[65],\"approach\":[68],\"AOP.\":[70]}},\"S\":[{\"Ty\":3,\"U\":\"http://soft.vub.ac.be/Publications/2006/vub-prog-tr-06-26.pdf\"},{\"Ty\":3,\"U\":\"http://www.p-cos.net/documents/eiwas05.pdf\"}],\"VFN\":\"\",\"CC\":{\"143231896\":[\"We start by implementing the example from [ 2 ] (Chapter Processes, p. 255), demonstrating multi-process behavior in Smalltalk.\\u001bNow we adapt and implement the above mentioned example from [ 2 ].\"],\"1491095550\":[\"AspectS is described in more detail in [3].\",\"In older versions of AspectS, there was no support for processspecific advice code [3].\"],\"1770006921\":[\"We start by implementing the example from [2] (chapter Processes, p.\",\"Now we adapt and implement the above mentioned example from [2].\"],\"1992443356\":[\"One of our goals is having a flexible and extensible platform for further exploring our notion of Context-oriented Programming (COP, [ 6 ]).\"],\"2172147300\":[\"Please note that what is commonly called a thread in many other popular object-oriented programming languages such as Java is called a process in Squeak/Smalltalk [4].\"],\"2782959840\":[\"AspectS uses Method Wrappers [1] to instrument both message sends and receptions.\"]},\"PR\":[1491095550,2088018252,1582123168,1615603009,1992443356,2032415879,2480195817,809478716,2337355845,2077023139,2611250433,2183658160,1604228562,2022741629,2792688720,2277494880,1925301041,11039709,1491095550,2088018252,1582123168,1615603009,1992443356,2032415879,2480195817,809478716,2337355845,2077023139,2611250433,2183658160,1604228562,2022741629,2792688720,2277494880,1925301041,11039709],\"ANF\":[{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":1},{\"FN\":\"Pascal\",\"LN\":\"Costanza\",\"S\":2}],\"BT\":\"a\"}"},{"logprob":-21.093,"Id":2082214861,"Ty":"0","Ti":"proceedings of the 11th annual international conference on aspect oriented software development companion","Pt":"3","Y":2012,"D":"2012-03-25","CC":2,"ECC":2,"W":["11th","annual","aspect","companion","conference","development","international","oriented","proceedings","software"],"AA":[{"DAuN":"Michael Haupt","AuN":"michael haupt","AuId":2146662369,"DAfN":"Oracle Corporation","AfN":"oracle corporation","AfId":1342911587,"S":1},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":2},{"DAuN":"Éric Tanter","AuN":"eric tanter","AuId":256576233,"DAfN":"University of Chile","AfN":"university of chile","AfId":69737025,"S":3},{"DAuN":"Kevin J. Sullivan","AuN":"kevin j sullivan","AuId":2126702569,"DAfN":"University of Virginia","AfN":"university of virginia","AfId":51556381,"S":4},{"DAuN":"Richard P. Gabriel","AuN":"richard p gabriel","AuId":2509970008,"DAfN":"IBM","AfN":"ibm","AfId":1341412227,"S":5}],"F":[{"DFN":"System lifecycle","FN":"system lifecycle","FId":35280785},{"DFN":"Software engineering","FN":"software engineering","FId":115903868},{"DFN":"Software design","FN":"software design","FId":52913732},{"DFN":"Separation of concerns","FN":"separation of concerns","FId":76214141},{"DFN":"Scientific method","FN":"scientific method","FId":63830546},{"DFN":"Rigour","FN":"rigour","FId":71008984},{"DFN":"Programming language","FN":"programming language","FId":199360897},{"DFN":"Modularity","FN":"modularity","FId":100648641},{"DFN":"Data science","FN":"data science","FId":2522767166},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"CLARITY","FN":"clarity","FId":2777146004},{"DFN":"Aspect-oriented software development","FN":"aspect oriented software development","FId":2776240610}],"C":{"CN":"aosd","CId":1194005070},"E":"{\"DN\":\"Proceedings of the 11th annual international conference on Aspect-oriented Software Development Companion\",\"IA\":{\"IndexLength\":519,\"InvertedIndex\":{\"It\":[0],\"is\":[1,25],\"our\":[2],\"great\":[3],\"pleasure\":[4],\"to\":[5,8,69,77,91,135,138,204,225,290,294,361,506,514],\"welcome\":[6],\"you\":[7],\"Modularity:\":[9,23,169],\"aosd.12,\":[10],\"the\":[11,26,38,42,50,56,59,72,75,103,115,155,188,219,226,235,295,304,371,406,445,491,494,498],\"premiere\":[12],\"international\":[13,29,116],\"research\":[14,119,248,256,317,325],\"conference\":[15,30,43,60,67,171],\"on\":[16,31,191,480],\"modularity\":[17,150],\"in\":[18,40,55,64,110,149,154,196,232,243,253,288,301,312,322,359,391,405,516],\"software\":[19,126,207],\"and\":[20,37,84,97,105,107,121,129,140,144,161,178,193,209,215,260,266,272,283,329,335,350,354,412,423,462,473,496,500,512],\"software-intensive\":[21],\"systems.\":[22,518],\"aosd.12\":[24,170],\"11th\":[27],\"annual\":[28],\"Aspect\":[32],\"Oriented\":[33],\"Software\":[34],\"Development\":[35],\"(AOSD),\":[36],\"first\":[39],\"which\":[41,429,441],\"committee\":[44,388],\"will\":[45,478,486,502],\"give\":[46],\"an\":[47],\"award\":[48],\"for\":[49,343,379,381,410,421,454,456,493],\"most\":[51],\"influential\":[52],\"paper\":[53,399],\"published\":[54],\"Proceedings\":[57],\"of\":[58,71,74,81,86,99,187,239,246,255,262,268,274,281,286,308,315,324,331,337,352,357,428,440,464,490],\"10\":[61,437],\"years\":[62],\"ago:\":[63],\"2002.\\r\\n\\r\\nThis\":[65],\"year's\":[66],\"continues\":[68],\"broaden\":[70],\"scope\":[73],\"field\":[76],\"address\":[78],\"all\":[79,427],\"aspects\":[80],\"modularity,\":[82,100],\"abstraction,\":[83],\"separation\":[85],\"concerns\":[87],\"as\":[88,151,153],\"they\":[89],\"pertain\":[90],\"software,\":[92],\"including\":[93],\"new\":[94,194],\"forms,\":[95],\"uses,\":[96],\"analysis\":[98],\"along\":[101],\"with\":[102,132,146,234,303],\"costs\":[104],\"benefits,\":[106],\"tradeoffs\":[108],\"involved\":[109],\"their\":[111],\"application.\":[112],\"Modularity\":[113,179,296],\"provides\":[114],\"computer\":[117,130],\"science\":[118],\"community\":[120],\"its\":[122],\"many\":[123],\"sub-disciplines\":[124],\"(including\":[125],\"engineering,\":[127,210],\"languages,\":[128,156,212],\"systems)\":[131],\"unique\":[133],\"opportunities\":[134],\"come\":[136],\"together\":[137],\"share\":[139],\"discuss\":[141],\"perspectives,\":[142],\"results,\":[143,341],\"visions\":[145],\"others\":[147],\"interested\":[148],\"well\":[152],\"development\":[157],\"methods,\":[158],\"architectures,\":[159],\"algorithms,\":[160],\"other\":[162,216],\"technologies\":[163],\"organized\":[164],\"around\":[165],\"this\":[166],\"fundamental\":[167],\"concept.\\r\\n\\r\\nThe\":[168],\"comprises\":[172],\"two\":[173],\"main\":[174],\"events:\":[175],\"Research\":[176,227],\"Results\":[177,228,364,446],\"Visions.\":[180],\"Both\":[181],\"events\":[182],\"invited\":[183,409,420],\"full,\":[184],\"scholarly\":[185],\"papers\":[186,376,390,397,418,451],\"highest\":[189,236,305],\"quality\":[190],\"results\":[192],\"ideas\":[195],\"areas\":[197,217],\"that\":[198],\"include\":[199],\"but\":[200],\"are\":[201,467],\"not\":[202],\"limited\":[203],\"complex\":[205,517],\"systems,\":[206,214],\"design\":[208,271],\"programming\":[211],\"cyber-physical\":[213],\"across\":[218,370],\"whole\":[220],\"system\":[221],\"life\":[222],\"cycle.\\r\\n\\r\\nPapers\":[223],\"submitted\":[224,293],\"track\":[229,298,365,435],\"were\":[230,299,377,419,430,452],\"reviewed\":[231,300,436],\"accordance\":[233,302],\"established\":[237,306],\"standards\":[238,307],\"scientific\":[240,309,316],\"rigor\":[241,310],\"applied\":[242,311],\"peer\":[244,313],\"review\":[245,314],\"putative\":[247],\"results.\":[249],\"Reviewers\":[250,319],\"assessed\":[251,320],\"works\":[252,321],\"terms\":[254,323],\"problem\":[257,326],\"formulations,\":[258,327],\"novelty\":[259,328],\"sophistication\":[261,330],\"proposed\":[263,332],\"solutions,\":[264,333],\"clarity\":[265,334],\"significance\":[267,336],\"hypotheses,\":[269,338],\"proper\":[270],\"execution\":[273],\"experimental\":[275,346],\"or\":[276,347,403],\"analytical\":[277,348],\"assessments,\":[278],\"sound\":[279,344],\"interpretation\":[280,351],\"data,\":[282,353],\"correct\":[284,355],\"characterization\":[285,356],\"work\":[287,358],\"relation\":[289,360],\"existing\":[291,362],\"knowledge.\\r\\n\\r\\nPapers\":[292],\"Visions\":[297,434],\"proposals.\":[318],\"compelling\":[339],\"preliminary\":[340],\"proposals\":[342],\"future\":[345],\"assessments\":[349],\"knowledge.\\r\\n\\r\\nThe\":[363],\"attracted\":[366],\"79\":[367],\"submissions\":[368],\"from\":[369,444],\"world.\":[372],\"Of\":[373,448],\"these,\":[374,449],\"20\":[375],\"accepted\":[378,389,453],\"publication,\":[380],\"a\":[382,413,424,457],\"25%\":[383],\"acceptance\":[384,459],\"rate.\":[385],\"The\":[386,433],\"program\":[387],\"three\":[392,450],\"rounds.\":[393],\"In\":[394],\"each\":[395,398],\"round\":[396],\"was\":[400,442],\"accepted,\":[401],\"rejected,\":[402],\"(except\":[404],\"last\":[407],\"round)\":[408],\"revision\":[411,422],\"second\":[414,425],\"review.\":[415],\"Five\":[416],\"(5)\":[417],\"review,\":[426],\"ultimately\":[431],\"accepted.\":[432],\"papers,\":[438],\"one\":[439],\"referred\":[443],\"track.\":[447],\"publication\":[455],\"30%\":[458],\"rate.\\r\\n\\r\\nOur\":[460],\"keynote\":[461],\"heart\":[463],\"technology\":[465],\"speakers\":[466],\"Lars\":[468,477],\"Bak,\":[469],\"James\":[470],\"O.\":[471],\"Coplien,\":[472],\"Martin\":[474,501],\"C.\":[475],\"Rinard.\":[476],\"report\":[479],\"implementing\":[481],\"language-based\":[482],\"virtual\":[483],\"machines;\":[484],\"Jim\":[485],\"talk\":[487],\"about\":[488],\"objects\":[489],\"people,\":[492,495],\"by\":[497],\"people;\":[499],\"tell\":[503],\"us\":[504],\"what\":[505],\"do\":[507],\"when\":[508],\"things\":[509],\"go\":[510],\"wrong\":[511],\"how\":[513],\"recover\":[515]}},\"S\":[{\"Ty\":0,\"U\":\"http://dl.acm.org/citation.cfm?id=2162110\"}],\"VFN\":\"Aspect-Oriented Software Development\",\"VSN\":\"AOSD\",\"PR\":[2241867293,2768483214,2161319062,2479369740,2345530969,188075664,64622995,1534314577,2130437169,2036271917,153907631,2613753513,2000740078,1012002700,2010760101,2021690092,1717368116,2251212762,2268821792,815110659,2241867293,2768483214,2161319062,2479369740,2345530969,188075664,64622995,1534314577,2130437169,2036271917,153907631,2613753513,2000740078,1012002700,2010760101,2021690092,1717368116,2251212762,2268821792,815110659],\"ANF\":[{\"FN\":\"Michael\",\"LN\":\"Haupt\",\"S\":1},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":2},{\"FN\":\"Éric\",\"LN\":\"Tanter\",\"S\":3},{\"FN\":\"Kevin J.\",\"LN\":\"Sullivan\",\"S\":4},{\"FN\":\"Richard P.\",\"LN\":\"Gabriel\",\"S\":5}],\"BV\":\"AOSD '12 Aspect-oriented Software Development\",\"BT\":\"p\"}"},{"logprob":-21.105,"Id":2027457117,"Ty":"0","Ti":"a context management infrastructure with language integration support","Pt":"0","L":"en","Y":2011,"D":"2011-07-25","CC":9,"ECC":9,"RId":[2138363365,1577783107,2143238865,131217332,2150275961,2622218184,2012173916,2163167025,2090764929,2894705492,564502763,1531374985],"W":["context","infrastructure","integration","language","management","support"],"AA":[{"DAuN":"Tobias Rho","AuN":"tobias rho","AuId":2140223330,"DAfN":"University of Bonn","AfN":"university of bonn","AfId":135140700,"S":1},{"DAuN":"Malte Appeltauer","AuN":"malte appeltauer","AuId":135591984,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":2},{"DAuN":"Stephan Lerche","AuN":"stephan lerche","AuId":2224010944,"DAfN":"University of Bonn","AfN":"university of bonn","AfId":135140700,"S":3},{"DAuN":"Armin B. Cremers","AuN":"armin b cremers","AuId":2098737035,"DAfN":"University of Bonn","AfN":"university of bonn","AfId":135140700,"S":4},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":5}],"F":[{"DFN":"Semantic Web","FN":"semantic web","FId":2129575},{"DFN":"RDF query language","FN":"rdf query language","FId":96956885},{"DFN":"Query language","FN":"query language","FId":192028432},{"DFN":"Natural language processing","FN":"natural language processing","FId":204321447},{"DFN":"Fourth-generation programming language","FN":"fourth generation programming language","FId":145628200},{"DFN":"Data control language","FN":"data control language","FId":32977378},{"DFN":"Context model","FN":"context model","FId":183322885},{"DFN":"Context management","FN":"context management","FId":2776285913},{"DFN":"Context awareness","FN":"context awareness","FId":2781368080},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Artificial intelligence","FN":"artificial intelligence","FId":154945302}],"E":"{\"DN\":\"A context management infrastructure with language integration support\",\"IA\":{\"IndexLength\":134,\"InvertedIndex\":{\"A\":[0],\"range\":[1],\"of\":[2,15,49,72,91,103,130],\"context-management\":[3,60],\"systems\":[4],\"in\":[5],\"the\":[6,10,119,128],\"past\":[7],\"have\":[8],\"motivated\":[9],\"need\":[11],\"for\":[12,25,88,118],\"development\":[13],\"support\":[14],\"context-aware\":[16],\"applications.\":[17],\"They\":[18],\"typically\":[19],\"provide\":[20],\"APIs\":[21],\"and\":[22,81,97,105,126],\"query\":[23,116],\"languages\":[24],\"context\":[26,30,64,107],\"analysis.\":[27],\"Reacting\":[28],\"to\":[29,40,47,75],\"changes,\":[31],\"however,\":[32],\"is\":[33,86],\"either\":[34],\"not\":[35],\"at\":[36],\"all\":[37],\"or\":[38],\"only\":[39],\"a\":[41,50,59,99,110,115],\"limited\":[42],\"extend\":[43],\"supported\":[44],\"by\":[45,69],\"adhering\":[46],\"constraints\":[48],\"framework.\":[51],\"In\":[54],\"this\":[55],\"paper,\":[56],\"we\":[57,113],\"present\":[58,123],\"system\":[61],\"that\":[62],\"combines\":[63],\"reasoning\":[65],\"with\":[66,93],\"context-dependent\":[67],\"behavior\":[68],\"taking\":[70],\"advantage\":[71],\"language\":[73,95],\"approaches\":[74],\"dynamic\":[76],\"adaptation,\":[77],\"such\":[78],\"as\":[79],\"aspect-\":[80],\"context-oriented\":[82],\"programming.\":[83],\"Our\":[84],\"framework\":[85],\"open\":[87],\"different\":[89],\"levels\":[90],\"integration\":[92],\"programming\":[94],\"extensions\":[96],\"offers\":[98],\"dynamic,\":[100],\"strategy-based\":[101],\"aggregation\":[102],\"local\":[104],\"distributed\":[106],\"sources.\":[108],\"As\":[109],\"first\":[111],\"step,\":[112],\"implemented\":[114],\"library\":[117],\"JCop\":[120],\"language.\":[121],\"We\":[122],\"its\":[124],\"API\":[125],\"show\":[127],\"implementation\":[129],\"an\":[131],\"example\":[132],\"application.\":[133]}},\"S\":[{\"Ty\":3,\"U\":\"http://www.hirschfeld.org/writings/media/RhoAppeltauerLercheCremersHirschfeld_2011_AContextManagementInfrastructurWithLanguageIntegrationSupport_AcmDL.pdf\"},{\"Ty\":1,\"U\":\"https://dl.acm.org/citation.cfm?id=2068739\"},{\"Ty\":1,\"U\":\"https://doi.acm.org/10.1145/2068736.2068739\"},{\"Ty\":0,\"U\":\"http://dl.acm.org/citation.cfm?id=2068739\"}],\"VFN\":\"Proceedings of the 3rd International Workshop on Context-Oriented Programming\",\"FP\":3,\"DOI\":\"10.1145/2068736.2068739\",\"CC\":{\"131217332\":[\"We adopted the prefix namespace binding from XML namespaces [8] in order to separate the simple name from a URI and also to distinguish classes and property names in different namespaces.\"],\"564502763\":[\"Additionally, both requests can be combined with an LDAP (Lightweight Directory Access Protocol)[2] filter string to filter context sources via meta-data attached to the context source service.\"],\"1531374985\":[\"The returned triples are added to the factbase and can be queried by later expressions, following logical update semantics [3].\"],\"1577783107\":[\"The context model is described with the help of the Web Ontology Language OWL [9].\"],\"2012173916\":[\"One example is the SOCAM approach [5] by Gu et al.\"],\"2090764929\":[\"Du and Wang developed a programming approach for contextawareness on mobile devices [4] that supports method interception at each state transition, that is, at each entrance and exit of contexts.\"],\"2143238865\":[\"The latter is also the focus of ongoing language design research mainly in the domain of context-oriented [6] and aspectoriented programming [7].\"],\"2150275961\":[\"The latter is also the focus of ongoing language design research mainly in the domain of context-oriented [6] and aspectoriented programming [7].\",\"JCop is a language extension to Java implementing the context-oriented programming approach [6].\"],\"2163167025\":[\"Semantic Space [12] focuses on three main tasks: to provide an explicit representation of the raw context data, to provide the means to acquire contexts via expressive queries and thirdly to provide high-level contexts through reasoning.\"],\"2622218184\":[\", [10]) extend OSGi to a remote framework.\"],\"2894705492\":[\"The prolog engine is based on SWI-Prolog and its semantic-web library [13].\"]},\"PR\":[2335203551,2484866903,2607154206,176870948,832368302,2312945723,2737854826,1557811574,2237223166,2619280494,2625635013,2186087570,2623768292,2295079279,939271655,1881612611,108344277,2244212087,2489483268,26646340,2335203551,2484866903,2607154206,176870948,832368302,2312945723,2737854826,1557811574,2237223166,2619280494,2625635013,2186087570,2623768292,2295079279,939271655,1881612611,108344277,2244212087,2489483268,26646340],\"ANF\":[{\"FN\":\"Tobias\",\"LN\":\"Rho\",\"S\":1},{\"FN\":\"Malte\",\"LN\":\"Appeltauer\",\"S\":2},{\"FN\":\"Stephan\",\"LN\":\"Lerche\",\"S\":3},{\"FN\":\"Armin B.\",\"LN\":\"Cremers\",\"S\":4},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":5}],\"BV\":\"Proceedings of the 3rd International Workshop on Context-Oriented Programming\",\"BT\":\"p\",\"PB\":\"ACM\"}"},{"logprob":-21.123,"Id":2259132812,"Ty":"0","Ti":"lively groups shared behavior in a world of objects without classes or prototypes","Pt":"3","L":"en","Y":2015,"D":"2015-10-26","CC":3,"ECC":3,"RId":[2138363365,2143238865,2161825580,1593874741,1991604845,2150275961,2172147300,2045723688,2173184982,2115534035,1978875190,1964757858,1527077815,2165258104,2024901245,2686043342,2028986965,1982795778,2153895779,2103211722,2006987669,1578048281],"W":["behavior","classes","groups","lively","objects","prototypes","shared","without","world"],"AA":[{"DAuN":"Tim Felgentreff","AuN":"tim felgentreff","AuId":1964871710,"DAfN":"HPI, Germany","S":1},{"DAuN":"Jens Lincke","AuN":"jens lincke","AuId":2055148755,"DAfN":"HPI, Germany","S":2},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"HPI, Germany","S":3},{"DAuN":"Lauritz Thamsen","AuN":"lauritz thamsen","AuId":2228463212,"DAfN":"Technical University of Berlin","AfN":"technical university of berlin","AfId":4577782,"S":4}],"F":[{"DFN":"Web application","FN":"web application","FId":118643609},{"DFN":"Reuse","FN":"reuse","FId":206588197},{"DFN":"Real-time computing","FN":"real time computing","FId":79403827},{"DFN":"One-to-many","FN":"one to many","FId":2780485380},{"DFN":"Multimedia","FN":"multimedia","FId":49774154},{"DFN":"Maintainability","FN":"maintainability","FId":160713754},{"DFN":"Immediacy","FN":"immediacy","FId":2780340563},{"DFN":"Distributed computing","FN":"distributed computing","FId":120314980},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Abstraction","FN":"abstraction","FId":124304363}],"C":{"CN":"splash","CId":1173500908},"CI":{"CIN":"splash 2015","CIId":565825479},"E":"{\"DN\":\"Lively groups: shared behavior in a world of objects without classes or prototypes\",\"IA\":{\"IndexLength\":195,\"InvertedIndex\":{\"Development\":[0],\"environments\":[1],\"which\":[2],\"aim\":[3],\"to\":[4,9,20,61,86,98,128,135,180],\"provide\":[5],\"short\":[6],\"feedback\":[7],\"loops\":[8],\"developers\":[10,144],\"must\":[11,84,108],\"strike\":[12],\"a\":[13,29,46],\"balance\":[14],\"between\":[15,78,102,110],\"immediacy\":[16,191],\"and\":[17,22,53,159,189],\"the\":[18,73,129,172,185,190],\"ability\":[19],\"abstract\":[21,88],\"reuse\":[23],\"behavioral\":[24],\"modules.\":[25],\"The\":[26],\"Lively\":[27,124,134,173],\"Kernel,\":[28],\"self-supporting,\":[30],\"browser-based\":[31],\"environment\":[32],\"for\":[33,51],\"explorative\":[34,175],\"development\":[35,131,176],\"supports\":[36],\"standard\":[37],\"object-oriented\":[38],\"programming\":[39,54],\"with\":[40,66,72],\"classes\":[41],\"or\":[42,97,116],\"prototypes,\":[43],\"but\":[44],\"also\":[45],\"more\":[47],\"immediate,\":[48],\"object-centric\":[49,74,130],\"approach\":[50,170,177],\"modifying\":[52],\"visible\":[55],\"objects\":[56,80,149],\"directly.\":[57],\"This\":[58],\"allows\":[59],\"users\":[60],\"quickly\":[62],\"create\":[63],\"graphical\":[64],\"prototypes\":[65],\"concrete\":[67,112,139,193],\"objects.\":[68,104,140,168,194],\"However,\":[69],\"when\":[70],\"developing\":[71],\"approach,\":[75,143],\"sharing\":[76],\"behavior\":[77,89,152],\"similar\":[79],\"becomes\":[81],\"cumbersome.\":[82],\"Developers\":[83],\"choose\":[85,109],\"either\":[87],\"into\":[90],\"classes,\":[91],\"scatter\":[92],\"code\":[93,101,117],\"across\":[94],\"collaborating\":[95],\"objects,\":[96,182],\"manually\":[99],\"copy\":[100],\"multiple\":[103,138],\"That\":[105],\"is,\":[106],\"they\":[107,165],\"less\":[111],\"development,\":[113],\"reduced\":[114],\"maintainability,\":[115],\"duplication.\":[118],\"In\":[119,141],\"this\":[120],\"paper,\":[121],\"we\":[122],\"propose\":[123],\"Groups,\":[125],\"an\":[126],\"extension\":[127],\"tools\":[132],\"of\":[133,187,192],\"work\":[136],\"on\":[137],\"our\":[142],\"may\":[145],\"dynamically\":[146],\"group\":[147],\"live\":[148],\"that\":[150],\"share\":[151],\"using\":[153],\"tags.\":[154],\"They\":[155],\"can\":[156],\"then\":[157],\"modify\":[158],\"program\":[160],\"such\":[161],\"groups\":[162],\"as\":[163],\"if\":[164],\"were\":[166],\"single\":[167],\"Our\":[169],\"scales\":[171],\"Kernel’s\":[174],\"from\":[178],\"one\":[179],\"many\":[181],\"while\":[183],\"preserving\":[184],\"maintainability\":[186],\"abstractions\":[188]}},\"S\":[{\"Ty\":1,\"U\":\"http://dblp.uni-trier.de/db/conf/oopsla/fpw2015.html#FelgentreffLHT15\"},{\"Ty\":1,\"U\":\"https://doi.acm.org/10.1145/2846656.2846659\"},{\"Ty\":1,\"U\":\"https://dl.acm.org/citation.cfm?id=2846659\"}],\"VFN\":\"ACM conference on Systems, Programming, Languages and Applications: Software for Humanity\",\"VSN\":\"SPLASH\",\"FP\":15,\"LP\":22,\"DOI\":\"10.1145/2846656.2846659\",\"CC\":{\"1527077815\":[\"Notable environments include Self [20], Squeak/Smalltalk [7], Lisp [18], and the Lively Kernel [6, 8], which provide varying degrees of support for immediately seeing ones actions and for developing the system from within itself.\"],\"1578048281\":[\"The first option requires mental effort to find the right decomposition [19], the second option breaks encapsulation [17], while the third reduces maintainability [11].\"],\"1964757858\":[\"Lively’s main characteristics include the integration of design-time and runtime, object-centric development tools, the implementation of the Morphic User Interface Construction Environment [15], and a serialization mechanism to store objects persistently.\"],\"1978875190\":[\"It further supplies a module system that includes classes with single inheritance, traits and context-oriented layers [13].\"],\"1982795778\":[\"Dynamic Text [2] is a tool-based approach that reduces the effects of duplication in scattered code.\"],\"1991604845\":[\"The first option requires mental effort to find the right decomposition [19], the second option breaks encapsulation [17], while the third reduces maintainability [11].\"],\"2006987669\":[\"Notable environments include Self [20], Squeak/Smalltalk [7], Lisp [18], and the Lively Kernel [6, 8], which provide varying degrees of support for immediately seeing ones actions and for developing the system from within itself.\"],\"2024901245\":[\"Finally, Lively’s object serialization enables a Webbased object repository [14], called Parts Bin, into which developers publish their Morphic creations.\"],\"2028986965\":[\"Decomposition along multiple dimensions, as in Aspect- and Context-oriented Programming [5, 10], Traits [3], Mixins [3], and Multiple Inheritance [1] structure independent concerns\"],\"2045723688\":[\"Notable environments include Self [20], Squeak/Smalltalk [7], Lisp [18], and the Lively Kernel [6, 8], which provide varying degrees of support for immediately seeing ones actions and for developing the system from within itself.\",\"As first explored in the Self programming language and environment [21], this directness and livelyness shortens the development cycle [20].\"],\"2115534035\":[\"The first option requires mental effort to find the right decomposition [19], the second option breaks encapsulation [17], while the third reduces maintainability [11].\"],\"2143238865\":[\"Decomposition along multiple dimensions, as in Aspect- and Context-oriented Programming [5, 10], Traits [3], Mixins [3], and Multiple Inheritance [1] structure independent concerns\",\"It is an alternative to Aspect-oriented Programming [10], but deliberately does not resolve tangling as concern implementations are sometimes more understandable in conjunction with base code.\"],\"2150275961\":[\"Decomposition along multiple dimensions, as in Aspect- and Context-oriented Programming [5, 10], Traits [3], Mixins [3], and Multiple Inheritance [1] structure independent concerns\"],\"2153895779\":[\"Notable environments include Self [20], Squeak/Smalltalk [7], Lisp [18], and the Lively Kernel [6, 8], which provide varying degrees of support for immediately seeing ones actions and for developing the system from within itself.\"],\"2161825580\":[\"This impedes code comprehension as it trades Modular Understandability [16] for code re-use.\"],\"2165258104\":[\"Prototype-based Inheritance [22] is an approach to shared behavior, in which objects inherit attributes and functions directly from other objects.\"],\"2172147300\":[\"Notable environments include Self [20], Squeak/Smalltalk [7], Lisp [18], and the Lively Kernel [6, 8], which provide varying degrees of support for immediately seeing ones actions and for developing the system from within itself.\"],\"2173184982\":[\"Decomposition along multiple dimensions, as in Aspect- and Context-oriented Programming [5, 10], Traits [3], Mixins [3], and Multiple Inheritance [1] structure independent concerns\"]},\"PR\":[2560397142,2810428238,1527774731,1000447742,2551618779,1031839398,2295835979,8339670,166160557,2327180618,1803650737,1854987074,104889146,1488940412,2309248140,1602469780,2404621744,2246798467,412001415,2269395837,2560397142,2810428238,1527774731,1000447742,2551618779,1031839398,2295835979,8339670,166160557,2327180618,1803650737,1854987074,104889146,1488940412,2309248140,1602469780,2404621744,2246798467,412001415,2269395837],\"ANF\":[{\"FN\":\"Tim\",\"LN\":\"Felgentreff\",\"S\":1},{\"FN\":\"Jens\",\"LN\":\"Lincke\",\"S\":2},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":3},{\"FN\":\"Lauritz\",\"LN\":\"Thamsen\",\"S\":4}],\"BV\":\"Proceedings of the Workshop on Future Programming\",\"BT\":\"p\",\"PB\":\"ACM\"}"},{"logprob":-21.132,"Id":2103211722,"Ty":"0","Ti":"scoping changes in self supporting development environments using context oriented programming","Pt":"0","L":"en","Y":2012,"D":"2012-06-11","CC":9,"ECC":9,"RId":[76411190,2150275961,2172147300,2045723688,1992443356,1587166076,1809480526,2144114063,1978875190,1964757858,2782959840,1527077815,2150930786,84194245,2053729218,2032415879,2024901245,2106193618,2067307118,134605866,2053452086,46244955],"W":["changes","context","development","environments","oriented","programming","scoping","self","supporting"],"AA":[{"DAuN":"Jens Lincke","AuN":"jens lincke","AuId":2055148755,"DAfN":"Hasso-Plattner-Institut, Universität Potsdam, Germany","S":1},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"Hasso-Plattner-Institut, Universität Potsdam, Germany","S":2}],"F":[{"DFN":"Structural change","FN":"structural change","FId":49271019},{"DFN":"Smalltalk","FN":"smalltalk","FId":2777293101},{"DFN":"Reactive programming","FN":"reactive programming","FId":150762246},{"DFN":"Programming paradigm","FN":"programming paradigm","FId":34165917},{"DFN":"Programming domain","FN":"programming domain","FId":119263510},{"DFN":"Procedural programming","FN":"procedural programming","FId":120558287},{"DFN":"JavaScript","FN":"javascript","FId":544833334},{"DFN":"Inductive programming","FN":"inductive programming","FId":50033165},{"DFN":"Distributed computing","FN":"distributed computing","FId":120314980},{"DFN":"Computer science","FN":"computer science","FId":41008148}],"E":"{\"DN\":\"Scoping changes in self-supporting development environments using context-oriented programming\",\"IA\":{\"IndexLength\":138,\"InvertedIndex\":{\"Interactive\":[0],\"development\":[1,17,127],\"in\":[2,124],\"self-supporting\":[3,126],\"systems\":[4],\"like\":[5],\"Smalltalk\":[6],\"or\":[7],\"the\":[8,21,36,42,45,59,80,110],\"Lively\":[9],\"Kernel\":[10],\"allows\":[11],\"for\":[12,136],\"an\":[13],\"explorative\":[14],\"and\":[15,23],\"direct\":[16,24],\"workflow.\":[18],\"Because\":[19],\"of\":[20,61,85,96,120],\"immediate\":[22],\"feedback\":[25],\"loops,\":[26],\"changes\":[27,89,106],\"to\":[28,33,76],\"core\":[29,122],\"behavior\":[30,123],\"can\":[31,54,73,101],\"lead\":[32],\"accidentally\":[34],\"breaking\":[35],\"programming\":[37,71,111],\"tools\":[38,43,78],\"themselves.\":[39],\"By\":[40],\"separating\":[41],\"from\":[44,79],\"objects\":[46,81],\"they\":[47],\"work\":[48],\"on,\":[49],\"this\":[50,65,115],\"fatal\":[51],\"self\":[52],\"referentiality\":[53],\"be\":[55,74,102],\"avoided,\":[56],\"but\":[57],\"at\":[58,104],\"expense\":[60],\"interactive\":[62],\"development.\":[63,83],\"In\":[64],\"paper\":[66],\"we\":[67],\"show\":[68],\"how\":[69],\"context-oriented\":[70],\"(COP)\":[72],\"used\":[75],\"separate\":[77],\"under\":[82],\"Instead\":[84],\"directly\":[86],\"modifying\":[87],\"meta-structures,\":[88],\"should\":[90],\"go\":[91],\"into\":[92],\"layers\":[93,100],\"on\":[94],\"top\":[95],\"these\":[97],\"structures.\":[98],\"Since\":[99],\"scoped\":[103],\"run-time,\":[105],\"do\":[107],\"not\":[108],\"affect\":[109],\"tools.\":[112],\"We\":[113],\"demonstrate\":[114],\"approach\":[116],\"by\":[117],\"showing\":[118],\"examples\":[119],\"adapting\":[121],\"our\":[125,133],\"environment\":[128],\"Webwerkstatt\":[129],\"with\":[130],\"Context\":[131],\"JS,\":[132],\"COP\":[134],\"extension\":[135],\"JavaScript.\":[137]}},\"S\":[{\"Ty\":3,\"U\":\"http://www.hirschfeld.org/writings/media/LinckeHirschfeld_2012_ScopingChangesInSelfSupportingDevelopmentEnvironmentsUsingContextOrientedProgramming_AcmDL.pdf\"},{\"Ty\":1,\"U\":\"https://doi.acm.org/10.1145/2307436.2307438\"},{\"Ty\":1,\"U\":\"https://dl.acm.org/citation.cfm?id=2307438\"}],\"VFN\":\"Proceedings of the International Workshop on Context-Oriented Programming\",\"FP\":2,\"DOI\":\"10.1145/2307436.2307438\",\"CC\":{\"84194245\":[\"Self-supporting development environments such as Smalltalk [6], Self [18], Emacs [17], Squeak [9], and Lively Kernel [10] are systems where developers can evolve their environment while they are using it.\",\"Figure 1 shows a very abstract overview of self-supporting development environments [8] such as Squeak [9] and Lively Kernel [10].\"],\"134605866\":[\"Development Environments such as Eclipse [5] fit into such a scenario as depicted in Figure 2.\"],\"1527077815\":[\"Self-supporting development environments such as Smalltalk [6], Self [18], Emacs [17], Squeak [9], and Lively Kernel [10] are systems where developers can evolve their environment while they are using it.\",\"Figure 1 shows a very abstract overview of self-supporting development environments [8] such as Squeak [9] and Lively Kernel [10].\"],\"1587166076\":[\"Self-supporting development environments such as Smalltalk [6], Self [18], Emacs [17], Squeak [9], and Lively Kernel [10] are systems where developers can evolve their environment while they are using it.\"],\"1964757858\":[\"but a domain-specific scoping mechanism introduced by the Morphic [15] framework used for Lively Kernel.\"],\"1978875190\":[\"In the following examples, we use ContextJS [12, 13, 11], our library-based COP extension to JavaScript.\",\"Other scoping mechanisms such object specific and structural scoping [12] are better suited to activate the new behavior.\"],\"1992443356\":[\"We used context-oriented programming [3, 7] as an approach for scoping behavioral adaptations at run-time.\"],\"2032415879\":[\"The problem of breaking tools during the development of interface code was explicitly mentioned as an application of perspectives in the subjective programming language Us [16].\"],\"2045723688\":[\"Self-supporting development environments such as Smalltalk [6], Self [18], Emacs [17], Squeak [9], and Lively Kernel [10] are systems where developers can evolve their environment while they are using it.\",\"Us changes message passing of Self [18] to incorporate perspectives on layers.\"],\"2053452086\":[\"In the following examples, we use ContextJS [12, 13, 11], our library-based COP extension to JavaScript.\"],\"2144114063\":[\"For an overview of existing COP implementation in various languages see [1].\"],\"2150275961\":[\"We used context-oriented programming [3, 7] as an approach for scoping behavioral adaptations at run-time.\"],\"2782959840\":[\"ContextJS is a JavaScript library and implemented with method wrappers [2].\"]},\"PR\":[2150275961,2172147300,1527077815,1964757858,1978875190,2024901245,2045723688,2144114063,2040040157,2795148395,2182912278,2069558257,2438446894,2337914944,2576360137,1992906090,2602532206,2562621343,2197615980,2182619624,2150275961,2172147300,1527077815,1964757858,1978875190,2024901245,2045723688,2144114063,2040040157,2795148395,2182912278,2069558257,2438446894,2337914944,2576360137,1992906090,2602532206,2562621343,2197615980,2182619624],\"ANF\":[{\"FN\":\"Jens\",\"LN\":\"Lincke\",\"S\":1},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":2}],\"BV\":\"Proceedings of the International Workshop on Context-Oriented Programming\",\"BT\":\"p\",\"PB\":\"ACM\"}"},{"logprob":-21.133,"Id":2088772524,"Ty":"0","Ti":"the som family virtual machines for teaching and research","Pt":"3","L":"en","Y":2010,"D":"2010-06-26","CC":12,"ECC":12,"RId":[1501652040,1770006921,1480157704,1583464938,2102839400,2146766856,2343398847,2058213389,1587738184,2131062488,2339802588,1553005758,1997470409,2157977745,1572402249,2102647880,2125813862],"W":["family","machines","research","som","teaching","virtual"],"AA":[{"DAuN":"Michael Haupt","AuN":"michael haupt","AuId":2146662369,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":1},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":2},{"DAuN":"Tobias Pape","AuN":"tobias pape","AuId":2114920648,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":3},{"DAuN":"Gregor Gabrysiak","AuN":"gregor gabrysiak","AuId":688069449,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":4},{"DAuN":"Stefan Marr","AuN":"stefan marr","AuId":2149908842,"DAfN":"Vrije Universiteit Brussel","AfN":"vrije universiteit brussel","AfId":13469542,"S":5},{"DAuN":"Arne Bergmann","AuN":"arne bergmann","AuId":2102817079,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":6},{"DAuN":"Arvid Heise","AuN":"arvid heise","AuId":2045630383,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":7},{"DAuN":"Matthias Kleine","AuN":"matthias kleine","AuId":2709803390,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":8},{"DAuN":"Robert Krahn","AuN":"robert krahn","AuId":1836152203,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":9}],"F":[{"DFN":"Virtual machine","FN":"virtual machine","FId":25344961},{"DFN":"Smalltalk","FN":"smalltalk","FId":2777293101},{"DFN":"Programming language","FN":"programming language","FId":199360897},{"DFN":"Port (computer networking)","FN":"port","FId":158025753},{"DFN":"Multimedia","FN":"multimedia","FId":49774154},{"DFN":"Java","FN":"java","FId":548217200},{"DFN":"Implementation","FN":"implementation","FId":26713055},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Computer architecture","FN":"computer architecture","FId":118524514},{"DFN":"Architecture","FN":"architecture","FId":123657996}],"C":{"CN":"iticse","CId":1167012292},"CI":{"CIN":"iticse 2010","CIId":28015445},"E":"{\"DN\":\"The SOM family: virtual machines for teaching and research\",\"IA\":{\"IndexLength\":93,\"InvertedIndex\":{\"This\":[0],\"paper\":[1,73],\"introduces\":[2],\"the\":[3,19,38,63,75,80],\"SOM\":[4,81],\"(Simple\":[5],\"Object\":[6],\"Machine)\":[7],\"family\":[8],\"of\":[9,16,28,37,79],\"virtual\":[10],\"machine\":[11],\"(VM)\":[12],\"implementations,\":[13],\"a\":[14,32],\"collection\":[15],\"VMs\":[17,64,82],\"for\":[18],\"same\":[20],\"Smalltalk\":[21],\"dialect\":[22],\"addressing\":[23],\"students\":[24],\"at\":[25,54],\"different\":[26,41],\"levels\":[27,59],\"expertise.\":[29],\"Starting\":[30],\"from\":[31],\"Java-based\":[33],\"implementation,\":[34],\"several\":[35],\"ports\":[36],\"VM\":[39],\"to\":[40,49],\"programming\":[42],\"languages\":[43],\"have\":[44,65,86],\"been\":[45,66,87],\"developed\":[46],\"and\":[47,57,83,91],\"put\":[48],\"successful\":[50],\"use\":[51],\"in\":[52,68,89],\"teaching\":[53,90],\"both\":[55],\"undergraduate\":[56],\"graduate\":[58],\"since\":[60],\"2006.\":[61],\"Moreover,\":[62],\"used\":[67],\"various\":[69],\"research\":[70],\"projects.\":[71],\"The\":[72],\"documents\":[74],\"rationale\":[76],\"behind\":[77],\"each\":[78],\"results\":[84],\"that\":[85],\"achieved\":[88],\"research.\":[92]}},\"S\":[{\"Ty\":0,\"U\":\"http://dblp.uni-trier.de/db/conf/iticse/iticse2010.html#HauptHPGMBHKK10\"},{\"Ty\":1,\"U\":\"https://dl.acm.org/citation.cfm?id=1822098\"},{\"Ty\":1,\"U\":\"https://doi.acm.org/10.1145/1822090.1822098\"},{\"Ty\":1,\"U\":\"http://portal.acm.org/citation.cfm?doid=1822090.1822098\"},{\"Ty\":0,\"U\":\"http://dl.acm.org/citation.cfm?id=1822098\"}],\"VFN\":\"Integrating Technology into Computer Science Education\",\"VSN\":\"ITiCSE\",\"FP\":18,\"LP\":22,\"DOI\":\"10.1145/1822090.1822098\",\"CC\":{\"1480157704\":[\"This part of the lecture builds on chapter 1 of Smith and Nair’s book on VMs [ 11 ].\"],\"1501652040\":[\"CSOM/PL is a post-doctoral research project, providing a VM product line [ 6 ], i.e., it is possible to choose among various features to build a customised variant of CSOM.\"],\"1553005758\":[\"Other approaches tailored to teaching VMs are Javy [8] and Jack [ 14 ].\"],\"1997470409\":[\"SomActors++ is an experiment conducted as part of a doctoral research project concerned with providing VM abstractions for concurrency [ 13 ].\"],\"2058213389\":[\"On the other hand, AweSOM is a first step in a larger research context, inspired by the PyPy 8 project [ 16 ], a metacircular Python implementation.\"],\"2125813862\":[\"NXTalk 9 [ 3 ] is a Smalltalk programming environment for the Lego Mindstorms NXT 10 platform.\"],\"2131062488\":[\"Inspired by work on an actors-based execution model [18], SOM++ was adapted to implement concurrency using actors [ 10 ].\"],\"2157977745\":[\"Based on the observation that VM implementations tend to be complex, leading to a high degree of entanglement between logical modules, an aspect-oriented approach was chosen to enhance the modularity characteristics of CSOM [ 9 ].\"]},\"PR\":[1770006921,2058213389,2091228796,2094269821,2141293928,2189182199,2079943192,192823465,2596942423,591917463,2344845434,2805666250,2181857121,2294050786,2892329126,2060177802,1516150409,66617153,2486654565,2482340821,1770006921,2058213389,2091228796,2094269821,2141293928,2189182199,2079943192,192823465,2596942423,591917463,2344845434,2805666250,2181857121,2294050786,2892329126,2060177802,1516150409,66617153,2486654565,2482340821],\"ANF\":[{\"FN\":\"Michael\",\"LN\":\"Haupt\",\"S\":1},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":2},{\"FN\":\"Tobias\",\"LN\":\"Pape\",\"S\":3},{\"FN\":\"Gregor\",\"LN\":\"Gabrysiak\",\"S\":4},{\"FN\":\"Stefan\",\"LN\":\"Marr\",\"S\":5},{\"FN\":\"Arne\",\"LN\":\"Bergmann\",\"S\":6},{\"FN\":\"Arvid\",\"LN\":\"Heise\",\"S\":7},{\"FN\":\"Matthias\",\"LN\":\"Kleine\",\"S\":8},{\"FN\":\"Robert\",\"LN\":\"Krahn\",\"S\":9}],\"BV\":\"Proceedings of the fifteenth annual conference on Innovation and technology in computer science education\",\"BT\":\"p\",\"PB\":\"ACM\"}"},{"logprob":-21.137,"Id":2342444439,"Ty":"0","Ti":"babelsberg specifying and solving constraints on object behavior","Pt":"0","Y":2014,"D":"2014-01-01","CC":5,"ECC":5,"RId":[2138363365,1480909796,2084944215,2143238865,1578785003,1519503479,2123396057,2142423074,2065131671,2432221968,2060498389,2339376177,2073536284,2058213389,2058639022,2115261880,89793969,140117226,1964412230,2165247635,2142406085,2126060880,2010448353,2126647275,30151932,2403131032,1606487221,2012072241,2024901245,2158148130,2044171718,2110382134,1993337337,128046928,2107596222,2144171313,2103729840,2085158159,1518554892,2139272205],"W":["babelsberg","behavior","constraints","object","solving","specifying"],"AA":[{"DAuN":"Tim Felgentre","AuN":"tim felgentre","AuId":2343212632,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":1},{"DAuN":"Alan Borning","AuN":"alan borning","AuId":2020136591,"S":2},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"S":3}],"F":[{"DFN":"Virtual machine","FN":"virtual machine","FId":25344961},{"DFN":"Theoretical computer science","FN":"theoretical computer science","FId":80444323},{"DFN":"Semantics","FN":"semantics","FId":124246873},{"DFN":"Imperative programming","FN":"imperative programming","FId":90871949},{"DFN":"Graphics","FN":"graphics","FId":21442007},{"DFN":"Declarative programming","FN":"declarative programming","FId":146206909},{"DFN":"Constraint programming","FN":"constraint programming","FId":173404611},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Architecture","FN":"architecture","FId":123657996},{"DFN":"Abstraction","FN":"abstraction","FId":124304363}],"E":"{\"DN\":\"Babelsberg: Specifying and Solving Constraints on Object Behavior\",\"IA\":{\"IndexLength\":296,\"InvertedIndex\":{\"Constraints\":[0],\"allow\":[1],\"developers\":[2],\"to\":[3,31,101,112,153,157,165,168,229],\"specify\":[4],\"desired\":[5],\"properties\":[6,17],\"of\":[7,12,57,87,181,198,236,273],\"systems\":[8],\"in\":[9,23,93,115,172,233,263,270],\"a\":[10,54,120,191,234,244,251,271],\"number\":[11],\"domains,\":[13,275],\"and\":[14,33,79,131,142,155,287,292],\"have\":[15],\"those\":[16],\"be\":[18,113],\"maintained\":[19],\"automatically.\":[20],\"This\":[21,84],\"results\":[22,180],\"compact,\":[24],\"declarative\":[25,141],\"code,\":[26],\"avoiding\":[27],\"scat-\":[28],\"tered\":[29],\"code\":[30,91,200],\"check\":[32],\"imperatively\":[34],\"re-satisfy\":[35],\"invariants.\":[36],\"Despite\":[37],\"these\":[38],\"advantages,\":[39],\"constraint\":[40,61,225,249],\"programming\":[41,48],\"is\":[42,53,150,187,203],\"not\":[43,73],\"yet\":[44],\"widespread,\":[45],\"with\":[46,64,207,214,231,284],\"imperative\":[47,66,143],\"still\":[49],\"the\":[50,65,75,127,179,215],\"norm.\":[51],\"There\":[52],\"long\":[55],\"history\":[56],\"research\":[58],\"on\":[59,178,290],\"integrating\":[60],\"program-\":[62],\"ming\":[63],\"paradigm.\":[67,104],\"However,\":[68],\"this\":[69],\"integration\":[70],\"typically\":[71,208],\"does\":[72],\"unify\":[74],\"constructs\":[76,128],\"for\":[77,129,139,222,254],\"encapsulation\":[78,130],\"abstraction\":[80,132],\"from\":[81],\"both\":[82,116,140,285],\"paradigms.\":[83,117],\"impedes\":[85],\"re-use\":[86],\"modules,\":[88],\"as\":[89],\"client\":[90],\"written\":[92,100,262],\"one\":[94],\"paradigm\":[95],\"can\":[96],\"only\":[97,135,204],\"use\":[98,268],\"modules\":[99],\"support\":[102,158],\"that\":[103,125,240],\"Modules\":[105],\"require\":[106],\"redundant\":[107],\"definitions\":[108,138],\"if\":[109],\"they\":[110],\"are\":[111],\"used\":[114],\"We\":[118,238,257],\"present\":[119],\"language\":[121],\"-\":[122,124,147,149],\"Babelsberg\":[123,228],\"unifies\":[126],\"by\":[133,175,189],\"using\":[134],\"object-oriented\":[136,160,183,255],\"method\":[137],\"code.\":[144],\"Our\":[145],\"prototype\":[146],\"Babelsberg/R\":[148],\"an\":[151],\"extension\":[152],\"Ruby,\":[154],\"continues\":[156],\"Ruby's\":[159],\"semantics.\":[161],\"It\":[162,186],\"allows\":[163,227],\"programmers\":[164],\"add\":[166],\"constraints\":[167,202,232,269,289],\"existing\":[169],\"Ruby\":[170,193,199],\"programs\":[171],\"incremental\":[173],\"steps\":[174],\"placing\":[176],\"them\":[177],\"normal\":[182],\"message\":[184],\"sends.\":[185],\"implemented\":[188],\"modifying\":[190],\"state-of-the-art\":[192],\"virtual\":[194,217],\"machine.\":[195,218],\"The\":[196],\"performance\":[197],\"without\":[201],\"modestly\":[205],\"impacted,\":[206],\"less\":[209],\"than\":[210],\"10%\":[211],\"overhead\":[212],\"compared\":[213],\"unmodified\":[216],\"Furthermore,\":[219],\"our\":[220,241,264],\"architecture\":[221],\"adding\":[223],\"multiple\":[224],\"solvers\":[226],\"deal\":[230],\"variety\":[235,272],\"domains.\":[237],\"argue\":[239],\"approach\":[242],\"provides\":[243],\"useful\":[245,252],\"step\":[246],\"toward\":[247],\"making\":[248],\"solving\":[250],\"tool\":[253],\"programmers.\":[256],\"also\":[258],\"provide\":[259],\"example\":[260],\"applications,\":[261],\"Ruby-based\":[265],\"implementation,\":[266],\"which\":[267],\"application\":[274],\"including\":[276],\"inter-\":[277],\"active\":[278],\"graphics,\":[279],\"circuit\":[280],\"simulations,\":[281],\"data\":[282],\"streaming\":[283],\"hard\":[286],\"soft\":[288],\"performance,\":[291],\"configuration\":[293],\"file\":[294],\"management.\":[295]}},\"S\":[{\"Ty\":3,\"U\":\"http://www.vpri.org/pdf/tr2013001_babelsberg.pdf\"},{\"Ty\":3,\"U\":\"http://www.jot.fm/issues/issue_2014_09/article1.pdf\"},{\"Ty\":3,\"U\":\"https://publishup.uni-potsdam.de/opus4-ubp/files/6794/tbhpi81.pdf\"},{\"Ty\":3,\"U\":\"http://www.hirschfeld.org/writings/media/FelgentreffBorningHirschfeld_2013_BabelsbergSpecifyingAndSolvingConstraintsOnObjectBehavior_HPI81_VPRI2013001.pdf\"},{\"Ty\":3,\"U\":\"http://homes.cs.washington.edu/~borning/papers/felgentreff-jot-2014.pdf\"}],\"VFN\":\"\",\"CC\":{\"1518554892\":[\"The first version of Kaleidoscope, Kaleidoscope’90 [14], used a refinement model, in which variables held a stream of values, related to each other by constraints.\"],\"1606487221\":[\"Examples of such dsls are css [21], the Mac OS X [1] layout specification language (which uses Cassowary to solve the constraints), and the Python GUI framework Enaml [11].\"],\"1964412230\":[\"For the latter case, programmers typically write assertions to fail early if these constraints are unexpectedly not satisfied [31].\"],\"1993337337\":[\"Solvers for use in interactive graphics systems include Cassowary [2], an incremental solver for linear equality and inequality constraints that supports soft constraints as well as hard ones, the Aukland Layout Editor [26], which includes support for a GUI builder using constraints, and earlier work on DeltaBlue [16], which supports multi-way local propagation constraints and soft constraints.\"],\"2010448353\":[\"An annotation in the vm [3] allows the jit to remove this test when there are no constraints on variables in the loop, but in Binarytrees, we do not generate machine code for a large part of the code (due to its recursive nature), and the test incurs some overhead.\"],\"2024901245\":[\"Examples of such systems are Scratch [29], LivelyKernel/Webwerkstatt [22], and KScript [27].\"],\"2058213389\":[\"Going now into more detail, the Ruby vm we use as a basis for Babelsberg/R is Topaz [12], an experimental vm built using the PyPy/RPython toolchain [30].\"],\"2058639022\":[\"Instance and class variables are stored in an array and Topaz uses map transitions [7] to access them efficiently.\"],\"2060498389\":[\"One of the most widely known of these approaches evolved from logic programming, for example the Constraint Logic Programming scheme [19] and instances of this scheme such as CLP(R) [20] (which provides constraints over real numbers).\"],\"2073536284\":[\"Solvers for use in interactive graphics systems include Cassowary [2], an incremental solver for linear equality and inequality constraints that supports soft constraints as well as hard ones, the Aukland Layout Editor [26], which includes support for a GUI builder using constraints, and earlier work on DeltaBlue [16], which supports multi-way local propagation constraints and soft constraints.\",\"0] always { a[0] == 10 } always { a[2] == 20 } always { a.\"],\"2084944215\":[\"Examples of such systems are Scratch [29], LivelyKernel/Webwerkstatt [22], and KScript [27].\"],\"2085158159\":[\"With these goals, Babelsberg follows the work by Freeman-Benson, Lopaz, and Borning on constraint imperative programming (cip) [15, 23, 24, 25] and the Kaleidoscope language.\",\", Kaleidoscope’93) [23, 24] switched to a perturbation model, in which destructive assignment can change the state of objects (perhaps making previously satisfied constraints unsatisfied), and the system perturbs or adjusts values to reach a new state that best satisfies the constraints.\"],\"2103729840\":[\"With these goals, Babelsberg follows the work by Freeman-Benson, Lopaz, and Borning on constraint imperative programming (cip) [15, 23, 24, 25] and the Kaleidoscope language.\",\"Toward answering the first question, we used an example from [25] and adapted it to Babelsberg/R.\",\"1: Interactive thermometer example from [25]\"],\"2107596222\":[\"Systems related to Kaleidoscope include Siri [18], Turtle [17], and Soul [10].\"],\"2110382134\":[\"BackTalk [32] is another system that aims to integrate a rich set of constraint solvers with imperative languages, but without syntactic integration.\"],\"2126060880\":[\"Object-oriented Performance For imperative code performance, we ran a number of tests from the metatracing vms experiment [4] against the unmodified Topaz Ruby vm and the JRuby vm.\"],\"2139272205\":[\"With these goals, Babelsberg follows the work by Freeman-Benson, Lopaz, and Borning on constraint imperative programming (cip) [15, 23, 24, 25] and the Kaleidoscope language.\",\", Kaleidoscope’93) [23, 24] switched to a perturbation model, in which destructive assignment can change the state of objects (perhaps making previously satisfied constraints unsatisfied), and the system perturbs or adjusts values to reach a new state that best satisfies the constraints.\"],\"2142423074\":[\"Other languages of this kind include Concurrent Constraint Programming [34].\"],\"2144171313\":[\"Solvers for use in interactive graphics systems include Cassowary [2], an incremental solver for linear equality and inequality constraints that supports soft constraints as well as hard ones, the Aukland Layout Editor [26], which includes support for a GUI builder using constraints, and earlier work on DeltaBlue [16], which supports multi-way local propagation constraints and soft constraints.\"],\"2158148130\":[\"With these goals, Babelsberg follows the work by Freeman-Benson, Lopaz, and Borning on constraint imperative programming (cip) [15, 23, 24, 25] and the Kaleidoscope language.\"],\"2165247635\":[\"For example, in Plan B, Samimi, Aung, and Millstein [33] use specifications as “reliable alternatives” to implementations, so that if an assertion fails, the system can use the specification as input to a constraint solver and continue execution.\"],\"2432221968\":[\"One of the most widely known of these approaches evolved from logic programming, for example the Constraint Logic Programming scheme [19] and instances of this scheme such as CLP(R) [20] (which provides constraints over real numbers).\"]},\"PR\":[1902828588,2783351471,2522278925,2156325431,331197602,1907975057,2343228981,1550290215,2098794871,1598444799,1545575795,2016444786,1798715089,2295004739,2277635278,1998596609,2203630088,2032988652,1525384803,2139576973,1902828588,2783351471,2522278925,2156325431,331197602,1907975057,2343228981,1550290215,2098794871,1598444799,1545575795,2016444786,1798715089,2295004739,2277635278,1998596609,2203630088,2032988652,1525384803,2139576973],\"ANF\":[{\"FN\":\"Tim\",\"LN\":\"Felgentre\",\"S\":1},{\"FN\":\"Alan\",\"LN\":\"Borning\",\"S\":2},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":3}],\"BT\":\"a\"}"},{"logprob":-21.137,"Id":2081821914,"Ty":"0","Ti":"towards type safe jcop a type system for layer inheritance and first class layers","Pt":"0","L":"en","Y":2014,"D":"2014-07-28","CC":6,"ECC":6,"RId":[2480195817,2150275961,2033348393,2060640309,1985637830,2111576674,6784408,2182749898,2103457658,2055190380],"W":["class","first","inheritance","jcop","layer","layers","safe","system","towards","type"],"AA":[{"DAuN":"Hiroaki Inoue","AuN":"hiroaki inoue","AuId":2489204954,"DAfN":"Kyoto University","AfN":"kyoto university","AfId":22299242,"S":1},{"DAuN":"Atsushi Igarashi","AuN":"atsushi igarashi","AuId":2097080023,"DAfN":"Kyoto University","AfN":"kyoto university","AfId":22299242,"S":2},{"DAuN":"Malte Appeltauer","AuN":"malte appeltauer","AuId":135591984,"DAfN":"SAP Innovation Center, Potsdam, Germany","S":3},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":4}],"F":[{"DFN":"Programming language","FN":"programming language","FId":199360897},{"DFN":"Java","FN":"java","FId":548217200},{"DFN":"First class","FN":"first class","FId":2779849256},{"DFN":"Distributed computing","FN":"distributed computing","FId":120314980},{"DFN":"Computer science","FN":"computer science","FId":41008148}],"E":"{\"DN\":\"Towards Type-Safe JCop: A type system for layer inheritance and first-class layers\",\"IA\":{\"IndexLength\":110,\"InvertedIndex\":{\"This\":[0],\"paper\":[1],\"describes\":[2],\"a\":[3,54,66],\"type\":[4,22,67,75,101],\"system\":[5,23,68,76,102],\"for\":[6,17,69],\"JCop,\":[7],\"which\":[8],\"is\":[9,28,77],\"an\":[10],\"extension\":[11],\"of\":[12,38,43,57],\"Java\":[13],\"with\":[14],\"language\":[15,108],\"mechanisms\":[16],\"context-oriented\":[18,58],\"programming.\":[19,59],\"A\":[20],\"simple\":[21],\"as\":[24,88],\"in\":[25],\"Java,\":[26],\"however,\":[27],\"not\":[29,78],\"sufficient\":[30],\"to\":[31,35,81,84,106],\"prevent\":[32],\"errors\":[33],\"due\":[34,83],\"the\":[36],\"absence\":[37],\"invoked\":[39],\"methods\":[40],\"because\":[41],\"interfaces\":[42],\"objects\":[44],\"can\":[45,103],\"change\":[46],\"at\":[47],\"run\":[48],\"time\":[49],\"by\":[50],\"dynamic\":[51,70],\"layer\":[52,71,89,95],\"composition,\":[53,72],\"characteristic\":[55],\"feature\":[56],\"Igarashi,\":[60],\"Hirschfeld,\":[61],\"and\":[62,93],\"Masuhara\":[63],\"have\":[64],\"studied\":[65],\"but\":[73],\"their\":[74,100],\"directly\":[79],\"applicable\":[80],\"JCop\":[82],\"JCop-specific\":[85],\"features\":[86],\"such\":[87],\"inheritance,\":[90],\"first-class\":[91],\"layers,\":[92],\"declarative\":[94],\"composition.\":[96],\"We\":[97],\"discuss\":[98],\"how\":[99],\"be\":[104],\"extended\":[105],\"these\":[107],\"features.\":[109]}},\"S\":[{\"Ty\":3,\"U\":\"http://www.hirschfeld.org/writings/media/InoueIgarashiAppeltauerHirschfeld_2014_TowardsTypeSafeJCopATypeSystemForLayerInheritanceAndFirstClassLayers_AcmDL.pdf\"},{\"Ty\":1,\"U\":\"https://doi.acm.org/10.1145/2637066.2637073\"},{\"Ty\":1,\"U\":\"https://dl.acm.org/citation.cfm?id=2637066.2637073\"}],\"VFN\":\"Proceedings of 6th International Workshop on Context-Oriented Programming\",\"FP\":7,\"DOI\":\"10.1145/2637066.2637073\",\"CC\":{\"1985637830\":[\"In the first type system for ContextFJ [6], a layer cannot introduce a new method and so the interface of an object does not change for its lifetime, making deactivation trivially safe.\"],\"2033348393\":[\"Igarashi, Hirschfeld, and Masuhara [7] have studied this problem and developed a type system for a formal calculus ContextFJ, a COP extension of Featherweight Java [8].\"],\"2055190380\":[\"BaseLayer [] layers = new BaseLayer [10]; layers [0] = new Rain(); layers [1] = new OtherInfo (); with(layers[i]){ .\",\"Recent work by Kamina, Aotani, and Igarashi [10] proposes another way to deal with type-safe deactivation.\"],\"2060640309\":[\"This feature is motivated by layer composition from layer dependencies, and similar to problems treated in [11] and [4].\"],\"2103457658\":[\"Context Petri Nets [3], a context-oriented extension of Petri Nets, support various kinds of declarations of dependency between layers, such as implication, requirement, and exclusion.\"],\"2111576674\":[\"As a running example, we consider programming a graphical computer game called RetroAdventure, inspired by [2].\",\"In addition to the block-style (de)activation mechanisms, JCop provides declarative layer composition [2]—a mechanism to (de)activate layer instances by using AspectJ-like pointcuts [12] and context classes.\",\"We omit how an instance of a context class can be activated, as it is not very important for the present paper; see Appeltauer and Hirschfeld [2] for details.\"],\"2150275961\":[\"Context-Oriented Programming (COP) [5] is an approach to describing context-dependent behavioral variations in a\"],\"2182749898\":[\"Igarashi, Hirschfeld and Masuhara [7] have studied this problem and developed a formal calculus ContextFJ, which models a core of COP, with a provably sound type system.\",\"Igarashi, Hirschfeld, and Masuhara [7] have studied this problem and developed a type system for a formal calculus ContextFJ, a COP extension of Featherweight Java [8].\",\"In the second type system for ContextFJ by Igarashi, Hirschfeld, and Masuhara [7], a layer can introduce a new method but deactivation is dropped for the sake of simplicity.\",\"We refer readers to Igarashi, Hirschfeld, and Masuhara [7] for basic comparisons with other composition mechanisms and type systems for COP.\"],\"2480195817\":[\"In addition to the block-style (de)activation mechanisms, JCop provides declarative layer composition [2]—a mechanism to (de)activate layer instances by using AspectJ-like pointcuts [12] and context classes.\"]},\"PR\":[2150275961,2182749898,2753187437,2148878240,2783879556,1902828588,2375177547,67068934,192592871,2060640309,97741736,1529056891,2391591072,2003007661,254272710,2203630088,2186563730,2811509962,2059767223,2183162906,2150275961,2182749898,2753187437,2148878240,2783879556,1902828588,2375177547,67068934,192592871,2060640309,97741736,1529056891,2391591072,2003007661,254272710,2203630088,2186563730,2811509962,2059767223,2183162906],\"ANF\":[{\"FN\":\"Hiroaki\",\"LN\":\"Inoue\",\"S\":1},{\"FN\":\"Atsushi\",\"LN\":\"Igarashi\",\"S\":2},{\"FN\":\"Malte\",\"LN\":\"Appeltauer\",\"S\":3},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":4}],\"BV\":\"Proceedings of 6th International Workshop on Context-Oriented Programming\",\"BT\":\"p\",\"PB\":\"ACM\"}"},{"logprob":-21.144,"Id":2102647880,"Ty":"0","Ti":"towards an actor based concurrent machine model","Pt":"0","L":"en","Y":2009,"D":"2009-07-06","CC":12,"ECC":12,"RId":[2138363365,2480195817,2143238865,2072794470,2150275961,1584322803,1563513502,1990138733,1501829296,956539890,2014881790,2123885505,2152722217,2135636915,2033828687,2059918156,252955003],"W":["actor","concurrent","machine","model","towards"],"AA":[{"DAuN":"Hans Schippers","AuN":"hans schippers","AuId":2121358362,"DAfN":"University of Antwerp","AfN":"university of antwerp","AfId":149213910,"S":1},{"DAuN":"Tom Van Cutsem","AuN":"tom van cutsem","AuId":2155825951,"DAfN":"Vrije Universiteit Brussel","AfN":"vrije universiteit brussel","AfId":13469542,"S":2},{"DAuN":"Stefan Marr","AuN":"stefan marr","AuId":2149908842,"DAfN":"Vrije Universiteit Brussel","AfN":"vrije universiteit brussel","AfId":13469542,"S":3},{"DAuN":"Michael Haupt","AuN":"michael haupt","AuId":2146662369,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":4},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":5}],"F":[{"DFN":"Theoretical computer science","FN":"theoretical computer science","FId":80444323},{"DFN":"Separation of concerns","FN":"separation of concerns","FId":76214141},{"DFN":"Position paper","FN":"position paper","FId":78780964},{"DFN":"Non-lock concurrency control","FN":"non lock concurrency control","FId":61912525},{"DFN":"High-level programming language","FN":"high level programming language","FId":19024347},{"DFN":"Distributed computing","FN":"distributed computing","FId":120314980},{"DFN":"Delegation","FN":"delegation","FId":86532276},{"DFN":"Coroutine","FN":"coroutine","FId":100602654},{"DFN":"Concurrent object-oriented programming","FN":"concurrent object oriented programming","FId":3701939},{"DFN":"Concurrency","FN":"concurrency","FId":193702766},{"DFN":"Computer science","FN":"computer science","FId":41008148}],"E":"{\"DN\":\"Towards an actor-based concurrent machine model\",\"IA\":{\"IndexLength\":106,\"InvertedIndex\":{\"In\":[0,66],\"this\":[1,45],\"position\":[2],\"paper\":[3],\"we\":[4,72],\"propose\":[5,42],\"to\":[6,43,68,101],\"extend\":[7,44],\"an\":[8,48,94],\"existing\":[9],\"delegation-based\":[10],\"machine\":[11,18,89],\"model\":[12,19,46],\"with\":[13,47],\"concurrency\":[14,50,61,81],\"primitives.\":[15],\"The\":[16],\"original\":[17],\"which\":[20],\"is\":[21],\"built\":[22],\"on\":[23,96],\"the\":[24,97],\"concepts\":[25],\"of\":[26,38],\"objects,\":[27],\"messages,\":[28],\"and\":[29],\"delegation,\":[30],\"provides\":[31],\"support\":[32,102],\"for\":[33,53],\"languages\":[34,78],\"enabling\":[35],\"multi-dimensional\":[36],\"separation\":[37],\"concerns\":[39],\"(MDSOC).\":[40],\"We\":[41,91],\"actor-based\":[49],\"model,\":[51],\"allowing\":[52],\"both\":[54],\"true\":[55],\"parallelism\":[56],\"as\":[57,59,64],\"well\":[58],\"lightweight\":[60],\"primitives\":[62],\"such\":[63],\"coroutines.\":[65],\"order\":[67],\"demonstrate\":[69],\"its\":[70],\"expressiveness,\":[71],\"informally\":[73],\"describe\":[74],\"how\":[75],\"three\":[76],\"high-level\":[77],\"supporting\":[79],\"different\":[80],\"models\":[82],\"can\":[83],\"be\":[84],\"mapped\":[85],\"onto\":[86],\"our\":[87],\"extended\":[88,98],\"model.\":[90],\"also\":[92],\"provide\":[93],\"outlook\":[95],\"model's\":[99],\"potential\":[100],\"concurrency-related\":[103],\"MDSOC\":[104],\"features.\":[105]}},\"S\":[{\"Ty\":3,\"U\":\"http://www.hirschfeld.org/writings/media/SchippersVanCutsemMarrHauptHirschfeld_2009_TowardsAnActorBasedConcurrentMachineModel_AcmDL.pdf\"},{\"Ty\":1,\"U\":\"http://stefan-marr.de/downloads/icooolps09-schippers.pdf\"},{\"Ty\":1,\"U\":\"https://www.semanticscholar.org/paper/Towards-an-actor-based-concurrent-machine-model-Schippers-Cutsem/cff8ea56c88571b0ee18ba34f0ff31fb57466ba1\"},{\"Ty\":1,\"U\":\"https://doi.acm.org/10.1145/1565824.1565825\"}],\"VFN\":\"Proceedings of the 4th workshop on the Implementation, Compilation, Optimization of Object-Oriented Languages and Programming Systems\",\"FP\":4,\"LP\":9,\"DOI\":\"10.1145/1565824.1565825\",\"CC\":{\"252955003\":[\"Implementation details and optimization techniques have been discussed in the general setting of distributed systems [17, 10].\"],\"956539890\":[\"However, some high-level MDSOC languages, such as AspectJ [11] and CaesarJ [2], do exhibit concurrency-related MDSOC features.\"],\"1501829296\":[\"The delegation-based delMDSOC machine model [7] has good support for modularizing crosscutting concerns and hence for generally supporting programming languages enabling multi-dimensional separation of concerns (MDSOC).\",\"In this section we briefly describe the delMDSOC machine model originally introduced in [7].\",\"In this paper, we propose the addition of actor-based concurrency support to a delegation-based machine model [7].\"],\"1563513502\":[\"The E language (with its predecessors) [13] was the first to reconcile actors with objects.\",\"Our new model is based on the actor model of E [13] where actors are containers of objects.\"],\"1584322803\":[\"This model of “functional” actors is still used in wellknown languages such as Erlang [3], but has also been reconciled in many ways with stateful object-oriented programming also known as “active objects” as used in ProActive [4].\",\"Although our machine model is inherently object-based and hence fits high-level object-oriented languages more naturally, future work includes considering other interesting concurrency models such as that of Erlang [3].\"],\"1990138733\":[\"The three languages under study are Java, Salsa [16], and Io [6], because they are representative of a multi-threading scheme, an actor-based concurrency model, and coroutines respectively.\",\"Salsa [16] is an actor extension to Java.\"],\"2014881790\":[\"Its implementation, the delMDSOC kernel [15] achieves most of the features required to implement MDSOC programming languages.\"],\"2033828687\":[\"The three languages under study are Java, Salsa [16], and Io [6], because they are representative of a multi-threading scheme, an actor-based concurrency model, and coroutines respectively.\",\"The Io language [6] features no real parallelism, but rather offers user level cooperative threads in the form of coroutines.\"],\"2059918156\":[\"It should be noted that techniques like object migrations between actors, for instance using the Arrow [8] protocol, integrate very naturally with the underlying delegation mechanism of our machine model.\"],\"2072794470\":[\"Hence, the actors model [1] can serve as a source of inspiration.\",\"Our proposed machine model with explicit concurrency support is based on the well-known actor model of computation [1].\"],\"2123885505\":[\"Implementation details and optimization techniques have been discussed in the general setting of distributed systems [17, 10].\"],\"2135636915\":[\"A parallel machine interface consisting of primitives sufficient for dataflow, shared memory, and message passing models is discussed in [5].\"],\"2138363365\":[\"Examples of MDSOC paradigms trying to address this issue are aspectoriented programming (AOP) [ 12 ] and context-oriented programming (COP) [9].\"],\"2143238865\":[\"Examples of MDSOC paradigms trying to address this issue are aspectoriented programming (AOP) [12] and context-oriented programming (COP) [9].\"],\"2150275961\":[\"Examples of MDSOC paradigms trying to address this issue are aspectoriented programming (AOP) [12] and context-oriented programming (COP) [9].\"],\"2152722217\":[\"The model assumes a prototype-based object-oriented environment in which objects are consistently represented as “seas of fragments” [14]: each object is visible to others via a proxy determining the object’s identity.\"],\"2480195817\":[\"However, some high-level MDSOC languages, such as AspectJ [11] and CaesarJ [2], do exhibit concurrency-related MDSOC features.\"]},\"PR\":[2292281334,307916166,2742980310,2293493256,109740517,1516883960,2901143224,2183481691,2285272996,2183855686,2494213513,2267400914,2797038171,2556825119,2607707061,2152642582,2562203888,2487727132,1510044556,1861693101,2292281334,307916166,2742980310,2293493256,109740517,1516883960,2901143224,2183481691,2285272996,2183855686,2494213513,2267400914,2797038171,2556825119,2607707061,2152642582,2562203888,2487727132,1510044556,1861693101],\"ANF\":[{\"FN\":\"Hans\",\"LN\":\"Schippers\",\"S\":1},{\"FN\":\"Tom Van\",\"LN\":\"Cutsem\",\"S\":2},{\"FN\":\"Stefan\",\"LN\":\"Marr\",\"S\":3},{\"FN\":\"Michael\",\"LN\":\"Haupt\",\"S\":4},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":5}],\"BV\":\"Proceedings of the 4th workshop on the Implementation, Compilation, Optimization of Object-Oriented Languages and Programming Systems\",\"BT\":\"p\",\"PB\":\"ACM\"}"},{"logprob":-21.162,"Id":1972151373,"Ty":"0","Ti":"immediacy through interactivity online analysis of run time behavior","Pt":"3","L":"en","Y":2010,"D":"2010-10-01","CC":11,"ECC":11,"RId":[1649645444,2480195817,2131664240,2148357053,2100894766,1541128807,2164372721,2097750323,1531869376,61440716,1673079227,2002985857,2132383311,1638356594,1574879889,2162831261,2782959840,2001033929,1507612039,2059838712,2079194250,2123344540,2170311191,2006684428,2161922591,2155848253,2803343605,1506052820,1513058800,1548205805,152925115],"W":["behavior","immediacy","interactivity","online","run","time"],"AA":[{"DAuN":"Michael Perscheid","AuN":"michael perscheid","AuId":698431335,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":1},{"DAuN":"Bastian Steinert","AuN":"bastian steinert","AuId":2142371068,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":2},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":3},{"DAuN":"Felix Geller","AuN":"felix geller","AuId":2226670134,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":4},{"DAuN":"Michael Haupt","AuN":"michael haupt","AuId":2146662369,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":5}],"F":[{"DFN":"Visualization","FN":"visualization","FId":36464697},{"DFN":"Test case","FN":"test case","FId":128942645},{"DFN":"Static timing analysis","FN":"static timing analysis","FId":93682380},{"DFN":"Real-time computing","FN":"real time computing","FId":79403827},{"DFN":"Program comprehension","FN":"program comprehension","FId":2777561058},{"DFN":"Interactivity","FN":"interactivity","FId":144430266},{"DFN":"Immediacy","FN":"immediacy","FId":2780340563},{"DFN":"Development environment","FN":"development environment","FId":139968098},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Comprehension","FN":"comprehension","FId":511192102}],"C":{"CN":"wcre","CId":1131743930},"E":"{\"DN\":\"Immediacy through Interactivity: Online Analysis of Run-time Behavior\",\"IA\":{\"IndexLength\":136,\"InvertedIndex\":{\"Visualizations\":[0],\"of\":[1,8,15,61,91,109,134],\"actual\":[2],\"run-time\":[3,23,49,62,89,118],\"data\":[4,119],\"support\":[5,12],\"the\":[6,13,21,107],\"comprehension\":[7],\"programs,\":[9],\"like\":[10],\"examples\":[11],\"explanation\":[14],\"abstract\":[16],\"concepts\":[17],\"and\":[18,47,83,103],\"principles.\":[19],\"Unfortunately,\":[20],\"required\":[22],\"analysis\":[24,54],\"is\":[25,70],\"often\":[26],\"associated\":[27],\"with\":[28],\"an\":[29,42,76,121],\"inconvenient\":[30],\"overhead\":[31,105],\"that\":[32,78,117],\"renders\":[33],\"current\":[34],\"tools\":[35],\"impractical\":[36],\"for\":[37,56,120,132],\"frequent\":[38],\"use.\":[39],\"We\":[40,74,95],\"propose\":[41],\"interactive\":[43,98],\"approach\":[44,82,99],\"to\":[45,59,86],\"collect\":[46],\"present\":[48,75],\"data.\":[50],\"An\":[51],\"initial\":[52,122],\"shallow\":[53],\"provides\":[55],\"immediate\":[57],\"access\":[58],\"visualizations\":[60],\"information.\":[63],\"As\":[64],\"users\":[65],\"explore\":[66,88],\"this\":[67],\"information,\":[68],\"it\":[69],\"incrementally\":[71],\"refined\":[72],\"on-demand.\":[73],\"implementation\":[77],\"realizes\":[79],\"our\":[80,97],\"proposed\":[81],\"enables\":[84],\"developers\":[85],\"instantly\":[87],\"behavior\":[90],\"selected\":[92],\"code\":[93],\"entities.\":[94],\"evaluate\":[96],\"by\":[100],\"measuring\":[101],\"time\":[102],\"memory\":[104],\"in\":[106,127],\"context\":[108],\"ten\":[110],\"different-sized\":[111],\"projects.\":[112],\"Our\":[113],\"empirical\":[114],\"results\":[115],\"show\":[116],\"overview\":[123],\"can\":[124],\"be\":[125],\"collected\":[126],\"less\":[128],\"than\":[129],\"300\":[130],\"milliseconds\":[131],\"95%\":[133],\"cases.\":[135]}},\"S\":[{\"Ty\":3,\"U\":\"http://www.hirschfeld.org/writings/media/PerscheidSteinertHirschfeldGellerHaupt_2010_ImxmediacyThroughInteractivityOnlineAnalysisOfRunTimeBehavior_IEEE.pdf\"},{\"Ty\":1,\"U\":\"http://yadda.icm.edu.pl/yadda/element/bwmeta1.element.ieee-000005645442\"},{\"Ty\":1,\"U\":\"http://ieeexplore.ieee.org/document/5645442/\"},{\"Ty\":1,\"U\":\"http://dblp.uni-trier.de/db/conf/wcre/wcre2010.html#PerscheidSHGH10\"}],\"VFN\":\"Working Conference on Reverse Engineering\",\"VSN\":\"WCRE\",\"FP\":77,\"LP\":86,\"DOI\":\"10.1109/WCRE.2010.17\",\"CC\":{\"152925115\":[\"Pathfinder leverages test cases as entry points, an approach that we presented in previous work [7].\",\"Pathfinder applies an approach introduced in [7]: Leveraging test cases as sensible entry points.\"],\"1507612039\":[\"Several techniques to reduce the costs have been reported [21], [22], in return for a more complicated setup.\"],\"1513058800\":[\"de/swa/projects/pathfinder/ during development as tests are selectively executed [8].\"],\"1531869376\":[\"Alternatively, dynamic AOP implementations like CaesarJ [12] could be used, as they allow for dynamically reconfiguring a software system.\"],\"1541128807\":[\"For our implementation, we leverage test cases as such entry points, as they commonly satisfy this requirement [6].\"],\"1574879889\":[\"The execution pattern view [25] automatically classifies repetitive behavior into high order execution patterns.\"],\"1638356594\":[\"There are plenty approaches to software visualization that present behavior using call graphs [23].\"],\"1649645444\":[\"The application is based on the description of the Observer design pattern [4].\",\"For instance, the authors of the Gang of Four book on design patterns [4] aid comprehension of their examples by presenting sequence diagrams alongside class diagrams to visualize collaborations among objects.\"],\"2001033929\":[\"Developers of object-oriented software systems spend a significant amount of time on program comprehension [1]– [3].\"],\"2002985857\":[\"Several techniques to reduce the costs have been reported [21], [22], in return for a more complicated setup.\"],\"2006684428\":[\"The feature driven browser in [15] and Senseo [16] are both extensions to an IDE that provide additional support by collecting run-time information.\"],\"2079194250\":[\"The call graph analyzer [27] visualizes call graphs in a 2.\"],\"2097750323\":[\"[13] focused on source code related questions that arise during maintenance.\"],\"2100894766\":[\"Developers of object-oriented software systems spend a significant amount of time on program comprehension [1]– [3].\"],\"2123344540\":[\"The feature driven browser in [15] and Senseo [16] are both extensions to an IDE that provide additional support by collecting run-time information.\",\"The IDE extension Senseo [16] supports the navigation in source code artifacts.\"],\"2131664240\":[\"Visualized run-time information has to be available within some hundreds of milliseconds rather than minutes [5].\",\"Schneiderman [5] argues that two seconds is the upper limit for responding to a user request.\"],\"2132383311\":[\"[14] presented three studies concerning reachability questions, which are described as a “search across feasible paths through a program for target statements matching search criteria”.\"],\"2148357053\":[\"They support reasoning about the behavior of programs in general, which might be the reason why developers use debuggers to improve their understanding of source code [18].\"],\"2155848253\":[\"The selection of relevant packages and exclusion of others avoids unnecessary overhead [10].\"],\"2161922591\":[\"Although all approaches are useful in their specific scenario, no approach can be generalized for various tasks in program comprehension [29].\"],\"2162831261\":[\"Circular Bundle Views [28] deal with the fact that sequence diagrams do not scale and present a scalable view inside a circle.\"],\"2164372721\":[\"Back-in-time debuggers [19] enable developers to navigate an entire program execution and help to answer questions about the cause of a particular state [20].\"],\"2170311191\":[\"Most such visualizations are rarely used during software development [30].\"],\"2480195817\":[\"instance, it would be possible to use aspect-oriented programming (AOP) in the form of the AspectJ [11] programming language to instrument all methods with analysis logic.\"],\"2782959840\":[\"Pathfinder analyzes the execution of entry points by instrumenting the code using method wrappers [9].\"],\"2803343605\":[\"The former helps developers to locate and highlight source code that contributes to features of interest [17].\"]},\"PR\":[2782959840,2014309790,2162045655,2320203379,2188913686,2612886667,568818983,2095979053,34591081,2774500616,21053263,2007964947,2505950341,581551710,1499501833,2566236641,2786272074,2019158077,2901813316,2014680113,2782959840,2014309790,2162045655,2320203379,2188913686,2612886667,568818983,2095979053,34591081,2774500616,21053263,2007964947,2505950341,581551710,1499501833,2566236641,2786272074,2019158077,2901813316,2014680113],\"ANF\":[{\"FN\":\"Michael\",\"LN\":\"Perscheid\",\"S\":1},{\"FN\":\"Bastian\",\"LN\":\"Steinert\",\"S\":2},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":3},{\"FN\":\"Felix\",\"LN\":\"Geller\",\"S\":4},{\"FN\":\"Michael\",\"LN\":\"Haupt\",\"S\":5}],\"BV\":\"2010 17th Working Conference on Reverse Engineering\",\"BT\":\"p\",\"PB\":\"IEEE\"}"},{"logprob":-21.177,"Id":2286467601,"Ty":"0","Ti":"an architecture supporting adaptation and evolution in fourth generation mobile communication systems","Pt":"1","L":"en","Y":2002,"D":"2002-12-01","CC":9,"ECC":9,"RId":[2077184686,1986940013,2139703775,2140488678,2061541043,2097463819,2124271237,2102793225,2155978533,2134798374,2080979369,1533340173,2215673772,47738827,2779785735],"W":["adaptation","architecture","communication","evolution","fourth","generation","mobile","supporting","systems"],"AA":[{"DAuN":"Christian Prehofer","AuN":"christian prehofer","AuId":2231077129,"DAfN":"NTT DoCoMo","AfN":"ntt docomo","AfId":99157191,"S":1},{"DAuN":"Wolfgang Kellerer","AuN":"wolfgang kellerer","AuId":26483632,"DAfN":"NTT DoCoMo","AfN":"ntt docomo","AfId":99157191,"S":2},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"NTT DoCoMo","AfN":"ntt docomo","AfId":99157191,"S":3},{"DAuN":"Hendrik Berndt","AuN":"hendrik berndt","AuId":2091274743,"DAfN":"NTT DoCoMo","AfN":"ntt docomo","AfId":99157191,"S":4},{"DAuN":"Katsuya Kawamura","AuN":"katsuya kawamura","AuId":2140200352,"DAfN":"NTT DoCoMo","AfN":"ntt docomo","AfId":99157191,"S":5}],"F":[{"DFN":"Systems architecture","FN":"systems architecture","FId":98025372},{"DFN":"Service-oriented architecture","FN":"service oriented architecture","FId":57041688},{"DFN":"Reconfigurability","FN":"reconfigurability","FId":2780149590},{"DFN":"Real-time computing","FN":"real time computing","FId":79403827},{"DFN":"Network architecture","FN":"network architecture","FId":193415008},{"DFN":"Mobile computing","FN":"mobile computing","FId":144543869},{"DFN":"Middleware","FN":"middleware","FId":135802936},{"DFN":"Distributed computing","FN":"distributed computing","FId":120314980},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Computer network","FN":"computer network","FId":31258907},{"DFN":"Architecture","FN":"architecture","FId":123657996},{"DFN":"Adaptability","FN":"adaptability","FId":177606310}],"J":{"JN":"jcn","JId":173102057},"E":"{\"DN\":\"An architecture supporting adaptation and evolution in fourth generation mobile communication systems\",\"IA\":{\"IndexLength\":148,\"InvertedIndex\":{\"A\":[0],\"major\":[1],\"challenge\":[2],\"for\":[3,67],\"next\":[4,68],\"generation\":[5,69],\"mobile\":[6,70],\"communication\":[7,71],\"is\":[8,30],\"capturing\":[9],\"the\":[10,40,55,137,143],\"system\":[11,28,46,76,102,122],\"architecture's\":[12],\"complexity\":[13],\"with\":[14],\"all\":[15,27,75],\"its\":[16],\"internal\":[17],\"and\":[18,85,97],\"external\":[19],\"dependencies.\":[20],\"Seamless\":[21],\"integration\":[22],\"of\":[23,44,95,111,136,145],\"heterogeneous\":[24],\"environments\":[25],\"in\":[26,93],\"parts\":[29,77],\"a\":[31],\"key\":[32],\"requirement.\":[33],\"Moreover,\":[34],\"future\":[35],\"systems\":[36],\"have\":[37],\"to\":[38,53,59,81,99,126],\"consider\":[39,106],\"different\":[41],\"evolution\":[42],\"cycles\":[43],\"individual\":[45],\"parts.\":[47],\"Among\":[48],\"those,\":[49],\"services\":[50],\"are\":[51],\"expected\":[52],\"change\":[54],\"fastest.\":[56],\"With\":[57],\"respect\":[58],\"these\":[60],\"considerations,\":[61],\"we\":[62,105,128],\"propose\":[63],\"an\":[64,133],\"overall\":[65],\"architecture\":[66],\"systems.\":[72],\"It\":[73],\"covers\":[74],\"from\":[78],\"wireless\":[79],\"transmission\":[80],\"applications\":[82],\"including\":[83],\"network\":[84],\"middleware\":[86],\"platform.\":[87],\"Our\":[88],\"approach\":[89],\"focuses\":[90],\"on\":[91],\"adaptability\":[92],\"terms\":[94],\"reconfigurability\":[96],\"programmability\":[98],\"support\":[100],\"unanticipated\":[101],\"evolution.\":[103],\"Therefore,\":[104],\"abstraction\":[107],\"layers\":[108],\"which\":[109],\"consist\":[110],\"adaptable\":[112],\"cooperating\":[113],\"components\":[114],\"grouped\":[115],\"by\":[116],\"open\":[117],\"platforms\":[118],\"rather\":[119],\"than\":[120],\"rigid\":[121],\"layers.\":[123],\"In\":[124],\"addition\":[125],\"that,\":[127],\"introduce\":[129],\"cross-layer\":[130],\"cooperation\":[131],\"allowing\":[132],\"efficient\":[134],\"use\":[135],\"available\":[138],\"resources.\":[139],\"Specific\":[140],\"scenarios\":[141],\"illustrate\":[142],\"feasibility\":[144],\"our\":[146],\"approach.\":[147]}},\"S\":[{\"Ty\":3,\"U\":\"http://www.wolfgangkellerer.de/Papers/kellerer_JCN2002.pdf\"},{\"Ty\":3,\"U\":\"https://www.researchgate.net/profile/Christian_Prehofer/publication/220109883_An_Architecture_Supporting_Adaptation_and_Evolution_in_Fourth_Generation_Mobile_Communication_Systems/links/0046352af17cb1bee6000000.pdf\"},{\"Ty\":1,\"U\":\"http://dblp.uni-trier.de/db/journals/jcn/jcn4.html#PrehoferKHBK02a\"},{\"Ty\":0,\"U\":\"http://www.koreascience.or.kr/article/ArticleFullRecord.jsp?cn=E1NUAJ_2002_v4n4_336\"}],\"VFN\":\"Journal of Communications and Networks\",\"V\":4,\"I\":4,\"FP\":336,\"LP\":343,\"DOI\":\"10.1109/JCN.2002.6596657\",\"CC\":{\"47738827\":[\"Example specifications addressing this can be found in the Telecommunication Information Networking Architecture (TINA) Service Architecture [4][5] and in the Telecommunication Service Access and Subscription specifications (TSAS) from the Object Management Group (OMG) [26].\"],\"1533340173\":[\"More examples are discussed in [15][16][18].\"],\"1986940013\":[\"So far, most architectures center on required functionality and its separation within a layered system structure, e.g., [1][2][ 3 ][19].\"],\"2061541043\":[\"exchanged data. This is similar to the active networks capsules approach [ 29 ] or to the mobile code in Jini [30].\\u001bThis notion of service deployment architecture has been investigated in the area of active networks in [13][ 29 ], but not in the context of cross- layer cooperation.\"],\"2077184686\":[\"More examples are discussed in [15][16][18].\",\"In [18], algorithms based on a static user profile are presented which select among different networks for handover.\"],\"2097463819\":[\"More examples are discussed in [15][16][18].\"],\"2102793225\":[\"Example specifications addressing this can be found in the Telecommunication Information Networking Architecture (TINA) Service Architecture [4][ 5 ] and in the Telecommunication Service Access and Subscription specifications (TSAS) from the Object Management Group (OMG) [26].\"],\"2134798374\":[\"• Programmable, active network nodes [ 8 ] will enable fast deployment of new services by using open interfaces to the network resources.\"],\"2155978533\":[\"However, in mobile networking, one often needs specific and possibly medium-dependent interfaces between the layers, e.g., as discussed in [ 17 ].\\u001bSimilar scenarios have already been investigated in [ 17 ], where a middleware was presented which provided a hook for a function, which determines the best next access point.\"],\"2779785735\":[\"Earlier versions of our approach [20][21] have been incorporated the World Wireless Research Forum (WWRF) [22], where two special interest groups work on identifying research items for (service level) adaptability and lower layer reconfigurability, respectively.\"]},\"PR\":[2097951466,2066452447,2060523790,2125133214,1506252952,1601497763,2042959382,124137959,2016524933,2248004808,2126515823,2116151330,2164988150,2096162603,1539323418,2012193244,1484964274,2172115941,1864833839,1490999731,2097951466,2066452447,2060523790,2125133214,1506252952,1601497763,2042959382,124137959,2016524933,2248004808,2126515823,2116151330,2164988150,2096162603,1539323418,2012193244,1484964274,2172115941,1864833839,1490999731],\"ANF\":[{\"FN\":\"Christian\",\"LN\":\"Prehofer\",\"S\":1},{\"FN\":\"Wolfgang\",\"LN\":\"Kellerer\",\"S\":2},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":3},{\"FN\":\"Hendrik\",\"LN\":\"Berndt\",\"S\":4},{\"FN\":\"Katsuya\",\"LN\":\"Kawamura\",\"S\":5}],\"BV\":\"Journal of Communications and Networks\",\"BT\":\"a\",\"PB\":\"IEEE\"}"},{"logprob":-21.194,"Id":2051540028,"Ty":"0","Ti":"language independent storage strategies for tracing jit based virtual machines","Pt":"3","L":"en","Y":2015,"D":"2015-10-21","CC":3,"ECC":3,"RId":[2080648611,2115680394,1998416211,2069902027,2013901208,2135416495,2097013380,2155628381],"W":["independent","jit","language","machines","storage","strategies","tracing","virtual"],"AA":[{"DAuN":"Tobias Pape","AuN":"tobias pape","AuId":2114920648,"DAfN":"HPI, Germany","S":1},{"DAuN":"Tim Felgentreff","AuN":"tim felgentreff","AuId":1964871710,"DAfN":"HPI, Germany","S":2},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"HPI, Germany","S":3},{"DAuN":"Anton Gulenko","AuN":"anton gulenko","AuId":2228827933,"DAfN":"Technical University of Berlin","AfN":"technical university of berlin","AfId":4577782,"S":4},{"DAuN":"Carl Friedrich Bolz","AuN":"carl friedrich bolz","AuId":1964826138,"DAfN":"King's College London","AfN":"king s college london","AfId":183935753,"S":5}],"F":[{"DFN":"Virtual machine","FN":"virtual machine","FId":25344961},{"DFN":"Tracing just-in-time compilation","FN":"tracing just in time compilation","FId":50450317},{"DFN":"Toolchain","FN":"toolchain","FId":2777062904},{"DFN":"Smalltalk","FN":"smalltalk","FId":2777293101},{"DFN":"Real-time computing","FN":"real time computing","FId":79403827},{"DFN":"Racket","FN":"racket","FId":2778707667},{"DFN":"Python (programming language)","FN":"python","FId":519991488},{"DFN":"Programming language","FN":"programming language","FId":199360897},{"DFN":"Garbage collection","FN":"garbage collection","FId":105122174},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Compiler","FN":"compiler","FId":169590947}],"C":{"CN":"dls","CId":1133200404},"E":"{\"DN\":\"Language-independent storage strategies for tracing-JIT-based virtual machines\",\"IA\":{\"IndexLength\":157,\"InvertedIndex\":{\"Storage\":[0],\"strategies\":[1,65,93,123],\"have\":[2,15],\"been\":[3],\"proposed\":[4],\"as\":[5,56],\"a\":[6,47,57,86,149,154],\"run-time\":[7],\"optimization\":[8],\"for\":[9,19,91,112,117,129],\"the\":[10,31,64,107,139],\"PyPy\":[11,42],\"Python\":[12],\"implementation\":[13,90,111,143],\"and\":[14,23,61,89,94,119,152],\"shown\":[16],\"promising\":[17],\"results\":[18],\"optimizing\":[20],\"execution\":[21],\"speed\":[22],\"memory\":[24],\"requirements.\":[25],\"However,\":[26],\"it\":[27,146],\"remained\":[28],\"unclear\":[29],\"whether\":[30],\"approach\":[32],\"works\":[33],\"equally\":[34],\"well\":[35],\"in\":[36,132],\"other\":[37,133],\"dynamic\":[38,134],\"languages.\":[39,104],\"Furthermore,\":[40],\"while\":[41],\"is\":[43],\"based\":[44],\"on\":[45],\"RPython,\":[46],\"language\":[48],\"to\":[49,71,147],\"write\":[50],\"VMs\":[51],\"with\":[52],\"reusable\":[53,73],\"components\":[54],\"such\":[55],\"tracing\":[58],\"just-in-time\":[59],\"compiler\":[60],\"garbage\":[62],\"collection,\":[63],\"design\":[66,88],\"itself\":[67],\"was\":[68],\"not\":[69],\"generalized\":[70],\"be\":[72,99],\"across\":[74,101],\"languages\":[75],\"implemented\":[76],\"using\":[77],\"that\":[78,121],\"same\":[79],\"toolchain.\":[80],\"In\":[81],\"this\":[82],\"paper,\":[83],\"we\":[84],\"present\":[85],\"general\":[87],\"storage\":[92,122],\"show\":[95,120],\"how\":[96],\"they\":[97],\"can\":[98],\"reused\":[100],\"different\":[102],\"RPython-based\":[103,115],\"We\":[105],\"evaluate\":[106,138],\"performance\":[108,127],\"of\":[109,141],\"our\":[110,142],\"RSqueak,\":[113],\"an\":[114],\"VM\":[116],\"Squeak/Smalltalk\":[118],\"may\":[124],\"indeed\":[125],\"offer\":[126],\"benefits\":[128],\"certain\":[130],\"workloads\":[131],\"programming\":[135],\"languages.We\":[136],\"furthermore\":[137],\"generality\":[140],\"by\":[144],\"applying\":[145],\"Topaz,\":[148],\"Ruby\":[150],\"VM,\":[151],\"Pycket,\":[153],\"Racket\":[155],\"implementation.\":[156]}},\"S\":[{\"Ty\":3,\"U\":\"http://www.hirschfeld.org/writings/media/PapeFelgentreffHirschfeldGulenkoBolz_2015_LanguageIndependentStorageStrategiesForTracingJitBasedVirtualMachines_AuthorsVersion.pdf\"},{\"Ty\":1,\"U\":\"https://kclpure.kcl.ac.uk/portal/en/publications/languageindependent-storage-strategies-for-tracingjitbased-virtual-machines(daeefa30-e419-4a20-a426-1a4ed781928a)/export.html\"},{\"Ty\":1,\"U\":\"https://doi.acm.org/10.1145/2816707.2816716\"},{\"Ty\":1,\"U\":\"https://dl.acm.org/citation.cfm?doid=2936313.2816716\"}],\"VFN\":\"Dynamic Languages Symposium\",\"VSN\":\"DLS\",\"V\":51,\"I\":2,\"FP\":104,\"LP\":113,\"DOI\":\"10.1145/2816707.2816716\",\"CC\":{\"1998416211\":[\"The recorded operations are then simplified using a form of partial evaluation [2].\"],\"2013901208\":[\"The confidence intervals comparing the two VMs have been computed following the procedure proposed by Kalibera and Jones [8].\"],\"2069902027\":[\"Truffle [11] is a generic, self-optimizing AST interpreter that makes use of the interface provided by Graal.\"],\"2080648611\":[\"We use the concept of mixins [4, 5] to provide the required level of flexibility while allowing the VM to extend the provided functionality when needed.\"],\"2097013380\":[\"Finally, in Pycket [1], we added strategies to the vector datatype.\"],\"2115680394\":[\"We use the concept of mixins [4, 5] to provide the required level of flexibility while allowing the VM to extend the provided functionality when needed.\"],\"2135416495\":[\"One optimization that has been shown to work well in the PyPy VM for Python is called storage strategies [3].\",\"However, even with the information available to the tracing JIT compiler, storage strategies are hard to apply in a general way, and have so far been implemented for PyPy only [3], but are not automatically provided to all languages built with RPython.\",\"Storage strategies have been shown to be beneficial for the Python programming language [3].\",\"Another allocation removal technique called storage strategies, or strategies for short, can optimize dynamic collections [3].\",\"This has been done for the Python interpreter PyPy [3] and in the JRuby+Truffle project [10].\"],\"2155628381\":[\"The most important optimization implemented by RPython’s tracing JIT is an aggressive escape analysis [6].\"]},\"PR\":[2135416495,2590158173,2126060880,2762530511,2553746381,2558313636,2119818055,2084480142,2112404227,2483515109,2077103208,2038670810,2124565726,2435692892,2067940794,57970420,1578437030,2772827996,2109173995,2140255482,2135416495,2590158173,2126060880,2762530511,2553746381,2558313636,2119818055,2084480142,2112404227,2483515109,2077103208,2038670810,2124565726,2435692892,2067940794,57970420,1578437030,2772827996,2109173995,2140255482],\"ANF\":[{\"FN\":\"Tobias\",\"LN\":\"Pape\",\"S\":1},{\"FN\":\"Tim\",\"LN\":\"Felgentreff\",\"S\":2},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":3},{\"FN\":\"Anton\",\"LN\":\"Gulenko\",\"S\":4},{\"FN\":\"Carl Friedrich\",\"LN\":\"Bolz\",\"S\":5}],\"BV\":\"Proceedings of the 11th Symposium on Dynamic Languages\",\"BT\":\"p\",\"PB\":\"ACM\"}"},{"logprob":-21.213,"Id":1977379208,"Ty":"0","Ti":"l context oriented programming with only layers","Pt":"0","L":"en","Y":2013,"D":"2013-07-02","CC":3,"ECC":3,"RId":[2138363365,2480195817,1770006921,1991604845,2150275961,2033348393,2172147300,2045723688,1997502136,1978875190,2053030136,1594284843,1527077815,1556513858,1985637830,2182749898],"W":["context","l","layers","oriented","programming"],"AA":[{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":1},{"DAuN":"Hidehiko Masuhara","AuN":"hidehiko masuhara","AuId":2087436944,"DAfN":"Tokyo Institute of Technology","AfN":"tokyo institute of technology","AfId":114531698,"S":2},{"DAuN":"Atsushi Igarashi","AuN":"atsushi igarashi","AuId":2097080023,"DAfN":"Kyoto University","AfN":"kyoto university","AfId":22299242,"S":3}],"F":[{"DFN":"Unification","FN":"unification","FId":96146094},{"DFN":"Theoretical computer science","FN":"theoretical computer science","FId":80444323},{"DFN":"Programming language","FN":"programming language","FId":199360897},{"DFN":"Position paper","FN":"position paper","FId":78780964},{"DFN":"Modularity","FN":"modularity","FId":100648641},{"DFN":"Implementation","FN":"implementation","FId":26713055},{"DFN":"Function composition (computer science)","FN":"function composition","FId":104637301},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Composition (visual arts)","FN":"composition","FId":169260993},{"DFN":"Asymmetry","FN":"asymmetry","FId":38976095}],"E":"{\"DN\":\"L: context-oriented programming with only layers\",\"IA\":{\"IndexLength\":97,\"InvertedIndex\":{\"Most\":[0],\"if\":[1],\"not\":[2],\"all\":[3],\"extensions\":[4],\"to\":[5,28,38,43,57],\"object-oriented\":[6],\"languages\":[7],\"that\":[8,19,84],\"allow\":[9],\"for\":[10,63],\"context-oriented\":[11],\"programming\":[12],\"(COP)\":[13],\"are\":[14],\"asymmetric\":[15],\"in\":[16,90],\"the\":[17,60,76,85,88],\"sense\":[18],\"they\":[20],\"assume\":[21],\"a\":[22,26,34],\"base\":[23],\"implementation\":[24],\"of\":[25,36,78,87,93],\"system\":[27],\"be\":[29],\"composed\":[30],\"into\":[31],\"classes\":[32,45,79],\"and\":[33,80,82],\"set\":[35],\"layers\":[37,81],\"provide\":[39],\"behavioral\":[40],\"variations\":[41],\"applied\":[42],\"those\":[44],\"at\":[46],\"run-time.\":[47],\"We\":[48],\"propose\":[49],\"L\":[51],\"as\":[53],\"an\":[54],\"experimental\":[55],\"language\":[56],\"further\":[58],\"explore\":[59],\"design\":[61],\"space\":[62],\"COP\":[64,95],\"languages.\":[65],\"In\":[66],\"this\":[67],\"position\":[68],\"paper\":[69],\"we\":[70],\"talk\":[71],\"about\":[72],\"first\":[73],\"steps\":[74],\"towards\":[75],\"unification\":[77],\"with\":[83],\"removal\":[86],\"asymmetry\":[89],\"composition\":[91],\"mechanisms\":[92],\"contemporary\":[94],\"implementations.\":[96]}},\"S\":[{\"Ty\":1,\"U\":\"https://dl.acm.org/citation.cfm?doid=2489793.2489797\"}],\"VFN\":\"Proceedings of the 5th International Workshop on Context-Oriented Programming\",\"FP\":4,\"DOI\":\"10.1145/2489793.2489797\",\"PR\":[2764183978,2119857670,2343199757,2051008498,2004409251,1999351657,1999622536,2119846530,158756043,2083432957,1991849845,2156950788,178671686,999990983,1978041036,2108025710,2247028476,1784646079,1963971880,2114376769,2764183978,2119857670,2343199757,2051008498,2004409251,1999351657,1999622536,2119846530,158756043,2083432957,1991849845,2156950788,178671686,999990983,1978041036,2108025710,2247028476,1784646079,1963971880,2114376769],\"ANF\":[{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":1},{\"FN\":\"Hidehiko\",\"LN\":\"Masuhara\",\"S\":2},{\"FN\":\"Atsushi\",\"LN\":\"Igarashi\",\"S\":3}],\"BV\":\"Proceedings of the 5th International Workshop on Context-Oriented Programming\",\"BT\":\"p\",\"PB\":\"ACM\"}"},{"logprob":-21.225,"Id":2306941968,"Ty":"0","Ti":"compatibility layers for interface mediation at run time","Pt":"0","L":"en","Y":2016,"D":"2016-03-14","CC":2,"ECC":2,"RId":[1649645444,2138363365,1489092837,2150275961,2172147300,2202133990,2061180491,2115680394,1527543831,2516916567,1978875190,1507413909,2029344921,2109568634,1941373452,1529505352,2151781063,1543368493,2182867439,2615530700],"W":["compatibility","interface","layers","mediation","run","time"],"AA":[{"DAuN":"Patrick Rein","AuN":"patrick rein","AuId":2229220081,"DAfN":"HPI, Germany","S":1},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"HPI, Germany","S":2},{"DAuN":"Stefan Lehmann","AuN":"stefan lehmann","AuId":2223786367,"DAfN":"HPI, Germany","S":3},{"DAuN":"Jens Lincke","AuN":"jens lincke","AuId":2055148755,"DAfN":"HPI, Germany","S":4}],"F":[{"DFN":"Squeak","FN":"squeak","FId":2780281086},{"DFN":"Smalltalk","FN":"smalltalk","FId":2777293101},{"DFN":"Modular design","FN":"modular design","FId":101468663},{"DFN":"Human–computer interaction","FN":"human computer interaction","FId":107457646},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Computer architecture","FN":"computer architecture","FId":118524514},{"DFN":"Compatibility (mechanics)","FN":"compatibility","FId":93428437}],"E":"{\"DN\":\"Compatibility layers for interface mediation at run-time\",\"IA\":{\"IndexLength\":156,\"InvertedIndex\":{\"In\":[0,42],\"adaptable\":[1],\"systems,\":[2],\"one\":[3,64],\"module\":[4,11,15,25],\"might\":[5],\"require\":[6],\"an\":[7],\"interface\":[8,28,53,81,91,105,145],\"from\":[9],\"another\":[10],\"which\":[12,29,76,149],\"the\":[13,22,71,89,103,114,120,139,154],\"second\":[14],\"does\":[16],\"not\":[17,36],\"provide.\":[18],\"For\":[19],\"some\":[20],\"cases,\":[21],\"particular\":[23,65],\"provider\":[24,47],\"and\":[26,106,142],\"its\":[27],\"will\":[30],\"be\":[31,37,151],\"available\":[32],\"at\":[33,92],\"run-time\":[34],\"can\":[35],\"anticipated\":[38],\"during\":[39],\"development\":[40],\"time.\":[41],\"such\":[43],\"situations\":[44],\"with\":[45],\"various\":[46],\"interfaces,\":[48],\"current\":[49],\"mitigation\":[50],\"strategies\":[51],\"for\":[52,102],\"mismatches\":[54,146],\"struggle\":[55],\"as\":[56],\"they\":[57],\"often\":[58],\"rely\":[59],\"on\":[60,79,113,130,134],\"advanced\":[61],\"knowledge\":[62],\"about\":[63],\"providing\":[66],\"module.\":[67],\"Therefore,\":[68],\"we\":[69,137],\"propose\":[70],\"concept\":[72,121],\"of\":[73,99,109,122],\"compatibility\":[74,123],\"layers\":[75,124],\"is\":[77],\"based\":[78,112,129],\"modular\":[80],\"mappings.\":[82],\"These\":[83],\"mappings\":[84],\"are\":[85],\"applied\":[86],\"to\":[87],\"adapt\":[88],\"provided\":[90,104],\"run-time.\":[93],\"Each\":[94],\"mapping\":[95],\"contains\":[96],\"a\":[97,107,126],\"set\":[98,108],\"general\":[100],\"requirements\":[101],\"derived\":[110],\"functions\":[111],\"required\":[115],\"features.\":[116],\"We\":[117],\"have\":[118],\"implemented\":[119],\"in\":[125,147],\"Squeak/Smalltalk\":[127,148],\"prototype\":[128],\"context-oriented\":[131],\"programming.\":[132],\"Based\":[133],\"this\":[135],\"prototype,\":[136],\"discuss\":[138],\"resulting\":[140],\"trade-offs\":[141],\"illustrate\":[143],\"exemplary\":[144],\"could\":[150],\"mediated\":[152],\"by\":[153],\"prototype.\":[155]}},\"S\":[{\"Ty\":1,\"U\":\"http://dblp.uni-trier.de/db/conf/aosd/modularity2016c.html#ReinHLL16\"},{\"Ty\":1,\"U\":\"https://dl.acm.org/citation.cfm?doid=2892664.2892683\"}],\"VFN\":\"Companion Proceedings of the 15th International Conference on Modularity\",\"FP\":113,\"LP\":118,\"DOI\":\"10.1145/2892664.2892683\",\"PR\":[209920383,2005911988,1570105922,2418051745,66316602,2014354495,2022728909,201857167,1997301821,1979973791,1516046066,2009167401,1994849039,2789935442,2140925860,2158380077,2077201393,2543170029,1997356577,2121147677,209920383,2005911988,1570105922,2418051745,66316602,2014354495,2022728909,201857167,1997301821,1979973791,1516046066,2009167401,1994849039,2789935442,2140925860,2158380077,2077201393,2543170029,1997356577,2121147677],\"ANF\":[{\"FN\":\"Patrick\",\"LN\":\"Rein\",\"S\":1},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":2},{\"FN\":\"Stefan\",\"LN\":\"Lehmann\",\"S\":3},{\"FN\":\"Jens\",\"LN\":\"Lincke\",\"S\":4}],\"BV\":\"Companion Proceedings of the 15th International Conference on Modularity\",\"BT\":\"p\",\"PB\":\"ACM\"}"},{"logprob":-21.23,"Id":1492801337,"Ty":"0","Ti":"dynamic service adaptation for runtime system extensions","Pt":"3","L":"en","Y":2004,"D":"2004-01-01","CC":9,"ECC":9,"RId":[2138363365,2480195817,2143238865,1644882639,1770006921,1991604845,2013886348,1527793496,1610570299,1910673522,1851327982,2172147300,2134119432,2168287017,2499711114,1539723268,2491720856,1990991680,2137252778,1491095550,1654534824,2782959840,193395745,2109469978,2149068053,1991374650,1506052820,109043198],"W":["adaptation","dynamic","extensions","runtime","service","system"],"AA":[{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"NTT DoCoMo","AfN":"ntt docomo","AfId":99157191,"S":1},{"DAuN":"Katsuya Kawamura","AuN":"katsuya kawamura","AuId":2140200352,"DAfN":"NTT DoCoMo","AfN":"ntt docomo","AfId":99157191,"S":2},{"DAuN":"Hendrik Berndt","AuN":"hendrik berndt","AuId":2091274743,"DAfN":"NTT DoCoMo","AfN":"ntt docomo","AfId":99157191,"S":3}],"F":[{"DFN":"Software system","FN":"software system","FId":149091818},{"DFN":"Software deployment","FN":"software deployment","FId":105339364},{"DFN":"Simulation","FN":"simulation","FId":44154836},{"DFN":"Service provider","FN":"service provider","FId":116537},{"DFN":"Service design","FN":"service design","FId":61063171},{"DFN":"Service delivery framework","FN":"service delivery framework","FId":68595000},{"DFN":"Runtime system","FN":"runtime system","FId":2780870223},{"DFN":"Real-time computing","FN":"real time computing","FId":79403827},{"DFN":"Late binding","FN":"late binding","FId":164056133},{"DFN":"Distributed computing","FN":"distributed computing","FId":120314980},{"DFN":"Differentiated service","FN":"differentiated service","FId":158713421},{"DFN":"Computer science","FN":"computer science","FId":41008148}],"C":{"CN":"wons","CId":1124398036},"E":"{\"DN\":\"Dynamic Service Adaptation for Runtime System Extensions\",\"IA\":{\"IndexLength\":148,\"InvertedIndex\":{\"Most\":[0],\"of\":[1,18,31,35,89,94,104,146],\"all\":[2,93,103],\"software\":[3],\"systems\":[4,70],\"have\":[5],\"to\":[6,48,74,77,83,97,111,114,130],\"be\":[7,75,98,112],\"changed\":[8],\"after\":[9],\"their\":[10],\"initial\":[11],\"deployment.\":[12],\"This\":[13,61],\"is\":[14,62],\"not\":[15],\"only\":[16],\"because\":[17,30],\"changing\":[19,57],\"knowledge\":[20],\"and\":[21,26,108,127],\"expectations\":[22],\"about\":[23],\"our\":[24,51],\"domains\":[25],\"systems,\":[27],\"but\":[28],\"also\":[29],\"the\":[32,36,42,56,105],\"continuous\":[33],\"change\":[34],\"environment\":[37,43],\"itself.\":[38],\"While\":[39],\"changes\":[40,133],\"in\":[41,53,135],\"happen\":[44],\"implicitly,\":[45],\"we\":[46,72],\"need\":[47,110],\"explicitly\":[49],\"keep\":[50],\"technology\":[52],\"sync\":[54],\"with\":[55,102],\"world\":[58],\"around\":[59],\"it.\":[60],\"especially\":[63],\"true\":[64],\"for\":[65],\"next\":[66],\"generation\":[67],\"mobile\":[68],\"communication\":[69],\"which\":[71],\"expect\":[73],\"open\":[76],\"third-party\":[78],\"service\":[79,90,118,123],\"providers,\":[80],\"allowing\":[81],\"them\":[82],\"offer\":[84,115],\"services\":[85,96],\"on\":[86,121,140],\"a\":[87,116,136],\"variety\":[88],\"platforms.\":[91,106],\"Not\":[92],\"these\":[95],\"offered\":[99],\"will\":[100],\"match\":[101],\"Adjustments\":[107],\"extensions\":[109],\"made\":[113],\"pleasant\":[117],\"experience.\":[119],\"Research\":[120],\"dynamic\":[122],\"adaptation\":[124],\"provides\":[125],\"concepts\":[126],\"technologies\":[128],\"needed\":[129],\"perform\":[131],\"such\":[132],\"late\":[134],\"system's\":[137],\"lifecycle,\":[138],\"possibly\":[139],\"demand,\":[141],\"at\":[142],\"runtime,\":[143],\"without\":[144],\"disruption\":[145],\"service.\":[147]}},\"S\":[{\"Ty\":3,\"U\":\"http://dl.ifip.org/db/conf/ifip6/wons2004/HirschfeldKB04.pdf\"},{\"Ty\":3,\"U\":\"http://www.hirschfeld.org/writings/media/HirschfeldKawamuraBerndt_2004_DynamicServiceAdaptationForRuntimeSystemExtensions_Lncs2928.pdf\"},{\"Ty\":3,\"U\":\"https://link.springer.com/content/pdf/10.1007%2F978-3-540-24614-5_17.pdf\"},{\"Ty\":1,\"U\":\"https://link.springer.com/chapter/10.1007%2F978-3-540-24614-5_17\"},{\"Ty\":1,\"U\":\"https://rd.springer.com/chapter/10.1007/978-3-540-24614-5_17\"}],\"VFN\":\"Wireless on Demand Network Systems and Service\",\"VSN\":\"WONS\",\"FP\":227,\"LP\":240,\"DOI\":\"10.1007/978-3-540-24614-5_17\",\"CC\":{\"109043198\":[\"PerspectiveS coordinates the activation of a set of aspects, and so lets us to decorate a system with context-dependent behavior, without requiring developers of the base system to be aware of that [10].\"],\"1491095550\":[\"AspectS [9] employs run-time weaving to transform the base system according to the aspects involved.\",\"AspectS provides a platform for the exploration of aspect-oriented software composition in the context of dynamic systems [9].\"],\"1506052820\":[\"The woven code is based on method wrappers [ 3 ], reflection [20, 24] and meta-programming [17].\"],\"1527793496\":[\"The woven code is based on method wrappers [3], reflection [20, 24] and meta-programming [17].\",\"Squeak/Smalltalk’s properties that are important to our research on DSA are its extensive reflection support covering both introspection and intercession, its powerful metaobject protocol [17] that gives us full access to the computational properties of our environment, and its support for very late binding to defer binding decisions until the point when they actually need to be made.\"],\"1539723268\":[\"As of today there are several approaches supporting aspect-oriented concepts, ranging from domain-specific aspect languages such as RG [21] or D [ 19 ] to generalpurpose aspect languages like AspectJ or AspectS.\"],\"1610570299\":[\"AspectJ [ 15 ] and HyperJ [25] are examples for compile-time weaving.\"],\"1644882639\":[\"In AspectJ for example, the weaver parses an AspectJ program, transforms the AspectJ abstract syntax tree (AST) into a valid Java [ 8 ] AST, and then generates Java byte code for a standard Java virtual machine.\"],\"1654534824\":[\"JMangler [18] performs load-time transformation of Java class files.\"],\"1770006921\":[\"Squeak/Smalltalk serves us a very dynamic object-oriented multimedia scripting environment [7, 13].\"],\"1851327982\":[\"Based on the assumption that crosscutting is inherent to complex software systems, AOP ([6, 16]) as a new software technology addresses the issues of separation of concerns (SOC, [5, 12]).\"],\"1910673522\":[\"Variation points, or hotspots [23], designate module boundaries in a system’s design where changes are expected to happen without the need to explicitly name all of them.\"],\"1990991680\":[\"mechanisms that make it possible to affect a system’s implementation in a crosscutting way [4].\"],\"1991374650\":[\"The woven code is based on method wrappers [3], reflection [20, 24] and meta-programming [17].\"],\"2013886348\":[\"In AspectJ for example, the weaver parses an AspectJ program, transforms the AspectJ abstract syntax tree (AST) into a valid Java [8] AST, and then generates Java byte code for a standard Java virtual machine.\"],\"2134119432\":[\"Modules help to hide from each other complex design decisions or design decisions which are more likely to change [22].\"],\"2138363365\":[\"AOP ([6,  16 ]) as a new software technology addresses the issues of separation of concerns (SOC, [5, 12]).\"],\"2143238865\":[\"Based on the assumption that crosscutting is inherent to complex software systems, AOP ([6, 16]) as a new software technology addresses the issues of separation of concerns (SOC, [5, 12]).\"],\"2168287017\":[\"The woven code is based on method wrappers [3], reflection [20, 24] and meta-programming [17].\",\"Systems with reflective architectures incorporate structures representing aspects of themselves [20].\"],\"2172147300\":[\"Squeak/Smalltalk serves us a very dynamic object-oriented multimedia scripting environment [7, 13].\"],\"2480195817\":[\"AspectJ [15] and HyperJ [25] are examples for compile-time weaving.\"],\"2782959840\":[\"The woven code is based on method wrappers [3], reflection [20, 24] and meta-programming [17].\"]},\"PR\":[2152410528,2168430883,1834170387,2119759067,2060201762,2160092534,2109346131,2031167868,2028622255,1982309287,2138270660,1967279902,1899842977,2096082395,41864531,2102748061,2128349733,58257504,2130348073,1969878155,2152410528,2168430883,1834170387,2119759067,2060201762,2160092534,2109346131,2031167868,2028622255,1982309287,2138270660,1967279902,1899842977,2096082395,41864531,2102748061,2128349733,58257504,2130348073,1969878155],\"ANF\":[{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":1},{\"FN\":\"Katsuya\",\"LN\":\"Kawamura\",\"S\":2},{\"FN\":\"Hendrik\",\"LN\":\"Berndt\",\"S\":3}],\"BV\":\"wireless on demand network systems and service\",\"BT\":\"a\",\"PB\":\"Springer\"}"},{"logprob":-21.289,"Id":2128324598,"Ty":"0","Ti":"active expressions basic building blocks for reactive programming","Pt":"1","L":"en","Y":2017,"D":"2017-04-01","CC":5,"ECC":5,"W":["active","basic","blocks","building","expressions","programming","reactive"],"AA":[{"DAuN":"Stefan Ramson","AuN":"stefan ramson","AuId":2765293218,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":1},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":2}],"F":[{"DFN":"Theoretical computer science","FN":"theoretical computer science","FId":80444323},{"DFN":"Software system","FN":"software system","FId":149091818},{"DFN":"Software development","FN":"software development","FId":529173508},{"DFN":"Reactive programming","FN":"reactive programming","FId":150762246},{"DFN":"Implementation","FN":"implementation","FId":26713055},{"DFN":"Expression (mathematics)","FN":"expression","FId":76482347},{"DFN":"Distributed computing","FN":"distributed computing","FId":120314980},{"DFN":"Data mining","FN":"data mining","FId":124101348},{"DFN":"Context model","FN":"context model","FId":183322885},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Change detection","FN":"change detection","FId":203595873},{"DFN":"Abstraction","FN":"abstraction","FId":124304363}],"J":{"JN":"arxiv cs se","JId":2595428313},"E":"{\"DN\":\"Active Expressions: Basic Building Blocks for Reactive Programming\",\"IA\":{\"IndexLength\":281,\"InvertedIndex\":{\"Modern\":[0],\"software\":[1,18],\"development\":[2],\"without\":[3],\"reactive\":[4,31,42,58,108,115,118,122,174,191,217,232,266],\"programming\":[5,11,32,175,218,267],\"is\":[6,33,95],\"hard\":[7,52],\"to\":[8,22,73,85,251,253,261,272,279],\"imagine.\":[9],\"Reactive\":[10],\"favors\":[12],\"a\":[13,51,80,100,112,125,155,186,225,274],\"wide\":[14],\"class\":[15,113],\"of\":[16,37,41,114,137,143,164,173,181,188,201,209,231,244,277],\"contemporary\":[17],\"systems\":[19],\"that\":[20,271],\"respond\":[21],\"user\":[23],\"input,\":[24],\"network\":[25],\"messages,\":[26],\"and\":[27,235,269],\"other\":[28],\"events.\":[29],\"While\":[30],\"an\":[34,138],\"active\":[35,152,167,182,202,222,259],\"field\":[36],\"research,\":[38],\"the\":[39,74,134,141,144,160,171,179,199,207,242],\"implementation\":[40,162,172],\"concepts\":[43,123,192,268],\"remains\":[44],\"challenging.\":[45],\"In\":[46],\"particular,\":[47],\"change\":[48,61,76,93,127,147,165,228],\"detection\":[49,62,94,128,148],\"represents\":[50],\"but\":[53,69],\"inevitable\":[54],\"necessity\":[55],\"when\":[56,214],\"implementing\":[57],\"concepts.\":[59,109,119,176,219],\"Typically,\":[60],\"mechanisms\":[63],\"are\":[64,70],\"not\":[65],\"intended\":[66],\"for\":[67,92,227],\"reuse\":[68],\"tightly\":[71],\"coupled\":[72],\"particular\":[75],\"resolution\":[77],\"mechanism.\":[78],\"As\":[79],\"result,\":[81],\"developers\":[82,230],\"often\":[83],\"have\":[84],\"re-implement\":[86],\"similar\":[87],\"abstractions.\":[88],\"A\":[89],\"reusable\":[90,156],\"primitive\":[91,226],\"still\":[96],\"missing.\":[97],\"To\":[98],\"find\":[99],\"suitable\":[101],\"primitive,\":[102],\"we\":[103,150,256],\"identify\":[104],\"commonalities\":[105],\"in\":[106,133],\"existing\":[107,189],\"We\":[110,177],\"discover\":[111],\"concepts,\":[116],\"state-based\":[117,121,190],\"All\":[120],\"share\":[124],\"common\":[126,146],\"mechanism:\":[129],\"they\":[130],\"detect\":[131],\"changes\":[132],\"evaluation\":[135],\"result\":[136],\"expression.\":[139],\"On\":[140],\"basis\":[142],\"identified\":[145],\"mechanism,\":[149],\"propose\":[151],\"expressions\":[153,168,183,205,223,260],\"as\":[154,224],\"primitive.\":[157],\"By\":[158,220],\"abstracting\":[159],\"tedious\":[161],\"details\":[163],\"detection,\":[166,229],\"can\":[169,238],\"ease\":[170],\"evaluate\":[178],\"design\":[180,243],\"by\":[184],\"re-implementing\":[185],\"number\":[187],\"using\":[193,221],\"them.\":[194],\"The\":[195],\"resulting\":[196],\"implementations\":[197],\"highlight\":[198],\"expressiveness\":[200],\"expressions.\":[203],\"Active\":[204],\"enable\":[206],\"separation\":[208],\"essential\":[210],\"from\":[211],\"non-essential\":[212],\"parts\":[213],\"reasoning\":[215],\"about\":[216],\"language\":[233],\"constructs\":[234],\"runtime\":[236],\"support\":[237],\"now\":[239],\"focus\":[240],\"on\":[241],\"how\":[245],\"application\":[246],\"programmers\":[247],\"should\":[248],\"be\":[249],\"able\":[250],\"react\":[252],\"change.\":[254],\"Ultimately,\":[255],\"would\":[257],\"like\":[258],\"encourage\":[262],\"experiments\":[263],\"with\":[264,270],\"novel\":[265],\"yield\":[273],\"wider\":[275],\"variety\":[276],\"them\":[278],\"explore.\":[280]}},\"S\":[{\"Ty\":3,\"U\":\"http://arxiv.org/pdf/1703.10859.pdf\"},{\"Ty\":1,\"U\":\"http://programming-journal.org/2017/1/12/\"},{\"Ty\":1,\"U\":\"http://dblp.uni-trier.de/db/journals/corr/corr1703.html#RamsonH17\"}],\"VFN\":\"arXiv: Software Engineering\",\"V\":1,\"I\":2,\"FP\":12,\"DOI\":\"10.22152/programming-journal.org/2017/1/12\",\"PR\":[1556961030,2322115304,2133388770,2167433925,2099539205,2586347983,2120484652,2138592056,2120590862,2168483093,2383942068,2585519423,2196133539,2084479370,2122347823,2154032975,2125153432,2100164091,1988592865,2001076311,1556961030,2322115304,2133388770,2167433925,2099539205,2586347983,2120484652,2138592056,2120590862,2168483093,2383942068,2585519423,2196133539,2084479370,2122347823,2154032975,2125153432,2100164091,1988592865,2001076311],\"ANF\":[{\"FN\":\"Stefan\",\"LN\":\"Ramson\",\"S\":1},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":2}],\"BV\":\"arXiv preprint arXiv:1703.10859\",\"BT\":\"a\"}"},{"logprob":-21.294,"Id":2051557456,"Ty":"0","Ti":"object versioning to support recovery needs using proxies to preserve previous development states in lively","Pt":"3","L":"en","Y":2015,"D":"2015-05-12","CC":2,"ECC":2,"RId":[1963557108,2092911542,2172147300,1673079227,1964757858,2139672701,1507612039,1527077815,1964316648,2293810946,2053729218,2108401299,2024901245,2090933027,2051994214,1967359581],"W":["development","lively","needs","object","preserve","previous","proxies","recovery","states","support","versioning"],"AA":[{"DAuN":"Bastian Steinert","AuN":"bastian steinert","AuId":2142371068,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":1},{"DAuN":"Lauritz Thamsen","AuN":"lauritz thamsen","AuId":2228463212,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":2},{"DAuN":"Tim Felgentreff","AuN":"tim felgentreff","AuId":1964871710,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":3},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":4}],"F":[{"DFN":"Virtual machine","FN":"virtual machine","FId":25344961},{"DFN":"Undo","FN":"undo","FId":2780154230},{"DFN":"Theoretical computer science","FN":"theoretical computer science","FId":80444323},{"DFN":"Software versioning","FN":"software versioning","FId":198140048},{"DFN":"JavaScript","FN":"javascript","FId":544833334},{"DFN":"Database","FN":"database","FId":77088390},{"DFN":"Computer science","FN":"computer science","FId":41008148}],"C":{"CN":"dls","CId":1133200404},"E":"{\"DN\":\"Object versioning to support recovery needs: using proxies to preserve previous development states in lively\",\"IA\":{\"IndexLength\":80,\"InvertedIndex\":{\"We\":[0,44],\"present\":[1],\"object\":[2,27,62],\"versioning\":[3,63],\"as\":[4,31],\"a\":[5],\"generic\":[6],\"approach\":[7],\"to\":[8,11,24,40,47,69],\"preserve\":[9],\"access\":[10],\"previous\":[12],\"development\":[13],\"and\":[14,28,52,76],\"application\":[15],\"states.\":[16],\"Version-aware\":[17],\"references\":[18,34],\"can\":[19,35],\"manage\":[20],\"the\":[21,25,41,49,54,71],\"modifications\":[22,39],\"made\":[23],\"target\":[26],\"record\":[29],\"versions\":[30],\"desired.\":[32],\"Such\":[33],\"be\":[36],\"provided\":[37],\"without\":[38],\"virtual\":[42],\"machine.\":[43],\"used\":[45],\"proxies\":[46],\"implement\":[48],\"proposed\":[50],\"concepts\":[51],\"demonstrate\":[53],\"Lively\":[55,67],\"Kernel\":[56],\"running\":[57],\"on\":[58],\"top\":[59],\"of\":[60,73],\"this\":[61],\"layer.\":[64],\"This\":[65],\"enables\":[66],\"users\":[68],\"undo\":[70],\"effects\":[72],\"direct\":[74],\"manipulation\":[75],\"other\":[77],\"programming\":[78],\"actions.\":[79]}},\"S\":[{\"Ty\":1,\"U\":\"https://doi.acm.org/10.1145/2661088.2661093\"},{\"Ty\":1,\"U\":\"https://dl.acm.org/citation.cfm?doid=2661088.2661093\"},{\"Ty\":0,\"U\":\"http://dl.acm.org/citation.cfm?doid=2661088.2661093\"}],\"VFN\":\"Dynamic Languages Symposium\",\"VSN\":\"DLS\",\"V\":50,\"I\":2,\"FP\":113,\"LP\":124,\"DOI\":\"10.1145/2775052.2661093\",\"CC\":{\"1527077815\":[\"However, the current prototype has revealed two main limitations, in particular for live programming systems such as Squeak/Smalltalk [4] or the Lively Kernel [5].\"],\"1963557108\":[\"For example, programming can involve the composition of visual elements such as in Etoys [6], Scratch [10], or Fabrik [3].\"],\"1964316648\":[\"For example, programming can involve the composition of visual elements such as in Etoys [6], Scratch [10], or Fabrik [3].\"],\"1964757858\":[\"The Lively Kernel implements Morphic [11], a framework for developing graphical applications.\"],\"2024901245\":[\"The Lively Kernel uses a Parts Bin [9] to save and publish morphs and morph compositions with associated behavior as parts.\"],\"2051994214\":[\"Continuous versioning such as provided by CoExist [14] implicitly records current snapshots of the development state and provides users access to these recorded versions.\",\"CoExist preserves fast and easy access to previous development states [14].\"],\"2139672701\":[\"Thus, proxies in this design are virtual objects [15]; they do not stand in for a specific object, but can forward intercepted interactions to any object.\"],\"2172147300\":[\"However, the current prototype has revealed two main limitations, in particular for live programming systems such as Squeak/Smalltalk [4] or the Lively Kernel [5].\"],\"2293810946\":[\"Disabling Target Object Invariants All proxies require a target object, as explained in Section , and they are designed to ensure invariants between the return values of traps and the target’s state [1].\"]},\"PR\":[2090933027,2110249885,2054404059,5488697,2254129038,2130237824,1509246915,2049751460,2016877171,2338918733,2575115320,46416002,1571004136,1498333419,2171245381,2018868098,38843509,2305896283,2203630088,2395838510,2090933027,2110249885,2054404059,5488697,2254129038,2130237824,1509246915,2049751460,2016877171,2338918733,2575115320,46416002,1571004136,1498333419,2171245381,2018868098,38843509,2305896283,2203630088,2395838510],\"ANF\":[{\"FN\":\"Bastian\",\"LN\":\"Steinert\",\"S\":1},{\"FN\":\"Lauritz\",\"LN\":\"Thamsen\",\"S\":2},{\"FN\":\"Tim\",\"LN\":\"Felgentreff\",\"S\":3},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":4}],\"BV\":\"dynamic languages symposium\",\"BT\":\"a\",\"PB\":\"ACM\"}"},{"logprob":-21.306,"Id":2466900139,"Ty":"0","Ti":"adaptive just in time value class optimization for lowering memory consumption and improving execution time performance","Pt":"1","L":"en","Y":2017,"D":"2017-06-01","CC":2,"ECC":2,"RId":[2072737419,1829244603,2116136092,1495226832,1993335798,2890622637,2000050212,1598886868,2163976959,2011669306,2130262734,2058213389,1993318777,2208923056,2084845478,1966981171,2158641382,2058639022,2121757479,1998416211,2117818027,2086833941,1493929095,2097013380,2126060880,2010448353,67134903,2179776334,2293546518,2471814997,633399213,1594498566,1791018578,2491718647,2008913431],"W":["adaptive","class","consumption","execution","improving","just","lowering","memory","optimization","performance","time","value"],"AA":[{"DAuN":"Tobias Pape","AuN":"tobias pape","AuId":2114920648,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":1},{"DAuN":"Carl Friedrich Bolz","AuN":"carl friedrich bolz","AuId":1964826138,"DAfN":"King's College London","AfN":"king s college london","AfId":183935753,"S":2},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":3}],"F":[{"DFN":"Virtual machine","FN":"virtual machine","FId":25344961},{"DFN":"Value object","FN":"value object","FId":2779904691},{"DFN":"Time value of money","FN":"time value of money","FId":147842934},{"DFN":"Theoretical computer science","FN":"theoretical computer science","FId":80444323},{"DFN":"Real-time computing","FN":"real time computing","FId":79403827},{"DFN":"Racket","FN":"racket","FId":2778707667},{"DFN":"Programming language","FN":"programming language","FId":199360897},{"DFN":"Fold (higher-order function)","FN":"fold","FId":53942344},{"DFN":"Computer science","FN":"computer science","FId":41008148}],"J":{"JN":"scp","JId":21029587},"E":"{\"DN\":\"Adaptive just-in-time value class optimization for lowering memory consumption and improving execution time performance\",\"IA\":{\"IndexLength\":139,\"InvertedIndex\":{\"Abstract\":[0],\"The\":[3,78],\"performance\":[4],\"of\":[5,68,82,123],\"value\":[6,34,69,84,99],\"classes\":[7],\"is\":[8,49],\"highly\":[9],\"dependent\":[10],\"on\":[11],\"how\":[12],\"they\":[13,41],\"are\":[14,23],\"represented\":[15],\"in\":[16,101,130],\"the\":[17,107,124],\"virtual\":[18],\"machine.\":[19],\"Value\":[20],\"class\":[21,70],\"instances\":[22],\"immutable,\":[24],\"have\":[25],\"no\":[26],\"identity,\":[27],\"and\":[28,39,46,64,76,87,112,120,133],\"can\":[29],\"only\":[30],\"refer\":[31],\"to\":[32,51,62,72,95,116],\"other\":[33],\"objects\":[35,100],\"or\":[36],\"primitive\":[37],\"values\":[38],\"since\":[40],\"should\":[42],\"be\":[43],\"very\":[44],\"lightweight\":[45],\"fast,\":[47],\"it\":[48],\"important\":[50],\"optimize\":[52],\"them\":[53],\"carefully.\":[54],\"In\":[55],\"this\":[56],\"paper\":[57],\"we\":[58,127],\"present\":[59],\"a\":[60,117],\"technique\":[61,79],\"detect\":[63],\"compress\":[65],\"common\":[66],\"patterns\":[67,81],\"usage\":[71,75,132],\"improve\":[73],\"memory\":[74,104,131],\"performance.\":[77],\"identifies\":[80],\"frequent\":[83],\"object\":[85,113],\"references\":[86],\"introduces\":[88],\"abbreviated\":[89],\"forms\":[90],\"for\":[91,136],\"them.\":[92],\"This\":[93],\"allows\":[94],\"store\":[96],\"multiple\":[97],\"inter-referenced\":[98],\"an\":[102,121],\"inlined\":[103],\"representation,\":[105],\"reducing\":[106],\"overhead\":[108],\"stemming\":[109],\"from\":[110],\"meta-data\":[111],\"references.\":[114],\"Applied\":[115],\"small\":[118],\"prototype\":[119],\"implementation\":[122],\"Racket\":[125],\"language,\":[126],\"found\":[128],\"improvements\":[129],\"execution\":[134],\"time\":[135],\"several\":[137],\"micro-benchmarks.\":[138]}},\"S\":[{\"Ty\":3,\"U\":\"https://kclpure.kcl.ac.uk/portal/files/56060029/1606.06726v1.pdf\"},{\"Ty\":3,\"U\":\"http://arxiv.org/pdf/1606.06726.pdf\"},{\"Ty\":1,\"U\":\"http://dblp.uni-trier.de/db/journals/corr/corr1606.html#PapeBH16\"},{\"Ty\":1,\"U\":\"https://www.sciencedirect.com/science/article/pii/S0167642316301034\"},{\"Ty\":1,\"U\":\"https://www.arxiv.org/abs/1606.06726\"},{\"Ty\":1,\"U\":\"https://128.84.21.199/abs/1606.06726\"},{\"Ty\":1,\"U\":\"https://kclpure.kcl.ac.uk/portal/en/publications/adaptive-justintime-value-class-optimization-for-lowering-memory-consumption-and-improving-execution-time-performance(a7b44fe9-35c6-4a97-a716-97d46e832960).html\"},{\"Ty\":0,\"U\":\"http://www.sciencedirect.com/science/article/pii/S0167642316301034\"}],\"VFN\":\"Science of Computer Programming\",\"V\":140,\"FP\":17,\"LP\":29,\"DOI\":\"10.1016/j.scico.2016.08.003\",\"CC\":{\"67134903\":[\"ew, value classes are similar to algebraic data types as found in languages in the ML family [24, 25]. Hence, optimizations done to this category of data structures are relevant to value classes, too [26, 27]. Object Inlining. Wimmer has proposed object inlining [28] as a general data structure optimization for structured objects in Java. This approach shares many similarities with ours: it also inlines o\"],\"1495226832\":[\"entity that can reference only other value classes instances or primitive data. They have been suggested for a an extended Java [1], Java itself [2], exist in .NET [3] and—in a limited form— in Scala [4]. However, related constructs of immutable identity-less structures also occur in several other languages, particularly in functional ones. Examples include the algebraic data types of ML and Haskell,\"],\"1993335798\":[\"r by observing the execution of the interpreter instead of the execution of the application program. Hence, a resulting trace is not speciﬁc to a particular application but the underlying interpreter [14, 15]. Therefore, it is not necessary for language implementers to program an optimized, language-speciﬁc jit compiler but rather to provide a straightforward language-speciﬁc interpreter in RPython, a sub\",\"rmediate Language (cil). Tracing an interpreter that runs a program instead of tracing the program itself it the core idea of meta-tracing jit compilers, pioneered in the DynamoRIO project [42]. PyPy [18, 14] is a meta-circular Python implementation that uses a meta-tracing jit compiler. Provided through the RPython tool chain, other language implementations can beneﬁt from a meta-tracing, for example Sma\"],\"2097013380\":[\"rn matching, which we used to prototype and evaluate the proposed optimization in isolation. To also evaluate the approach in a more realistic setting, we implemented the same optimization for Pycket [6], a re-implementation of the Racket language. Both languages use the RPython virtual machine implementation framework and its tracing just-in-time (jit) compiler. The tracing jit compiler is instrumen\",\"roperties that can inﬂuence the way structures interact with the system. For example, a special structure type property can make structure instances callable, so they can act like a procedure. Pycket [6] is an implementation of Racket using the RPython toolchain and its tracing jit. While not featurecomplete, it provides a fair amount of functionality and can compete with the reference implementation\",\"res [22]. 5.2.2. Non-regression Our optimization should not inﬂuence anything except value classes. To ensure this for Pycket„ we ran the shootout benchmarks described in the original paper on Pycket [6]. These benchmarks hardly make use of structures. On average, the execution time for these benchmarks deviates less than 6% (both faster or slower) from the original implementation. This low deviation\"],\"2126060880\":[\"r by observing the execution of the interpreter instead of the execution of the application program. Hence, a resulting trace is not speciﬁc to a particular application but the underlying interpreter [14, 15]. Therefore, it is not necessary for language implementers to program an optimized, language-speciﬁc jit compiler but rather to provide a straightforward language-speciﬁc interpreter in RPython, a sub\"],\"2158641382\":[\"mplementation of the Racket language [5], a dynamically typed, multi-paradigm programming language in the Scheme family. Racket supports, among others, immutable-by-default lists, a design-bycontract [21] implementation, and heterogeneous structure datatypes. The structure types are of special interest because, if applied carefully, they can be used like value classes.6 Moreover, structures can form h\"],\"2471814997\":[\"mance is evaluated in section 5. Our approach is put into context in section 6 and we conclude in section 7. 2. Tracing Just-In-Time Compilers We brieﬂy introduce tracing just-in-time (jit) compilers [7], as some of their properties are key to the performance characteristics of our approach (cf. section 3.2 and s section 3.3). Just-in-time (jit) compilation has become a mainstream technique for, amon\",\"is implemented as a direct application of the cek-machine [20]. The only structured data types available are value classes. We used the RPython tool chain to incorporate its meta-tracing jit compiler [7]. The implementation has been carefully unit-tested during development to make sure that various complex substitutions and compactions work correctly. 4.3. Structures in Racket and Pycket Since the be\"],\"2491718647\":[\"ete with the reference implementation performancewise, in certain areas even outperforming high-performance ahead-of-time (aot) Scheme compilers. The support for Racket structures in Pycket is recent [22] and showed potential for the optimization presented here. Furthermore, the implementation technique (cek machine) and environment (RPython, tracing jit) come close to the prototype and suggest a good\",\"ket, the structure benchmarks shipped with Racket would be interesting for our measurements. However, the structure benchmarks do not run yet on Pycket due to missing (not structure related) features [22]. 5.2.2. Non-regression Our optimization should not inﬂuence anything except value classes. To ensure this for Pycket„ we ran the shootout benchmarks described in the original paper on Pycket [6]. The\"]},\"PR\":[2278564014,2887404429,5020370,189448761,1512611561,2098255221,1017004335,2888221526,140840230,185802846,1535431348,2268708171,2808388868,864608136,2586280202,107674420,2741609640,841357825,2470428870,2320694838,2278564014,2887404429,5020370,189448761,1512611561,2098255221,1017004335,2888221526,140840230,185802846,1535431348,2268708171,2808388868,864608136,2586280202,107674420,2741609640,841357825,2470428870,2320694838],\"ANF\":[{\"FN\":\"Tobias\",\"LN\":\"Pape\",\"S\":1},{\"FN\":\"Carl Friedrich\",\"LN\":\"Bolz\",\"S\":2},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":3}],\"BV\":\"Science of Computer Programming\",\"BT\":\"a\",\"PB\":\"Elsevier\"}"},{"logprob":-21.308,"Id":2308961128,"Ty":"0","Ti":"multi level debugging for interpreter developers","Pt":"0","L":"en","Y":2016,"D":"2016-03-14","CC":2,"ECC":2,"RId":[2160370554,1985877757,2012948209],"W":["debugging","developers","interpreter","level","multi"],"AA":[{"DAuN":"Bastian Kruck","AuN":"bastian kruck","AuId":2635296306,"DAfN":"HPI, Germany","S":1},{"DAuN":"Stefan Lehmann","AuN":"stefan lehmann","AuId":2223786367,"DAfN":"HPI, Germany","S":2},{"DAuN":"Christoph Keßler","AuN":"christoph kesler","AuId":2705790868,"DAfN":"HPI, Germany","S":3},{"DAuN":"Jakob Reschke","AuN":"jakob reschke","AuId":2345244598,"DAfN":"HPI, Germany","S":4},{"DAuN":"Tim Felgentreff","AuN":"tim felgentreff","AuId":1964871710,"DAfN":"HPI, Germany","S":5},{"DAuN":"Jens Lincke","AuN":"jens lincke","AuId":2055148755,"DAfN":"HPI, Germany","S":6},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"HPI, Germany","S":7}],"F":[{"DFN":"Stack (abstract data type)","FN":"stack","FId":9395851},{"DFN":"Real-time computing","FN":"real time computing","FId":79403827},{"DFN":"Language-oriented programming","FN":"language oriented programming","FId":2777828303},{"DFN":"Interpreter","FN":"interpreter","FId":122783720},{"DFN":"Debugging","FN":"debugging","FId":168065819},{"DFN":"Debugger","FN":"debugger","FId":2778485113},{"DFN":"Context switch","FN":"context switch","FId":53833338},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Call stack","FN":"call stack","FId":119024030},{"DFN":"Algorithmic program debugging","FN":"algorithmic program debugging","FId":136388014}],"E":"{\"DN\":\"Multi-level debugging for interpreter developers\",\"IA\":{\"IndexLength\":141,\"InvertedIndex\":{\"Conventional\":[0],\"debuggers\":[1,56],\"require\":[2],\"programmers\":[3,37],\"to\":[4,43,60],\"work\":[5],\"on\":[6,48,86,139],\"multiple\":[7,55],\"levels\":[8,83,109,123],\"of\":[9,28,54,84,110,128],\"abstraction\":[10,85],\"at\":[11,57],\"once\":[12,58],\"when\":[13],\"inspecting\":[14],\"call\":[15,132,136],\"stacks\":[16,133],\"or\":[17],\"data.\":[18],\"This\":[19],\"demands\":[20],\"considerable\":[21],\"cognitive\":[22],\"overhead\":[23],\"and\":[24,64,80,102,134],\"deep\":[25],\"system\":[26],\"knowledge\":[27],\"all\":[29],\"implementation\":[30],\"technologies\":[31],\"involved.\":[32],\"When\":[33],\"developing\":[34],\"an\":[35,66,71,95],\"interpreter,\":[36],\"often\":[38],\"create\":[39],\"a\":[40,45,113],\"dedicated\":[41],\"debugger\":[42,91],\"have\":[44],\"higher-level\":[46],\"perspective\":[47],\"the\":[49,51,82,126],\"client-language;\":[50],\"resulting\":[52],\"use\":[53],\"leads\":[59],\"mental\":[61],\"context\":[62],\"switches\":[63],\"needs\":[65],\"elaborated\":[67],\"method.\":[68],\"We\":[69,98,116],\"present\":[70],\"integrated\":[72],\"debugging\":[73,114,127],\"tool\":[74],\"in\":[75,112],\"which\":[76,87],\"interpreter\":[77],\"developers\":[78],\"define\":[79],\"select\":[81],\"they\":[88],\"focus.\":[89],\"Our\":[90],\"provides\":[92],\"them\":[93],\"with\":[94],\"abstraction-specialized\":[96],\"view.\":[97],\"consider\":[99],\"both\":[100],\"host-language\":[101,122],\"guest-language\":[103],\"levels,\":[104],\"since\":[105],\"either\":[106],\"may\":[107],\"be\":[108],\"interest\":[111],\"session.\":[115],\"show\":[117],\"how\":[118],\"this\":[119],\"separation\":[120],\"into\":[121],\"can\":[124],\"ease\":[125],\"applications\":[129],\"through\":[130],\"filtering\":[131],\"specializing\":[135],\"stack\":[137],\"representation\":[138],\"levels.\":[140]}},\"S\":[{\"Ty\":1,\"U\":\"http://dblp.uni-trier.de/db/conf/aosd/modularity2016c.html#KruckLKRFLH16\"}],\"VFN\":\"Companion Proceedings of the 15th International Conference on Modularity\",\"FP\":91,\"LP\":93,\"DOI\":\"10.1145/2892664.2892679\",\"PR\":[1899216608,1009435005,2126077537,2268556033,2165124476,1985877757,2185368734,2498902211,2602532206,1726133369,2806285345,2499947387,70008023,2810637361,2161267230,2186442435,2795148395,2181829784,2566623725,2097201766,1899216608,1009435005,2126077537,2268556033,2165124476,1985877757,2185368734,2498902211,2602532206,1726133369,2806285345,2499947387,70008023,2810637361,2161267230,2186442435,2795148395,2181829784,2566623725,2097201766],\"ANF\":[{\"FN\":\"Bastian\",\"LN\":\"Kruck\",\"S\":1},{\"FN\":\"Stefan\",\"LN\":\"Lehmann\",\"S\":2},{\"FN\":\"Christoph\",\"LN\":\"Keßler\",\"S\":3},{\"FN\":\"Jakob\",\"LN\":\"Reschke\",\"S\":4},{\"FN\":\"Tim\",\"LN\":\"Felgentreff\",\"S\":5},{\"FN\":\"Jens\",\"LN\":\"Lincke\",\"S\":6},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":7}],\"BV\":\"Companion Proceedings of the 15th International Conference on Modularity\",\"BT\":\"p\",\"PB\":\"ACM\"}"},{"logprob":-21.318,"Id":2150387442,"Ty":"0","Ti":"multi user multi account interaction in groupware supporting single display collaboration","Pt":"3","L":"en","Y":2009,"D":"2009-11-01","CC":3,"ECC":3,"RId":[2117492729,2158707444,1585360772,18855373,2167670020,1975207314,2065367771,1524975001,1510173602,1989790238,1598048033,1993407539,1515135756,1560867643,2021856465,1566444941,1964757858,2110915807,2090613284,2109924981,2103283929,2085331906,1953461384,1513413497,2036065734],"W":["account","collaboration","display","groupware","interaction","multi","single","supporting","user"],"AA":[{"DAuN":"Bastian Steinert","AuN":"bastian steinert","AuId":2142371068,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":1},{"DAuN":"Michael Grünewald","AuN":"michael grunewald","AuId":2637637246,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":2},{"DAuN":"Stefan Richter","AuN":"stefan richter","AuId":2300360831,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":3},{"DAuN":"Jens Lincke","AuN":"jens lincke","AuId":2055148755,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":4},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":5}],"F":[{"DFN":"Software architecture","FN":"software architecture","FId":35869016},{"DFN":"Server","FN":"server","FId":93996380},{"DFN":"Project management","FN":"project management","FId":15952604},{"DFN":"Multi-user","FN":"multi user","FId":2778002699},{"DFN":"Knowledge management","FN":"knowledge management","FId":56739046},{"DFN":"Human–computer interaction","FN":"human computer interaction","FId":107457646},{"DFN":"Computer-supported cooperative work","FN":"computer supported cooperative work","FId":198439703},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Collaborative software","FN":"collaborative software","FId":554579003},{"DFN":"Asynchronous communication","FN":"asynchronous communication","FId":151319957},{"DFN":"Application software","FN":"application software","FId":134317101}],"C":{"CN":"collaboratecom","CId":1181194180},"CI":{"CIN":"collaboratecom 2009","CIId":588232511},"E":"{\"DN\":\"Multi-user multi-account interaction in groupware supporting single-display collaboration\",\"IA\":{\"IndexLength\":140,\"InvertedIndex\":{\"Combining\":[0],\"support\":[1,7,47,53],\"for\":[2,8,28,48,54,118],\"single\":[3],\"display\":[4],\"collaboration\":[5,12],\"with\":[6,86,134],\"asynchronous\":[9],\"and\":[10,23],\"remote\":[11],\"in\":[13,36,45,89,112],\"one\":[14],\"groupware\":[15,46,114],\"challenges\":[16],\"some\":[17],\"basic\":[18],\"assumptions\":[19],\"of\":[20,39,74,109],\"application\":[21,29,117],\"design\":[22],\"brings\":[24],\"up\":[25],\"new\":[26],\"requirements\":[27],\"platforms.\":[30],\"While\":[31],\"user\":[32],\"accounts\":[33],\"are\":[34,42,130],\"central\":[35],\"many\":[37],\"kinds\":[38],\"groupware,\":[40],\"they\":[41,68],\"not\":[43,59],\"respected\":[44],\"multi-user\":[49,90,124],\"single-screen\":[50,91,125],\"interaction.\":[51,126],\"Current\":[52],\"this\":[55],\"interaction\":[56],\"paradigm\":[57],\"does\":[58],\"allow\":[60],\"users\":[61,88,129],\"to\":[62,70,82,97,100,132],\"act\":[63,71],\"on\":[64,72,136],\"their\":[65,137],\"own\":[66,138],\"behalf;\":[67],\"have\":[69],\"behalf\":[73],\"a\":[75],\"host\":[76],\"user.\":[77],\"We\":[78,105],\"suggest\":[79],\"an\":[80,116],\"approach\":[81,94],\"distinguish\":[83],\"the\":[84,101,107,113],\"interactions\":[85],\"different\":[87],\"scenarios.\":[92],\"Our\":[93],\"enables\":[95],\"applications\":[96],\"link\":[98],\"actions\":[99],\"acting\":[102],\"user's\":[103],\"account.\":[104],\"describe\":[106],\"integration\":[108],\"suggested\":[110],\"concepts\":[111],\"ProjectTalk,\":[115],\"managing\":[119],\"XP\":[120],\"projects\":[121],\"that\":[122],\"supports\":[123],\"All\":[127],\"interacting\":[128],\"allowed\":[131],\"work\":[133],\"ProjectTalk\":[135],\"behalf.\":[139]}},\"S\":[{\"Ty\":3,\"U\":\"http://www.hirschfeld.org/writings/media/SteinertGruenewaldRichterLinckeHirschfeld_2009_MultiUserMultiAccountInteractionInGroupwareSupportingSingleDisplayCollaboration_AuthorsCopy.pdf\"},{\"Ty\":1,\"U\":\"http://yadda.icm.edu.pl/yadda/element/bwmeta1.element.ieee-000005364098\"},{\"Ty\":1,\"U\":\"http://ieeexplore.ieee.org/document/5364098/\"}],\"VFN\":\"Collaborative Computing\",\"VSN\":\"CollaborateCom\",\"FP\":1,\"LP\":9,\"DOI\":\"10.4108/ICST.COLLABORATECOM2009.8290\",\"CC\":{\"18855373\":[\"Programming (XP) projects [6] such as writing user stories or planning iterations.\"],\"1510173602\":[\"Virtual Collaboration Environments [20] such as such as\"],\"1515135756\":[\"Details of this approach are described in [8], [9].\",\"In reference [9], the authors present the SDG Toolkit for developing Microsoft .\"],\"1560867643\":[\"Virtual Collaboration Environments [20] such as such as Open Croquet [ 21 ] leverage screen sharing technology for integrating ordinary desktop applications and allow remote participants to interact with them.\"],\"1598048033\":[\"These kinds of groupware usually support collaboration amongst individuals contributing at different times and from different places [2], [3].\",\"6 provides a classification for groupware solutions according to the context of use; the matrix was originally introduced in [3].\"],\"1953461384\":[\"The authors of [19] describe the design and implementation of Multi-Pointer X Server (MPX).\"],\"1964757858\":[\"Morphic [7] is a completely object-oriented GUI framework.\"],\"1975207314\":[\"References [24], [25] present frameworks that simplify the development of replicated groupware for synchronous remote collaboration scenarios.\"],\"1989790238\":[\"This and other works [11]–[14] also provide empirical validation that working together on a task has positive effects concerning motivation and efficiency.\"],\"1993407539\":[\"Several different approaches were developed, some are built upon a centralized and others upon a replicated ar­ chitecture [ 10 ].\"],\"2021856465\":[\"In contrast to centralized screen sharing setups, other approaches are based on replicated architectures where low level [22] or high level events [23] are exchanged between all participants and executed on every participant’s host.\"],\"2036065734\":[\"One of the first SDG applications developed is the Multi­ Device Multi-User Multi-Editor (MMM) [ 17 ].\"],\"2065367771\":[\"These kinds of groupware usually support collaboration amongst individuals contributing at different times and from different places [2], [3].\",\"Following the argumentation in [2], most groupware solutions do not belong to exactly one category or another because most work activities do not strictly adhere to this classification.\"],\"2085331906\":[\"The framework described in [26] eases constructing\"],\"2090613284\":[\"References [24], [25] present frameworks that simplify the development of replicated groupware for synchronous remote collaboration scenarios.\"],\"2103283929\":[\"SDG concepts become more important due to recent developments in multi-touch displays [15], in Microsoft Surface or DiamondTouch [16].\"],\"2109924981\":[\"Benefits of using a single display by a co-present group simultaneously were, for example, described in [11].\",\"This and other works [11]–[14] also provide empirical validation that working together on a task has positive effects concerning motivation and efficiency.\"],\"2110915807\":[\"The first attempt to provide such a framework was Multiple Input Devices [18] for the Java platform.\"],\"2117492729\":[\"This assumption does not hold true for Single Display Groupware (SDG) [4] or screen sharing technologies such as Virtual Network Computing (VNC) [5].\"],\"2158707444\":[\"SDG concepts become more important due to recent developments in multi-touch displays [15], in Microsoft Surface or Diamond­ Touch [ 16 ].\"],\"2167670020\":[\"This assumption does not hold true for Single Display Groupware (SDG) [4] or screen sharing technologies such as Virtual Network Computing (VNC) [5].\",\"Reference [4] introduces the term Single Display Groupware referring to applications that allow co-present users to contribute simultaneously.\"]},\"PR\":[2146088048,1496478742,1990549371,2170393723,2135668496,2143660546,1541368460,1509989259,2018752538,2050397676,2107095423,2094701960,2031525280,2131734073,2169109909,2045929298,1997160581,2128592945,2021434765,2116949633,2146088048,1496478742,1990549371,2170393723,2135668496,2143660546,1541368460,1509989259,2018752538,2050397676,2107095423,2094701960,2031525280,2131734073,2169109909,2045929298,1997160581,2128592945,2021434765,2116949633],\"ANF\":[{\"FN\":\"Bastian\",\"LN\":\"Steinert\",\"S\":1},{\"FN\":\"Michael\",\"LN\":\"Grünewald\",\"S\":2},{\"FN\":\"Stefan\",\"LN\":\"Richter\",\"S\":3},{\"FN\":\"Jens\",\"LN\":\"Lincke\",\"S\":4},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":5}],\"BV\":\"2009 5th International Conference on Collaborative Computing: Networking, Applications and Worksharing\",\"BT\":\"p\",\"PB\":\"IEEE\"}"},{"logprob":-21.391,"Id":2067307118,"Ty":"0","Ti":"efficient layer activation in context js","Pt":"3","L":"en","Y":2012,"D":"2012-01-01","CC":5,"ECC":5,"RId":[2480195817,2150275961,1610570299,2045723688,1992443356,1614703486,80254674,2144114063,2110464036,2089889705,2093334386,1978875190,2075832738,2154597770,1527077815,1501829296,2029786195,2097664691,2014881790,2166901142,2115899208,2106193618,1497308906,2150333658,2053452086,2787083042,2113328652],"W":["activation","context","efficient","js","layer"],"AA":[{"DAuN":"Robert Krahn","AuN":"robert krahn","AuId":1836152203,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":1},{"DAuN":"Jens Lincke","AuN":"jens lincke","AuId":2055148755,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":2},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":3}],"F":[{"DFN":"Ubiquitous computing","FN":"ubiquitous computing","FId":172195944},{"DFN":"Real-time computing","FN":"real time computing","FId":79403827},{"DFN":"JavaScript","FN":"javascript","FId":544833334},{"DFN":"Implementation","FN":"implementation","FId":26713055},{"DFN":"Human–computer interaction","FN":"human computer interaction","FId":107457646},{"DFN":"Distributed computing","FN":"distributed computing","FId":120314980},{"DFN":"Computer science","FN":"computer science","FId":41008148}],"C":{"CN":"c5","CId":1201766282},"CI":{"CIN":"c5 2012","CIId":98471374},"E":"{\"DN\":\"Efficient Layer Activation in Context JS\",\"IA\":{\"IndexLength\":72,\"InvertedIndex\":{\"Context-oriented\":[0],\"programming\":[1],\"(COP)\":[2],\"describes\":[3],\"language\":[4],\"extensions\":[5],\"for\":[6,27,52],\"modularizing\":[7],\"behavioral\":[8],\"or\":[9],\"structural\":[10],\"variations\":[11],\"that\":[12,61],\"are\":[13],\"to\":[14,58,67],\"be\":[15],\"composed\":[16],\"at\":[17],\"run-time.\":[18],\"Different\":[19],\"COP\":[20,56],\"infrastructures\":[21],\"and\":[22,30],\"implementations\":[23],\"offer\":[24],\"several\":[25],\"strategies\":[26],\"scoping,\":[28],\"activation,\":[29],\"deactivation\":[31],\"of\":[32],\"such\":[33],\"compositional\":[34],\"units.\":[35],\"Often,\":[36],\"the\":[37],\"mechanisms\":[38],\"employed\":[39],\"cause\":[40],\"substantial\":[41],\"execution\":[42],\"overhead.\":[43],\"In\":[44],\"this\":[45,65],\"paper\":[46],\"we\":[47],\"present\":[48],\"an\":[49],\"optimization\":[50],\"technique\":[51],\"ContextJS\":[53],\"--\":[54,60],\"our\":[55],\"extension\":[57],\"JavaScript\":[59],\"can\":[62],\"significantly\":[63],\"reduce\":[64],\"overhead\":[66],\"run\":[68],\"context-aware\":[69],\"code\":[70],\"efficiently.\":[71]}},\"S\":[{\"Ty\":1,\"U\":\"http://yadda.icm.edu.pl/yadda/element/bwmeta1.element.ieee-000006195225\"},{\"Ty\":1,\"U\":\"https://www.computer.org/web/csdl/index/-/csdl/proceedings/c5/2012/4672/00/4672a076-abs.html\"}],\"VFN\":\"Conference on Creating, Connecting and Collaborating through Computing\",\"VSN\":\"C5\",\"FP\":76,\"LP\":83,\"DOI\":\"10.1109/C5.2012.20\",\"PR\":[1575441514,2101820034,2058884039,1563217556,1967384908,2095967962,2112916889,1995410953,2006620454,2103685452,2011828447,2098524215,2170969673,2033590510,1516741590,1480405697,2330017691,1958838053,1989156571,2033438507,1575441514,2101820034,2058884039,1563217556,1967384908,2095967962,2112916889,1995410953,2006620454,2103685452,2011828447,2098524215,2170969673,2033590510,1516741590,1480405697,2330017691,1958838053,1989156571,2033438507],\"ANF\":[{\"FN\":\"Robert\",\"LN\":\"Krahn\",\"S\":1},{\"FN\":\"Jens\",\"LN\":\"Lincke\",\"S\":2},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":3}],\"BV\":\"2012 10th International Conference on Creating, Connecting and Collaborating through Computing\",\"BT\":\"p\",\"PB\":\"IEEE\"}"},{"logprob":-21.393,"Id":2297152724,"Ty":"0","Ti":"matriona class nesting with parameterization in squeak smalltalk","Pt":"0","L":"en","Y":2016,"D":"2016-03-14","CC":3,"ECC":3,"RId":[1649645444,1489092837,2611598995,1770006921,2150275961,1495226832,2244800645,1739798036,1531869376,2080648611,2082340512,2115680394,1994666727,2169934995,1964757858,2057779758,1564310313,2172232818,1594284843,143490393,1584747838,2136449473,1581983724,1591849443,158038449,2103458172,2056821525,2146942245,2025566524,1542995193,1975091685,1766881938,2062639553,17464816,2077771228],"W":["class","matriona","nesting","parameterization","smalltalk","squeak"],"AA":[{"DAuN":"Matthias Springer","AuN":"matthias springer","AuId":2225126184,"DAfN":"Tokyo Institute of Technology","AfN":"tokyo institute of technology","AfId":114531698,"S":1},{"DAuN":"Fabio Niephaus","AuN":"fabio niephaus","AuId":2343463870,"DAfN":"HPI, Germany","S":2},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"Viewpoints Research Institute","AfN":"viewpoints research institute","AfId":886105272,"S":3},{"DAuN":"Hidehiko Masuhara","AuN":"hidehiko masuhara","AuId":2087436944,"DAfN":"Tokyo Institute of Technology","AfN":"tokyo institute of technology","AfId":114531698,"S":4}],"F":[{"DFN":"Virtual machine","FN":"virtual machine","FId":25344961},{"DFN":"Squeak","FN":"squeak","FId":2780281086},{"DFN":"Smalltalk","FN":"smalltalk","FId":2777293101},{"DFN":"Real-time computing","FN":"real time computing","FId":79403827},{"DFN":"Programming language","FN":"programming language","FId":199360897},{"DFN":"Porting","FN":"porting","FId":106251023},{"DFN":"Parametrization","FN":"parametrization","FId":106199856},{"DFN":"Namespace","FN":"namespace","FId":2778383056},{"DFN":"Modularity","FN":"modularity","FId":100648641},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Class hierarchy","FN":"class hierarchy","FId":2781289151}],"E":"{\"DN\":\"Matriona: class nesting with parameterization in Squeak/Smalltalk\",\"IA\":{\"IndexLength\":165,\"InvertedIndex\":{\"We\":[0,136],\"present\":[1],\"Matriona,\":[2],\"a\":[3,8,21,28,37,43,59,95,101,119,127,140,156],\"module\":[4,102],\"system\":[5],\"for\":[6,52,122],\"Squeak,\":[7],\"Smalltalk\":[9],\"dialect.\":[10],\"It\":[11],\"supports\":[12],\"class\":[13,39,71,82],\"nesting\":[14],\"and\":[15,17,50,66,70,145],\"parameterization\":[16],\"is\":[18,94,111],\"based\":[19],\"on\":[20,113],\"hierarchical\":[22,44],\"name\":[23,48,124],\"lookup\":[24],\"mechanism.\":[25],\"Matriona\":[26,110,138],\"solves\":[27],\"range\":[29],\"of\":[30,36,76,97,107,115,142],\"modularity\":[31,153],\"issues\":[32],\"in\":[33,160],\"Squeak.\":[34],\"Instead\":[35],\"flat\":[38],\"organization,\":[40],\"it\":[41,57,86],\"provides\":[42,58],\"namespace,\":[45],\"that\":[46,78],\"avoids\":[47],\"clashes\":[49],\"allows\":[51,87],\"shorter\":[53],\"local\":[54],\"names.\":[55],\"Furthermore,\":[56],\"way\":[60],\"to\":[61,89,163],\"share\":[62],\"behavior\":[63],\"among\":[64],\"classes\":[65],\"modules\":[67,88],\"using\":[68],\"mixins\":[69],\"hierarchy\":[72],\"inheritance\":[73,77],\"(a\":[74],\"form\":[75,96],\"subclasses\":[79],\"an\":[80],\"entire\":[81],\"family),\":[83],\"respectively.\":[84],\"Finally,\":[85],\"be\":[90],\"externally\":[91],\"configurable,\":[92],\"which\":[93],\"dependency\":[98],\"management\":[99],\"decoupling\":[100],\"from\":[103],\"the\":[104,132],\"actual\":[105],\"implementation\":[106],\"its\":[108,149],\"dependencies.\":[109],\"implemented\":[112],\"top\":[114],\"Squeak\":[116,162],\"by\":[117],\"introducing\":[118],\"new\":[120],\"keyword\":[121],\"run-time\":[123],\"lookups\":[125],\"through\":[126],\"reflective\":[128],\"mechanism,\":[129],\"without\":[130],\"modifying\":[131],\"underlying\":[133],\"virtual\":[134],\"machine.\":[135],\"evaluate\":[137],\"with\":[139],\"series\":[141],\"small\":[143],\"applications\":[144],\"will\":[146],\"demonstrate\":[147],\"how\":[148],\"features\":[150],\"can\":[151],\"benefit\":[152],\"when\":[154],\"porting\":[155],\"simple\":[157],\"application\":[158],\"written\":[159],\"plain\":[161],\"Matriona.\":[164]}},\"S\":[{\"Ty\":1,\"U\":\"https://dl.acm.org/citation.cfm?id=2889457\"}],\"VFN\":\"Proceedings of the 15th International Conference on Modularity\",\"FP\":118,\"LP\":129,\"DOI\":\"10.1145/2889443.2889457\",\"PR\":[2301974412,2115434397,2025566524,1594284843,2097304805,2086957250,2136449473,1798715089,935028412,129413754,2811509962,1996374222,1971147366,2186593888,1601975527,1519542605,66503625,2485345926,1889944642,2089279727,2301974412,2115434397,2025566524,1594284843,2097304805,2086957250,2136449473,1798715089,935028412,129413754,2811509962,1996374222,1971147366,2186593888,1601975527,1519542605,66503625,2485345926,1889944642,2089279727],\"ANF\":[{\"FN\":\"Matthias\",\"LN\":\"Springer\",\"S\":1},{\"FN\":\"Fabio\",\"LN\":\"Niephaus\",\"S\":2},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":3},{\"FN\":\"Hidehiko\",\"LN\":\"Masuhara\",\"S\":4}],\"BV\":\"Proceedings of the 15th International Conference on Modularity\",\"BT\":\"p\",\"PB\":\"ACM\"}"},{"logprob":-21.402,"Id":2336040589,"Ty":"0","Ti":"coexist overcoming aversion to change preserving immediate access to source code and run time information of previous development states","Pt":"0","L":"en","Y":2013,"D":"2013-01-01","CC":3,"ECC":3,"RId":[1493688518,2611278845,2153887189,2158685692,2092601000,2105045857,2152364132,2045732064,2046882143,2116525104,2071873073,2121459566,2020708636,2053729218,1811607892,2103711160,2108401299,2034240757,2035062020,118488368],"W":["access","aversion","change","code","coexist","development","immediate","information","overcoming","preserving","previous","run","source","states","time"],"AA":[{"DAuN":"Bastian Steinert","AuN":"bastian steinert","AuId":2142371068,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":1},{"DAuN":"Damien Cassou","AuN":"damien cassou","AuId":1514817921,"DAfN":"French Institute for Research in Computer Science and Automation","AfN":"french institute for research in computer science and automation","AfId":1326498283,"S":2},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":3}],"F":[{"DFN":"Squeak","FN":"squeak","FId":2780281086},{"DFN":"Source code","FN":"source code","FId":43126263},{"DFN":"Smalltalk","FN":"smalltalk","FId":2777293101},{"DFN":"Real-time computing","FN":"real time computing","FId":79403827},{"DFN":"Debugging","FN":"debugging","FId":168065819},{"DFN":"Continuous testing","FN":"continuous testing","FId":2776641920},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Best practice","FN":"best practice","FId":184356942}],"E":"{\"DN\":\"CoExist: Overcoming Aversion to Change Preserving Immediate Access to Source Code and Run-time Information of Previous Development States\",\"IA\":{\"IndexLength\":131,\"InvertedIndex\":{\"Programmers\":[0,54],\"make\":[1],\"many\":[2],\"changes\":[3],\"to\":[4,7,64,82,118,124],\"the\":[5,40],\"program\":[6],\"eventually\":[8],\"find\":[9],\"a\":[10,14,32],\"good\":[11],\"solution\":[12],\"for\":[13,30,80],\"given\":[15],\"task.\":[16],\"In\":[17],\"this\":[18,88],\"course\":[19],\"of\":[20,27,42,69,73,128],\"change,\":[21],\"every\":[22],\"intermediate\":[23],\"development\":[24,71],\"state\":[25],\"can\":[26,95,101],\"value,\":[28],\"when,\":[29],\"example,\":[31],\"promising\":[33],\"ideas\":[34],\"suddenly\":[35],\"turn\":[36],\"out\":[37,45],\"inappropriate\":[38],\"or\":[39],\"interplay\":[41],\"objects\":[43],\"turns\":[44],\"more\":[46],\"complex\":[47],\"than\":[48],\"initially\":[49],\"expected\":[50],\"before\":[51],\"making\":[52],\"changes.\":[53],\"would\":[55],\"benefit\":[56],\"from\":[57],\"tool\":[58,92],\"support\":[59],\"that\":[60,105],\"provides\":[61],\"immediate\":[62],\"access\":[63],\"source\":[65],\"code\":[66],\"and\":[67,85],\"run-time\":[68],\"previous\":[70],\"states\":[72],\"interest.\":[74],\"We\":[75],\"present\":[76],\"IDE\":[77],\"extensions,\":[78],\"implemented\":[79],\"Squeak/Smalltalk,\":[81],\"preserve,\":[83],\"retrieve,\":[84],\"work\":[86,96],\"with\":[87,108],\"information.\":[89],\"With\":[90],\"such\":[91],\"support,\":[93],\"programmers\":[94],\"without\":[97],\"worries\":[98],\"because\":[99],\"they\":[100],\"rely\":[102],\"on\":[103],\"tools\":[104],\"help\":[106],\"them\":[107],\"whatever\":[109],\"their\":[110],\"explorations\":[111],\"will\":[112],\"reveal.\":[113],\"They\":[114],\"no\":[115],\"longer\":[116],\"have\":[117],\"follow\":[119],\"certain\":[120],\"best\":[121],\"practices\":[122],\"only\":[123],\"avoid\":[125],\"undesired\":[126],\"consequences\":[127],\"changing\":[129],\"code.\":[130]}},\"S\":[{\"Ty\":3,\"U\":\"http://www.hirschfeld.org/writings/media/SteinertCassouHirschfeld_2012_CoExistOvercomingAversionToChange_AcmDL.pdf\"},{\"Ty\":1,\"U\":\"https://publishup.uni-potsdam.de/opus4-ubp/frontdoor/index/index/searchtype/authorsearch/author/Robert+Hirschfeld/rows/10/start/3/facetNumber_subject/all/docId/35220\"}],\"VFN\":\"\",\"CC\":{\"118488368\":[\"The Envy system [14], which is based on Orwell, provides baselining as an additional\"],\"1493688518\":[\"To avoid such problems, literature and practitioners recommend a structured and disciplined approach to programming, which includes frequent use of testing and versioning tools [1, 2, 5].\"],\"2020708636\":[\"The SpyWare approach has been continued, resulting, for example, in tools such as Replay [9] and ChEOPS [4].\",\"For example, the corresponding tools allow for tracking changes on a statement level, but also for combining finegrained changes into composite ones, and for declaring the intent of change operations [4].\"],\"2034240757\":[\"Orion is an interactive prototyping tool that allows to compare the impact of multiple changes on a software system [11].\"],\"2035062020\":[\"Orwell [20] is an early VCS / CM that provides both source and object sharing for Smalltalk systems.\"],\"2045732064\":[\"For example, creating prototypes help pursue a line of thought and discover unforeseen implications [7, 12].\"],\"2046882143\":[\"The concept of preserving change information between explicit commits has been first introduced by Robbes and Lanza in [15].\"],\"2053729218\":[\"Changeboxes [3] is an approach to capture the history of a system and permit the existence of simultaneous versions in a single virtual machine and development environment.\"],\"2071873073\":[\"Hartmann and others propose Juxtapose [8], a tool that facilitates the creation and comparison of alternatives through a dedicated code editor.\"],\"2092601000\":[\"For example, creating prototypes help pursue a line of thought and discover unforeseen implications [7, 12].\"],\"2103711160\":[\"The SpyWare approach has been continued, resulting, for example, in tools such as Replay [9] and ChEOPS [4].\"],\"2105045857\":[\"This means, we turned Squeak’s data structure for managing meta-objects into a kind of a purely functional data structure (persistent data structure) [13].\"],\"2108401299\":[\"This improvement could be implemented using the same mechanism as the one used in worlds [21], a language construct to allow scoped-states for each object.\"],\"2116525104\":[\"For example, the continuous testing approach proposes to run tests automatically after each change [17].\"],\"2121459566\":[\"In particular, it supports reasoning about development sessions [16] of colleagues and to reconstruct what they have done and how.\"],\"2152364132\":[\"Findings suggest that the creation of external representations inspires new associations [10, 19].\"],\"2153887189\":[\"To avoid such problems, literature and practitioners recommend a structured and disciplined approach to programming, which includes frequent use of testing and versioning tools [1, 2, 5].\"]},\"PR\":[148370670,118817505,1480961335,2158524759,1991755171,2336809277,2011929444,1561550831,605843499,418275539,2172062602,2168652763,2158186850,1496037700,2032694873,1601105903,1990265182,1888109628,2285761207,2043552481,148370670,118817505,1480961335,2158524759,1991755171,2336809277,2011929444,1561550831,605843499,418275539,2172062602,2168652763,2158186850,1496037700,2032694873,1601105903,1990265182,1888109628,2285761207,2043552481],\"ANF\":[{\"FN\":\"Bastian\",\"LN\":\"Steinert\",\"S\":1},{\"FN\":\"Damien\",\"LN\":\"Cassou\",\"S\":2},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":3}],\"BT\":\"a\"}"},{"logprob":-21.413,"Id":2510569334,"Ty":"0","Ti":"aspects aspect oriented programming with squeak","Pt":"1","L":"en","Y":2003,"D":"2003-01-01","CC":7,"ECC":7,"W":["aspect","aspects","oriented","programming","squeak"],"AA":[{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"S":1}],"F":[{"DFN":"Squeak","FN":"squeak","FId":2780281086},{"DFN":"Software architecture","FN":"software architecture","FId":35869016},{"DFN":"Smalltalk","FN":"smalltalk","FId":2777293101},{"DFN":"Programming language","FN":"programming language","FId":199360897},{"DFN":"Pointcut","FN":"pointcut","FId":2776219908},{"DFN":"Object-oriented programming","FN":"object oriented programming","FId":73752529},{"DFN":"Metaobject","FN":"metaobject","FId":2778335927},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"AspectJ","FN":"aspectj","FId":2781009160},{"DFN":"Aspect-oriented programming","FN":"aspect oriented programming","FId":60051680}],"J":{"JN":"lncs","JId":106296714},"E":"{\"DN\":\"AspectS: Aspect-oriented programming with squeak\",\"IA\":{\"IndexLength\":73,\"InvertedIndex\":{\"AspectS\":[0,39,54,62],\"is\":[1],\"an\":[2],\"approach\":[3],\"to\":[4,23,31],\"general-purpose\":[5],\"aspect-oriented\":[6],\"programming\":[7],\"in\":[8,38],\"the\":[9,19,25,65],\"Squeak/Smalltalk\":[10],\"environment.\":[11],\"Based\":[12],\"on\":[13],\"concepts\":[14],\"of\":[15,49,67],\"AspectJ\":[16],\"it\":[17],\"extends\":[18],\"Smalltalk\":[20,56],\"metaobject\":[21,46],\"protocol\":[22],\"accommodate\":[24],\"aspect\":[26],\"modularity\":[27],\"mechanism.\":[28],\"In\":[29],\"contrast\":[30],\"systems\":[32],\"like\":[33],\"AspectJ,\":[34],\"weaving\":[35],\"and\":[36,71],\"unweaving\":[37],\"happens\":[40],\"dynamically\":[41],\"at\":[42],\"runtime,\":[43],\"on-demand,\":[44],\"employing\":[45],\"composition.\":[47],\"Instead\":[48],\"introducing\":[50],\"new\":[51],\"language\":[52],\"constructs,\":[53],\"utilizes\":[55],\"itself\":[57],\"as\":[58],\"its\":[59,69],\"pointcut\":[60],\"language.\":[61],\"benefits\":[63],\"from\":[64],\"expressiveness\":[66],\"Smalltalk,\":[68],\"elegance\":[70],\"power.\":[72]}},\"VFN\":\"Lecture Notes in Computer Science\",\"FP\":216,\"LP\":232,\"PR\":[1491095550,2063162028,1519428550,2082367970,72477946,2032396198,2105379554,1505520643,2514305392,2116487448,2153918412,2121122083,2109692881,2295927355,74667505,1753041479,2038176785,2090883292,141338209,1967145693,1491095550,2063162028,1519428550,2082367970,72477946,2032396198,2105379554,1505520643,2514305392,2116487448,2153918412,2121122083,2109692881,2295927355,74667505,1753041479,2038176785,2090883292,141338209,1967145693],\"ANF\":[{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":1}],\"BV\":\"Lecture Notes in Computer Science\",\"BT\":\"a\",\"PB\":\"Springer\"}"},{"logprob":-21.447,"Id":2301974412,"Ty":"0","Ti":"hierarchical layer based class extensions in squeak smalltalk","Pt":"0","L":"en","Y":2016,"D":"2016-03-14","CC":1,"ECC":1,"RId":[1649645444,1489092837,1991604845,2150275961,2055970549,2115680394,2115434397,2112094847,1556513858,2166155731,66503625,2297152724,2053158093],"W":["class","extensions","hierarchical","layer","smalltalk","squeak"],"AA":[{"DAuN":"Matthias Springer","AuN":"matthias springer","AuId":2225126184,"DAfN":"Tokyo Institute of Technology","AfN":"tokyo institute of technology","AfId":114531698,"S":1},{"DAuN":"Hidehiko Masuhara","AuN":"hidehiko masuhara","AuId":2087436944,"DAfN":"Tokyo Institute of Technology","AfN":"tokyo institute of technology","AfId":114531698,"S":2},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"HPI, Germany","S":3}],"F":[{"DFN":"Virtual class","FN":"virtual class","FId":188070873},{"DFN":"Squeak","FN":"squeak","FId":2780281086},{"DFN":"Smalltalk","FN":"smalltalk","FId":2777293101},{"DFN":"Reuse","FN":"reuse","FId":206588197},{"DFN":"Programming language","FN":"programming language","FId":199360897},{"DFN":"Modularity","FN":"modularity","FId":100648641},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Class-based programming","FN":"class based programming","FId":69164191},{"DFN":"Class hierarchy","FN":"class hierarchy","FId":2781289151},{"DFN":"Class (computer programming)","FN":"class","FId":22414024}],"E":"{\"DN\":\"Hierarchical layer-based class extensions in Squeak/Smalltalk\",\"IA\":{\"IndexLength\":138,\"InvertedIndex\":{\"Class\":[0,91,118],\"extensions\":[1,63,82,87,92,119],\"are\":[2,47,120],\"frequently\":[3],\"used\":[4],\"in\":[5,24,29,64,88,122],\"programming\":[6,67],\"languages\":[7,68],\"such\":[8],\"as\":[9,112],\"Ruby\":[10],\"and\":[11,83],\"Smalltalk\":[12],\"to\":[13,76,84,97],\"add\":[14],\"or\":[15,28,102,116],\"change\":[16],\"methods\":[17],\"of\":[18,80],\"a\":[19,30,56,98,108,113],\"class\":[20,62,70,81,86,100,111,130],\"that\":[21],\"is\":[22],\"defined\":[23],\"the\":[25,44,51,78,128,135],\"same\":[26,45,129,136],\"application\":[27],\"different\":[31],\"one.\":[32],\"They\":[33],\"suffer\":[34],\"from\":[35],\"modularity\":[36],\"issues\":[37],\"if\":[38],\"globally\":[39],\"visible:\":[40],\"Other\":[41],\"applications\":[42],\"using\":[43],\"classes\":[46],\"then\":[48],\"affected\":[49,110],\"by\":[50],\"modifications.\":[52],\"This\":[53],\"paper\":[54],\"presents\":[55],\"hierarchical\":[57],\"approach\":[58],\"for\":[59],\"dynamically\":[60],\"scoping\":[61],\"dynamically-typed,\":[65],\"class-based\":[66],\"supporting\":[69],\"nesting.\":[71],\"Our\":[72],\"mechanism\":[73],\"allows\":[74],\"programmers\":[75,106],\"define\":[77],\"scope\":[79],\"reuse\":[85],\"other\":[89],\"programs.\":[90],\"can\":[93,131],\"be\":[94,132],\"scoped\":[95],\"according\":[96],\"nested\":[99],\"hierarchy\":[101],\"based\":[103],\"on\":[104],\"whether\":[105],\"regard\":[107],\"potentially\":[109],\"black\":[114],\"box\":[115],\"not.\":[117],\"organized\":[121],\"layers,\":[123],\"where\":[124],\"multiple\":[125],\"layers\":[126],\"targeting\":[127],\"active\":[133],\"at\":[134],\"time.\":[137]}},\"S\":[{\"Ty\":1,\"U\":\"http://dblp.uni-trier.de/db/conf/aosd/modularity2016c.html#SpringerMH16\"},{\"Ty\":1,\"U\":\"https://doi.acm.org/10.1145/2892664.2892682\"},{\"Ty\":0,\"U\":\"http://doi.acm.org/10.1145/2892664.2892682\"}],\"VFN\":\"Companion Proceedings of the 15th International Conference on Modularity\",\"FP\":107,\"LP\":112,\"DOI\":\"10.1145/2892664.2892682\",\"PR\":[2115434397,2097304805,1798715089,2297152724,2025566524,66503625,935028412,1967911548,2144470103,2155293695,1594284843,2062731974,2136449473,1970273936,1985850551,2274271445,2052230274,1825946434,2148878240,1492136318,2115434397,2097304805,1798715089,2297152724,2025566524,66503625,935028412,1967911548,2144470103,2155293695,1594284843,2062731974,2136449473,1970273936,1985850551,2274271445,2052230274,1825946434,2148878240,1492136318],\"ANF\":[{\"FN\":\"Matthias\",\"LN\":\"Springer\",\"S\":1},{\"FN\":\"Hidehiko\",\"LN\":\"Masuhara\",\"S\":2},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":3}],\"BV\":\"Companion Proceedings of the 15th International Conference on Modularity\",\"BT\":\"p\",\"PB\":\"ACM\"}"},{"logprob":-21.474,"Id":1513058800,"Ty":"0","Ti":"continuous selective testing","Pt":"3","L":"en","Y":2010,"D":"2010-06-01","CC":8,"ECC":8,"RId":[1493688518,2153887189,2014309790,1770006921,1596127723,2172147300,2020538887,2153342620,1978546859,1983555736,2104354357,2080264505,1607747749,2116525104,2020874073,2137252778,1997577150,2060910994,2782959840,2164722319,2116562786,2155235694,143231896,2031224363,2139105433,2119173576,84194245,2031704845,2155848253,2042023054,2106380257,1513153379,1995956882,1989628394,2058413637,1506052820],"W":["continuous","selective","testing"],"AA":[{"DAuN":"Bastian Steinert","AuN":"bastian steinert","AuId":2142371068,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":1},{"DAuN":"Michael Haupt","AuN":"michael haupt","AuId":2146662369,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":2},{"DAuN":"Robert Krahn","AuN":"robert krahn","AuId":1836152203,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":3},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":4}],"F":[{"DFN":"Unit testing","FN":"unit testing","FId":148027188},{"DFN":"Regression testing","FN":"regression testing","FId":161821725},{"DFN":"Dynamic testing","FN":"dynamic testing","FId":198824145},{"DFN":"Dynamic program analysis","FN":"dynamic program analysis","FId":140006998},{"DFN":"Data mining","FN":"data mining","FId":124101348},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Coding (social sciences)","FN":"coding","FId":179518139},{"DFN":"Agile software development","FN":"agile software development","FId":14185376}],"C":{"CN":"icasd","CId":2754197539},"E":"{\"DN\":\"Continuous Selective Testing\",\"IA\":{\"IndexLength\":107,\"InvertedIndex\":{\"A\":[0],\"manual\":[1],\"and\":[2,8,41],\"explicit\":[3],\"activity,\":[4],\"the\":[5,28,39,48,57,82],\"frequent\":[6],\"selection\":[7],\"execution\":[9],\"of\":[10,21,50,60,69,81,98],\"tests\":[11,22,62],\"requires\":[12],\"considerable\":[13],\"discipline.\":[14],\"Our\":[15],\"approach\":[16],\"automatically\":[17],\"derives\":[18],\"a\":[19],\"subset\":[20],\"based\":[23],\"on\":[24,75,95],\"actual\":[25],\"modifications\":[26],\"to\":[27,56,63,93,102],\"code\":[29,105],\"base\":[30],\"at\":[31],\"hand,\":[32],\"then\":[33],\"continuously\":[34],\"executes\":[35],\"them\":[36],\"transparently\":[37],\"in\":[38,45,87],\"background,\":[40],\"so\":[42],\"supports\":[43],\"developers\":[44],\"instantly\":[46],\"assessing\":[47],\"effect\":[49],\"their\":[51],\"coding\":[52],\"activities\":[53],\"with\":[54],\"respect\":[55],\"overall\":[58],\"set\":[59],\"unit\":[61],\"be\":[64],\"passed.\":[65],\"We\":[66],\"apply\":[67],\"techniques\":[68],\"selective\":[70],\"regression\":[71],\"testing,\":[72],\"mainly\":[73],\"relying\":[74],\"dynamic\":[76],\"analysis.\":[77],\"By\":[78],\"taking\":[79],\"advantage\":[80],\"internal\":[83],\"program\":[84,100],\"representation\":[85],\"available\":[86],\"IDEs,\":[88],\"we\":[89],\"do\":[90],\"not\":[91],\"need\":[92],\"rely\":[94],\"expensive\":[96],\"comparisons\":[97],\"different\":[99],\"versions\":[101],\"detect\":[103],\"modified\":[104],\"entities.\":[106]}},\"S\":[{\"Ty\":3,\"U\":\"https://rd.springer.com/content/pdf/10.1007%2F978-3-642-13054-0_10.pdf\"},{\"Ty\":3,\"U\":\"http://www.hirschfeld.org/writings/media/SteinertHauptKrahnHirschfeld_2010_ContinuousSelectiveTesting_SpringerLNBIP.pdf\"},{\"Ty\":1,\"U\":\"https://link.springer.com/content/pdf/10.1007%2F978-3-642-13054-0_10.pdf\"},{\"Ty\":1,\"U\":\"http://dblp.uni-trier.de/db/conf/xpu/xp2010.html#SteinertHKH10\"},{\"Ty\":1,\"U\":\"https://rd.springer.com/chapter/10.1007/978-3-642-13054-0_10\"}],\"VFN\":\"International Conference on Agile Software Development\",\"VSN\":\"ICASD\",\"FP\":132,\"LP\":146,\"DOI\":\"10.1007/978-3-642-13054-0_10\",\"CC\":{\"1493688518\":[\"Test-driven development [5] (TDD) is a cornerstone of agile software development methodologies such as Extreme Programming [22] (XP).\"],\"1506052820\":[\"To record method coverage information, we use method wrappers [ 8 ].\"],\"1513153379\":[\"The authors of [24] present an approach to guide TDD which is complementary with our approach.\"],\"1596127723\":[\", related to selecting test cases for subclasses, have also been devised [9,16,23,19,7].\"],\"1607747749\":[\"A large family of approaches applies call graph analysis using source code [4,25,28,17,12,1] or a binary format [10,30,20] of the software.\"],\"1770006921\":[\"Based on the effects of this two operations, the following change events can be defined for the Smalltalk [14] programming language, which is a rather simple language and does, for example, not provide any visibility modifiers; class added, class removed, superclass changed, instance variable added, instance variable removed, method added, method modified, and method removed.\"],\"1978546859\":[\"Regression testing refers to the practice of validating modified software; in particular, asserting that applied changes do not affect the software adversely [17].\",\"A regression test selection technique is furthermore considered safe if it ensures to not omit tests revealing faults [17].\",\", [28,17]).\",\"There exist differencing concepts and tool for both source code [1,17] and byte code [20].\",\"As pointed out in [17], a safe test selection technique for object-oriented software must also consider exception handling.\",\"A large family of approaches applies call graph analysis using source code [4,25,28,17,12,1] or a binary format [10,30,20] of the software.\",\"Regarding the safety criterion [26,17], we can report that CST is safe, since coverage analysis as applied therein selects all tests covering changes.\"],\"1983555736\":[\"Several safe techniques have been proposed for purely procedural (e. g., [2,11,27]) as well as for object-oriented programming languages (e. g., [ 28 ,17]).\\u001bA large family of approaches applies call graph analysis using source code [4,25, 28 ,17,12,1] or a binary format [10,30,20] of the software.\"],\"1989628394\":[\"A large family of approaches applies call graph analysis using source code [4,25,28,17,12,1] or a binary format [10,30,20] of the software.\"],\"1995956882\":[\"There exist differencing concepts and tool for both source code [1,17] and byte code [20].\",\"A large family of approaches applies call graph analysis using source code [4,25,28,17,12,1] or a binary format [10,30,20] of the software.\",\"One of the binary-format approaches mentioned above [20] is also fine-grained, regarding single methods as analysis units.\"],\"2014309790\":[\"Test-driven development [5] (TDD) is a cornerstone of agile software development methodologies such as Extreme Programming [22] (XP).\",\"Test-driven development distinguishes three phases of development [5]:\"],\"2020538887\":[\"Several safe techniques have been proposed for purely procedural (e. g., [2,11, 27 ]) as well as for object-oriented programming languages (e. g., [28,17]).\"],\"2020874073\":[\"There exist differencing concepts and tool for both source code [1,17] and byte code [20].\",\"A large family of approaches applies call graph analysis using source code [4,25,28,17,12,1] or a binary format [10,30,20] of the software.\"],\"2031224363\":[\"Dedicated mechanisms for object-oriented features, e. g., related to selecting test cases for subclasses, have also been devised [9,16, 23 ,19,7].\"],\"2042023054\":[\"Dedicated mechanisms for object-oriented features, e. g., related to selecting test cases for subclasses, have also been devised [9,16,23, 19 ,7].\"],\"2058413637\":[\"Dedicated mechanisms for object-oriented features, e. g., related to selecting test cases for subclasses, have also been devised [ 9 ,16,23,19,7].\"],\"2060910994\":[\"A large family of approaches applies call graph analysis using source code [4,25,28,17,12,1] or a binary format [10,30,20] of the software.\"],\"2080264505\":[\"Several safe techniques have been proposed for purely procedural (e. g., [2, 11 ,27]) as well as for object-oriented programming languages (e. g., [28,17]).\\u001bThis technique was first implemented in TestTube [ 11 ] for software written in C. The technique is based on dynamic analysis [3]; test coverage information are recorded during each test run.\"],\"2104354357\":[\"The technique is based on dynamic analysis [3]; test coverage information are recorded during each test run.\"],\"2106380257\":[\"A large family of approaches applies call graph analysis using source code [4,25,28,17,12,1] or a binary format [10,30,20] of the software.\"],\"2116525104\":[\"There are a few approaches that support (re)running the test suite automatically every time a file is saved in the IDE [29,18].\",\"The continuous testing approach [29] is especially interesting as it is close to our intentions.\"],\"2116562786\":[\"Several safe techniques have been proposed for purely procedural (e. g., [ 2 ,11,27]) as well as for object-oriented programming languages (e. g., [28,17]).\"],\"2119173576\":[\"While testing is an important part of regular development activities, Integrated Development Environments (IDEs) have little support for selecting and (re)executing tests relevant with respect to modifications applied to the system under development [18].\",\"There are a few approaches that support (re)running the test suite automatically every time a file is saved in the IDE [29,18].\"],\"2139105433\":[\"A large family of approaches applies call graph analysis using source code [4,25,28,17,12,1] or a binary format [10,30,20] of the software.\"],\"2153342620\":[\"Approaches to test case selection are established: Selective regression testing [26] has long been a subject of research.\",\"Selecting an optimal set of tests is, however, generally inefficient [26].\",\"This set of modification-traversing tests can be considered a superset of the faultrevealing tests when the Proper Regression Testing Assumption [26] holds (P refers to a program and P ￿ refers to the modified version of this program):\",\"The most efficient and safe test selection technique is based on detecting modified code entities, such as functions or storage locations [26].\",\"Regarding the safety criterion [26, 17], we can report that CST is safe, since coverage analysis as applied therein selects all tests covering changes.\"],\"2153887189\":[\"By definition of refactoring [13], new functionality must not be added during this phase.\"],\"2155235694\":[\"However, tracing on a more fine-grained level is much more expensive and does not pay off unless methods contain many control blocks [ 6 ].\\u001bCall graph-based approaches are also more precise than CST, which works at the granularity of single methods, but they are also more expensive [ 6 ] (cf.\"],\"2155848253\":[\"The selection of relevant packages and exclusion of others avoids unnecessary overhead [ 15 ].\"],\"2164722319\":[\"Dedicated mechanisms for object-oriented features, e. g., related to selecting test cases for subclasses, have also been devised [9, 16 ,23,19,7].\"],\"2172147300\":[\"In this paper, we propose our approach to continuous selective testing (CST) and present an implementation thereof in Squeak Smalltalk1 [21].\"],\"2782959840\":[\"To record method coverage information, we use method wrappers [8].\"]},\"PR\":[41124143,2183107221,1845141169,1972563171,80957921,2186770651,2573831679,2114489428,2787781109,2883743404,2316329057,2611372541,2897352130,2515462146,2564924167,2810304347,2183285418,2185666424,2791554215,2786944871,41124143,2183107221,1845141169,1972563171,80957921,2186770651,2573831679,2114489428,2787781109,2883743404,2316329057,2611372541,2897352130,2515462146,2564924167,2810304347,2183285418,2185666424,2791554215,2786944871],\"ANF\":[{\"FN\":\"Bastian\",\"LN\":\"Steinert\",\"S\":1},{\"FN\":\"Michael\",\"LN\":\"Haupt\",\"S\":2},{\"FN\":\"Robert\",\"LN\":\"Krahn\",\"S\":3},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":4}],\"BV\":\"International Conference on Agile Software Development\",\"BT\":\"p\",\"PB\":\"Springer, Berlin, Heidelberg\"}"},{"logprob":-21.497,"Id":1645787665,"Ty":"0","Ti":"proceedings of the international workshop on context oriented programming","Pt":"3","L":"en","Y":2012,"D":"2012-06-11","CC":0,"ECC":0,"W":["context","international","oriented","proceedings","programming","workshop"],"AA":[{"DAuN":"Malte Appeltauer","AuN":"malte appeltauer","AuId":135591984,"DAfN":"Hasso-Plattner-Institut, Germany\t","S":1},{"DAuN":"Sebastián González","AuN":"sebastian gonzalez","AuId":2139110070,"DAfN":"Université catholique de Louvain","AfN":"universite catholique de louvain","AfId":95674353,"S":2},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"Hasso-Plattner-Institut, Germany\t","S":3},{"DAuN":"Hidehiko Masuhara","AuN":"hidehiko masuhara","AuId":2087436944,"DAfN":"University of Tokyo","AfN":"university of tokyo","AfId":74801974,"S":4},{"DAuN":"Jorge Vallejos","AuN":"jorge vallejos","AuId":2141614139,"DAfN":"Vrije Universiteit Brussel","AfN":"vrije universiteit brussel","AfId":13469542,"S":5}],"F":[{"DFN":"Thread (computing)","FN":"thread","FId":138101251},{"DFN":"Theoretical computer science","FN":"theoretical computer science","FId":80444323},{"DFN":"Systems engineering","FN":"systems engineering","FId":201995342},{"DFN":"Software system","FN":"software system","FId":149091818},{"DFN":"Simulation","FN":"simulation","FId":44154836},{"DFN":"Ranging","FN":"ranging","FId":115051666},{"DFN":"Implementation","FN":"implementation","FId":26713055},{"DFN":"Computer science","FN":"computer science","FId":41008148}],"C":{"CN":"ecoop","CId":1177184315},"CI":{"CIN":"ecoop 2012","CIId":86332564},"E":"{\"DN\":\"Proceedings of the International Workshop on Context-Oriented Programming\",\"IA\":{\"IndexLength\":218,\"InvertedIndex\":{\"Context\":[0],\"information\":[1],\"plays\":[2],\"an\":[3],\"increasingly\":[4],\"important\":[5],\"role\":[6],\"in\":[7,143,214],\"our\":[8],\"information-centric\":[9],\"world.\":[10],\"Software\":[11],\"systems\":[12],\"must\":[13,21],\"adapt\":[14],\"to\":[15,47,51,69,84,106,115,138,156,166],\"changing\":[16],\"contexts\":[17],\"over\":[18],\"time,\":[19],\"and\":[20,32,120,130,133,178,212],\"change\":[22,42],\"even\":[23],\"while\":[24],\"they\":[25],\"are\":[26,125],\"running.\":[27],\"Unfortunately,\":[28],\"mainstream\":[29],\"programming\":[30],\"languages\":[31],\"development\":[33],\"environments\":[34],\"do\":[35],\"not\":[36],\"support\":[37,71],\"this\":[38,59,215],\"kind\":[39],\"of\":[40,55,78,91,96,171,196,201],\"dynamic\":[41,79],\"very\":[43],\"well,\":[44],\"leading\":[45],\"developers\":[46],\"implement\":[48],\"complex\":[49],\"designs\":[50],\"anticipate\":[52],\"various\":[53],\"dimensions\":[54],\"variability.\":[56],\"Starting\":[57],\"from\":[58,136],\"observation,\":[60],\"Context-Oriented\":[61,102,128],\"Programming\":[62,103,129],\"(COP)\":[63],\"has\":[64],\"emerged\":[65],\"as\":[66,111],\"a\":[67,75,112,163],\"solution\":[68],\"directly\":[70],\"variability\":[72],\"depending\":[73],\"on\":[74,88,101,127],\"wide\":[76],\"range\":[77],\"attributes,\":[80],\"making\":[81],\"it\":[82],\"possible\":[83],\"dispatch\":[85,150],\"run-time\":[86,159],\"behaviour\":[87],\"any\":[89],\"property\":[90],\"the\":[92,97,172,197,202,210],\"execution\":[93],\"context.\\r\\n\\r\\nThe\":[94],\"goal\":[95],\"4th\":[98],\"International\":[99],\"Workshop\":[100],\"(COP'12)\":[104],\"was\":[105,191],\"further\":[107],\"establish\":[108],\"context\":[109],\"orientation\":[110],\"common\":[113],\"thread\":[114],\"language\":[116],\"design,\":[117],\"application\":[118],\"development,\":[119],\"system\":[121],\"support.\":[122],\"Several\":[123],\"researchers\":[124],\"working\":[126],\"related\":[131],\"ideas,\":[132],\"implementations\":[134],\"ranging\":[135],\"prototypes\":[137],\"mature\":[139],\"platform\":[140],\"extensions\":[141],\"used\":[142],\"commercial\":[144],\"deployments\":[145],\"have\":[146],\"illustrated\":[147],\"how\":[148],\"multi-dimensional\":[149],\"can\":[151],\"indeed\":[152],\"be\":[153],\"supported\":[154],\"effectively\":[155],\"achieve\":[157],\"expressive\":[158],\"behavioural\":[160],\"variations.\\r\\n\\r\\nThis\":[161],\"is\":[162],\"follow-up\":[164],\"event\":[165],\"3\":[167,194],\"consecutive\":[168],\"successful\":[169],\"editions\":[170],\"workshop\":[173,185,216],\"at\":[174,209],\"ECOOP\":[175],\"2009,\":[176],\"2010\":[177],\"2011,\":[179],\"each\":[180],\"attracting\":[181],\"around\":[182],\"30\":[183],\"participants.\\r\\n\\r\\nThe\":[184],\"received\":[186],\"5\":[187,203],\"submissions.\":[188],\"Each\":[189],\"paper\":[190],\"reviewed\":[192],\"by\":[193],\"members\":[195],\"program\":[198],\"committee.\":[199],\"All\":[200],\"submissions\":[204],\"were\":[205],\"selected\":[206],\"for\":[207],\"presentation\":[208],\"workshop,\":[211],\"publication\":[213],\"proceedings.\":[217]}},\"S\":[{\"Ty\":1,\"U\":\"https://dial.uclouvain.be/pr/boreal/object/boreal:122329\"},{\"Ty\":1,\"U\":\"http://dial.academielouvain.be/handle/boreal:122329?site_name=BOREAL\"}],\"VFN\":\"European Conference on Object-Oriented Programming\",\"VSN\":\"ECOOP\",\"PR\":[2250541251,2090461980,2614574419,2249672756,1583676598,2121727976,1486670242,2744018850,2724770279,2617486455,1669821313,947889820,2251267611,1527896317,2290118463,1493285459,2184117991,2052592694,2890397558,2248181659,2250541251,2090461980,2614574419,2249672756,1583676598,2121727976,1486670242,2744018850,2724770279,2617486455,1669821313,947889820,2251267611,1527896317,2290118463,1493285459,2184117991,2052592694,2890397558,2248181659],\"ANF\":[{\"FN\":\"Malte\",\"LN\":\"Appeltauer\",\"S\":1},{\"FN\":\"Sebastián\",\"LN\":\"González\",\"S\":2},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":3},{\"FN\":\"Hidehiko\",\"LN\":\"Masuhara\",\"S\":4},{\"FN\":\"Jorge\",\"LN\":\"Vallejos\",\"S\":5}],\"BV\":\"ECOOP'12 26th European Conference on Object-Oriented Programming\",\"BT\":\"p\"}"},{"logprob":-21.5,"Id":2103291536,"Ty":"0","Ti":"adaptive just in time value class optimization transparent data structure inlining for fast execution","Pt":"3","L":"en","Y":2015,"D":"2015-04-13","CC":2,"ECC":2,"RId":[2072737419,2116136092,1495226832,1993335798,2000050212,1598886868,2130262734,2058213389,1993318777,2208923056,2084845478,1966981171,2164746995,2058639022,2121757479,1998416211,2037159234,2117818027,2086833941,1493929095,2126060880,2010448353,2179776334,2293546518,2471814997,633399213,43126088,1594498566,70887012,2008913431],"W":["adaptive","class","data","execution","fast","inlining","just","optimization","structure","time","transparent","value"],"AA":[{"DAuN":"Tobias Pape","AuN":"tobias pape","AuId":2114920648,"DAfN":"Universtiy of Potsdam","S":1},{"DAuN":"Carl Friedrich Bolz","AuN":"carl friedrich bolz","AuId":1964826138,"DAfN":"King's College London","AfN":"king s college london","AfId":183935753,"S":2},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"Universtiy of Potsdam","S":3}],"F":[{"DFN":"Virtual machine","FN":"virtual machine","FId":25344961},{"DFN":"Time value of money","FN":"time value of money","FId":147842934},{"DFN":"Speedup","FN":"speedup","FId":68339613},{"DFN":"Real-time computing","FN":"real time computing","FId":79403827},{"DFN":"Parallel computing","FN":"parallel computing","FId":173608175},{"DFN":"Implementation","FN":"implementation","FId":26713055},{"DFN":"Fold (higher-order function)","FN":"fold","FId":53942344},{"DFN":"Data structure","FN":"data structure","FId":162319229},{"DFN":"Computer science","FN":"computer science","FId":41008148}],"C":{"CN":"sac","CId":2754781246},"E":"{\"DN\":\"Adaptive just-in-time value class optimization: transparent data structure inlining for fast execution\",\"IA\":{\"IndexLength\":97,\"InvertedIndex\":{\"The\":[0],\"performance\":[1],\"of\":[2,65,81,89],\"value\":[3,31,66,90],\"classes\":[4,32,91],\"is\":[5,45],\"highly\":[6],\"dependent\":[7],\"on\":[8],\"how\":[9],\"they\":[10,37],\"are\":[11,20],\"represented\":[12],\"in\":[13,92],\"the\":[14,87],\"virtual\":[15],\"machine.\":[16],\"Value\":[17],\"class\":[18,67],\"instances\":[19],\"immutable,\":[21],\"have\":[22],\"no\":[23],\"identity,\":[24],\"and\":[25,35,42,60,73],\"can\":[26],\"only\":[27],\"refer\":[28],\"to\":[29,47,58,69,78],\"other\":[30,93],\"or\":[33],\"primitives\":[34],\"since\":[36],\"should\":[38],\"be\":[39],\"very\":[40],\"lightweight\":[41],\"fast,\":[43],\"it\":[44],\"important\":[46],\"optimize\":[48],\"them\":[49],\"well.\":[50],\"In\":[51],\"this\":[52],\"paper\":[53],\"we\":[54],\"present\":[55],\"a\":[56,82],\"technique\":[57],\"detect\":[59],\"compress\":[61],\"commonly\":[62],\"occurring\":[63],\"patterns\":[64],\"usage\":[68,72],\"improve\":[70],\"memory\":[71],\"performance.\":[74],\"microbenchmarks\":[75],\"show\":[76],\"two\":[77],\"ten-fold\":[79],\"speedup\":[80],\"small\":[83],\"prototypical\":[84],\"implementation\":[85,88],\"over\":[86],\"object-oriented\":[94],\"language\":[95],\"implementations.\":[96]}},\"S\":[{\"Ty\":1,\"U\":\"https://doi.acm.org/10.1145/2695664.2695837\"},{\"Ty\":1,\"U\":\"https://dl.acm.org/citation.cfm?id=2695664.2695837\"},{\"Ty\":1,\"U\":\"http://dblp.uni-trier.de/db/conf/sac/sac2015.html#PapeBH15\"},{\"Ty\":0,\"U\":\"http://dl.acm.org/citation.cfm?doid=2695664.2695837\"},{\"Ty\":0,\"U\":\"http://doi.acm.org/10.1145/2695664.2695837\"}],\"VFN\":\"ACM Symposium on Applied Computing\",\"VSN\":\"SAC\",\"FP\":1970,\"LP\":1977,\"DOI\":\"10.1145/2695664.2695837\",\"CC\":{\"43126088\":[\"Prominent examples include the Smalltalk-80 bytecode-to-native-code compiler by Deutsch and Schiffman [15], and the optimizing jit compiler of Self, with type specialization and speculative inlining [14].\",\"Nota bene: The map transitions for hidden classes used in V8 [22] and inspired by Self [14], are in principle similar to our notion of transformation rules.\"],\"70887012\":[\"Objects are at the heart of object-oriented languages and the choice of how to represent them in memory is crucial for the performance of a language implementation [3, 27].\"],\"633399213\":[\"Smalltalk [11], Haskell [35], PHP6, or R7.\"],\"1493929095\":[\"Smalltalk [11], Haskell [35], PHP6, or R7.\"],\"1495226832\":[\"Value classes are available in Java [31], Scala [28], and .\"],\"1594498566\":[\"A tracing jit compiler records the steps an interpreter takes to obtain an instruction sequence called trace and then uses this trace instead of the interpreter to execute the same part of that program [26] at higher speed.\",\"Tracing jit compilers as introduced by Mitchell [26] have seen implementations for Java [19], JavaScript [20], or Lua5, to name a few.\"],\"1598886868\":[\"After its first application to Lisp in the 1960s, many other language implementations have benefitted from jit compilers—from APL, Fortran, or Smalltalk and Self [1] to today’s popular languages such as Java [29] or JavaScript [24].\",\"These concepts were later used in the HotSpot jit compiler [29] for Java.\"],\"1966981171\":[\"Deforestation [21, 34, 36] has the aim to eliminate intermediate data structures and is in this respect related to our approach.\"],\"1993318777\":[\"Prominent examples include the Smalltalk-80 bytecode-to-native-code compiler by Deutsch and Schiffman [15], and the optimizing jit compiler of Self, with type specialization and speculative inlining [14].\"],\"1993335798\":[\"Hence, a resulting trace is not specific to a particular application but the underlying interpreter [10, 13].\",\"PyPy [10, 30] is a metacircular Python implementation that uses a meta-tracing jit compiler.\"],\"1998416211\":[\"Since the value objects allocated when reifying a field are short-lived, the built-in escape analysis [8] will fully remove their allocation and thus remove the overhead of reification.\"],\"2000050212\":[\"After its first application to Lisp in the 1960s, many other language implementations have benefitted from jit compilers—from APL, Fortran, or Smalltalk and Self [1] to today’s popular languages such as Java [29] or JavaScript [24].\",\"jit compilation, is a prevalent and extensively studied technique, found in several different, but chiefly object-oriented, dynamicallytyped languages [1].\"],\"2008913431\":[\"In that respect, hash consing [16, 18, 23], as used in functional languages for a long time, is related to this work.\"],\"2010448353\":[\"Hints to the meta-tracing jit enable finetuning of the resulting jit compiler [9].\"],\"2058213389\":[\"PyPy [10, 30] is a metacircular Python implementation that uses a meta-tracing jit compiler.\"],\"2072737419\":[\"Tracing jit compilers have been successfully used for optimizing native code [4] and also for efficiently executing object-oriented programs [19].\"],\"2084845478\":[\"In the context of a JavaScript implementation, the SPUR project [5] provided a tracing jit compiler for Microsoft’s Common Intermediate Language (cil).\"],\"2086833941\":[\"Tracing an interpreter that runs a program instead of tracing the program itself it the core idea of meta-tracing jit compilers, pioneered in the DynamoRIO project [33].\"],\"2116136092\":[\"Tracing jit compilers as introduced by Mitchell [26] have seen implementations for Java [19], JavaScript [20], or Lua5, to name a few.\"],\"2117818027\":[\"Deforestation [21, 34, 36] has the aim to eliminate intermediate data structures and is in this respect related to our approach.\"],\"2126060880\":[\"Hence, a resulting trace is not specific to a particular application but the underlying interpreter [10, 13].\"],\"2130262734\":[\"Tracing jit compilers have been successfully used for optimizing native code [4] and also for efficiently executing object-oriented programs [19].\",\"Tracing jit compilers as introduced by Mitchell [26] have seen implementations for Java [19], JavaScript [20], or Lua5, to name a few.\"],\"2164746995\":[\"Objects are at the heart of object-oriented languages and the choice of how to represent them in memory is crucial for the performance of a language implementation [3, 27].\"],\"2179776334\":[\"To simplify the problem, we restrict ourselves to optimizing value classes [2].\"],\"2208923056\":[\"Deforestation [21, 34, 36] has the aim to eliminate intermediate data structures and is in this respect related to our approach.\"],\"2293546518\":[\"by unrolling [32].\"],\"2471814997\":[\"The paper is structured as follows: section 2 gives brief introductions to tracing jit compilers [6].\",\"We used the RPython tool chain to incorporate its meta-tracing jit compiler [6].\"]},\"PR\":[1483557812,1588911968,2798801374,2145626850,1971014792,1969035756,2564616195,10481567,1972969106,2564378735,1973947606,1566774227,1998857607,1579167185,2039129271,2124241419,2150821142,2077176463,2072964972,1791018578,1483557812,1588911968,2798801374,2145626850,1971014792,1969035756,2564616195,10481567,1972969106,2564378735,1973947606,1566774227,1998857607,1579167185,2039129271,2124241419,2150821142,2077176463,2072964972,1791018578],\"ANF\":[{\"FN\":\"Tobias\",\"LN\":\"Pape\",\"S\":1},{\"FN\":\"Carl Friedrich\",\"LN\":\"Bolz\",\"S\":2},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":3}],\"BV\":\"Proceedings of the 30th Annual ACM Symposium on Applied Computing\",\"BT\":\"p\",\"PB\":\"ACM\"}"},{"logprob":-21.516,"Id":2121299661,"Ty":"0","Ti":"application specific models and pointcuts using a logic metalanguage","Pt":"1","L":"en","Y":2008,"D":"2008-07-01","CC":9,"ECC":9,"RId":[1649645444,2138363365,1489092837,2153887189,2622427009,2143238865,1556604985,1851327982,2134119432,2126225516,2499711114,1553047397,2045337518,2495956853,1591331624,2494394658,2025183068,2244034457,1997252650,1491095550,1608143967,2782959840,1533198137,2109469978,1617811580,2154677029,1767931343,2011306767,25947686,1536525036,2111681458,130651513,1991374650,1550429157,1549406689,153708875],"W":["application","logic","metalanguage","models","pointcuts","specific"],"AA":[{"DAuN":"Johan Brichau","AuN":"johan brichau","AuId":99581611,"DAfN":"Université catholique de Louvain","AfN":"universite catholique de louvain","AfId":95674353,"S":1},{"DAuN":"Andy Kellens","AuN":"andy kellens","AuId":82761540,"DAfN":"Vrije Universiteit Brussel","AfN":"vrije universiteit brussel","AfId":13469542,"S":2},{"DAuN":"Kris Gybels","AuN":"kris gybels","AuId":1142152369,"DAfN":"Vrije Universiteit Brussel","AfN":"vrije universiteit brussel","AfId":13469542,"S":3},{"DAuN":"Kim Mens","AuN":"kim mens","AuId":2087365257,"DAfN":"Université catholique de Louvain","AfN":"universite catholique de louvain","AfId":95674353,"S":4},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"Hasso-Plattner-Institut, Potsdam, Germany\t","S":5},{"DAuN":"Theo D'Hondt","AuN":"theo dhondt","AuId":2018012834,"DAfN":"Vrije Universiteit Brussel","AfN":"vrije universiteit brussel","AfId":13469542,"S":6}],"F":[{"DFN":"Theoretical computer science","FN":"theoretical computer science","FId":80444323},{"DFN":"Source code","FN":"source code","FId":43126263},{"DFN":"Programming language","FN":"programming language","FId":199360897},{"DFN":"Predicate (grammar)","FN":"predicate","FId":40738166},{"DFN":"Pointcut","FN":"pointcut","FId":2776219908},{"DFN":"Metalanguage","FN":"metalanguage","FId":142998047},{"DFN":"Logic programming","FN":"logic programming","FId":128838566},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Aspect-oriented programming","FN":"aspect oriented programming","FId":60051680}],"J":{"JN":"cl","JId":37707677},"E":"{\"DN\":\"Application-specific models and pointcuts using a logic metalanguage\",\"IA\":{\"IndexLength\":130,\"InvertedIndex\":{\"In\":[0],\"contemporary\":[1],\"aspect-oriented\":[2,54],\"languages,\":[3],\"pointcuts\":[4,23,101],\"are\":[5,122],\"usually\":[6],\"specified\":[7,104],\"directly\":[8],\"in\":[9,105,125],\"terms\":[10,106],\"of\":[11,14,20,32,107,112],\"the\":[12,15,33,113,126],\"structure\":[13],\"source\":[16],\"code.\":[17],\"The\":[18],\"definition\":[19],\"such\":[21,66],\"low-level\":[22],\"requires\":[24],\"aspect\":[25,93],\"developers\":[26,90,94],\"to\":[27,40],\"have\":[28],\"a\":[29,59,85,99],\"profound\":[30],\"understanding\":[31],\"entire\":[34],\"application's\":[35],\"implementation\":[36,119],\"and\":[37,43,92],\"often\":[38],\"leads\":[39],\"complex,\":[41],\"fragile\":[42],\"hard-to-maintain\":[44],\"pointcut\":[45,61,74,127],\"definitions.\":[46],\"To\":[47],\"resolve\":[48],\"these\":[49],\"issues,\":[50],\"we\":[51],\"present\":[52],\"an\":[53,79],\"programming\":[55],\"system\":[56],\"that\":[57,63,67,82,87,121],\"features\":[58],\"logic-based\":[60],\"language\":[62],\"is\":[64],\"open\":[65],\"it\":[68],\"can\":[69,95,102],\"be\":[70,103],\"extended\":[71],\"with\":[72],\"application-specific\":[73,80],\"predicates.\":[75],\"These\":[76],\"predicates\":[77],\"define\":[78],\"model\":[81,111],\"serves\":[83],\"as\":[84],\"contract\":[86],\"base\":[88],\"program\":[89],\"provide\":[91],\"depend\":[96],\"upon.\":[97],\"As\":[98],\"result,\":[100],\"this\":[108],\"more\":[109],\"high-level\":[110],\"application\":[114],\"which\":[115],\"confines\":[116],\"all\":[117],\"intricate\":[118],\"details\":[120],\"otherwise\":[123],\"exposed\":[124],\"definitions\":[128],\"themselves.\":[129]}},\"S\":[{\"Ty\":3,\"U\":\"http://soft.vub.ac.be/Publications/2006/vub-prog-tr-06-28.pdf\"},{\"Ty\":3,\"U\":\"http://www.hirschfeld.org/writings/media/BrichauKellensGybelsMensHirschfeldDHondt_2007_ApplicationSpecificModelsAndPointcutsUsingAMetaLanguage_AuthorsVersionLncs4406.pdf\"},{\"Ty\":3,\"U\":\"https://link.springer.com/content/pdf/10.1007%2F978-3-540-71836-9_1.pdf\"},{\"Ty\":1,\"U\":\"https://www.sciencedirect.com/science/article/pii/S1477842407000139\"},{\"Ty\":1,\"U\":\"https://dial.uclouvain.be/pr/boreal/object/boreal:59353\"},{\"Ty\":1,\"U\":\"https://link.springer.com/chapter/10.1007/978-3-540-71836-9_1\"},{\"Ty\":1,\"U\":\"http://dial.academielouvain.be/handle/boreal:59353?site_name=BOREAL\"},{\"Ty\":1,\"U\":\"http://dblp.uni-trier.de/db/journals/cl/cl34.html#BrichauKGMHD08\"},{\"Ty\":0,\"U\":\"http://www.sciencedirect.com/science/article/pii/S1477842407000139\"}],\"VFN\":\"Computer Languages, Systems & Structures\",\"V\":34,\"I\":2,\"FP\":66,\"LP\":82,\"DOI\":\"10.1016/j.cl.2007.05.004\",\"CC\":{\"130651513\":[\"In particular, we present an integration of the AspectS [ 8 ] and CARMA [9] aspect languages for Smalltalk.\\u001bAspectSOUL is an integration of the CARMA pointcut language [9] and AspectS [ 8 ], a Smalltalk extension for aspect-oriented programming.\"],\"153708875\":[\"This has also been referred to as the ‘obliviousness’ property of aspect orientation [5].\"],\"1533198137\":[\"EAOP [26] and JAsCo [ 27 ] oer event-based or stateful pointcuts that allow to express the activation of an aspect based on a sequence of events during the program’s execution.\"],\"1549406689\":[\"One of the most essential characteristics of an aspect-oriented programming language is that aspects are not explicitly invoked but instead, are implicitly invoked [5].\"],\"1550429157\":[\"This has also been referred to as the ‘obliviousness’ property of aspect orientation [ 5 ].\"],\"1553047397\":[\"These models and their associated predicates can, for example, reason over the entire state and execution history [23].\"],\"1556604985\":[\"The mapping uses abstract interpretation [19] of the pointcuts to determine the methods which may lead to joinpoints matching the pointcut.\",\"The use of more advanced partial evaluation [19] to further optimize weaving has been demonstrated [20], but a full discussion of two-phase weaving and the use of partial evaluation is beyond the scope of this paper.\"],\"1608143967\":[\"An alternative approach to application-specific pointcuts over application-specific models is to define pointcuts in terms of explicit annotations in the code [28, 29 ].\"],\"1617811580\":[\"In [23], we merely extended the pointcut language with a single predicate that allows to query a conceptual model of the program, implemented using intensional views [ 24 ].\"],\"1649645444\":[\"mation in programs: there are for example predicates encoding design patterns [ 17 ] and refactoring “bad smells”[18].\"],\"1767931343\":[\"In previous work [ 23 ], we have introduced the technique of model-based pointcuts that allows to define pointcuts in a similar way as the application-specific pointcuts presented in this paper.\\u001bIn [ 23 ], we merely extended the pointcut language with a single predicate that allows to query a conceptual model of the program, implemented using intensional views [24].\\u001bIn contrast, in [ 23 ], we have shown how model-based pointcuts are less fragile with respect to changes in the base program primarily due to tool support that enforces developers to adhere to the correct conventions such that the model remains valid.\"],\"1851327982\":[\"This has also been referred to as the ‘obliviousness’ property of aspect orientation [ 6 ].\"],\"1991374650\":[\"The wrappers checks the activator blocks specified in their advice, passing them the aspect and the top stack frame (accessed using the thisContext reflective feature of Smalltalk [12]).\"],\"1997252650\":[\"These predicates are taken from the LiCoR library of logic predicates for logic metaprogramming [13].\",\"The underlying language of this library and CARMA is the SOUL logic language [13,6].\"],\"2011306767\":[\"structures for looping over a set of classes or methods are necessary in pointcuts, as this is hidden in the logic language [17].\"],\"2025183068\":[\"EAOP [24] and JAsCo [25] offer event-based or stateful pointcuts that allow to express the activation of an aspect based on a sequence of events during the program’s execution.\"],\"2045337518\":[\"Our approach builds upon previous work on logic-based pointcut languages where we have described how the essential language features of a logic language render it into an adequate pointcut definition language [ 7 ].\\u001bIn fact, the approach presented in this paper is a first step towards an improved integration of model-based pointcuts and logicbased pointcut languages [ 7 ].\"],\"2111681458\":[\"More importantly, SOUL is in linguistic symbiosis with the underlying Smalltalk language, allowing Smalltalk objects to be bound to logic variables and the execution of Smalltalk expressions as part of the logic program [ 15 ].\"],\"2126225516\":[\"More recently, the interfaces that are defined by the design rules can be implemented as Explicit Pointcut Interfaces (XPI’s) using AspectJ [ 31 ].\"],\"2134119432\":[\"The improved modularity and separation of concerns [4], that can be achieved using aspects, intends not only to aid initial development, but also to allow developers to better manage software complexity, evolution and reuse.\"],\"2138363365\":[\"Aspect-oriented Software Development (AOSD) is a recent, yet established development paradigm that enhances existing development paradigms with advanced encapsulation and modularisation capabilities [ 1 ,2].\"],\"2143238865\":[\"Such concerns are traditionally spread across various modules in the implementation, causing tangled and scattered code [3].\"],\"2153887189\":[\"mation in programs: there are for example predicates encoding design patterns [17] and refactoring “bad smells”[ 18 ].\\u001bRefactorings are behaviour-preserving program transformations which can be used to improve the structure of the application [ 18 ].\"],\"2154677029\":[\"The use of more advanced partial evaluation [20] to further optimize weaving has been demonstrated [ 21 ], but a full discussion of two-phase weaving and the use of partial evaluation is beyond the scope of this paper.\"],\"2244034457\":[\"In previous work [7], we have introduced the technique of model-based pointcuts that allows to define pointcuts in a similar way as the application-specific pointcuts presented in this paper.\",\"In [7], we merely extended the pointcut language with a single predicate that allows to query a conceptual model of the program, implemented using intensional views [?].\",\"In contrast, in [7], we have shown how model-based pointcuts are less fragile with respect to changes in the base program primarily due to tool support that enforces developers to adhere to the correct conventions such that the model remains valid.\"]},\"PR\":[2552500889,173477800,1553047397,58110202,2006909633,2127610832,2105379554,969674699,1980308771,2235650862,2106555860,2139229172,2311916295,1643631903,1990453460,2157169869,1529395937,2035933336,2039324368,2110119635,2552500889,173477800,1553047397,58110202,2006909633,2127610832,2105379554,969674699,1980308771,2235650862,2106555860,2139229172,2311916295,1643631903,1990453460,2157169869,1529395937,2035933336,2039324368,2110119635],\"ANF\":[{\"FN\":\"Johan\",\"LN\":\"Brichau\",\"S\":1},{\"FN\":\"Andy\",\"LN\":\"Kellens\",\"S\":2},{\"FN\":\"Kris\",\"LN\":\"Gybels\",\"S\":3},{\"FN\":\"Kim\",\"LN\":\"Mens\",\"S\":4},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":5},{\"FN\":\"Theo\",\"LN\":\"D'Hondt\",\"S\":6}],\"BV\":\"Computer Languages, Systems & Structures\",\"BT\":\"a\",\"PB\":\"Elsevier Science Publishers B. V.\"}"},{"logprob":-21.533,"Id":2065296680,"Ty":"0","Ti":"test quality feedback improving effectivity and efficiency of unit testing","Pt":"3","L":"en@@@fr","Y":2012,"D":"2012-01-01","CC":7,"ECC":7,"RId":[1493688518,2014309790,2079317829,2146872957,2162045655,2170606151,1735790193,2052606569,2151099659,2070321219,2782959840,2116771900,2165723276,2132627437,2137440139,2155848253,2157659145,2096508355,2088772524,2143661621,1972151373,2148322842,1513058800,2066031375],"W":["effectivity","efficiency","feedback","improving","quality","test","testing","unit"],"AA":[{"DAuN":"Michael Perscheid","AuN":"michael perscheid","AuId":698431335,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":1},{"DAuN":"Damien Cassou","AuN":"damien cassou","AuId":1514817921,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":2},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":3}],"F":[{"DFN":"Test suite","FN":"test suite","FId":151552104},{"DFN":"Test harness","FN":"test harness","FId":109852812},{"DFN":"Test case","FN":"test case","FId":128942645},{"DFN":"Test Management Approach","FN":"test management approach","FId":7435765},{"DFN":"System under test","FN":"system under test","FId":108913964},{"DFN":"System integration testing","FN":"system integration testing","FId":111524372},{"DFN":"Regression testing","FN":"regression testing","FId":161821725},{"DFN":"Real-time computing","FN":"real time computing","FId":79403827},{"DFN":"Dynamic testing","FN":"dynamic testing","FId":198824145},{"DFN":"Computer science","FN":"computer science","FId":41008148}],"C":{"CN":"c5","CId":1201766282},"CI":{"CIN":"c5 2012","CIId":98471374},"E":"{\"DN\":\"Test Quality Feedback Improving Effectivity and Efficiency of Unit Testing\",\"IA\":{\"IndexLength\":181,\"InvertedIndex\":{\"Writing\":[0],\"unit\":[1],\"tests\":[2,34,45,121],\"for\":[3,65],\"a\":[4,11,21,76,85,89,94,96,130],\"software\":[5,86,97,179],\"system\":[6,12,36,87,98],\"enhances\":[7],\"the\":[8,35,47,53,164,174],\"confidence\":[9],\"that\":[10,79,132],\"works\":[13],\"as\":[14,158],\"expected.\":[15],\"Since\":[16],\"time\":[17,49,147],\"pressure\":[18],\"often\":[19],\"prevents\":[20],\"complete\":[22],\"testing\":[23],\"of\":[24,84,91,177],\"all\":[25,81],\"application\":[26],\"details\":[27],\"developers\":[28,104,117,128],\"need\":[29,40],\"to\":[30,41,74,115,138],\"know\":[31,42],\"which\":[32,43],\"new\":[33],\"requires.\":[37],\"Developers\":[38],\"also\":[39],\"existing\":[44],\"take\":[46],\"most\":[48],\"and\":[50,63,103,122,144,148,168],\"slow\":[51],\"down\":[52],\"whole\":[54],\"development\":[55],\"process.\":[56],\"Missing\":[57],\"feedback\":[58,114],\"about\":[59],\"less\":[60,107],\"tested\":[61,102],\"functionality\":[62],\"reasons\":[64],\"long\":[66],\"running\":[67],\"test\":[68,77,106,112,134,161,175],\"cases\":[69],\"make\":[70],\"it,\":[71],\"however,\":[72],\"harder\":[73],\"create\":[75],\"suite\":[78],\"covers\":[80],\"important\":[82],\"parts\":[83],\"in\":[88,118],\"minimum\":[90],\"time.\":[92],\"As\":[93],\"result\":[95],\"may\":[99,105],\"be\":[100],\"inadequately\":[101],\"frequently.\":[108],\"Our\":[109],\"approach\":[110],\"provides\":[111],\"quality\":[113,176],\"guide\":[116],\"identifying\":[119],\"missing\":[120,142],\"correcting\":[123],\"low-quality\":[124],\"tests.\":[125],\"We\":[126,151],\"provide\":[127],\"with\":[129,136],\"tool\":[131],\"analyzes\":[133],\"suites\":[135],\"respect\":[137],\"their\":[139],\"effectivity\":[140],\"(e.g.,\":[141,146],\"tests)\":[143],\"efficiency\":[145],\"memory\":[149],\"consumption).\":[150],\"implement\":[152],\"our\":[153],\"approach,\":[154],\"named\":[155],\"Path\":[156],\"Map,\":[157],\"an\":[159],\"extended\":[160],\"runner\":[162],\"within\":[163],\"Squeak\":[165],\"Smalltalk\":[166],\"IDE\":[167],\"demonstrate\":[169],\"its\":[170],\"benefits\":[171],\"by\":[172],\"improving\":[173],\"representative\":[178],\"systems.\":[180]}},\"S\":[{\"Ty\":3,\"U\":\"http://www.hirschfeld.org/writings/media/PerscheidCassouHirschfeld_2012_TestQualityFeedbackImprovingEffectivityAndEfficiencyOfUnitTesting_IEEE.pdf\"},{\"Ty\":3,\"U\":\"https://hal.inria.fr/hal-01118969/document\"},{\"Ty\":3,\"U\":\"http://www.michaelperscheid.de/publications/papers/PerscheidCassouHirschfeld_2012_TestQualityFeedbackImprovingEffectivityAndEfficiencyOfUnitTesting_IEEE.pdf\"},{\"Ty\":1,\"U\":\"http://yadda.icm.edu.pl/yadda/element/bwmeta1.element.ieee-000006195223\"},{\"Ty\":1,\"U\":\"http://ieeexplore.ieee.org/document/6195223/\"},{\"Ty\":1,\"U\":\"https://hal.inria.fr/hal-01118969\"},{\"Ty\":1,\"U\":\"https://www.computer.org/web/csdl/index/-/csdl/proceedings/c5/2012/4672/00/4672a060-abs.html\"},{\"Ty\":1,\"U\":\"https://dl.acm.org/citation.cfm?id=2223947.2223969\"}],\"VFN\":\"Conference on Creating, Connecting and Collaborating through Computing\",\"VSN\":\"C5\",\"FP\":60,\"LP\":67,\"DOI\":\"10.1109/C5.2012.7\",\"CC\":{\"1513058800\":[\"selective testing [23] which should result in an always up-to-\"],\"1735790193\":[\"In the course of time several other approaches have improved the standard layout algorithm: they prevent long rectangles that are difficult to see [20] or they highlight objects that are also neighbors in the hierarchical structure [21], [22].\"],\"1972151373\":[\"run-time behavior of the method and debug it [15].\"],\"2014309790\":[\"Automated unit tests allow developers to specify the proper state and interaction of objects and provide early identification of erroneous behavior [1].\",\"Although developers have used test-driven development [1] during the implementation of AweSOM, they ran into challenges regarding their test base.\"],\"2052606569\":[\"In the course of time several other approaches have improved the standard layout algorithm: they prevent long rectangles that are difficult to see [20] or they highlight objects that are also neighbors in the hierarchical structure [21], [22].\"],\"2066031375\":[\"Doing this coverage ondemand is necessary as a complete statement-level coverage analysis of the whole system would slow down the execution by a factor of 100 [13].\"],\"2070321219\":[\"Our approach can additionally determine an expert by analyzing who last changed the method, who wrote the initial implementation, and who changes the method the most frequently [12].\"],\"2079317829\":[\"We argue that the required testing effort depends on individual skills and knowledge about the system under observation: Similarly to the debugging activity [11] more experienced developers invent better hypotheses than novices.\"],\"2088772524\":[\"AweSOM is an implementation of a SOM (Simple Object Machine) virtual machine in Squeak/Smalltalk [7].\"],\"2096508355\":[\"Commonly, well tested applications own only a coverage rate around 70-80% [4] and increasing\",\"Numerous studies [6], [8], [4] report similar observations during software testing.\"],\"2116771900\":[\"this coverage requires much more development effort [5].\"],\"2132627437\":[\"Numerous studies [6], [8], [4] report similar observations during software testing.\",\"suggest elementary guidelines [8].\"],\"2137440139\":[\"For these tests to be effective in identifying erroneous behavior it is necessary that test cases cover as much as possible of the system code [2].\"],\"2143661621\":[\"TestQ is a tool capable of statically analysing test code [18].\"],\"2146872957\":[\"of a compact and scalable tree map [10].\",\"The visualization of our approach is based on tree maps [10] that visualize arbitrary hierarchical structures by subdividing a given area into small rectangles.\"],\"2148322842\":[\"Hapao is a test coverage tool which uses a graphical visualization to facilitate the discovery of not (completely) tested code [17].\"],\"2151099659\":[\"Moreover, collecting run-time information at statement or branch level comes along with a perceivable performance decrease [6].\",\"Numerous studies [6], [8], [4] report similar observations during software testing.\",\"On the other hand developers complain that they do not know how much code is covered and how well the tested code is [6].\",\"surveyed numerous of them [6].\"],\"2155848253\":[\"While the dynamic analysis for method coverage can be implemented with aspect-oriented programming [16], statement-level coverage depends on the language features.\"],\"2157659145\":[\"the reliability of systems [9].\"],\"2162045655\":[\"[19] proposed a seminal work that aims at finding faults within a software system by comparing unit test results.\"],\"2170606151\":[\"In the course of time several other approaches have improved the standard layout algorithm: they prevent long rectangles that are difficult to see [20] or they highlight objects that are also neighbors in the hierarchical structure [21], [22].\"],\"2782959840\":[\"At the level of methods, we collect run-time information with flexible method wrappers [14]: a wrapper introduces new behavior before and after the execution of a specific method without changing its behavior.\"]},\"PR\":[1815064695,2170918895,2017081575,2127301602,2164315119,2108404340,2052434171,2083736053,2112925845,2106537125,1980768554,2037313217,1967634894,2592403054,2154959594,2403030675,2042044301,2369179610,2368685779,2181413133,1815064695,2170918895,2017081575,2127301602,2164315119,2108404340,2052434171,2083736053,2112925845,2106537125,1980768554,2037313217,1967634894,2592403054,2154959594,2403030675,2042044301,2369179610,2368685779,2181413133],\"ANF\":[{\"FN\":\"Michael\",\"LN\":\"Perscheid\",\"S\":1},{\"FN\":\"Damien\",\"LN\":\"Cassou\",\"S\":2},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":3}],\"BV\":\"2012 10th International Conference on Creating, Connecting and Collaborating through Computing\",\"BT\":\"p\",\"PB\":\"IEEE\"}"},{"logprob":-21.539,"Id":2125813862,"Ty":"0","Ti":"nxtalk dynamic object oriented programming in a constrained environment","Pt":"0","L":"en","Y":2009,"D":"2009-08-31","CC":4,"ECC":4,"RId":[2153887189,1770006921,1583464938,2739649174,1984877556,2172147300,2142294821,2130262734,2343398847,143231896,220870191,1532428356,178866325,2151233694,1552593264,2071455557,2089144294,2107261209,2521153988,2085973096],"W":["constrained","dynamic","environment","nxtalk","object","oriented","programming"],"AA":[{"DAuN":"Martin Beck","AuN":"martin beck","AuId":2309158709,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":1},{"DAuN":"Michael Haupt","AuN":"michael haupt","AuId":2146662369,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":2},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":3}],"F":[{"DFN":"Very high-level programming language","FN":"very high level programming language","FId":169796678},{"DFN":"Second-generation programming language","FN":"second generation programming language","FId":11164408},{"DFN":"Real-time computing","FN":"real time computing","FId":79403827},{"DFN":"Programming language theory","FN":"programming language theory","FId":18701968},{"DFN":"Programming domain","FN":"programming domain","FId":119263510},{"DFN":"Fourth-generation programming language","FN":"fourth generation programming language","FId":145628200},{"DFN":"First-generation programming language","FN":"first generation programming language","FId":570499},{"DFN":"Fifth-generation programming language","FN":"fifth generation programming language","FId":199305712},{"DFN":"Extensible programming","FN":"extensible programming","FId":131531359},{"DFN":"Computer science","FN":"computer science","FId":41008148}],"E":"{\"DN\":\"NXTalk: dynamic object-oriented programming in a constrained environment\",\"IA\":{\"IndexLength\":117,\"InvertedIndex\":{\"Dynamic\":[0],\"programming\":[1,14,88,93,98],\"languages\":[2,15],\"offer\":[3],\"high\":[4],\"expressiveness\":[5],\"and\":[6,58,69,87,110,114],\"flexibility,\":[7],\"improving\":[8],\"programmer\":[9],\"productivity.\":[10],\"Still,\":[11],\"making\":[12,95],\"dynamic\":[13],\"available\":[16,99],\"for\":[17,90],\"embedded\":[18],\"systems\":[19],\"is\":[20,38],\"challenging\":[21],\"because\":[22,66],\"such\":[23],\"environments\":[24],\"are\":[25],\"often\":[26],\"constrained\":[27],\"in\":[28],\"terms\":[29],\"of\":[30,44],\"memory\":[31,61],\"or\":[32],\"computational\":[33],\"power.\":[34],\"For\":[35],\"this,\":[36],\"it\":[37],\"necessary\":[39],\"to\":[40],\"reduce\":[41],\"the\":[42,52,91],\"size\":[43,113],\"language\":[45],\"implementations\":[46],\"(virtual\":[47],\"machines,\":[48],\"VMs)\":[49],\"while\":[50],\"at\":[51],\"same\":[53],\"time\":[54],\"retaining\":[55],\"good\":[56],\"performance\":[57,68,115],\"robustness.\":[59],\"Automatic\":[60],\"management\":[62],\"deserves\":[63],\"special\":[64],\"attention\":[65],\"its\":[67,107,112],\"space\":[70],\"overhead\":[71],\"have\":[72],\"noticeable\":[73],\"impact\":[74],\"on\":[75,100],\"overall\":[76],\"system\":[77],\"usability.\":[78],\"In\":[79],\"this\":[80],\"paper,\":[81],\"we\":[82],\"present\":[83],\"NXTalk,\":[84],\"a\":[85],\"VM\":[86,108],\"environment\":[89],\"Smalltalk\":[92],\"language,\":[94],\"high-level\":[96],\"object-oriented\":[97],\"Lego\":[101],\"Mindstorms\":[102],\"NXT\":[103],\"robots.\":[104],\"We\":[105],\"describe\":[106],\"implementation\":[109],\"evaluate\":[111],\"characteristics.\":[116]}},\"S\":[{\"Ty\":0,\"U\":\"http://dl.acm.org/citation.cfm?doid=1735935.1735942\"},{\"Ty\":3,\"U\":\"http://www.hirschfeld.org/writings/media/BeckHauptHirschfeld_2009_NXTalkDynamicObjectOrientedProgrammingInAConstrainedEnvironment_AcmDL.pdf\"},{\"Ty\":3,\"U\":\"http://www.esug.org/data/ESUG2009/IWST/iwst09_submission_5.pdf\"}],\"VFN\":\"Proceedings of the International Workshop on Smalltalk Technologies\",\"FP\":38,\"LP\":49,\"DOI\":\"10.1145/1735935.1735942\",\"CC\":{\"178866325\":[\"This zero-tagging technique allows to perform additions and subtractions without prior decoding of the number, because the zeroed tag-bit is neutral to these basic arithmetic operations [11].\"],\"220870191\":[\"An additional authoring environment using Squeak’s and Smalltalk’s capabilities is Etoys7, especially developed for teaching children [1].\",\"To achieve the former, high-level, beginner-friendly aspect, a full Etoys [1] implementation utilizing NXTalk is planned in order to provide a graphical programming environment based upon Squeak.\"],\"1552593264\":[\"This should be adequate for medium-sized methods and automatically encourage the programmer to use small methods, which are considered to be good style in Smalltalk [14].\"],\"1583464938\":[\"Memory fragmentation is not an issue, as the garbage collector applies heap compaction [13].\",\"Garbage Collection In order to find orphaned objects, NXTalk uses two well-known algorithms [13].\"],\"1770006921\":[\"For example, the Smalltalk programming language [10] was used to develop software for Tektronix oscilloscopes [7], and in chip manufacturing by Texas Instruments [20].\",\"Smalltalk is a dynamic object-oriented programming language and programming environment [10].\",\"Thus, we decided to store the address of each object only once in an object table [10].\",\", the number of literal constants [10] contained in a method— , which corresponds to 63 literals at most.\",\"This allocation scheme was already used by the original Smalltalk-80 implementation [10].\",\"While the original Smalltalk-80 implementation [10] used cooperative green threads, NXTalk employs a preemptive model.\"],\"1984877556\":[\"The Squawk JVM targets devices similar to the NXT in terms of memory constraints [18].\"],\"2071455557\":[\"Thus, NXTalk uses a slight modification of the Deutsch-Schorr-Waite (DSW) algorithm [16] for non-recursive heap traversal.\"],\"2085973096\":[\"languages have long been applied successfully in this domain [20].\",\"For example, the Smalltalk programming language [10] was used to develop software for Tektronix oscilloscopes [7], and in chip manufacturing by Texas Instruments [20].\",\"Automated object layout, memory management and other abstractions make programming and debugging for embedded system environments much more convenient, which leads to significantly shorter turn-around and product accomplishment times [20].\"],\"2089144294\":[\"URBI23 [4, 5] aims at providing a common abstraction for robot programming, featuring a dedicated language and run-time environment.\"],\"2107261209\":[\"For example, the Smalltalk programming language [10] was used to develop software for Tektronix oscilloscopes [7], and in chip manufacturing by Texas Instruments [20].\"],\"2130262734\":[\"While typical JIT compilers require large amounts of additional memory to store the methods in native code, hybrid JIT compilers like HotpathVM compile only frequently used execution traces instead of methods and have a very small memory footprint [9].\"],\"2142294821\":[\"URBI23 [4, 5] aims at providing a common abstraction for robot programming, featuring a dedicated language and run-time environment.\"],\"2151233694\":[\"More recently, Smalltalk has been used in, e. g., digital loudspeakers [ 2 ]; and Python has made and is making appearances in mobile devices, e. g., Nokia Series 60 1 or the Android 2 platform.\\u001bThe Resilient Smalltalk 16 platform [15,  2 ] bears many similarities with NXTalk: a Smalltalk VM running on an embedded device is fed with applications and data from an IDE running on a PC. In the case of Resilient, Eclipse is used as IDE.\"],\"2153887189\":[\"This is more than sufficient in our view, because a class with too many instance variables indicates a “code smell” [8].\"],\"2172147300\":[\"Squeak is an open-source Smalltalk implementation, created to meet the need for an educational development environment [12].\"],\"2521153988\":[\"ENVY/Embedded is a commercial Smalltalk system created by OTI [6] providing several features similar to NXTalk.\"],\"2739649174\":[\"The ARM processor is capable of two execution modes: a normal one and the “Thumb mode”[17].\",\"The AND instruction is able to do both operations at once [17] if the ARM is not especially set into Thumb mode.\"]},\"PR\":[2006766462,318340790,2163011015,2128017677,2015070283,2189001763,119067802,2143941523,2030189939,1991111867,2296388474,16805563,2146810957,103831470,162627512,2081061594,2113338641,2028350956,2077153770,1530891119,2006766462,318340790,2163011015,2128017677,2015070283,2189001763,119067802,2143941523,2030189939,1991111867,2296388474,16805563,2146810957,103831470,162627512,2081061594,2113338641,2028350956,2077153770,1530891119],\"ANF\":[{\"FN\":\"Martin\",\"LN\":\"Beck\",\"S\":1},{\"FN\":\"Michael\",\"LN\":\"Haupt\",\"S\":2},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":3}],\"BV\":\"Proceedings of the International Workshop on Smalltalk Technologies\",\"BT\":\"p\",\"PB\":\"ACM\"}"},{"logprob":-21.547,"Id":2066031375,"Ty":"0","Ti":"type harvesting a practical approach to obtaining typing information in dynamic programming languages","Pt":"3","L":"en","Y":2011,"D":"2011-03-21","CC":8,"ECC":8,"RId":[1770006921,2148357053,2172147300,1574060188,2135536553,2058213389,2093334386,2122592814,2031627901,2165046128,2170311191,2149539713,2048486205,2120363698,2133468633,1577728776,2053664570,2088772524,2138732532,1513058800,2091556182,1580606833],"W":["approach","dynamic","harvesting","information","languages","obtaining","practical","programming","type","typing"],"AA":[{"DAuN":"Michael Haupt","AuN":"michael haupt","AuId":2146662369,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":1},{"DAuN":"Michael Perscheid","AuN":"michael perscheid","AuId":698431335,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":2},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":3}],"F":[{"DFN":"Uniqueness type","FN":"uniqueness type","FId":21103074},{"DFN":"Type system","FN":"type system","FId":20740285},{"DFN":"Type erasure","FN":"type erasure","FId":48522483},{"DFN":"Type conversion","FN":"type conversion","FId":83137451},{"DFN":"Theoretical computer science","FN":"theoretical computer science","FId":80444323},{"DFN":"Second-generation programming language","FN":"second generation programming language","FId":11164408},{"DFN":"Duck typing","FN":"duck typing","FId":22811154},{"DFN":"Data type","FN":"data type","FId":138958017},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Complex data type","FN":"complex data type","FId":35288925}],"C":{"CN":"sac","CId":2754781246},"CI":{"CIN":"sac 2011","CIId":162684108},"E":"{\"DN\":\"Type harvesting: a practical approach to obtaining typing information in dynamic programming languages\",\"IA\":{\"IndexLength\":134,\"InvertedIndex\":{\"Dynamically\":[0],\"typed\":[1],\"programming\":[2],\"languages\":[3,39],\"are\":[4,13],\"powerful\":[5],\"tools\":[6],\"for\":[7,98,107],\"rapid\":[8],\"software\":[9],\"development.\":[10],\"However,\":[11],\"there\":[12],\"scenarios\":[14],\"that\":[15,125],\"would\":[16],\"benefit\":[17],\"from\":[18],\"actual\":[19],\"type\":[20,49,65,73,105,126],\"information\":[21,106],\"being\":[22],\"available---e.\":[23],\"g.,\":[24],\"code\":[25,35,80,84,109],\"generation\":[26],\"and\":[27],\"optimisation\":[28],\"as\":[29,31],\"well\":[30,54],\"program\":[32],\"comprehension.\":[33],\"Since\":[34],\"written\":[36],\"in\":[37,85,93,116],\"such\":[38],\"usually\":[40],\"makes\":[41],\"little\":[42],\"or\":[43],\"no\":[44],\"explicit\":[45],\"assumptions\":[46],\"about\":[47],\"types,\":[48],\"inference\":[50],\"is\":[51,76],\"not\":[52],\"particularly\":[53],\"suited\":[55],\"to\":[56,71,102],\"obtain\":[57,104],\"the\":[58,83,89],\"desired\":[59],\"information.\":[60,74],\"This\":[61],\"paper\":[62],\"introduces\":[63],\"harvesting\":[66,96,127],\",\":[67],\"a\":[68,108],\"practical\":[69],\"approach\":[70,112],\"obtaining\":[72],\"It\":[75],\"based\":[77],\"on\":[78],\"stepwise\":[79],\"execution\":[81],\"of\":[82,91],\"question,\":[86],\"closely\":[87],\"observing\":[88],\"types\":[90],\"entities\":[92],\"question.\":[94],\"Type\":[95],\"allows\":[97],\"exploiting\":[99],\"unit\":[100],\"tests\":[101],\"automatically\":[103],\"base.\":[110],\"The\":[111],\"has\":[113],\"been\":[114],\"implemented\":[115],\"Squeak/Smalltalk.\":[117],\"Its\":[118],\"evaluation,\":[119],\"using\":[120],\"several\":[121],\"complex\":[122],\"applications,\":[123],\"shows\":[124],\"yields\":[128],\"excellent\":[129],\"results\":[130],\"with\":[131],\"high\":[132],\"precision.\":[133]}},\"S\":[{\"Ty\":3,\"U\":\"http://www.hirschfeld.org/writings/media/HauptPerscheidHirschfeld_2011_TypeHarvestingAPracticalApproachToObtainingTypingInformationInDynamicProgrammingLanguages_AcmDL.pdf\"},{\"Ty\":1,\"U\":\"https://dl.acm.org/citation.cfm?id=1982464\"},{\"Ty\":1,\"U\":\"http://dblp.uni-trier.de/db/conf/sac/sac2011.html#HauptPH11\"},{\"Ty\":1,\"U\":\"https://doi.acm.org/10.1145/1982185.1982464\"},{\"Ty\":0,\"U\":\"http://doi.acm.org/10.1145/1982185.1982464\"}],\"VFN\":\"ACM Symposium on Applied Computing\",\"VSN\":\"SAC\",\"FP\":1282,\"LP\":1289,\"DOI\":\"10.1145/1982185.1982464\",\"CC\":{\"1513058800\":[\"In fact, there exist approaches that adopt incremental execution of relevant tests as those parts of an application covered by them are changed [19, 21].\"],\"1574060188\":[\"Finally, dynamic analysis tools can verify deduced type information to identify failure causes [24].\"],\"1577728776\":[\"There exist inference engines [4, 2, 1, 20, 16, 6] that are however necessarily incomplete.\",\"More recent approaches [4, 2, 1, 20, 16, 6] mostly focus on obtaining type information for interfaces (i.\",\"Moreover, their precision is sometimes lower [20, 16].\"],\"1580606833\":[\"Other projects have pursued similar goals without necessarily aiming for systems software [13, 15, 2], mostly applying source-to-source translation and type inference.\"],\"1770006921\":[\"Second, we present an implementation of type harvesting in Squeak [12], an implementation of Smalltalk [7].\"],\"2031627901\":[\"In fact, there exist approaches that adopt incremental execution of relevant tests as those parts of an application covered by them are changed [19, 21].\"],\"2048486205\":[\"There also exist lightweight approaches like pluggable types [3, 8], where developers can annotate methods with type information.\",\"Apart from these two, pluggable types [3, 8] are worth mentioning, but since they require developers to provide type information, we do not discuss them here.\"],\"2053664570\":[\"Type inference for dynamically typed programming languages has been researched early on [22].\"],\"2088772524\":[\"One of the four projects, AweSOM [9], is a research project, namely a virtual machine for a Smalltalk dialect (SOM Smalltalk) written in Squeak.\"],\"2093334386\":[\"Type feedback [11] is a VM technique that drives just-in-time compiler optimisation decisions based on dynamically collected type information.\"],\"2120363698\":[\"There exist inference engines [4, 2, 1, 20, 16, 6] that are however necessarily incomplete.\",\"Other projects have pursued similar goals without necessarily aiming for systems software [13, 15, 2], mostly applying source-to-source translation and type inference.\",\"More recent approaches [4, 2, 1, 20, 16, 6] mostly focus on obtaining type information for interfaces (i.\"],\"2122592814\":[\"Type inference for the Ruby programming language [6] has been augmented by profile-guided typing [5].\"],\"2133468633\":[\"Additional type information reduces the set of call graph branches to the possibilities actually assigned in a specific context [10].\"],\"2135536553\":[\"There exist inference engines [4, 2, 1, 20, 16, 6] that are however necessarily incomplete.\",\"More recent approaches [4, 2, 1, 20, 16, 6] mostly focus on obtaining type information for interfaces (i.\",\"Type inference for the Ruby programming language [6] has been augmented by profile-guided typing [5].\"],\"2138732532\":[\"There exist inference engines [4, 2, 1, 20, 16, 6] that are however necessarily incomplete.\",\"More recent approaches [4, 2, 1, 20, 16, 6] mostly focus on obtaining type information for interfaces (i.\"],\"2148357053\":[\"Developers maintain a mental model of program behaviour [14] by navigating the static call graph for a specific method of interest and following several paths comprised of sender and implementor relationships.\"],\"2149539713\":[\"There exist inference engines [4, 2, 1, 20, 16, 6] that are however necessarily incomplete.\",\"More recent approaches [4, 2, 1, 20, 16, 6] mostly focus on obtaining type information for interfaces (i.\",\"Moreover, their precision is sometimes lower [20, 16].\"],\"2165046128\":[\"There exist inference engines [4, 2, 1, 20, 16, 6] that are however necessarily incomplete.\",\"More recent approaches [4, 2, 1, 20, 16, 6] mostly focus on obtaining type information for interfaces (i.\"],\"2170311191\":[\"The Hermion [18] IDE extension for Squeak is designed for providing developers with additional run-time information during static source code navigation.\"],\"2172147300\":[\"Second, we present an implementation of type harvesting in Squeak [12], an implementation of Smalltalk [7].\"]},\"PR\":[1507181701,2305374267,2189052291,2089214613,2896137925,16483339,1581126267,208806687,1017474348,1578444545,2307785417,2085983541,202833674,2468602413,1606191713,2181924625,2889858359,1964178963,2794515005,812190219,1507181701,2305374267,2189052291,2089214613,2896137925,16483339,1581126267,208806687,1017474348,1578444545,2307785417,2085983541,202833674,2468602413,1606191713,2181924625,2889858359,1964178963,2794515005,812190219],\"ANF\":[{\"FN\":\"Michael\",\"LN\":\"Haupt\",\"S\":1},{\"FN\":\"Michael\",\"LN\":\"Perscheid\",\"S\":2},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":3}],\"BV\":\"Proceedings of the 2011 ACM Symposium on Applied Computing\",\"BT\":\"p\",\"PB\":\"ACM\"}"},{"logprob":-21.572,"Id":2488511551,"Ty":"0","Ti":"optimizing sideways composition fast context oriented programming in contextpypy","Pt":"0","L":"en","Y":2016,"D":"2016-07-17","CC":2,"ECC":2,"RId":[2072737419,2150275961,1993335798,2144114063,1978875190,2097664691,2010448353,2014881790,2031573529,1990628165,2103211722,2144171313,2053158093],"W":["composition","context","contextpypy","fast","optimizing","oriented","programming","sideways"],"AA":[{"DAuN":"Tobias Pape","AuN":"tobias pape","AuId":2114920648,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":1},{"DAuN":"Tim Felgentreff","AuN":"tim felgentreff","AuId":1964871710,"DAfN":"Viewpoints Research Institute","AfN":"viewpoints research institute","AfId":886105272,"S":2},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"Viewpoints Research Institute","AfN":"viewpoints research institute","AfId":886105272,"S":3}],"F":[{"DFN":"Virtual machine","FN":"virtual machine","FId":25344961},{"DFN":"Parallel computing","FN":"parallel computing","FId":173608175},{"DFN":"Modularity","FN":"modularity","FId":100648641},{"DFN":"Limiting","FN":"limiting","FId":188198153},{"DFN":"Just-in-time compilation","FN":"just in time compilation","FId":76782552},{"DFN":"Implementation","FN":"implementation","FId":26713055},{"DFN":"Distributed computing","FN":"distributed computing","FId":120314980},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Composition (visual arts)","FN":"composition","FId":169260993},{"DFN":"Compiler","FN":"compiler","FId":169590947}],"E":"{\"DN\":\"Optimizing Sideways Composition: Fast Context-oriented Programming in ContextPyPy\",\"IA\":{\"IndexLength\":130,\"InvertedIndex\":{\"The\":[0],\"prevalent\":[1],\"way\":[2],\"of\":[3,62],\"code\":[4],\"sharing\":[5],\"in\":[6,19,122],\"many\":[7],\"current\":[8],\"object\":[9],\"systems\":[10],\"is\":[11,56],\"static\":[12],\"and/or\":[13],\"single\":[14],\"inheritance;\":[15],\"both\":[16],\"are\":[17,101],\"limiting\":[18],\"situations\":[20],\"that\":[21,67,81,97,115],\"call\":[22],\"for\":[23],\"multi-dimensional\":[24],\"decomposition.\":[25],\"Sideways\":[26],\"composition\":[27,41,106],\"provides\":[28],\"a\":[29,51,123],\"technique\":[30],\"to\":[31,42],\"reduce\":[32],\"their\":[33],\"limitations.\":[34],\"Context-oriented\":[35],\"programming\":[36],\"(COP)\":[37],\"notably\":[38],\"applies\":[39],\"sideways\":[40,105],\"achieve\":[43],\"better\":[44],\"modularity.\":[45],\"However,\":[46],\"most\":[47],\"COP\":[48,124],\"implementations\":[49,70],\"have\":[50,78],\"substantial\":[52],\"performance\":[53,85,128],\"overhead.\":[54],\"This\":[55],\"partly\":[57],\"because\":[58],\"weaving\":[59],\"and\":[60,107],\"execution\":[61],\"layered\":[63],\"methods\":[64],\"violate\":[65],\"assumptions\":[66],\"common\":[68],\"language\":[69],\"hold\":[71],\"about\":[72],\"lookup.\":[73],\"Meta-tracing\":[74],\"just-in-time\":[75],\"(JIT)\":[76],\"compilers\":[77,100],\"unique\":[79],\"characteristics\":[80],\"can\":[82,89,126],\"alleviate\":[83],\"the\":[84,119],\"overhead,\":[86],\"as\":[87],\"they\":[88],\"treat\":[90],\"lookup\":[91],\"differently.\":[92],\"We\":[95],\"show\":[96],\"meta-tracing\":[98],\"JIT\":[99,120],\"good\":[102],\"at\":[103],\"optimizing\":[104],\"give\":[108],\"initial,\":[109],\"supporting\":[110],\"results.\":[111],\"Furthermore,\":[112],\"we\":[113],\"suggest\":[114],\"explicit\":[116],\"communication\":[117],\"with\":[118],\"compiler\":[121],\"implementation\":[125],\"improve\":[127],\"further.\":[129]}},\"S\":[{\"Ty\":1,\"U\":\"http://dl.acm.org/citation.cfm?doid=2951965.2951967\"},{\"Ty\":0,\"U\":\"http://dl.acm.org/citation.cfm?id=2951967\"},{\"Ty\":0,\"U\":\"http://doi.acm.org/10.1145/2951965.2951967\"}],\"VFN\":\"Proceedings of the 8th International Workshop on Context-Oriented Programming\",\"FP\":13,\"LP\":20,\"DOI\":\"10.1145/2951965.2951967\",\"PR\":[2674334413,2461956201,2309639351,2562516578,2242016257,2889219874,77792343,2291177998,2899159195,1498826398,1009010,2464627483,203994998,2552875977,2147143476,2271781913,1607380961,1589893694,2485976130,2783614532,2674334413,2461956201,2309639351,2562516578,2242016257,2889219874,77792343,2291177998,2899159195,1498826398,1009010,2464627483,203994998,2552875977,2147143476,2271781913,1607380961,1589893694,2485976130,2783614532],\"ANF\":[{\"FN\":\"Tobias\",\"LN\":\"Pape\",\"S\":1},{\"FN\":\"Tim\",\"LN\":\"Felgentreff\",\"S\":2},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":3}],\"BV\":\"Proceedings of the 8th International Workshop on Context-Oriented Programming\",\"BT\":\"p\",\"PB\":\"ACM\"}"},{"logprob":-21.574,"Id":2284010581,"Ty":"0","Ti":"international workshop on context oriented programming","Pt":"3","Y":2009,"D":"2009-07-07","CC":2,"ECC":2,"W":["context","international","oriented","programming","workshop"],"AA":[{"DAuN":"Pascal Costanza","AuN":"pascal costanza","AuId":2286412295,"DAfN":"Vrije Universiteit Brussel","AfN":"vrije universiteit brussel","AfId":13469542,"S":1},{"DAuN":"Richard P. Gabriel","AuN":"richard p gabriel","AuId":2509970008,"DAfN":"IBM","AfN":"ibm","AfId":1341412227,"S":2},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"Hasso-Plattner-Institut, Germany\t","S":3},{"DAuN":"Jorge Vallejos","AuN":"jorge vallejos","AuId":2141614139,"DAfN":"Vrije Universiteit Brussel","AfN":"vrije universiteit brussel","AfId":13469542,"S":4}],"F":[{"DFN":"Theoretical computer science","FN":"theoretical computer science","FId":80444323},{"DFN":"Systems engineering","FN":"systems engineering","FId":201995342},{"DFN":"Software system","FN":"software system","FId":149091818},{"DFN":"Simulation","FN":"simulation","FId":44154836},{"DFN":"Ranging","FN":"ranging","FId":115051666},{"DFN":"Mainstream","FN":"mainstream","FId":2777617010},{"DFN":"Implementation","FN":"implementation","FId":26713055},{"DFN":"Computer science","FN":"computer science","FId":41008148}],"C":{"CN":"ecoop","CId":1177184315},"CI":{"CIN":"ecoop 2009","CIId":189870905},"E":"{\"DN\":\"International Workshop on Context-Oriented Programming\",\"IA\":{\"IndexLength\":158,\"InvertedIndex\":{\"Context\":[0],\"information\":[1,9],\"plays\":[2],\"an\":[3],\"increasingly\":[4],\"important\":[5],\"role\":[6],\"in\":[7,110,128,152],\"our\":[8,141],\"centric\":[10],\"world.\":[11],\"Software\":[12],\"systems\":[13],\"must\":[14,22],\"adapt\":[15],\"to\":[16,48,52,74,90,105,123],\"changing\":[17],\"contexts\":[18],\"over\":[19],\"time,\":[20],\"and\":[21,33,95,98,150],\"change\":[23,43],\"even\":[24],\"while\":[25],\"they\":[26],\"are\":[27],\"running.\":[28],\"Unfortunately,\":[29],\"mainstream\":[30],\"programming\":[31],\"languages\":[32],\"development\":[34],\"environments\":[35],\"do\":[36],\"not\":[37],\"support\":[38],\"this\":[39],\"kind\":[40],\"of\":[41,56,68,81,140,155],\"dynamic\":[42,69],\"very\":[44],\"well,\":[45],\"leading\":[46],\"developers\":[47],\"implement\":[49],\"complex\":[50],\"designs\":[51],\"anticipate\":[53],\"various\":[54],\"dimensions\":[55],\"variability.\\r\\n\\r\\nContext-oriented\":[57],\"Programming\":[58,94],\"(COP)\":[59],\"directly\":[60],\"supports\":[61],\"variability\":[62],\"depending\":[63],\"on\":[64,78,92],\"a\":[65],\"wide\":[66],\"range\":[67],\"attributes,\":[70],\"making\":[71],\"it\":[72],\"possible\":[73],\"dispatch\":[75,117],\"run-time\":[76,126],\"behavior\":[77],\"any\":[79],\"properties\":[80],\"the\":[82,153,156],\"execution\":[83],\"context.\\r\\n\\r\\nBy\":[84],\"now,\":[85],\"several\":[86],\"researchers\":[87],\"have\":[88,113],\"started\":[89],\"work\":[91],\"Context-oriented\":[93],\"related\":[96],\"ideas,\":[97],\"first\":[99,103],\"implementations\":[100],\"ranging\":[101],\"from\":[102],\"prototypes\":[104],\"mature\":[106],\"platform\":[107],\"extensions\":[108],\"used\":[109],\"commercial\":[111],\"deployments\":[112],\"illustrated\":[114],\"how\":[115],\"multi-dimensional\":[116],\"can\":[118],\"indeed\":[119],\"be\":[120],\"supported\":[121],\"effectively\":[122],\"achieve\":[124],\"expressive\":[125],\"variation\":[127],\"behavior.\\r\\n\\r\\nWe\":[129],\"received\":[130],\"11\":[131],\"submissions.\":[132],\"Each\":[133],\"paper\":[134],\"was\":[135],\"reviewed\":[136],\"by\":[137],\"3\":[138],\"members\":[139],\"program\":[142],\"committee.\":[143],\"10\":[144],\"papers\":[145],\"were\":[146],\"selected\":[147],\"for\":[148],\"presentation\":[149],\"publication\":[151],\"proceedings\":[154],\"workshop.\":[157]}},\"S\":[{\"Ty\":0,\"U\":\"http://dl.acm.org/citation.cfm?id=1562112\"}],\"VFN\":\"European Conference on Object-Oriented Programming\",\"VSN\":\"ECOOP\",\"PR\":[2083755293,1546527298,2113395386,195512532,1555731876,2415784772,2253581969,113178440,69563235,1965749748,2777346476,2893634252,1970707239,2099963996,2248502577,142202525,2086348510,2079013540,2612796799,2052380750,2083755293,1546527298,2113395386,195512532,1555731876,2415784772,2253581969,113178440,69563235,1965749748,2777346476,2893634252,1970707239,2099963996,2248502577,142202525,2086348510,2079013540,2612796799,2052380750],\"ANF\":[{\"FN\":\"Pascal\",\"LN\":\"Costanza\",\"S\":1},{\"FN\":\"Richard P.\",\"LN\":\"Gabriel\",\"S\":2},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":3},{\"FN\":\"Jorge\",\"LN\":\"Vallejos\",\"S\":4}],\"BV\":\"ECOOP '09 European Conference on Object-Oriented Programming\",\"BT\":\"p\"}"},{"logprob":-21.586,"Id":169400382,"Ty":"0","Ti":"an introduction to seaside","Pt":"0","Y":2008,"D":"2008-01-01","CC":6,"ECC":6,"W":["introduction","seaside"],"AA":[{"DAuN":"Michael Perscheid","AuN":"michael perscheid","AuId":698431335,"S":1},{"DAuN":"David Tibbe","AuN":"david tibbe","AuId":273462452,"S":2},{"DAuN":"Martin Beck","AuN":"martin beck","AuId":2309158709,"S":3},{"DAuN":"Stefan Berger","AuN":"stefan berger","AuId":2423549385,"S":4},{"DAuN":"Peter Osburg","AuN":"peter osburg","AuId":319726736,"S":5},{"DAuN":"Jeffrey Eastman","AuN":"jeffrey eastman","AuId":2634384335,"S":6},{"DAuN":"Michael Haupt","AuN":"michael haupt","AuId":2146662369,"S":7},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"S":8}],"F":[{"DFN":"World Wide Web","FN":"world wide web","FId":136764020},{"DFN":"Web development","FN":"web development","FId":79373723},{"DFN":"Smalltalk","FN":"smalltalk","FId":2777293101},{"DFN":"Programming language","FN":"programming language","FId":199360897},{"DFN":"Object-oriented programming","FN":"object oriented programming","FId":73752529},{"DFN":"Hypertext Transfer Protocol","FN":"hypertext transfer protocol","FId":149672775},{"DFN":"Computer science","FN":"computer science","FId":41008148}],"E":"{\"DN\":\"An Introduction to Seaside\",\"VFN\":\"\",\"PR\":[1262379696,595349243,250233161,2148017497,54612561,2396478891,1529323326,1561576970,2083505347,2058676784,12892605,22246355,2050214566,2009179144,28466665,2521782464,2158490149,1550042973,2204512861,63082649,1262379696,595349243,250233161,2148017497,54612561,2396478891,1529323326,1561576970,2083505347,2058676784,12892605,22246355,2050214566,2009179144,28466665,2521782464,2158490149,1550042973,2204512861,63082649],\"ANF\":[{\"FN\":\"Michael\",\"LN\":\"Perscheid\",\"S\":1},{\"FN\":\"David\",\"LN\":\"Tibbe\",\"S\":2},{\"FN\":\"Martin\",\"LN\":\"Beck\",\"S\":3},{\"FN\":\"Stefan\",\"LN\":\"Berger\",\"S\":4},{\"FN\":\"Peter\",\"LN\":\"Osburg\",\"S\":5},{\"FN\":\"Jeffrey\",\"LN\":\"Eastman\",\"S\":6},{\"FN\":\"Michael\",\"LN\":\"Haupt\",\"S\":7},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":8}],\"BT\":\"a\"}"},{"logprob":-21.612,"Id":2297690803,"Ty":"0","Ti":"constraints as polymorphic connectors","Pt":"0","L":"en","Y":2016,"D":"2016-03-14","CC":0,"ECC":0,"RId":[1480909796,2077318760,2014596857,1770006921,2132695268,2118023438,2060440626,1996974848,2133254848,2119600129,2156437019,2143292990,2143722357,2125713144,2146462464,1968796785,1576863229,2045398665,2073536284,2025041550,2078404830,2150889907,2053637323,2132233302,1535752867,2112779958,1504553143,30253544,2102400845,1971378529,2102661934,1511796393,1983205028,1627958698,2105940697,2097008682,2017404992,1983007108,2023200367,1970576662,2053179758,2098783368,965841217,122334854],"W":["connectors","constraints","polymorphic"],"AA":[{"DAuN":"Marcel Weiher","AuN":"marcel weiher","AuId":2226621074,"DAfN":"Microsoft","AfN":"microsoft","AfId":1290206253,"S":1},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"Viewpoints Research Institute","AfN":"viewpoints research institute","AfId":886105272,"S":2}],"F":[{"DFN":"User interface","FN":"user interface","FId":89505385},{"DFN":"Theoretical computer science","FN":"theoretical computer science","FId":80444323},{"DFN":"Polymorphism (computer science)","FN":"polymorphism","FId":149737253},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Black box","FN":"black box","FId":94966114},{"DFN":"Architecture","FN":"architecture","FId":123657996}],"E":"{\"DN\":\"Constraints as polymorphic connectors\",\"IA\":{\"IndexLength\":77,\"InvertedIndex\":{\"The\":[0],\"architecture\":[1],\"of\":[2,35,66],\"interactive\":[3,67],\"systems\":[4,22,68],\"does\":[5],\"not\":[6],\"match\":[7],\"the\":[8,63,74],\"procedural\":[9],\"decomposition\":[10],\"mechanisms\":[11],\"available\":[12],\"in\":[13],\"most\":[14],\"programming\":[15],\"languages,\":[16],\"leading\":[17],\"to\":[18],\"architectural\":[19,58],\"mismatch.\":[20],\"Constraint\":[21],\"have\":[23],\"been\":[24],\"used\":[25],\"only\":[26],\"as\":[27,44,54],\"black\":[28],\"boxes\":[29],\"for\":[30,40,60],\"computing\":[31],\"with\":[32,73],\"primitive\":[33],\"values\":[34],\"a\":[36,55],\"specific\":[37,41],\"type\":[38],\"and\":[39,69],\"domains\":[42],\"such\":[43],\"user\":[45],\"interface\":[46],\"layouts\":[47],\"or\":[48],\"program\":[49],\"compilation.\":[50],\"We\":[51],\"propose\":[52],\"constraints\":[53],\"general\":[56],\"purpose\":[57],\"connector\":[59],\"both\":[61],\"describing\":[62],\"large-scale\":[64],\"structure\":[65],\"matching\":[70],\"that\":[71],\"description\":[72],\"actual\":[75],\"implementation.\":[76]}},\"S\":[{\"Ty\":1,\"U\":\"https://dl.acm.org/citation.cfm?id=2889456\"}],\"VFN\":\"Proceedings of the 15th International Conference on Modularity\",\"FP\":134,\"LP\":145,\"DOI\":\"10.1145/2889443.2889456\",\"PR\":[2529059095,135255265,1493241261,2361870364,2587967686,992101332,2497438351,1485906162,1504366492,2136924198,2522389296,2396935534,2473567061,2601778681,2219809577,1547367771,1517271540,2474369527,1571682448,2394860494,2529059095,135255265,1493241261,2361870364,2587967686,992101332,2497438351,1485906162,1504366492,2136924198,2522389296,2396935534,2473567061,2601778681,2219809577,1547367771,1517271540,2474369527,1571682448,2394860494],\"ANF\":[{\"FN\":\"Marcel\",\"LN\":\"Weiher\",\"S\":1},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":2}],\"BV\":\"Proceedings of the 15th International Conference on Modularity\",\"BT\":\"p\",\"PB\":\"ACM\"}"},{"logprob":-21.627,"Id":2534536750,"Ty":"0","Ti":"how to build a high performance vm for squeak smalltalk in your spare time an experience report of using the rpython toolchain","Pt":"0","L":"en","Y":2016,"D":"2016-08-23","CC":3,"ECC":3,"RId":[2150275961,2172147300,1993335798,2058213389,2135416495,2012948209,1493929095,1981301796,2419951300,2051540028],"W":["build","experience","high","performance","rpython","smalltalk","spare","squeak","time","toolchain","vm","your"],"AA":[{"DAuN":"Tim Felgentreff","AuN":"tim felgentreff","AuId":1964871710,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":1},{"DAuN":"Tobias Pape","AuN":"tobias pape","AuId":2114920648,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":2},{"DAuN":"Patrick Rein","AuN":"patrick rein","AuId":2229220081,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":3},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":4}],"F":[{"DFN":"Virtual machine","FN":"virtual machine","FId":25344961},{"DFN":"Tracing just-in-time compilation","FN":"tracing just in time compilation","FId":50450317},{"DFN":"Toolchain","FN":"toolchain","FId":2777062904},{"DFN":"Squeak","FN":"squeak","FId":2780281086},{"DFN":"Spare part","FN":"spare part","FId":194648553},{"DFN":"Smalltalk","FN":"smalltalk","FId":2777293101},{"DFN":"Operating system","FN":"operating system","FId":111919701},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Cog","FN":"cog","FId":4661277}],"E":"{\"DN\":\"How to Build a High-Performance VM for Squeak/Smalltalk in Your Spare Time: An Experience Report of Using the RPython Toolchain\",\"IA\":{\"IndexLength\":111,\"InvertedIndex\":{\"In\":[0,78],\"this\":[1,79],\"paper\":[2],\"we\":[3,82],\"present\":[4],\"our\":[5],\"experience\":[6,30,80],\"in\":[7],\"letting\":[8],\"students\":[9],\"develop\":[10],\"RSqueak/VM,\":[11],\"a\":[12,54,91],\"fast\":[13],\"virtual\":[14],\"machine\":[15],\"for\":[16,41,94],\"executing\":[17],\"Squeak/Smalltalk,\":[18],\"over\":[19],\"the\":[20,33,63,84,105],\"course\":[21],\"of\":[22,76,88,108],\"multiple\":[23],\"introductory\":[24],\"VM\":[25,50,109],\"courses\":[26],\"and\":[27,73,86,96],\"projects.\":[28],\"Our\":[29],\"indicates\":[31],\"that\":[32,57],\"way\":[34],\"RSqueak/VM\":[35,89],\"is\":[36,58,69],\"constructed\":[37],\"makes\":[38],\"it\":[39],\"easy\":[40],\"developers\":[42],\"with\":[43],\"little\":[44],\"or\":[45],\"no\":[46],\"prior\":[47],\"exposure\":[48],\"to\":[49,52,62,103],\"development\":[51],\"construct\":[53],\"Squeak\":[55,72],\"runtime\":[56],\"very\":[59],\"nearly\":[60],\"competitive\":[61],\"professional\":[64],\"grade\":[65],\"Cog\":[66],\"VM,\":[67],\"which\":[68],\"used\":[70],\"by\":[71],\"other\":[74],\"flavors\":[75],\"Smalltalk.\":[77],\"report\":[81],\"discuss\":[83],\"benefits\":[85],\"drawbacks\":[87],\"as\":[90],\"research\":[92],\"vehicle\":[93],\"developing\":[95],\"evaluating\":[97],\"Smalltalk\":[98],\"language\":[99],\"extensions\":[100],\"without\":[101],\"having\":[102],\"learn\":[104],\"deep\":[106],\"secrets\":[107],\"development.\":[110]}},\"S\":[{\"Ty\":0,\"U\":\"http://dl.acm.org/citation.cfm?doid=2991041.2991062\"},{\"Ty\":1,\"U\":\"http://dblp.uni-trier.de/db/conf/iwst/iwst2016.html#FelgentreffPRH16\"},{\"Ty\":1,\"U\":\"https://dl.acm.org/citation.cfm?doid=2991041.2991062\"},{\"Ty\":1,\"U\":\"https://doi.acm.org/10.1145/2991041.2991062\"}],\"VFN\":\"Proceedings of the 11th edition of the International Workshop on Smalltalk Technologies\",\"FP\":21,\"DOI\":\"10.1145/2991041.2991062\",\"PR\":[2012948209,2021246880,2739518953,2065830560,2074211779,2533176871,2145317012,2030847413,2616278256,2128112082,2415119835,2468231336,2124057877,2098771596,2551522387,175996381,2047156984,2106497613,2266605095,1847197715,2012948209,2021246880,2739518953,2065830560,2074211779,2533176871,2145317012,2030847413,2616278256,2128112082,2415119835,2468231336,2124057877,2098771596,2551522387,175996381,2047156984,2106497613,2266605095,1847197715],\"ANF\":[{\"FN\":\"Tim\",\"LN\":\"Felgentreff\",\"S\":1},{\"FN\":\"Tobias\",\"LN\":\"Pape\",\"S\":2},{\"FN\":\"Patrick\",\"LN\":\"Rein\",\"S\":3},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":4}],\"BV\":\"Proceedings of the 11th edition of the International Workshop on Smalltalk Technologies\",\"BT\":\"p\",\"PB\":\"ACM\"}"},{"logprob":-21.629,"Id":2111708921,"Ty":"0","Ti":"follow the path debugging state anomalies along execution histories","Pt":"3","L":"en","Y":2014,"D":"2014-02-01","CC":4,"ECC":4,"RId":[2110908283,2162376048,2116409384,2162045655,2172147300,2099866050,2164372721,1574060188,2165663378,1983119041,1673079227,2002985857,2133099573,2114178685,2782959840,1507612039,175708229,1986331539,2125825154,2092239677,2092221178,1482473201,1981537308,1774013863,2002568360,1972151373,2798692074,2065296680,2066031375,169400382,2105263737],"W":["anomalies","debugging","execution","follow","histories","path","state"],"AA":[{"DAuN":"Michael Perscheid","AuN":"michael perscheid","AuId":698431335,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":1},{"DAuN":"Tim Felgentreff","AuN":"tim felgentreff","AuId":1964871710,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":2},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"University of Potsdam","AfN":"university of potsdam","AfId":176453806,"S":3}],"F":[{"DFN":"Thread (computing)","FN":"thread","FId":138101251},{"DFN":"Test case","FN":"test case","FId":128942645},{"DFN":"Root cause","FN":"root cause","FId":84945661},{"DFN":"Real-time computing","FN":"real time computing","FId":79403827},{"DFN":"Property (programming)","FN":"property","FId":87551280},{"DFN":"Observable","FN":"observable","FId":32848918},{"DFN":"Failure causes","FN":"failure causes","FId":28944875},{"DFN":"Debugging","FN":"debugging","FId":168065819},{"DFN":"Computer science","FN":"computer science","FId":41008148}],"C":{"CN":"csmr","CId":1145597874},"E":"{\"DN\":\"Follow the path: Debugging state anomalies along execution histories\",\"IA\":{\"IndexLength\":218,\"InvertedIndex\":{\"To\":[0,176],\"understand\":[1],\"how\":[2],\"observable\":[3,155],\"failures\":[4,76],\"come\":[5],\"into\":[6],\"being,\":[7],\"back-in-time\":[8,55],\"debuggers\":[9],\"help\":[10],\"developers\":[11,36,135,183,203],\"by\":[12],\"providing\":[13],\"full\":[14],\"access\":[15],\"to\":[16,30,39,78,130,150,201,205],\"past\":[17,132],\"executions.\":[18],\"However,\":[19],\"such\":[20],\"potentially\":[21],\"large\":[22,142],\"execution\":[23,99],\"histories\":[24],\"do\":[25],\"not\":[26],\"include\":[27],\"any\":[28],\"hints\":[29],\"failure\":[31,66],\"causes.\":[32,81],\"For\":[33],\"that\":[34,68,93,195],\"reason,\":[35],\"are\":[37],\"forced\":[38],\"ascertain\":[40],\"unexpected\":[41,95],\"state\":[42,87,96,128,162,197],\"properties\":[43,97,105],\"and\":[44,61,124,171,204],\"wrong\":[45],\"behavior\":[46,109],\"completely\":[47,160],\"on\":[48],\"their\":[49,79],\"own.\":[50],\"Without\":[51],\"deep\":[52],\"program\":[53],\"understanding,\":[54],\"debugging\":[56,91,185],\"can\":[57],\"end\":[58],\"in\":[59],\"countless\":[60],\"difficult\":[62],\"questions\":[63],\"about\":[64],\"possible\":[65],\"causes\":[67,153],\"consume\":[69],\"a\":[70,90,137,190,216],\"lot\":[71],\"of\":[72,110,144,166,215],\"time\":[73,209],\"for\":[74,210],\"following\":[75],\"back\":[77],\"root\":[80,213],\"In\":[82],\"this\":[83],\"paper,\":[84],\"we\":[85,114,180,192],\"present\":[86],\"navigation\":[88,163,170,198],\"as\":[89,127,164],\"guide\":[92],\"highlights\":[94],\"along\":[98],\"histories.\":[100],\"After\":[101],\"deriving\":[102],\"common\":[103,138],\"object\":[104],\"from\":[106],\"the\":[107,121,131,141,154,207,212],\"expected\":[108],\"passing\":[111],\"test\":[112],\"cases,\":[113],\"generate\":[115],\"likely\":[116],\"invariants,\":[117],\"compare\":[118],\"them\":[119,149],\"with\":[120],\"failing\":[122],\"run,\":[123],\"map\":[125],\"differences\":[126],\"anomalies\":[129],\"execution.\":[133],\"So,\":[134],\"obtain\":[136],\"thread\":[139],\"through\":[140],\"amount\":[143],\"run-time\":[145],\"data\":[146],\"which\":[147],\"helps\":[148],\"answer\":[151],\"what\":[152],\"failure.\":[156,217],\"We\":[157],\"implement\":[158],\"our\":[159,167,178,196],\"automatic\":[161],\"part\":[165],\"test-driven\":[168],\"fault\":[169],\"its\":[172],\"Path\":[173],\"tools\":[174],\"framework.\":[175],\"evaluate\":[177],\"approach,\":[179],\"observe\":[181],\"eight\":[182],\"during\":[184],\"four\":[186],\"non-trivial\":[187],\"failures.\":[188],\"As\":[189],\"result,\":[191],\"find\":[193],\"out\":[194],\"is\":[199],\"able\":[200],\"aid\":[202],\"decrease\":[206],\"required\":[208],\"localizing\":[211],\"cause\":[214]}},\"S\":[{\"Ty\":3,\"U\":\"http://www.hirschfeld.org/writings/media/PerscheidFelgentreffHirschfeld_2014_FollowThePathDebuggingStateAnomaliesAlongExecutionHistories_IEEE.pdf\"},{\"Ty\":1,\"U\":\"http://ieeexplore.ieee.org/document/6747162/\"},{\"Ty\":1,\"U\":\"http://dblp.uni-trier.de/db/conf/csmr/csmr2014.html#PerscheidFH14\"}],\"VFN\":\"Conference on Software Maintenance and Reengineering\",\"VSN\":\"CSMR\",\"FP\":124,\"LP\":133,\"DOI\":\"10.1109/CSMR-WCRE.2014.6747162\",\"CC\":{\"169400382\":[\"We have inserted a defect into the Seaside Web framework [8] and its request/response processing logic (BufferedResponse class, writeHeadersOn: method).\"],\"175708229\":[\"Later, a novel indexing and querying technique [24] ensures scalability to arbitrarily large execution traces and offers an interactive debugging experience.\"],\"1482473201\":[\"Unstuck [21] is the first back-in-time debugger for Smalltalk but suffers from similar performance problems.\"],\"1507612039\":[\"Object flow analysis [25] provides a practical back-in-time debugger that leverages the virtual machine and its garbage collector to remove no longer reachable objects and to discard corresponding events.\"],\"1574060188\":[\"Debugging is largely an attempt to understand what causes failures [1].\",\"They understand failure causes step by step, make fewer and simpler decisions about how to follow execution histories, and focus their attention on finding defects [1].\",\"Especially, the missing classification of suspicious and harmless program entities leads to numerous and often laborious decisions which execution subtree to follow [1].\",\"Such state differences have a high probability to include failure causes so that developers can rely on this information for creating their hypotheses [1].\"],\"1774013863\":[\"With a mapping on execution histories of our previous back-in-time debugger [5], [6], anomalies reveal infection chains and guide developers to root causes.\",\"Our test-driven fault navigation [5] is a debugging guide that integrates spectrum-based anomaly detection [10], [12] into a systematic breadth-first search for tracing failure causes back to defects.\",\"3 summarizes the call tree of our back-in-time debugger [5], [6] with our state navigation extension.\",\"We implement our state navigation as part of our test-driven fault navigation and its corresponding Path tools framework [5] for the Squeak/Smalltalk development environment [7].\",\"We base this study on our previous user study [5] in order to assess the positive influence of our state navigation.\",\"During the study, our participants are supposed to localize four failures which we have already applied in our previous study5 [5].\",\"So far, this tool already supports the classification of suspicious method calls with spectrum-based anomalies [5].\"],\"1972151373\":[\"With a mapping on execution histories of our previous back-in-time debugger [5], [6], anomalies reveal infection chains and guide developers to root causes.\",\"By integrating these spectrum-based anomalies into our back-in-time debugger [6], we highlight suspicious method calls and allow developers to distinguish between suspicious and expected run-time behavior.\",\"3 summarizes the call tree of our back-in-time debugger [5], [6] with our state navigation extension.\",\"The tool suite consists of our enhanced test runner PathMap [18] and our lightweight back-in-time debugger PathFinder [6].\",\"Compared to these tools, our PathFinder is a lightweight and specialized back-in-time debugger for localizing failure causes in failing test cases [6].\"],\"1981537308\":[\"Second, our anomalies shall be refined with interactive developer feedback [31] in such a way that identified false positives strengthen the remaining failure cause probabilities.\"],\"1983119041\":[\"Later, an extension to Daikon [26] solves this problem by optimizing polymorphism and filtering unchanged values.\"],\"1986331539\":[\"Screeners [28] further optimize the run-time overhead and decrease it to only 14 %.\"],\"2002568360\":[\"With likely invariants, our state navigation generates dynamic contracts [14] that automatically detect corrupted state in failing test cases.\"],\"2002985857\":[\"The trace-oriented debugger (TOD) [23] combines an efficient instrumentation for capturing exhaustive traces and a specialized distributed database.\"],\"2065296680\":[\"The tool suite consists of our enhanced test runner PathMap [18] and our lightweight back-in-time debugger PathFinder [6].\"],\"2066031375\":[\"Our type harvester gathers detailed type information of executed program entities [16]2.\"],\"2092221178\":[\"Compared to Daikon [11] that provides a considerable amount of more likely invariants, it has been shown that too many invariants can limit their intent for debugging [13], [17].\",\"A current study reports that automatically generated program invariants by Daikon [11] are sometimes hard to understand and tend to produce false positives [17].\",\"Finally, comparative studies [17], [30] of programmer-written and likely invariants conclude that a combination of both methods is most promising.\"],\"2092239677\":[\"Unfortunately, this idealized procedure requires deep knowledge of the system and its behavior [2].\"],\"2099866050\":[\"ClearView [29] also monitors invariants on the fly but it applies them to automatically patch upcoming failures.\"],\"2105263737\":[\"For a detailed description of our tools and how to debug with them, we refer to [19].\"],\"2110908283\":[\"3) Anomalies: What Are Possible Failure Causes?: Anomalies such as from program spectra [10] or likely invariants [11] automatically identify possible failure causes by deriving runtime properties from reference runs and comparing them with failing executions.\",\"ing dynamic analysis of likely invariants tends to be timeconsuming because each object has to be explored at each execution point in full detail [11].\",\"Compared to Daikon [11] that provides a considerable amount of more likely invariants, it has been shown that too many invariants can limit their intent for debugging [13], [17].\",\"A current study reports that automatically generated program invariants by Daikon [11] are sometimes hard to understand and tend to produce false positives [17].\",\"Daikon [11] comprises a set of automatic techniques for inferring generalized program state from execution traces.\"],\"2114178685\":[\"Finally, comparative studies [17], [30] of programmer-written and likely invariants conclude that a combination of both methods is most promising.\"],\"2116409384\":[\"Diduce [27] extends Daikon’s approach and derives invariants on the fly.\"],\"2162045655\":[\"Differences have a high probability of including failure causes [12] and so help developers to narrow down the search space by answering which program entities are potentially infected.\",\"Our test-driven fault navigation [5] is a debugging guide that integrates spectrum-based anomaly detection [10], [12] into a systematic breadth-first search for tracing failure causes back to defects.\"],\"2162376048\":[\"Since failures and defects can be far apart from each other, their unknown infection chains are consequently long and demand a laborious effort for debugging [3].\",\"However, starting debugging at failures still includes a long way back to their root causes [3].\"],\"2164372721\":[\"WhyLine [22] allows developers to ask a set of “why did” and “why didn’t” questions such as why a line of code was not reached.\",\"First, our approach will be extended with why-questions [22] to even better guide developers through execution histories.\"],\"2172147300\":[\"• The Path tools framework implements our completely automatic approach as part of our test-driven fault navigation in Squeak/Smalltalk [7].\",\"We implement our state navigation as part of our test-driven fault navigation and its corresponding Path tools framework [5] for the Squeak/Smalltalk development environment [7].\"],\"2782959840\":[\"Based on the coverage of our failing tests, we instrument each of the included classes and their methods with harvester wrappers to transparently add analysis code around the original implementation [15].\"],\"2798692074\":[\"For example, typos are common and often difficult to localize [20].\"]},\"PR\":[1774013863,2775592182,2001919024,2121847279,2164649341,1529569394,2617064411,2062154010,1605507930,2807730630,2165811181,2004141756,2099526117,2116409384,2082732081,2807463475,2118315969,1984571869,1484132159,2070544288,1774013863,2775592182,2001919024,2121847279,2164649341,1529569394,2617064411,2062154010,1605507930,2807730630,2165811181,2004141756,2099526117,2116409384,2082732081,2807463475,2118315969,1984571869,1484132159,2070544288],\"ANF\":[{\"FN\":\"Michael\",\"LN\":\"Perscheid\",\"S\":1},{\"FN\":\"Tim\",\"LN\":\"Felgentreff\",\"S\":2},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":3}],\"BV\":\"2014 Software Evolution Week - IEEE Conference on Software Maintenance, Reengineering, and Reverse Engineering (CSMR-WCRE)\",\"BT\":\"p\",\"PB\":\"IEEE\"}"},{"logprob":-21.651,"Id":2004343568,"Ty":"0","Ti":"lisp50 the 50th birthday of lisp at oopsla 2008","Pt":"3","L":"en","Y":2008,"D":"2008-10-19","CC":0,"ECC":0,"RId":[2078434561,2131062488,2003507527,2045255985,1541665809,2037177386,2071499598,1544322677],"W":["2008","50th","birthday","lisp","lisp50","oopsla"],"AA":[{"DAuN":"Pascal Costanza","AuN":"pascal costanza","AuId":2286412295,"DAfN":"Vrije Universiteit Brussel","AfN":"vrije universiteit brussel","AfId":13469542,"S":1},{"DAuN":"Richard P. Gabriel","AuN":"richard p gabriel","AuId":2509970008,"DAfN":"IBM","AfN":"ibm","AfId":1341412227,"S":2},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"Hasso-Plattner Institut, Universität Potsdam, Potsdam, Germany","S":3},{"DAuN":"Guy L. Steele Jr.","AuN":"guy l steele","AuId":2193205163,"DAfN":"Sun Microsystems Laboratories","AfN":"sun microsystems laboratories","AfId":177191879,"S":4}],"F":[{"DFN":"Symbolic programming","FN":"symbolic programming","FId":61714564},{"DFN":"Scheme (programming language)","FN":"scheme","FId":24493144},{"DFN":"Programming language","FN":"programming language","FId":199360897},{"DFN":"Object-oriented programming","FN":"object oriented programming","FId":73752529},{"DFN":"Lisp","FN":"lisp","FId":190883126},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Common Lisp","FN":"common lisp","FId":2779353305}],"C":{"CN":"oopsla","CId":1138732554},"CI":{"CIN":"oopsla 2008","CIId":635565840},"E":"{\"DN\":\"Lisp50: The 50th birthday of lisp at OOPSLA 2008\",\"IA\":{\"IndexLength\":137,\"InvertedIndex\":{\"In\":[0],\"October\":[1],\"1958,\":[2],\"John\":[3,111],\"McCarthy\":[4,112],\"published\":[5],\"one\":[6,37],\"in\":[7,54,89],\"a\":[8,19,73,128],\"series\":[9],\"of\":[10,135],\"reports\":[11],\"about\":[12],\"his\":[13],\"then\":[14],\"ongoing\":[15],\"effort\":[16],\"for\":[17,28,43,71,102],\"designing\":[18],\"new\":[20,45],\"programming\":[21,46,77],\"language\":[22],\"that\":[23],\"would\":[24,57],\"be\":[25],\"especially\":[26],\"suited\":[27],\"achieving\":[29],\"artificial\":[30],\"intelligence.\":[31],\"That\":[32],\"report\":[33],\"was\":[34],\"the\":[35,40,95,103,120,131],\"first\":[36,104],\"to\":[38,59],\"use\":[39],\"name\":[41,96],\"LISP\":[42],\"this\":[44],\"language.\":[47],\"50\":[48,62,92,133],\"years\":[49,93,134],\"later,\":[50],\"Lisp\":[51,81,97],\"is\":[52,67],\"still\":[53],\"use.\":[55],\"We\":[56,106,124],\"like\":[58],\"celebrate\":[60],\"Lisp's\":[61],\"th\":[63],\"birthday.\":[64],\"OOPSLA\":[65,85],\"2008\":[66,86],\"an\":[68],\"excellent\":[69],\"venue\":[70],\"such\":[72],\"celebration,\":[74],\"because\":[75,84],\"object-oriented\":[76],\"benefitted\":[78],\"heavily\":[79],\"from\":[80,119],\"ideas\":[82],\"and\":[83,114],\"takes\":[87],\"place\":[88],\"October,\":[90],\"exactly\":[91],\"after\":[94],\"has\":[98],\"been\":[99],\"used\":[100],\"publicly\":[101],\"time.\":[105],\"will\":[107,125],\"have\":[108],\"talks\":[109],\"by\":[110],\"himself,\":[113],\"numerous\":[115],\"other\":[116],\"influential\":[117],\"Lispers\":[118],\"past\":[121],\"five\":[122],\"decades.\":[123],\"also\":[126],\"take\":[127],\"look\":[129],\"at\":[130],\"next\":[132],\"Lisp.\":[136]}},\"S\":[{\"Ty\":1,\"U\":\"https://dl.acm.org/citation.cfm?doid=1449814.1449882\"}],\"VFN\":\"Conference on Object-Oriented Programming Systems, Languages, and Applications\",\"VSN\":\"OOPSLA\",\"FP\":853,\"LP\":854,\"DOI\":\"10.1145/1449814.1449882\",\"CC\":{\"1541665809\":[\"Lisp is one of the most influential programming languages in the history of computer science: Timothy Hart added macros to Lisp in the 1960’s (7); Warren Teitelman invented an advice facility for Lisp in the 1960’s as the very first precursor to aspect-oriented programming (10); Carl Hewitt used Lisp as a platform to develop logic programming ( 3 ) and the actor model (4); Alan Kay acknowledges the heavy influence of Lisp on Smalltalk, the ...\"],\"1544322677\":[\"Lisp is one of the most influential programming languages in the history of computer science: Timothy Hart added macros to Lisp in the 1960’s (7); Warren Teitelman invented an advice facility for Lisp in the 1960’s as the very first precursor to aspect-oriented programming ( 10 ); Carl Hewitt used Lisp as a platform to develop logic programming (3) and the actor model (4); Alan Kay acknowledges the heavy influence of Lisp on Smalltalk, the ...\"],\"2045255985\":[\"The final design for the first incarnation of Lisp was published in an issue of the Communications of the ACM in 1960 ( 6 ).\"],\"2071499598\":[\"... in the history of computer science: Timothy Hart added macros to Lisp in the 1960’s (7); Warren Teitelman invented an advice facility for Lisp in the 1960’s as the very first precursor to aspect-oriented programming (10); Carl Hewitt used Lisp as a platform to develop logic programming (3) and the actor model (4); Alan Kay acknowledges the heavy influence of Lisp on Smalltalk, the first explicit object-oriented programming language ( 2 ); ...\"],\"2078434561\":[\"... Teitelman invented an advice facility for Lisp in the 1960’s as the very first precursor to aspect-oriented programming (10); Carl Hewitt used Lisp as a platform to develop logic programming (3) and the actor model (4); Alan Kay acknowledges the heavy influence of Lisp on Smalltalk, the first explicit object-oriented programming language (2); Brian Smith developed the concept of computational reflection using Lisp as a starting point ( 8 ); ...\"],\"2131062488\":[\"Lisp is one of the most influential programming languages in the history of computer science: Timothy Hart added macros to Lisp in the 1960’s (7); Warren Teitelman invented an advice facility for Lisp in the 1960’s as the very first precursor to aspect-oriented programming (10); Carl Hewitt used Lisp as a platform to develop logic programming (3) and the actor model ( 4 ); Alan Kay acknowledges the heavy influence of Lisp on Smalltalk, the ...\"]},\"PR\":[2246979574,2294112532,2146827885,2248877733,161096231,2266493119,2570653591,2481202101,2537986021,45522325,2272143167,2097551375,1554422743,2260087300,2025329762,1481191847,2505732535,2085050771,191835384,1997439053,2246979574,2294112532,2146827885,2248877733,161096231,2266493119,2570653591,2481202101,2537986021,45522325,2272143167,2097551375,1554422743,2260087300,2025329762,1481191847,2505732535,2085050771,191835384,1997439053],\"ANF\":[{\"FN\":\"Pascal\",\"LN\":\"Costanza\",\"S\":1},{\"FN\":\"Richard P.\",\"LN\":\"Gabriel\",\"S\":2},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":3},{\"FN\":\"Guy L. Steele\",\"LN\":\"Jr.\",\"S\":4}],\"BV\":\"Companion to the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications\",\"BT\":\"p\",\"PB\":\"ACM\"}"},{"logprob":-21.706,"Id":2408138717,"Ty":"0","Ti":"context propagation in data network","Pt":"2","L":"en","Y":2003,"D":"2003-07-18","CC":2,"ECC":2,"RId":[2179139249,2104582323],"W":["context","data","network","propagation"],"AA":[{"DAuN":"Wolfgang Kellerer","AuN":"wolfgang kellerer","AuId":26483632,"DAfN":"NTT DoCoMo","AfN":"ntt docomo","AfId":99157191,"S":1},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"NTT DoCoMo","AfN":"ntt docomo","AfId":99157191,"S":2}],"F":[{"DFN":"Wireless ad hoc network","FN":"wireless ad hoc network","FId":94523657},{"DFN":"Telecommunications network","FN":"telecommunications network","FId":192126672},{"DFN":"Network simulation","FN":"network simulation","FId":139940560},{"DFN":"Network management station","FN":"network management station","FId":16986412},{"DFN":"Network architecture","FN":"network architecture","FId":193415008},{"DFN":"Intelligent computer network","FN":"intelligent computer network","FId":67717222},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Computer network","FN":"computer network","FId":31258907}],"E":"{\"DN\":\"Context propagation in data network\",\"IA\":{\"IndexLength\":136,\"InvertedIndex\":{\"A\":[0],\"method\":[1],\"and\":[2,36,64],\"an\":[3,123],\"intermediate\":[4,33,41,74,80],\"network\":[5,14,34,42,54,75,90,120,131],\"entity\":[6,76],\"for\":[7],\"acquiring\":[8],\"context\":[9,45,57,69,81,134],\"information\":[10,20,46,58,70,84,93,106],\"relating\":[11,71],\"to\":[12,28,72,78,88],\"the\":[13,32,40,73,130],\"with\":[15,68],\"which\":[16],\"it\":[17],\"communicates.\":[18],\"Context\":[19,92],\"is\":[21],\"incorporated\":[22],\"into\":[23],\"messages\":[24],\"sent\":[25],\"by\":[26,39,111],\"server\":[27],\"a\":[29],\"client\":[30],\"via\":[31],\"entity,\":[35],\"stripped\":[37],\"out\":[38],\"entity.\":[43],\"Further\":[44],\"can\":[47,85,107],\"be\":[48,62,86,108,122,133],\"acquired\":[49,60],\"from\":[50,52],\"feedback\":[51],\"other\":[53,89,101],\"entities.\":[55,91],\"The\":[56,118],\"thus\":[59],\"may\":[61,121,132],\"filtered,\":[63],\"used\":[65],\"in\":[66],\"conjunction\":[67],\"itself\":[77],\"derive\":[79],\"information.\":[82],\"This\":[83],\"provided\":[87,109],\"includes\":[94],\"user\":[95],\"profiles,\":[96],\"hardware-related\":[97],\"information,\":[98],\"Information\":[99],\"about\":[100],\"computational\":[102],\"resources\":[103],\"etc.\":[104],\"Such\":[105],\"directly\":[110],\"clients\":[112],\"or\":[113],\"indirectly\":[114],\"through\":[115],\"supporting\":[116],\"infrastructure.\":[117],\"communication\":[119],\"ad\":[124],\"hoc\":[125],\"network.\":[126],\"Some\":[127],\"elements\":[128],\"of\":[129],\"agnostic.\":[135]}},\"S\":[{\"Ty\":999,\"U\":\"https://lens.org/119-096-335-503-836\"},{\"Ty\":1,\"U\":\"http://www.freepatentsonline.com/EP1665719.html\"},{\"Ty\":1,\"U\":\"https://patents.google.com/patent/WO2005015869A1/en\"}],\"VFN\":\"\",\"PR\":[1568542347,2226164202,2412996144,1041788907,2553506526,1808957278,2404729427,1482278943,1569458977,2397114253,1526942269,1573056655,2765556675,2585663271,1779948420,2278972804,2580781201,269840289,2207044691,2755302540,1568542347,2226164202,2412996144,1041788907,2553506526,1808957278,2404729427,1482278943,1569458977,2397114253,1526942269,1573056655,2765556675,2585663271,1779948420,2278972804,2580781201,269840289,2207044691,2755302540],\"ANF\":[{\"FN\":\"Wolfgang\",\"LN\":\"Kellerer\",\"S\":1},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":2}]}"},{"logprob":-21.715,"Id":2251059890,"Ty":"0","Ti":"workshop on self sustaining systems","Pt":"3","Y":2010,"D":"2010-09-27","CC":0,"ECC":0,"W":["self","sustaining","systems","workshop"],"AA":[{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"Hasso-Plattner-Institut Potsdam, Germany\t","S":1},{"DAuN":"Hidehiko Masuhara","AuN":"hidehiko masuhara","AuId":2087436944,"DAfN":"University of Tokyo","AfN":"university of tokyo","AfId":74801974,"S":2},{"DAuN":"Kim Rose","AuN":"kim rose","AuId":2100785283,"DAfN":"Viewpoints Research Institute","AfN":"viewpoints research institute","AfId":886105272,"S":3}],"F":[{"DFN":"Squeak","FN":"squeak","FId":2780281086},{"DFN":"Smalltalk","FN":"smalltalk","FId":2777293101},{"DFN":"Python (programming language)","FN":"python","FId":519991488},{"DFN":"Programming language","FN":"programming language","FId":199360897},{"DFN":"Lisp","FN":"lisp","FId":190883126},{"DFN":"Human–computer interaction","FN":"human computer interaction","FId":107457646},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Abstraction","FN":"abstraction","FId":124304363}],"C":{"CN":"s3","CId":2759571747},"CI":{"CIN":"s3 2010","CIId":158373362},"E":"{\"DN\":\"Workshop on Self-Sustaining Systems\",\"IA\":{\"IndexLength\":86,\"InvertedIndex\":{\"The\":[0],\"Workshop\":[1],\"on\":[2,40],\"Self-sustaining\":[3],\"Systems\":[4],\"(S3)\":[5],\"is\":[6,34,38],\"a\":[7],\"forum\":[8],\"for\":[9],\"discussion\":[10],\"of\":[11,31,62],\"topics\":[12],\"relating\":[13],\"to\":[14,22,72],\"computer\":[15],\"systems\":[16,33,58],\"and\":[17,26,55,68,75],\"languages\":[18],\"that\":[19,35],\"are\":[20,59],\"able\":[21],\"bootstrap,\":[23],\"implement,\":[24],\"modify,\":[25],\"maintain\":[27],\"themselves.\":[28],\"One\":[29],\"property\":[30],\"these\":[32],\"their\":[36,63,81],\"implementation\":[37],\"based\":[39],\"small\":[41,83],\"but\":[42],\"powerful\":[43],\"abstractions;\":[44],\"examples\":[45],\"include\":[46],\"(amongst\":[47],\"others)\":[48],\"Squeak/Smalltalk,\":[49],\"COLA,\":[50],\"Klein/Self,\":[51],\"PyPy/Python,\":[52],\"Rubinius/\":[53],\"Ruby,\":[54],\"Lisp.\":[56],\"Such\":[57],\"the\":[60],\"engines\":[61],\"own\":[64,82],\"replacement,\":[65],\"giving\":[66],\"researchers\":[67],\"developers\":[69],\"great\":[70],\"power\":[71],\"experiment\":[73],\"with,\":[74],\"explore\":[76],\"future\":[77],\"directions\":[78],\"from\":[79],\"within,\":[80],\"language\":[84],\"kernels.\":[85]}},\"S\":[{\"Ty\":1,\"U\":\"http://dl.acm.org/citation.cfm?doid=1942793\"}],\"VFN\":\"Self-Sustaining Systems\",\"VSN\":\"S3\",\"PR\":[1815733022,1516359336,1541028529,2030681182,2422673616,2006224274,1997094524,2074341592,155483774,1818757587,1979805399,2563995347,2401038881,2181802863,2583394245,1953660988,2178158951,2768090680,189170728,177054409,1815733022,1516359336,1541028529,2030681182,2422673616,2006224274,1997094524,2074341592,155483774,1818757587,1979805399,2563995347,2401038881,2181802863,2583394245,1953660988,2178158951,2768090680,189170728,177054409],\"ANF\":[{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":1},{\"FN\":\"Hidehiko\",\"LN\":\"Masuhara\",\"S\":2},{\"FN\":\"Kim\",\"LN\":\"Rose\",\"S\":3}],\"BV\":\"S3 '10 Workshop on Self-sustaining Systems\",\"BT\":\"p\"}"},{"logprob":-21.747,"Id":2040040157,"Ty":"0","Ti":"applying data driven tool development to context oriented languages","Pt":"0","L":"en","Y":2014,"D":"2014-07-28","CC":3,"ECC":3,"RId":[2150275961,2151996389,1992443356,2104686990,2144114063,1978875190,1964757858,2115607078,2087175184,175922506,1556513858,2172169742,1967922118,2002568360],"W":["applying","context","data","development","driven","languages","oriented","tool"],"AA":[{"DAuN":"Marcel Taeumel","AuN":"marcel taeumel","AuId":83004794,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":1},{"DAuN":"Tim Felgentreff","AuN":"tim felgentreff","AuId":1964871710,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":2},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":3}],"F":[{"DFN":"Visual programming language","FN":"visual programming language","FId":128644962},{"DFN":"Squeak","FN":"squeak","FId":2780281086},{"DFN":"Smalltalk","FN":"smalltalk","FId":2777293101},{"DFN":"Programming language","FN":"programming language","FId":199360897},{"DFN":"Implementation","FN":"implementation","FId":26713055},{"DFN":"Graphical tools","FN":"graphical tools","FId":110673710},{"DFN":"Data-driven","FN":"data driven","FId":2780440489},{"DFN":"Computer science","FN":"computer science","FId":41008148}],"E":"{\"DN\":\"Applying Data-driven Tool Development to Context-oriented Languages\",\"IA\":{\"IndexLength\":78,\"InvertedIndex\":{\"There\":[0],\"are\":[1],\"numerous\":[2],\"implementations\":[3],\"of\":[4],\"context-oriented\":[5],\"programming\":[6,14,51],\"on\":[7,50],\"host\":[8],\"languages\":[9],\"that\":[10],\"come\":[11],\"with\":[12],\"graphical\":[13,27],\"environments.\":[15],\"However,\":[16],\"comprehensive\":[17],\"tool\":[18,39,42],\"support\":[19],\"is\":[20,29],\"often\":[21],\"missing\":[22],\"because\":[23],\"building\":[24],\"and\":[25,41,63,72],\"integrating\":[26],\"tools\":[28,52,75],\"still\":[30],\"laborious;\":[31],\"many\":[32],\"programmers\":[33,66],\"cannot\":[34],\"afford\":[35],\"to\":[36,53,70],\"be\":[37],\"both\":[38],\"user\":[40],\"builder.\":[43],\"We\":[44,57],\"present\":[45],\"a\":[46,59],\"novel,\":[47],\"data-driven\":[48],\"approach\":[49],\"alleviate\":[54],\"this\":[55],\"problem.\":[56],\"implemented\":[58],\"framework\":[60],\"in\":[61],\"Squeak/Smalltalk\":[62],\"show\":[64],\"how\":[65],\"can\":[67],\"use\":[68],\"it\":[69],\"create\":[71],\"adapt\":[73],\"integrated\":[74],\"for\":[76],\"ContextS2.\":[77]}},\"S\":[{\"Ty\":0,\"U\":\"http://dl.acm.org/citation.cfm?doid=2637066.2637067\"},{\"Ty\":3,\"U\":\"http://www.hirschfeld.org/writings/media/TaeumelFelgentreffHirschfeld_2014_ApplyingDataDrivenToolDevelopmentToContextOrientedLanguages_AcmDL.pdf\"},{\"Ty\":1,\"U\":\"https://doi.acm.org/10.1145/2637066.2637067\"},{\"Ty\":1,\"U\":\"https://dl.acm.org/citation.cfm?doid=2637066.2637067\"}],\"VFN\":\"Proceedings of 6th International Workshop on Context-Oriented Programming\",\"FP\":1,\"LP\":7,\"DOI\":\"10.1145/2637066.2637067\",\"CC\":{\"175922506\":[\"Java ContextJ [2], ContextJ* [10], JCop [3] JavaScript ContextJS [13], COP.\"],\"1556513858\":[\"For an example, ContextS uses classes [9] to represent layers, and its successor ContextS2 uses symbols (see Appendix A).\",\"js Lisp ContextL [7], Ambiance [8], Lambic [17] Python ContextPy [11], PyContext [18] Ruby ContextR [16], Phenomenal Gem [15] Smalltalk ContextS [9], ContextS2 (see Appendix A)\"],\"1964757858\":[\"Depending on the view, properties can range from primitive types such as strings or bitmaps to more elaborate ones such as Morphs [14].\",\"The halo concept origins from the Morphic framework [14].\"],\"1967922118\":[\"For example, the OmniBrowser [4] framework wraps concrete artifacts in abstract nodes and the Glamour [6] framework wraps concrete widgets in abstract presentations.\"],\"1978875190\":[\"Java ContextJ [2], ContextJ* [10], JCop [3] JavaScript ContextJS [13], COP.\"],\"1992443356\":[\"js Lisp ContextL [7], Ambiance [8], Lambic [17] Python ContextPy [11], PyContext [18] Ruby ContextR [16], Phenomenal Gem [15] Smalltalk ContextS [9], ContextS2 (see Appendix A)\"],\"2002568360\":[\"js Lisp ContextL [7], Ambiance [8], Lambic [17] Python ContextPy [11], PyContext [18] Ruby ContextR [16], Phenomenal Gem [15] Smalltalk ContextS [9], ContextS2 (see Appendix A)\"],\"2087175184\":[\"js Lisp ContextL [7], Ambiance [8], Lambic [17] Python ContextPy [11], PyContext [18] Ruby ContextR [16], Phenomenal Gem [15] Smalltalk ContextS [9], ContextS2 (see Appendix A)\"],\"2104686990\":[\"The research project CodeBubbles [5] shows that there can be a better metaphor for visual programming environments.\",\"The compact editors for each artifact resemble Code Bubbles’ bubbles [5].\"],\"2115607078\":[\"js Lisp ContextL [7], Ambiance [8], Lambic [17] Python ContextPy [11], PyContext [18] Ruby ContextR [16], Phenomenal Gem [15] Smalltalk ContextS [9], ContextS2 (see Appendix A)\"],\"2144114063\":[\"Indeed, for many languages where cop is available, at least two different implementations exist [1].\"],\"2150275961\":[\"Java ContextJ [2], ContextJ* [10], JCop [3] JavaScript ContextJS [13], COP.\"],\"2151996389\":[\"As an effect, programmers tend to spend much time switching between different tools [12].\"],\"2172169742\":[\"Java ContextJ [2], ContextJ* [10], JCop [3] JavaScript ContextJS [13], COP.\"]},\"PR\":[2012451248,2795148395,2081592843,2112939580,1539659309,2023450657,1997057481,1988074284,1576536479,2573288385,2134984189,2049305133,2106432842,307289775,1989296186,193141886,2576360137,2087175184,2273196620,2578076754,2012451248,2795148395,2081592843,2112939580,1539659309,2023450657,1997057481,1988074284,1576536479,2573288385,2134984189,2049305133,2106432842,307289775,1989296186,193141886,2576360137,2087175184,2273196620,2578076754],\"ANF\":[{\"FN\":\"Marcel\",\"LN\":\"Taeumel\",\"S\":1},{\"FN\":\"Tim\",\"LN\":\"Felgentreff\",\"S\":2},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":3}],\"BV\":\"Proceedings of 6th International Workshop on Context-Oriented Programming\",\"BT\":\"p\",\"PB\":\"ACM\"}"},{"logprob":-21.756,"Id":2053158093,"Ty":"0","Ti":"efficient layered method execution in contextamber","Pt":"0","L":"en","Y":2015,"D":"2015-07-04","CC":2,"ECC":2,"RId":[2150275961,2094269821,2087772597,2144114063,2141293928,1978875190,2154597770,1556513858,2001477478,2067307118],"W":["contextamber","efficient","execution","layered"],"AA":[{"DAuN":"Matthias Springer","AuN":"matthias springer","AuId":2225126184,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":1},{"DAuN":"Jens Lincke","AuN":"jens lincke","AuId":2055148755,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":2},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":3}],"F":[{"DFN":"Vector graphics","FN":"vector graphics","FId":59662460},{"DFN":"Smalltalk","FN":"smalltalk","FId":2777293101},{"DFN":"Rendering (computer graphics)","FN":"rendering","FId":205711294},{"DFN":"Parallel computing","FN":"parallel computing","FId":173608175},{"DFN":"Metaprogramming","FN":"metaprogramming","FId":35390924},{"DFN":"JavaScript","FN":"javascript","FId":544833334},{"DFN":"Implementation","FN":"implementation","FId":26713055},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Computation","FN":"computation","FId":45374587}],"E":"{\"DN\":\"Efficient Layered Method Execution in ContextAmber\",\"IA\":{\"IndexLength\":96,\"InvertedIndex\":{\"We\":[0],\"present\":[1],\"ContextAmber,\":[2],\"a\":[3,60,84],\"framework\":[4],\"for\":[5],\"context-oriented\":[6],\"programming,\":[7],\"in\":[8,83,90],\"Amber\":[9],\"Smalltalk,\":[10],\"an\":[11],\"implementation\":[12],\"of\":[13,43,87],\"the\":[14,41],\"Smalltalk\":[15],\"programming\":[16],\"language\":[17],\"that\":[18],\"compiles\":[19],\"to\":[20,49],\"JavaScript.\":[21],\"ContextAmber\":[22,65],\"is\":[23,63],\"implemented\":[24],\"using\":[25],\"metaprogramming\":[26],\"facilities\":[27],\"and\":[28,32,54,77],\"supports\":[29],\"global,\":[30],\"object-wise,\":[31],\"scoped\":[33],\"layer\":[34,55,75],\"activation.\":[35],\"Current\":[36],\"COP\":[37],\"implementations\":[38],\"come\":[39],\"at\":[40],\"expense\":[42],\"significantly\":[44],\"reduced\":[45],\"execution\":[46],\"performance\":[47],\"due\":[48],\"multiple\":[50],\"partial\":[51,72],\"method\":[52,62],\"invocations\":[53],\"composition\":[56],\"computations\":[57],\"every\":[58],\"time\":[59],\"layered\":[61,80],\"invoked.\":[64],\"can\":[66],\"reduce\":[67],\"this\":[68],\"overhead\":[69,86],\"by\":[70],\"inlining\":[71],\"methods,\":[73,81],\"caching\":[74,78],\"compositions,\":[76],\"inlined\":[79],\"resulting\":[82],\"runtime\":[85],\"about\":[88],\"5p\":[89],\"our\":[91],\"vector\":[92],\"graphics\":[93],\"rendering\":[94],\"benchmarks.\":[95]}},\"S\":[{\"Ty\":3,\"U\":\"http://www.hirschfeld.org/writings/media/SpringerLinckeHirschfeld_2015_EfficientLayeredMethodExecutionInContextAmber_AcmDL.pdf\"},{\"Ty\":1,\"U\":\"https://doi.acm.org/10.1145/2786545.2786548\"},{\"Ty\":1,\"U\":\"https://dl.acm.org/ft_gateway.cfm?id=2786548&type=pdf\"}],\"VFN\":\"Proceedings of the 7th International Workshop on Context-Oriented Programming\",\"FP\":5,\"DOI\":\"10.1145/2786545.2786548\",\"CC\":{\"1556513858\":[\"ContextS is a COP implementation for Squeak [5].\"],\"1978875190\":[\"ContextJS is a COP implementation for JavaScript [9].\"],\"2001477478\":[\"can be as small as 1% [3], whereas in context-oriented programming, the performance decrease of layer-aware method dispatch is typically more than 75% [1].\"],\"2067307118\":[\", fingerprint [8]): a concatenation of the layers’ IDs and separator characters.\",\"It inlines proceed calls in the same way ContextAmber does, and adds an update header to the beginning of every inlined method checking the object’s cached layer composition signature; caching is, however, not supported for object-wise layer activation because every object can provide its own method for computing the stack of activated layers [8].\"],\"2087772597\":[\"Alternatively, layered methods could be wrappers delegating calls to composition-specific item description objects [2], or look up methods in a separate dictionary.\"],\"2094269821\":[\"Partial Evaluation in Truffle [10] is an example of a very aggressive form of method inlining that could be made aware of layer compositions: it continues inlining methods until it encounters a statement that tells it to stop inlining.\"],\"2141293928\":[\"Future work might focus on making polymorphic inline caches [7] aware of layer compositions: the invoked method could be determined based on the polymorphic type of the receiver and its layer composition signature.\"],\"2144114063\":[\"can be as small as 1% [3], whereas in context-oriented programming, the performance decrease of layer-aware method dispatch is typically more than 75% [1].\"],\"2150275961\":[\"Layer-based context-oriented programming [6] is a way to modularize crosscutting concerns that can dynamically adapt their runtime behavior: layers can be activated and deactivated at runtime, making it hard to predict the sequence and nesting of invoked partial methods for a given layered method at compile time.\"],\"2154597770\":[\"Layers are internally represented by classes and layer compositions are cached classes that inherit from (multiple) layer classes: the topmost layer class and a layer composition class for the rest of the layer composition, where the former one takes precendence over the latter one [4].\"]},\"PR\":[2058639022,2291058934,2093760065,1966263211,2061483729,2206901337,2143828212,2054675073,1877845091,2558313636,2028577120,1616236627,1966749098,2435692892,2762530511,2591642915,2296053195,1830619643,2157075925,1626207030,2058639022,2291058934,2093760065,1966263211,2061483729,2206901337,2143828212,2054675073,1877845091,2558313636,2028577120,1616236627,1966749098,2435692892,2762530511,2591642915,2296053195,1830619643,2157075925,1626207030],\"ANF\":[{\"FN\":\"Matthias\",\"LN\":\"Springer\",\"S\":1},{\"FN\":\"Jens\",\"LN\":\"Lincke\",\"S\":2},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":3}],\"BV\":\"Proceedings of the 7th International Workshop on Context-Oriented Programming\",\"BT\":\"p\",\"PB\":\"ACM\"}"},{"logprob":-21.758,"Id":2612968546,"Ty":"0","Ti":"unravel programming sessions with thresher identifying coherent and complete sets of fine granular source code changes","Pt":"1","L":"en","Y":2017,"D":"2017-01-01","CC":3,"ECC":3,"RId":[1649645444,1564363189,2100894766,2050187629,1548254758,2099571428,2139885493,2108395261,2162363818,2149672479,1480339387,2046882143,2122568363,2169957228,2057049321,2075382909,2043062123,2020400699,2042083078,2018638699,2141759709,2121459566,1526190597,2161226419,2101886912,1686428821,2114905813,2012451248,2134367263,1563875455,2165367568,177156884,2025645314,2336040589,2066031375,2095362727,2018220852,153470659],"W":["changes","code","coherent","complete","fine","granular","identifying","programming","sessions","sets","source","thresher","unravel"],"AA":[{"DAuN":"Marcel Taeumel","AuN":"marcel taeumel","AuId":83004794,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":1},{"DAuN":"Stephanie Platz","AuN":"stephanie platz","AuId":2119395961,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":2},{"DAuN":"Bastian Steinert","AuN":"bastian steinert","AuId":2142371068,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":3},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":4},{"DAuN":"Hidehiko Masuhara","AuN":"hidehiko masuhara","AuId":2087436944,"DAfN":"Tokyo Institute of Technology","AfN":"tokyo institute of technology","AfId":114531698,"S":5}],"F":[{"DFN":"Theoretical computer science","FN":"theoretical computer science","FId":80444323},{"DFN":"Squeak","FN":"squeak","FId":2780281086},{"DFN":"Source code","FN":"source code","FId":43126263},{"DFN":"Smalltalk","FN":"smalltalk","FId":2777293101},{"DFN":"Scripting language","FN":"scripting language","FId":61423126},{"DFN":"Notice","FN":"notice","FId":2779913896},{"DFN":"Distributed computing","FN":"distributed computing","FId":120314980},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Commit","FN":"commit","FId":153180980},{"DFN":"Code refactoring","FN":"code refactoring","FId":152752567},{"DFN":"Best practice","FN":"best practice","FId":184356942}],"J":{"JN":"journal of information processing","JId":192843772},"E":"{\"DN\":\"Unravel Programming Sessions with THRESHER: Identifying Coherent and Complete Sets of Fine-granular Source Code Changes\",\"IA\":{\"IndexLength\":153,\"InvertedIndex\":{\"Development\":[0],\"teams\":[1],\"bene\":[2],\"t\":[3],\"from\":[4,109],\"version\":[5],\"control\":[6],\"systems,\":[7],\"which\":[8,120],\"manage\":[9],\"shared\":[10],\"access\":[11],\"to\":[12,45,74,77,144],\"code\":[13],\"repositories\":[14],\"and\":[15,34,54,79,103,118,148],\"persist\":[16],\"entire\":[17],\"project\":[18],\"histories\":[19],\"for\":[20,83],\"analysis\":[21],\"or\":[22],\"recovery.\":[23],\"Such\":[24],\"systems\":[25],\"will\":[26],\"be\":[27],\"e\":[28,125],\"cient\":[29],\"if\":[30],\"developers\":[31,76,128],\"commit\":[32,80],\"coherent\":[33],\"complete\":[35],\"change\":[36,85],\"sets.\":[37],\"These\":[38],\"best\":[39,151],\"practices,\":[40],\"however,\":[41],\"are\":[42,90],\"di\":[43],\"cult\":[44],\"follow\":[46,150],\"because\":[47,127],\"multiple\":[48],\"activities\":[49,147],\"often\":[50],\"interleave\":[51],\"without\":[52],\"notice\":[53],\"existing\":[55],\"tools\":[56],\"impede\":[57],\"unraveling\":[58],\"changes\":[59,81,89],\"before\":[60],\"committing\":[61],\"them.\":[62],\"We\":[63,97,113],\"propose\":[64],\"an\":[65,137],\"interactive,\":[66],\"graphical\":[67],\"tool,\":[68],\"calledThresher,\":[69],\"that\":[70],\"employs\":[71],\"adaptable\":[72],\"scripts\":[73,108],\"support\":[75],\"group\":[78],\"especially\":[82],\"ne-granular\":[84],\"tracking\":[86],\"where\":[87],\"numerous\":[88],\"logged\":[91],\"even\":[92],\"in\":[93,101],\"short\":[94],\"programming\":[95],\"sessions.\":[96,112],\"implemented\":[98],\"our\":[99],\"tool\":[100],\"Squeak/Smalltalk\":[102],\"derived\":[104],\"a\":[105,122],\"foundation\":[106],\"of\":[107],\"ve\":[110],\"refactoring\":[111],\"evaluated\":[114],\"those\":[115],\"scripts'\":[116],\"precision\":[117],\"recall,\":[119],\"indicate\":[121],\"reduced\":[123],\"manual\":[124],\"ort\":[126],\"can\":[129,141],\"focus\":[130],\"on\":[131],\"project-speci\":[132],\"c\":[133],\"adjustments.\":[134],\"Having\":[135],\"such\":[136],\"interactive\":[138],\"approach,\":[139],\"they\":[140],\"easily\":[142],\"intervene\":[143],\"accurately\":[145],\"reconstruct\":[146],\"thus\":[149],\"practices.\":[152]}},\"S\":[{\"Ty\":3,\"U\":\"http://prg.is.titech.ac.jp/members/masuhara/papers/platz2015jssst.pdf\"},{\"Ty\":1,\"U\":\"https://www.jstage.jst.go.jp/article/imt/12/0/12_24/_article\"}],\"VFN\":\"Journal of Information Processing\",\"V\":12,\"FP\":24,\"LP\":39,\"DOI\":\"10.11185/imt.12.24\",\"PR\":[2046882143,2185075799,2769504778,2091715979,2329159417,2515480514,2183416869,2768202255,2900485839,2548610994,2102970299,2610517421,2401967267,2612226036,2265169858,252185380,92157899,1940770334,2040441647,219703794,2046882143,2185075799,2769504778,2091715979,2329159417,2515480514,2183416869,2768202255,2900485839,2548610994,2102970299,2610517421,2401967267,2612226036,2265169858,252185380,92157899,1940770334,2040441647,219703794],\"ANF\":[{\"FN\":\"Marcel\",\"LN\":\"Taeumel\",\"S\":1},{\"FN\":\"Stephanie\",\"LN\":\"Platz\",\"S\":2},{\"FN\":\"Bastian\",\"LN\":\"Steinert\",\"S\":3},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":4},{\"FN\":\"Hidehiko\",\"LN\":\"Masuhara\",\"S\":5}],\"BV\":\"Journal of Information Processing\",\"BT\":\"a\",\"PB\":\"Information and Media Technologies Editorial Board\"}"},{"logprob":-21.765,"Id":2253460018,"Ty":"0","Ti":"proceedings of the 10th sigplan symposium on new ideas new paradigms and reflections on programming and software","Pt":"3","Y":2011,"D":"2011-10-22","CC":2,"ECC":2,"W":["10th","ideas","paradigms","proceedings","programming","reflections","sigplan","software","symposium"],"AA":[{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"Hasso-Plattner-Insitut Potsdam, Germany\t","S":1},{"DAuN":"Eelco Visser","AuN":"eelco visser","AuId":2131973199,"DAfN":"Delft University of Technology","AfN":"delft university of technology","AfId":98358874,"S":2}],"F":[{"DFN":"Wish","FN":"wish","FId":2781298115},{"DFN":"Software framework","FN":"software framework","FId":76518257},{"DFN":"Software","FN":"software","FId":2777904410},{"DFN":"Ranging","FN":"ranging","FId":115051666},{"DFN":"Proper noun","FN":"proper noun","FId":41417386},{"DFN":"Pleasure","FN":"pleasure","FId":2777113389},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Artificial intelligence","FN":"artificial intelligence","FId":154945302}],"C":{"CN":"splash","CId":1173500908},"CI":{"CIN":"splash 2011","CIId":593408910},"E":"{\"DN\":\"Proceedings of the 10th SIGPLAN symposium on New ideas, new paradigms, and reflections on programming and software\",\"IA\":{\"IndexLength\":397,\"InvertedIndex\":{\"It\":[0],\"is\":[1,26,132,221,344,348],\"my\":[2],\"pleasure\":[3],\"to\":[4,7,163,171,198,202,249,297,379],\"welcome\":[5,232],\"you\":[6,247,260],\"the\":[8,44,93,148,205,254,292,321,339,380,390],\"10th\":[9],\"Onward!.\":[10],\"This\":[11],\"year\":[12,16,265],\"marks\":[13],\"its\":[14,23],\"first\":[15],\"as\":[17],\"a\":[18,173,188,210,216,263,324,329,362,393],\"bona\":[19],\"fide\":[20],\"SIGPLAN\":[21],\"symposium;\":[22],\"proper\":[24],\"name\":[25],\"ACM\":[27],\"Symposium\":[28],\"on\":[29,36,143,354],\"New\":[30],\"Ideas\":[31],\"in\":[32,48,55,169,192,327,338],\"Programming\":[33],\"and\":[34,80,110,155,186,236,242,274,279,301,388],\"Reflections\":[35],\"Software.\":[37],\"Its\":[38],\"familiar\":[39],\"name,\":[40],\"though,\":[41],\"remains\":[42],\"Onward!---with\":[43],\"exclamation\":[45],\"point.\\r\\n\\r\\n\\\"New\":[46],\"ideas\":[47,56],\"programming\\\"\":[49],\"means\":[50,145],\"that\":[51,57,146,315],\"we\":[52,98,207,266,305],\"are\":[53,105,113,135,182,196,224,286],\"interested\":[54],\"can\":[58,261],\"move\":[59],\"us\":[60],\"forward\":[61,150],\"or\":[62,257],\"radically\":[63],\"sideways.\":[64],\"A\":[65],\"good\":[66,211,332],\"Onward!\":[67,103],\"paper\":[68],\"has\":[69,166,295],\"two\":[70],\"characteristics:\":[71],\"readers\":[72],\"will\":[73,82,95,334,376],\"wish\":[74],\"they\":[75,81,134,223],\"had\":[76,209,306],\"thought\":[77,126],\"of\":[78,190,239,270,283,323,331,367],\"it,\":[79],\"believe\":[83],\"\\\"it\":[84],\"might\":[85],\"just\":[86],\"work.\\\"\":[87],\"We\":[88,176,312],\"don't\":[89,99],\"expect\":[90],\"detailed\":[91],\"proof\":[92],\"idea\":[94],\"work,\":[96],\"but\":[97,214,364],\"accept\":[100],\"pure\":[101],\"claims.\":[102],\"papers\":[104,139,179,228,256,273,285],\"well\":[106,108,349],\"written,\":[107],\"argued,\":[109],\"compelling.\":[111],\"They\":[112],\"generally\":[114],\"bigger\":[115],\"than\":[116],\"technical\":[117,290],\"papers,\":[118,291],\"more\":[119,121,125,128,299,394],\"radical,\":[120],\"visionary,\":[122],\"wider\":[123],\"ranging,\":[124],\"provoking,\":[127],\"frustrating\":[129],\"even.\":[130],\"Here\":[131,220],\"what\":[133,165,222,246],\"not:\":[136,225],\"ordinary\":[137,226],\"OOPSLA\":[138,227],\"with\":[140,229],\"lousy\":[141,230],\"validation.\\r\\n\\r\\n\\\"Reflections\":[142],\"software\\\"\":[144],\"sometimes\":[147],\"way\":[149],\"begins\":[151],\"by\":[152],\"looking\":[153],\"back\":[154],\"thinking\":[156],\"hard,\":[157],\"finding\":[158],\"new\":[159,174],\"(and\":[160],\"better)\":[161],\"ways\":[162],\"view\":[164],\"gone\":[167],\"before,\":[168],\"order\":[170],\"provide\":[172],\"vector.\":[175],\"call\":[177],\"such\":[178],\"\\\"essays.\\\"\":[180],\"Essays\":[181,195],\"reflective,\":[183],\"often\":[184],\"personal,\":[185],\"cover\":[187],\"lot\":[189],\"ground\":[191],\"unexpected\":[193],\"ways.\":[194],\"hard\":[197,201],\"write.\":[199,203],\"Very\":[200],\"Over\":[204],\"years\":[206],\"have\":[208],\"number\":[212],\"submitted,\":[213],\"only\":[215],\"scarce\":[217],\"few\":[218],\"accepted.\":[219],\"validation.\\r\\n\\r\\nWe\":[231],\"submissions\":[233],\"about\":[234],\"every\":[235],\"any\":[237],\"aspect\":[238],\"programming,\":[240],\"software,\":[241],\"software\":[243],\"engineering.\":[244],\"When\":[245],\"want\":[248],\"say\":[250],\"doesn't\":[251],\"fit\":[252],\"into\":[253],\"research\":[255,272,284],\"essays\":[258,318],\"bucket,\":[259],\"submit\":[262],\"film.\\r\\n\\r\\nThis\":[264],\"accepted\":[267],\"seven\":[268],\"out\":[269],\"23\":[271],\"five\":[275],\"films\":[276],\"for\":[277,351,361,385,392],\"presentation\":[278],\"publications.\":[280],\"While\":[281],\"authors\":[282],\"proficient\":[287],\"at\":[288],\"writing\":[289],\"essay\":[293,340],\"form\":[294,322],\"proven\":[296],\"be\":[298],\"difficult,\":[300],\"this\":[302,316],\"year,\":[303],\"though\":[304],\"13\":[307],\"submissions,\":[308],\"none\":[309],\"were\":[310],\"taken.\":[311],\"decided,\":[313],\"then,\":[314],\"year's\":[317],\"track\":[319],\"take\":[320],\"writers'\":[325],\"workshop\":[326],\"which\":[328],\"couple\":[330],\"essayists\":[333],\"coach\":[335],\"budding\":[336],\"writers\":[337],\"form.\\r\\n\\r\\nOur\":[341],\"keynote\":[342],\"speaker\":[343],\"Markus\":[345],\"Puschel\":[346],\"who\":[347],\"known\":[350],\"his\":[352,373],\"work\":[353],\"Spiral,\":[355],\"an\":[356],\"automatic\":[357],\"performance\":[358,381],\"programming\":[359],\"framework\":[360],\"small,\":[363],\"important\":[365],\"class\":[366],\"functions\":[368],\"called\":[369],\"linear\":[370],\"transforms.\":[371],\"In\":[372],\"talk\":[374],\"he\":[375],\"draw\":[377],\"attention\":[378],\"/\":[382],\"productivity\":[383],\"problem\":[384],\"mathematical\":[386],\"applications\":[387],\"make\":[389],\"case\":[391],\"interdisciplinary\":[395],\"attack.\":[396]}},\"VFN\":\"ACM conference on Systems, Programming, Languages and Applications: Software for Humanity\",\"VSN\":\"SPLASH\",\"PR\":[2616734952,2422661103,989794786,2472460187,71589816,2258570190,2116391992,2611650623,2187133322,14828587,343113675,2313677582,2256827785,1987268946,239227533,188721148,1604698280,1996870140,2399815,2300740380,2616734952,2422661103,989794786,2472460187,71589816,2258570190,2116391992,2611650623,2187133322,14828587,343113675,2313677582,2256827785,1987268946,239227533,188721148,1604698280,1996870140,2399815,2300740380],\"ANF\":[{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":1},{\"FN\":\"Eelco\",\"LN\":\"Visser\",\"S\":2}],\"BV\":\"SPLASH '11 Conference on Systems, Programming, and Applications: Software for Humanity\",\"BT\":\"p\"}"},{"logprob":-21.796,"Id":2306471348,"Ty":"0","Ti":"reactive object queries consistent views in object oriented languages","Pt":"0","L":"en","Y":2016,"D":"2016-03-14","CC":1,"ECC":1,"RId":[2138363365,2150275961,2171267342,180056467,1978875190,1968219237,131463356,2098787757,2403131032,2024901245,1481333791,2006322307],"W":["consistent","languages","object","oriented","queries","reactive","views"],"AA":[{"DAuN":"Stefan Lehmann","AuN":"stefan lehmann","AuId":2223786367,"DAfN":"HPI, Germany","S":1},{"DAuN":"Tim Felgentreff","AuN":"tim felgentreff","AuId":1964871710,"DAfN":"HPI, Germany","S":2},{"DAuN":"Jens Lincke","AuN":"jens lincke","AuId":2055148755,"DAfN":"HPI, Germany","S":3},{"DAuN":"Patrick Rein","AuN":"patrick rein","AuId":2229220081,"DAfN":"HPI, Germany","S":4},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"HPI, Germany","S":5}],"F":[{"DFN":"Theoretical computer science","FN":"theoretical computer science","FId":80444323},{"DFN":"Reactive programming","FN":"reactive programming","FId":150762246},{"DFN":"Predicate (grammar)","FN":"predicate","FId":40738166},{"DFN":"Object-oriented programming","FN":"object oriented programming","FId":73752529},{"DFN":"JavaScript","FN":"javascript","FId":544833334},{"DFN":"Imperative programming","FN":"imperative programming","FId":90871949},{"DFN":"Database","FN":"database","FId":77088390},{"DFN":"Computer science","FN":"computer science","FId":41008148}],"E":"{\"DN\":\"Reactive object queries: consistent views in object-oriented languages\",\"IA\":{\"IndexLength\":218,\"InvertedIndex\":{\"Maintaining\":[0],\"consistency\":[1],\"between\":[2],\"data\":[3,21,32],\"throughout\":[4],\"a\":[5,49,120,141,145,149],\"system\":[6,84],\"using\":[7,159],\"scattered,\":[8],\"imperative\":[9,177],\"code\":[10],\"fragments\":[11],\"is\":[12],\"challenging.\":[13],\"Some\":[14],\"mechanisms\":[15,26,60,89,209],\"address\":[16],\"this\":[17,116],\"challenge\":[18],\"by\":[19,213],\"making\":[20],\"dependencies\":[22,33],\"explicit.\":[23],\"Among\":[24],\"these\":[25,59,87],\"are\":[27,61,164],\"reactive\":[28,71,126,160,208],\"collections,\":[29],\"which\":[30,41],\"define\":[31],\"for\":[34,48],\"collections\":[35,64],\"of\":[36,51,58,98,112,122,156,207],\"objects,\":[37],\"and\":[38,74],\"object\":[39,75,104,127,130],\"queries,\":[40],\"allow\":[42,132],\"developers\":[43],\"to\":[44,69,73,94,107,109,135],\"query\":[45],\"their\":[46,55],\"program\":[47,142,169],\"subset\":[50],\"objects.\":[52],\"However,\":[53],\"on\":[54],\"own,\":[56],\"both\":[57,123],\"limited.\":[62],\"Reactive\":[63,129],\"require\":[65],\"an\":[66],\"initial\":[67,194],\"collection\":[68],\"apply\":[70],\"operations\":[72],\"queries\":[76,105,131],\"do\":[77,102],\"not\":[78],\"update\":[79,216],\"its\":[80],\"result\":[81],\"as\":[82],\"the\":[83,96,99,113,133,168,188,201,205],\"changes.\":[85,171],\"Using\":[86],\"two\":[88],\"in\":[90,140,191],\"conjunction\":[91],\"allows\":[92],\"each\":[93],\"mitigate\":[95],\"disadvantage\":[97],\"other.\":[100],\"To\":[101,172],\"so,\":[103],\"need\":[106],\"respond\":[108],\"state\":[110,170],\"changes\":[111],\"system.\":[114],\"In\":[115],\"paper,\":[117],\"we\":[118,179],\"propose\":[119],\"combination\":[121],\"mechanisms,\":[124],\"called\":[125],\"queries.\":[128],\"developer\":[134],\"declaratively\":[136],\"select\":[137],\"all\":[138],\"objects\":[139],\"that\":[143,200],\"match\":[144],\"particular\":[146],\"predicate,\":[147],\"creating\":[148],\"view.\":[150],\"Additionally,\":[151],\"views\":[152,158,163],\"can\":[153],\"be\":[154],\"composed\":[155],\"other\":[157],\"operations.\":[161],\"All\":[162],\"automatically\":[165],\"updated\":[166],\"when\":[167],\"better\":[173],\"integrate\":[174],\"with\":[175,196,210],\"existing\":[176],\"systems,\":[178],\"provide\":[180],\"fine-grained\":[181],\"events\":[182],\"signaling\":[183],\"view\":[184],\"updates.\":[185],\"We\":[186],\"implemented\":[187],\"proposed\":[189],\"concepts\":[190],\"JavaScript.\":[192],\"Our\":[193],\"experience\":[195],\"example\":[197],\"applications\":[198],\"shows\":[199],\"combined\":[202],\"concept\":[203],\"eases\":[204],\"integration\":[206],\"object-oriented\":[211],\"environments\":[212],\"avoiding\":[214],\"scattered\":[215],\"code.\":[217]}},\"S\":[{\"Ty\":1,\"U\":\"http://dblp.uni-trier.de/db/conf/aosd/modularity2016c.html#LehmannFLRH16\"},{\"Ty\":1,\"U\":\"https://dl.acm.org/citation.cfm?doid=2892664.2892665\"}],\"VFN\":\"Companion Proceedings of the 15th International Conference on Modularity\",\"FP\":23,\"LP\":28,\"DOI\":\"10.1145/2892664.2892665\",\"PR\":[1502696193,2396584157,2227892629,2199892189,2187731152,2244924102,2770610677,1143119552,2181663775,2251496226,2131565021,34741148,2901465542,1499629559,2769399991,1551000678,2625059445,1898252943,2519289116,2119126456,1502696193,2396584157,2227892629,2199892189,2187731152,2244924102,2770610677,1143119552,2181663775,2251496226,2131565021,34741148,2901465542,1499629559,2769399991,1551000678,2625059445,1898252943,2519289116,2119126456],\"ANF\":[{\"FN\":\"Stefan\",\"LN\":\"Lehmann\",\"S\":1},{\"FN\":\"Tim\",\"LN\":\"Felgentreff\",\"S\":2},{\"FN\":\"Jens\",\"LN\":\"Lincke\",\"S\":3},{\"FN\":\"Patrick\",\"LN\":\"Rein\",\"S\":4},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":5}],\"BV\":\"Companion Proceedings of the 15th International Conference on Modularity\",\"BT\":\"p\",\"PB\":\"ACM\"}"},{"logprob":-21.812,"Id":2045191279,"Ty":"0","Ti":"connecting object constraints with context oriented programming scoping constraints with layers and activating layers with constraints","Pt":"0","L":"en","Y":2015,"D":"2015-07-04","CC":2,"ECC":2,"RId":[2480195817,2150275961,1610570299,1992443356,2100134231,2060640309,2089889705,1978875190,2087175184,175922506,2156011560,2403131032,2466549770,2019153550,2040040157],"W":["activating","connecting","constraints","context","layers","object","oriented","programming","scoping"],"AA":[{"DAuN":"Stefan Lehmann","AuN":"stefan lehmann","AuId":2223786367,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":1},{"DAuN":"Tim Felgentreff","AuN":"tim felgentreff","AuId":1964871710,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":2},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"Hasso Plattner Institute","AfN":"hasso plattner institute","AfId":143288331,"S":3}],"F":[{"DFN":"Theoretical computer science","FN":"theoretical computer science","FId":80444323},{"DFN":"Object Constraint Language","FN":"object constraint language","FId":133264317},{"DFN":"JavaScript","FN":"javascript","FId":544833334},{"DFN":"Inductive programming","FN":"inductive programming","FId":50033165},{"DFN":"Distributed computing","FN":"distributed computing","FId":120314980},{"DFN":"Constraint satisfaction","FN":"constraint satisfaction","FId":44616089},{"DFN":"Constraint programming","FN":"constraint programming","FId":173404611},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Boolean expression","FN":"boolean expression","FId":158465420}],"E":"{\"DN\":\"Connecting Object Constraints with Context-oriented Programming: Scoping Constraints with Layers and Activating Layers with Constraints\",\"IA\":{\"IndexLength\":172,\"InvertedIndex\":{\"Context-oriented\":[0,78],\"Programming\":[1,14,79],\"extends\":[2,16],\"object-oriented\":[3,17],\"languages\":[4],\"with\":[5,66],\"a\":[6],\"mechanism\":[7,99,152],\"to\":[8,90,100,116,118],\"dynamically\":[9,91,125,138],\"adapt\":[10,92],\"behavior.\":[11],\"Object\":[12,70],\"Constraint\":[13,71],\"orthogonally\":[15],\"run-times\":[18],\"by\":[19],\"integrating\":[20],\"constraints,\":[21,94],\"including\":[22,137],\"support\":[23],\"for\":[24,135,162],\"constraints\":[25,60,124],\"over\":[26],\"mutable\":[27],\"state,\":[28],\"object\":[29],\"identity,\":[30],\"and\":[31,59,73],\"the\":[32,101],\"results\":[33],\"of\":[34,77,103,123,165],\"message\":[35],\"sends.\":[36],\"Using\":[37],\"these\":[38],\"two\":[39],\"language\":[40],\"extensions\":[41],\"in\":[42,80],\"conjunctions\":[43],\"offers\":[44],\"interesting\":[45,163],\"opportunities.\":[46],\"In\":[49,109],\"this\":[50,110],\"paper,\":[51],\"we\":[52,112],\"report\":[53],\"on\":[54,154,169],\"new\":[55],\"mechanisms\":[56,134],\"involving\":[57],\"layers\":[58],\"that\":[61,86],\"evolved\":[62],\"from\":[63],\"our\":[64,83],\"experiences\":[65],\"combining\":[67],\"Babelsberg/JS,\":[68],\"an\":[69,75,97,114,150],\"Language,\":[72],\"ContextJS,\":[74],\"implementation\":[76],\"JavaScript.\":[81],\"First,\":[82],\"experience\":[84],\"shows\":[85],\"it\":[87],\"is\":[88],\"desirable\":[89],\"declarative\":[93],\"which\":[95],\"offer\":[96],\"orthogonal\":[98],\"definition\":[102],\"imperative\":[104],\"behavior,\":[105],\"likewise\":[106],\"at\":[107],\"runtime.\":[108],\"work,\":[111],\"show\":[113],\"extension\":[115],\"ContextJS\":[117,129],\"scope\":[119],\"activation\":[120,133,151],\"or\":[121,139,142],\"refinement\":[122],\"using\":[126],\"layers.\":[127],\"Second,\":[128],\"already\":[130],\"provides\":[131],\"different\":[132],\"layers,\":[136],\"structurally\":[140],\"scoped,\":[141],\"globally\":[143],\"through\":[144],\"system\":[145],\"generated\":[146],\"events.\":[147],\"Constraints\":[148],\"provide\":[149],\"based\":[153,168],\"arbitrary\":[155],\"boolean\":[156],\"expressions\":[157],\"changing\":[158],\"their\":[159],\"value,\":[160],\"allowing\":[161],\"applications\":[164],\"behavioral\":[166],\"adaption\":[167],\"certain\":[170],\"conditions.\":[171]}},\"S\":[{\"Ty\":1,\"U\":\"https://doi.acm.org/10.1145/2786545.2786549\"},{\"Ty\":1,\"U\":\"https://dl.acm.org/citation.cfm?id=2786545.2786549\"}],\"VFN\":\"Proceedings of the 7th International Workshop on Context-Oriented Programming\",\"FP\":1,\"LP\":6,\"DOI\":\"10.1145/2786545.2786549\",\"PR\":[2148313601,1585741938,2159105549,1989783058,2149305110,1963758152,2157208024,1672912583,2069380956,2293247284,2047401233,2216922970,1491807955,2291570846,2013488304,2058367869,2120059397,2175558515,1990084796,2028402782,2148313601,1585741938,2159105549,1989783058,2149305110,1963758152,2157208024,1672912583,2069380956,2293247284,2047401233,2216922970,1491807955,2291570846,2013488304,2058367869,2120059397,2175558515,1990084796,2028402782],\"ANF\":[{\"FN\":\"Stefan\",\"LN\":\"Lehmann\",\"S\":1},{\"FN\":\"Tim\",\"LN\":\"Felgentreff\",\"S\":2},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":3}],\"BV\":\"Proceedings of the 7th International Workshop on Context-Oriented Programming\",\"BT\":\"p\",\"PB\":\"ACM\"}"},{"logprob":-21.818,"Id":2105053310,"Ty":"0","Ti":"declarative layer composition in framework based environments","Pt":"0","L":"en","Y":2012,"D":"2012-06-11","CC":2,"ECC":2,"RId":[2138363365,2480195817,2143238865,41699526,2150275961,1992443356,2065646798,2089889705,1978875190,2087175184,2002568360,2090124836,2006015625,2027457117],"W":["composition","declarative","environments","framework","layer"],"AA":[{"DAuN":"Malte Appeltauer","AuN":"malte appeltauer","AuId":135591984,"DAfN":"Hasso-Plattner-Institut, Germany","S":1},{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"Hasso-Plattner-Institut, Germany","S":2}],"F":[{"DFN":"Source code","FN":"source code","FId":43126263},{"DFN":"Separation of concerns","FN":"separation of concerns","FId":76214141},{"DFN":"Programming language","FN":"programming language","FId":199360897},{"DFN":"Modular programming","FN":"modular programming","FId":88482812},{"DFN":"Language construct","FN":"language construct","FId":48859967},{"DFN":"Java","FN":"java","FId":548217200},{"DFN":"Implementation","FN":"implementation","FId":26713055},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Application domain","FN":"application domain","FId":36183442},{"DFN":"Abstraction","FN":"abstraction","FId":124304363}],"E":"{\"DN\":\"Declarative layer composition in framework-based environments\",\"IA\":{\"IndexLength\":142,\"InvertedIndex\":{\"Context-oriented\":[0],\"programming\":[1,57],\"(COP)\":[2],\"can\":[3],\"improve\":[4],\"modularity\":[5],\"by\":[6,50,135],\"dedicated\":[7],\"language\":[8,52,127,136],\"constructs\":[9,137],\"for\":[10,138],\"crosscutting\":[11,72,87,133],\"concerns.\":[12,79],\"Although\":[13],\"COP\":[14,51,117],\"could\":[15],\"be\":[16],\"used\":[17,56],\"in\":[18,22,41,90,93],\"any\":[19],\"application\":[20],\"domain\":[21],\"general,\":[23],\"its\":[24],\"current\":[25],\"implementations\":[26],\"may\":[27],\"require\":[28],\"adaptations\":[29],\"of\":[30,46,78,99,131],\"source\":[31],\"code\":[32],\"that\":[33,74,111],\"is\":[34],\"not\":[35],\"accessible\":[36],\"to\":[37],\"the\":[38,44,76,129],\"developer.\":[39],\"This,\":[40],\"turn,\":[42],\"limits\":[43],\"interaction\":[45],\"adaptation\":[47],\"mechanisms\":[48],\"provided\":[49],\"extensions\":[53],\"with\":[54],\"widely\":[55],\"abstractions\":[58],\"such\":[59,100],\"as\":[60,70],\"frameworks.\":[61],\"As\":[62,95],\"a\":[63,71,96,101,106,115],\"result,\":[64],\"dynamic\":[65],\"control\":[66],\"over\":[67],\"layers\":[68],\"emerges\":[69],\"concern\":[73],\"obstructs\":[75],\"separation\":[77],\"In\":[82],\"this\":[83],\"paper,\":[84],\"we\":[85,104,112,120],\"discuss\":[86],\"layer\":[88,140],\"composition\":[89],\"framework-based\":[91,102],\"applications\":[92],\"detail.\":[94],\"concrete\":[97],\"example\":[98],\"application,\":[103],\"present\":[105],\"simple\":[107],\"action\":[108],\"adventure\":[109],\"game\":[110],\"implemented\":[113],\"using\":[114],\"conventional\":[116],\"language.\":[118],\"Finally,\":[119],\"show,\":[121],\"how\":[122],\"our\":[123],\"JCop\":[125],\"supports\":[128],\"modularization\":[130],\"these\":[132],\"concerns\":[134],\"declarative\":[139],\"composition.\":[141]}},\"S\":[{\"Ty\":3,\"U\":\"http://www.hirschfeld.org/writings/media/AppeltauerHirschfeld_2012_DeclarativeLayerCompositionInFrameworkBasedEnvironments_AcmDL.pdf\"},{\"Ty\":3,\"U\":\"http://www.lirmm.fr/~ducour/Doc-objets/ECOOP2012/COP/a1-appeltauer.pdf\"},{\"Ty\":1,\"U\":\"https://dl.acm.org/citation.cfm?doid=2307436.2307437\"}],\"VFN\":\"Proceedings of the International Workshop on Context-Oriented Programming\",\"FP\":1,\"LP\":6,\"DOI\":\"10.1145/2307436.2307437\",\"CC\":{\"41699526\":[\"However, research so far did not explicitly address the incorporation of COP with application domains that employ frameworks [8].\",\"A problem may occur, if a layer composition must be executed within the framework code, because one property that distinguishes frameworks from other libraries is that they prohibit access to their implementation [8].\"],\"1978875190\":[\"The JavaScript extension ContextJS [12] addresses the need for additional scoping strategies, such as instance-specific and structural scoping, and proposes an open implementation for COP layer composition.\"],\"1992443356\":[\"The context-oriented programming (COP) [6, 4] approach supports the modularization of crosscutting concerns [11] and their control at runtime.\"],\"2002568360\":[\"The Python extension ContextPy [7] provides the concept of guards to declare layer relationships.\"],\"2006015625\":[\"AstroPic [17] is an image gallery application for mobile devices.\"],\"2027457117\":[\"WhenToDo [16] is a ToDo application that helps to prioritize tasks depending on the current working environment and situation.\",\"WhenToDo uses a context query framework [16] that allows for reasoning about Web-based context information, and incorporates the reaction to context change with layer activation.\"],\"2065646798\":[\"a specific type of crosscutting concerns, the so called heterogeneous crosscutting concerns [1].\",\"ting concerns require different source code to be executed at their join points (points in the program’s structure or control flow [11]), whereas homogeneous crosscutting concerns require the same source code to be executed at their join points [1].\"],\"2087175184\":[\"Similarly, another Python extension, PyContext [18], supports a kind of implicit layer activation that is designed to deal with the issue of scattered layer activations.\"],\"2090124836\":[\"The EventCJ [9] language has been published shortly after JCop [3] and both languages are closely related.\"],\"2143238865\":[\"The context-oriented programming (COP) [6, 4] approach supports the modularization of crosscutting concerns [11] and their control at runtime.\",\"ting concerns require different source code to be executed at their join points (points in the program’s structure or control flow [11]), whereas homogeneous crosscutting concerns require the same source code to be executed at their join points [1].\",\"For a better modularization, we propose to use the features of JCop that integrates COP with an aspectoriented programming [11] language dedicated to the specification of declarative layer composition.\"],\"2150275961\":[\"The context-oriented programming (COP) [6, 4] approach supports the modularization of crosscutting concerns [11] and their control at runtime.\",\"These two statements are typically denoted as with and without statements [6].\"],\"2480195817\":[\"JCop’s declarative layer compositions are encapsulated by a context class declaration, a special type declaration that can contain pointcuts and advice constructs, known form aspect languages such as AspectJ [10], and plain class members.\",\"However, JCop restricts its join point model to method executions and dynamic conditions, whereas EventCJ inherits the whole AspectJ join point model [10].\"]},\"PR\":[2162152221,2120306315,2418516776,131416673,144707335,2038176785,2385340562,1603120467,1972916949,2154006517,1971981534,1748012875,2514305392,1502821974,2755783464,2069173317,2011994953,2049582601,2067238940,2041804590,2162152221,2120306315,2418516776,131416673,144707335,2038176785,2385340562,1603120467,1972916949,2154006517,1971981534,1748012875,2514305392,1502821974,2755783464,2069173317,2011994953,2049582601,2067238940,2041804590],\"ANF\":[{\"FN\":\"Malte\",\"LN\":\"Appeltauer\",\"S\":1},{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":2}],\"BV\":\"Proceedings of the International Workshop on Context-Oriented Programming\",\"BT\":\"p\",\"PB\":\"ACM\"}"},{"logprob":-21.818,"Id":2024314992,"Ty":"0","Ti":"reflective designs an overview","Pt":"1","L":"en","Y":2005,"D":"2005-04-11","CC":3,"ECC":3,"RId":[1527793496,2296463440,1970558557,1491095550,2782959840,2128292865,2149068053,1583770165,1492801337,1491478150,160502439,137143946],"W":["designs","overview","reflective"],"AA":[{"DAuN":"Robert Hirschfeld","AuN":"robert hirschfeld","AuId":2154319088,"DAfN":"NTT DoCoMo","AfN":"ntt docomo","AfId":99157191,"S":1},{"DAuN":"Ralf Lämmel","AuN":"ralf lammel","AuId":1921302331,"DAfN":"Centrum Wiskunde & Informatica","AfN":"centrum wiskunde informatica","AfId":1341640284,"S":2}],"F":[{"DFN":"Squeak","FN":"squeak","FId":2780281086},{"DFN":"Software system","FN":"software system","FId":149091818},{"DFN":"Software design pattern","FN":"software design pattern","FId":146054899},{"DFN":"Software","FN":"software","FId":2777904410},{"DFN":"Smalltalk","FN":"smalltalk","FId":2777293101},{"DFN":"Runtime system","FN":"runtime system","FId":2780870223},{"DFN":"Real-time computing","FN":"real time computing","FId":79403827},{"DFN":"Operator (computer programming)","FN":"operator","FId":76449508},{"DFN":"Computer science","FN":"computer science","FId":41008148},{"DFN":"Aspect-oriented programming","FN":"aspect oriented programming","FId":60051680}],"J":{"JN":"entcs","JId":50368787},"E":"{\"DN\":\"Reflective Designs --- An Overview\",\"IA\":{\"IndexLength\":197,\"InvertedIndex\":{\"We\":[0,151],\"render\":[1],\"runtime\":[2,89],\"system\":[3,65,161],\"adaptations\":[4],\"by\":[5],\"design-level\":[6],\"concepts\":[7],\"such\":[8,66],\"that\":[9,67,123,162],\"running\":[10,64],\"systems\":[11,122],\"can\":[12,44,69],\"be\":[13,37,70],\"adapted\":[14,164],\"and\":[15,73,104,114,147,177],\"examined\":[16],\"at\":[17,40,50,166,195],\"a\":[18,133,160],\"higher\":[19],\"level\":[20],\"of\":[21,33,53,117,120],\"abstraction.\":[22],\"The\":[23],\"overall\":[24],\"idea\":[25],\"is\":[26,163],\"to\":[27,36,87,102],\"express\":[28],\"design\":[29,34,46,54,60,83,95],\"decisions\":[30],\"as\":[31,59],\"applications\":[32],\"operators\":[35,43,55,84],\"carried\":[38],\"out\":[39],\"runtime.\":[41,51],\"Design\":[42],\"implement\":[45],\"patterns\":[47],\"for\":[48,136,157],\"use\":[49],\"Applications\":[52],\"are\":[56],\"made\":[57,74],\"explicit\":[58],\"elements\":[61,96],\"in\":[62,141,159],\"the\":[63,92,112,115,118],\"they\":[68],\"traced,\":[71],\"reconfigured,\":[72],\"undone.Our\":[75],\"approach\":[76,109],\"enables\":[77],\"Reflective\":[78,139,180],\"Designs:\":[79],\"on\":[80,91,188],\"one\":[81],\"side,\":[82,94],\"employ\":[85],\"reflection\":[86,100,146],\"perform\":[88],\"adaptations;\":[90],\"other\":[93],\"provide\":[97],\"an\":[98],\"additional\":[99],\"protocol\":[101],\"examine\":[103],\"configure\":[105],\"performed\":[106],\"adaptations.\":[107],\"Our\":[108],\"helps\":[110],\"understanding\":[111],\"development\":[113],\"maintenance\":[116],\"class\":[119,134],\"software\":[121],\"cannot\":[124],\"tolerate\":[125],\"downtime\":[126],\"or\":[127],\"frequent\":[128],\"shutdown-revise-startup\":[129],\"cycles.We\":[130],\"have\":[131,152],\"accumulated\":[132],\"library\":[135,144],\"programming\":[137],\"with\":[138],\"Designs\":[140],\"Squeak/Smalltalk.\":[142],\"This\":[143,168],\"employs\":[145],\"dynamic\":[148],\"aspect-oriented\":[149],\"programming.\":[150],\"also\":[153],\"implemented\":[154],\"tool\":[155],\"support\":[156],\"navigating\":[158],\"continuously\":[165],\"runtime.Note:\":[167],\"extended\":[169],\"abstract\":[170],\"summarises\":[171],\"our\":[172],\"full\":[173],\"paper\":[174],\"Hirschfeld,\":[175],\"R.\":[176,178],\"Lammel,\":[179],\"Designs,\":[181],\"IEE\":[182],\"Proceedings\":[183],\"Software\":[184,190],\"(2004),\":[185],\"Special\":[186],\"Issue\":[187],\"Reusable\":[189],\"Libraries.\":[191],\"To\":[192],\"appear.\":[193],\"Available\":[194],\"http://homepages.cwi.nl/~ralf/rd/].\":[196]}},\"S\":[{\"Ty\":1,\"U\":\"https://www.sciencedirect.com/science/article/pii/S1571066105001386#!\"}],\"VFN\":\"Electronic Notes in Theoretical Computer Science\",\"V\":127,\"I\":3,\"FP\":55,\"LP\":58,\"DOI\":\"10.1016/j.entcs.2004.08.033\",\"PR\":[24577338,2899101028,2018452752,1996779740,134586624,5554740,1927356757,1977997149,2315134722,2151807793,2473566689,50337729,192211108,2154947679,2086302980,2140010310,1598325070,2143360671,2412174774,2057743258,24577338,2899101028,2018452752,1996779740,134586624,5554740,1927356757,1977997149,2315134722,2151807793,2473566689,50337729,192211108,2154947679,2086302980,2140010310,1598325070,2143360671,2412174774,2057743258],\"ANF\":[{\"FN\":\"Robert\",\"LN\":\"Hirschfeld\",\"S\":1},{\"FN\":\"Ralf\",\"LN\":\"Lämmel\",\"S\":2}],\"BV\":\"Electronic Notes in Theoretical Computer Science\",\"BT\":\"a\",\"PB\":\"Elsevier\"}"}]}