ABSTRACT
Korz is a new computational model that provides for context-oriented programming by combining implicit arguments and multiple dispatch in a slot-based model. This synthesis enables the writing of software that supports contextual variation along multiple dimensions, and graceful evolution of that software to support new, unexpected dimensions of variability, without the need for additional mechanism such as layers or aspects. With Korz, a system consists of a sea of method and data slots in a multidimensional space. There is no fixed organization of slots into objects - a slot pertains to a number of objects instead of being contained by a single object - and slots can come together according to the implicit context in any given situation, yielding subjective objects. There is no dominant decomposition, and no dimension holds sway over any other. IDE support is essential for managing complexity when working with the slot space and with subjectivity, allowing the task at hand to dictate what subspaces to isolate and what dominance of dimensions to use when presenting nested views to the user. We have implemented a prototype interpreter and IDE, and used it on several examples. This early experience has revealed much that needs to be done, but has also shown considerable promise. It seems that Korz's particular combination of concepts, each well-known from the past, is indeed more powerful than the sum of its parts.
- Agesen, O. and Ungar, D. 1994. Sifting Out the Gold. OOPSLA'94.Google Scholar
- Appeltauer, M. et al. 2009. A Comparison of Context-oriented Programming Languages. COP'09. Google ScholarDigital Library
- Ashcroft, E. A. and Wadge, W. W. Lucid, a Non-procedural Language with Iteration. 1977. CACM. 20, 7. Google ScholarDigital Library
- Batory, D. et al. 1994. The GenVoca Model of Software-System Generators. IEEE Software. 11, 5. Google ScholarDigital Library
- Bezanson, J. et al. 2014. The Julia Manual. http://docs.julialang.org/en/release-0.2/manual/ accessed 7/18/14.Google Scholar
- Bobrow, D. G. and Gabriel, R. P. 1993. CLOS in Context: The Shape of the Design Space. CACM. May, 1993.Google Scholar
- Chambers, C. 1992. Object-Oriented Multi-Methods in Cecil. ECOOP'92. Google ScholarDigital Library
- Chung, W. et al. 2005. The Concern Manipulation Environment. ICSE'05. Google ScholarDigital Library
- Chung, W. et al. 2005. Working with Implicit Concerns in the Concern Manipulation Environment. AOSD'05 Workshop on LATE.Google Scholar
- Elrad, T. et al. (eds.), 2001. Special section on aspect-oriented programming. CACM. 44, 10. Google ScholarDigital Library
- Faustini, A. A. and Jagannathan, R. 1993. Multidimensional Problem Solving in Lucid. SRI-CSL-93-03. SRI International.Google Scholar
- Gabriel, R. et al. 1991. CLOS: Integrating object-oriented and functional programming. CACM, 34, 9. Google ScholarDigital Library
- Harrison, W. et al. 2005. Supporting aspect-oriented software development with the Concern Manipulation Environment. IBM Systems Journal. 44, 2. Google ScholarDigital Library
- Heinlein, C. 2005. Global and Local Virtual Functions in C++. JOT. 4, 10.Google ScholarCross Ref
- Hirschfeld, R. et al. 2008. Context-oriented Programming. JOT. 7, 3.Google ScholarCross Ref
- Harrison, W. and Ossher, H. 1993. Subject-Oriented Programming: A Critique of Pure Objects. OOPSLA'93. Google ScholarDigital Library
- Hanson, D. R. and Proegsting, T. A. 2001. Dynamic Variables. PLDI'01. Google ScholarDigital Library
- Kiczales, G. et al. 1997. Aspect-Oriented Programming. ECOOP'97.Google Scholar
- Kiczales, G. et al. 2001. An Overview of AspectJ. ECOOP'01. Google ScholarDigital Library
- Löwis, M. et al. 2007. Context-Oriented Programming: Beyond Layers. ICDL'07. Google ScholarDigital Library
- Moon, D. 1986. Object-Oriented Programming with Flavors. OOPSLA'86. Google ScholarDigital Library
- Lewis, J. R. et al. Implicit Parameters: Dynamic Scoping with Static Types. POPL'00. Google ScholarDigital Library
- Ossher, H. et al. 1996. Specifying subject-oriented composition. TAPOS, 2, 3. Google ScholarDigital Library
- Ostermann, K. 2002. Dynamically Composable Collaborations with Delegation Layers. ECOOP'02. Google ScholarDigital Library
- Ossher, H. and Tarr, P. 2000. Hyper/J: multi-dimensional separation of concerns for Java. ICSE'00. Google ScholarDigital Library
- Pirkelbauer, P. et al. 2007. Open Multi-Methods for C++. GIPCE'07. Google ScholarDigital Library
- Plaice, J. and Paquet, J. 1996. Introduction to intensional programming. Intensional Programming I. World Scientific.Google Scholar
- Prehofer, C. 1997. Feature-oriented programming: A fresh look at objects. ECOOP'97.Google ScholarCross Ref
- Salzman, L. and Aldrich, J. 2005. Prototypes with multiple dispatch: An expressive and dynamic object model. ECOOP'05. Google ScholarDigital Library
- Schärli, N. et al. Traits: Composable Units of Behavior. CSE 02-012, Dept. of Computer Science and Engineering, Oregon Health & Science University.Google Scholar
- Stavrakas, Y. and Gergatsoulis, M. 2002. Multidimensional Semistructured Data: Representing Context-Dependent Information on the Web. CAISE'02. Google ScholarDigital Library
- Smith, R. B., Ungar, D. 1996. A Simple and Unifying Approach to Subjective Objects. TAPOS, 18, 4. Google ScholarDigital Library
- Tarr, P. et al. 1999. N degrees of separation: multi-dimensional separation of concerns. ICSE'99. Google ScholarDigital Library
- Ungar, D. and Adams, S. 2010. Harnessing Emergence for Manycore Programming: Early Experience Integrating Ensembles, Adverbs, and Object-based Inheritance. OOPSLA'10 Short Paper. Google ScholarDigital Library
- Ungar, D. and Smith, R. B. 1987. Self: The Power of Simplicity. OOPSLA'87. Google ScholarDigital Library
- Wan, K. et al. 2005. A Context Theory for Intensional Programming. CRR'05 Workshop on Context Representation and Reasoning.Google Scholar
- Wu, A. et al. 2009. Object-Oriented Intensional Programming: Intensional Classes Using Java and Lucid. Software Engineering Research & Applications'10. Google ScholarDigital Library
Index Terms
- Korz: Simple, Symmetric, Subjective, Context-Oriented Programming
Recommendations
Subjective, multidimensional modularity with korz
MODULARITY Companion 2015: Companion Proceedings of the 14th International Conference on ModularityKorz is a new computational model that provides for context-oriented programming by combining implicit arguments and multiple dispatch in a slot-based model. This synthesis enables the writing of software that supports contextual variation along ...
Routing Metrics for Minimizing End-to-End Delay in Multiradio Multichannel Wireless Networks
This paper studies how to select a path with the minimum expected end-to-end delay (EED) in a multiradio multichannel (MR-MC) wireless mesh network. While the existing studies mainly focus on the packet transmission delay due to medium access control (...
Categorising Context and Using Short Term Contextual Information to Obtain Long Term Context
TRUSTCOM '12: Proceedings of the 2012 IEEE 11th International Conference on Trust, Security and Privacy in Computing and CommunicationsContext Aware computing has been one of the most challenging and interesting developments from the past decade. But as it turns out, context is a poorly used source of information which, most of the times is utilized inefficiently in Ubiquitous ...
Comments