ABSTRACT
Development environments which aim to provide short feedback loops to developers must strike a balance between immediacy and the ability to abstract and reuse behavioral modules. The Lively Kernel, a self-supporting, browser-based environment for explorative development supports standard object-oriented programming with classes or prototypes, but also a more immediate, object-centric approach for modifying and programming visible objects directly. This allows users to quickly create graphical prototypes with concrete objects. However, when developing with the object-centric approach, sharing behavior between similar objects becomes cumbersome. Developers must choose to either abstract behavior into classes, scatter code across collaborating objects, or to manually copy code between multiple objects. That is, they must choose between less concrete development, reduced maintainability, or code duplication. In this paper, we propose Lively Groups, an extension to the object-centric development tools of Lively to work on multiple concrete objects. In our approach, developers may dynamically group live objects that share behavior using tags. They can then modify and program such groups as if they were single objects. Our approach scales the Lively Kernel’s explorative development approach from one to many objects, while preserving the maintainability of abstractions and the immediacy of concrete objects.
Supplemental Material
- L. Cardelli. A semantics of multiple inheritance. Semantics of data types, pages 51–67, 1984. Google ScholarDigital Library
- S. Chiba, M. Horie, K. Kanazawa, F. Takeyama, and Y. Teramoto. Do We Really Need to Extend Syntax for Advanced Modularity? In Proceedings of the 11th Annual International Conference on Aspect-oriented Software Development, AOSD ’12, pages 95–106. ACM, March 2012. Google ScholarDigital Library
- G. Curry, L. Baer, D. Lipkie, and B. Lee. Traits: An Approach to Multiple-inheritance Subclassing. In Proceedings of the SIGOA Conference on O ffice Information Systems, pages 1–9. ACM, June 1982. Google ScholarDigital Library
- T. R. Green, A. Borning, T. O’Shea, M. Minoughan, and R. Smith. The stripetalk papers: Understandability as a language design issue in object-oriented programming systems. Prototype-based Programming: Concepts, Languages and Applications, 1998.Google Scholar
- R. Hirschfeld, P. Costanza, and O. Nierstrasz. Context-oriented programming. Journal of Object Technology, 7(3):125–151, 2008.Google ScholarCross Ref
- D. Ingalls. The Lively Kernel: Just for Fun, Let’s Take JavaScript Seriously. In Proceedings of the 2008 Symposium on Dynamic Languages, DLS ’08, pages 9:1–9:1. ACM, July 2008. Google ScholarDigital Library
- D. Ingalls, T. Kaehler, J. Maloney, S. Wallace, and A. Kay. Back to the Future: The Story of Squeak, a Practical Smalltalk Written in Itself. In Proceedings of the 12th ACM SIGPLAN Conference on Object-oriented Programming Systems, Languages and Applications, OOPSLA ’97, pages 318–326. ACM, October 1997. Google ScholarDigital Library
- D. Ingalls, K. Palacz, S. Uhler, A. Taivalsaari, and T. Mikkonen. The Lively Kernel–A Self-supporting System on a Web Page. In R. Hirschfeld and K. Rose, editors, Self-Sustaining Systems, pages 31–50. Springer, May 2008. Google ScholarDigital Library
- A. Kay. Squeak Etoys, Children & Learning. Technical report, Viewpoints Research Institute, Jan. 2005.Google Scholar
- G. Kiczales, J. Lamping, A. Mendhekar, C. Maeda, C. V. Lopes, J.-M. Loingtier, and J. Irwin. Aspect-Oriented Programming. In Proceedings of the European Conference on Object-Oriented Programming, ECOOP ’97, page 220–242. ACM, December 1997.Google Scholar
- B. Lague, D. Proulx, J. Mayrand, E. Merlo, and J. Hudepohl. Assessing the benefits of incorporating function clone detection in a development process. In Software Maintenance, 1997. Proceedings., International Conference on, pages 314–321. IEEE, 1997. Google ScholarDigital Library
- J. Lincke and R. Hirschfeld. Scoping Changes in Self-supporting Development Environments Using Contextoriented Programming. In Proceedings of the International Workshop on Context-Oriented Programming, COP ’12, pages 2:1–2:6. ACM, June 2012. Google ScholarDigital Library
- J. Lincke, M. Appeltauer, B. Steinert, and R. Hirschfeld. An Open Implementation for Context-oriented Layer Composition in ContextJS. Science of Computer Programming, 76(12): 1194–1209, December 2011. Google ScholarDigital Library
- J. Lincke, R. Krahn, D. Ingalls, M. Roder, and R. Hirschfeld. The Lively PartsBin–A Cloud-Based Repository for Collaborative Development of Active Web Content. In Proceedings of the 2012 45th Hawaii International Conference on System Sciences, HICSS ’12, pages 693–701. IEEE, January 2012. Google ScholarDigital Library
- J. H. Maloney and R. B. Smith. Directness and Liveness in the Morphic User Interface Construction Environment. In Proceedings of the 8th Annual ACM Symposium on User Interface and Software Technology, UIST ’95, pages 21–28. ACM, December 1995. Google ScholarDigital Library
- B. Meyer. Object-oriented Software Construction. Prentice-Hall, second edition, 1997. Google ScholarDigital Library
- J. Micallef. Encapsulation, reusability and extensibility in object-oriented programming languages. Journal of Object-Oriented Programming, 1(1):12–36, 1988.Google Scholar
- G. L. Steele Jr. An overview of common lisp. In Proceedings of the 1982 ACM symposium on LISP and functional programming, pages 98–107. ACM, 1982. Google ScholarDigital Library
- P. Tarr, H. Ossher, W. Harrison, and S. M. Sutton Jr. N degrees of separation: multi-dimensional separation of concerns. In Proceedings of the 21st international conference on Software engineering, pages 107–119. ACM, 1999. Google ScholarDigital Library
- D. Ungar and R. B. Smith. Self: The Power of Simplicity. In Conference Proceedings on Object-oriented Programming Systems, Languages and Applications, OOPSLA ’87, pages 227–242. ACM, December 1987. Google ScholarDigital Library
- D. Ungar and R. B. Smith. Self. In Proceedings of the third ACM SIGPLAN Conference on History of Programming Languages, HOPL III, pages 9–1–9–50. ACM, June 2007. Google ScholarDigital Library
- D. Ungar, C. Chambers, B.-W. Chang, and U. Hölzle. Organizing Programs Without Classes. Lisp Symbolic Computing, 4(3):223–242, July 1991. Google ScholarDigital Library
Index Terms
- Lively groups: shared behavior in a world of objects without classes or prototypes
Recommendations
A world of active objects for work and play: the first ten years of lively
Onward! 2016: Proceedings of the 2016 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming and SoftwareThe Lively Kernel and the Lively Web represent a continuing effort to realize a creative computing environment in the context of the World Wide Web. We refer to that evolving system simply as "Lively". Lively is a live object computing environment ...
Using prototypical objects to implement shared behavior in object-oriented systems
OOPSLA '86: Conference proceedings on Object-oriented programming systems, languages and applicationsA traditional philosophical controversy between representing general concepts as abstract sets or classes and representing concepts as concrete prototypes is reflected in a controversy between two mechanisms for sharing behavior between objects in ...
Comments