Abstract
We describe an experimental object-oriented programming language, ASL2, that supports program development by means of a series of abstraction steps. The language allows immediate object construction, and it is possible to use the constructed objects for concrete problem solving tasks. Classes and class hierarchies can be derived from the objects - via gradual abstraction steps. We introduce two levels of object classification, called weak and strong object classification. Strong object classification relies on conventional classes, whereas weak object classification is looser, and less restrictive. As a central mechanism, weakly classified objects are allowed to borrow methods from each other. ASL2 supports class generalization, as a counterpart to class specialization and inheritance in mainstream object-oriented programming languages. The final abstraction step discussed in this paper is a syntactical abstraction step that derives a source file with a syntactical class form.
- Actionscript home page, 2012. http://www.actionscript.org/.Google Scholar
- Ecmascript language specification, 2012. http://www.ecma-international.org/publications/standards/Ecma-262.htm.Google Scholar
- What is Impromptu?, 2012. http://impromptu.moso.com.au/.Google Scholar
- Javascript home page, 2012. https://developer.mozilla.org/en/About_JavaScript.Google Scholar
- Metaocaml home page, 2012. http://www.metaocaml.org/.Google Scholar
- Visual studio developer center, visual F#, 2012. http://msdn.microsoft.com/en-us/vstudio/hh388569.aspx.Google Scholar
- H. Abelson, G. J. Sussman, and J. Sussman. Structure and Interpretation of Computer Programs. The MIT Press, 1985. Google Scholar
Digital Library
- E. Allen, D. Chase, C. Flood, V. Luchangco, J.-W. Maessen, S. Ryu, and G. L. Steele. Project Fortress. Linux Magazine, September 2007.Google Scholar
- ing(2002)}BlueJbookD. J. Barnes and M. Kölling. Objects First with Java: A Practical Introduction Using BlueJ. Prentice Hall, October 2002.Google Scholar
Digital Library
- J. Bennedsen and C. Schulte. What does 'objects-first' mean? an international study of teachers' perceptions of objects-first. In R. Lister and Simon, editors, phSeventh Baltic Sea Conference on Computing Education Research (Koli Calling 2007), volume 88 of CRPIT, pages 21--29, Koli National Park, Finland, 2007. ACS. Google Scholar
Digital Library
- G. Bierman, E. Meijer, and M. Torgersen. Adding dynamic types to c. In Proceedings of the 24th European conference on Object-oriented programming, ECOOP'10, pages 76--100, Berlin, Heidelberg, 2010. Springer-Verlag. Google Scholar
Digital Library
- A. P. Black, K. B. Bruce, and J. Noble. Panel: designing the next educational programming language. In SPLASH/OOPSLA Companion, pages 201--204, 2010. Google Scholar
Digital Library
- G. Bracha. Pluggable type systems. In OOPSLA'04 Workshop on Revival of Dynamic Languages, 2004.Google Scholar
- G. Bracha and D. Ungar. Mirrors: design principles for meta-level facilities of object-oriented programming languages. In Proceedings of OOPSLA 2004, pages 331--344. ACM Press, October 2004. Google Scholar
Digital Library
- S. Cooper, W. Dann, and R. Pausch. Teaching objects-first in introductory computer science. SIGCSE Bulletin, 35 (1): 191--195, Jan. 2003. Google Scholar
Digital Library
- E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns: Elements of Reusable Object-oriented Software. Addison Wesley, Reading, 1996. ISBN 0--201--63361--2. Google Scholar
Digital Library
- A. Goldberg and D. Robson. Smalltalk-80 The Language and its Implementation. Addison-Wesley Publishing Company, 1983. Google Scholar
Digital Library
- I. Hadar and U. Leron. How intuitive is object-oriented design? Commun. ACM, 51 (5): 41--46, 2008. Google Scholar
Digital Library
- S. Hanenberg. An experiment about static and dynamic type systems: doubts about the positive impact of static type systems on development time. In Proceedings of the ACM international conference on Object oriented programming systems languages and applications, OOPSLA '10, pages 22--35, New York, NY, USA, 2010. ACM. Google Scholar
Digital Library
- K. Knowles, A. Tomb, J. Gronski, S. N. Freund, and C. Flanagan. Sage: Unified hybrid checking for first-class types, general refinement types, and dynamic (extended report.), 2007. http://sage.soe.ucsc.edu/sage-tr.pdf.Google Scholar
- W. R. LaLonde, D. A. Thomas, and J. R. Pugh. An exemplar based Smalltalk. In Conference proceedings on Object-oriented programming systems, languages and applications, OOPLSA '86, pages 322--330, New York, NY, USA, 1986. ACM. Google Scholar
Digital Library
- H. Lieberman. Using prototypical objects to implement shared behavior in object oriented systems. In The proceedings of OOPSLA'86, pages 214--223, 1986. Google Scholar
Digital Library
- Microsoft Corporation. The C# language specification version 4.0, 2010. http://www.microsoft.com/downloads/.Google Scholar
- K. Nørmark, L. Leth-Thomsen, and K. Torp. Reflections on the teaching of programming, chapter Mini Project Programming Exams, pages 229--243. Springer Verlag, LNCS 4821, 2008.Google Scholar
- K. Nørmark, B. Thomsen, and L. Leth-Thomsen. Mapping and visiting in functional and object-oriented programming. Journal of Object Technology, 7 (7), September-October 2008.Google Scholar
Cross Ref
- K. Nørmark, B. Thomsen, and L. L. Thomsen. The ASL2 home page, 2012.knurlasl2/.Google Scholar
- M. Odersky, L. Spoon, and B. Venners. Programming in Scala, Second Edition. Artima Incorporation, USA, 2010.Google Scholar
- J. G. Siek and W. Taha. Gradual typing for functional languages. In Scheme and Functional Programming Workshop, September 2006.Google Scholar
- J. G. Siek and W. Taha. Gradual typing for objects. In ECOOP'07: 21st European Conference on Object-Oriented Programming, 2007. Google Scholar
Digital Library
- S. Slade. The T programming language - A dialect of Lisp. Prentice-Hall, 1987. Google Scholar
Digital Library
- G. L. Steele. Common Lisp, the language, 2nd Edition. Digital Press, 1990. Google Scholar
Digital Library
- A. Stuchlik and S. Hanenberg. Static vs. dynamic type systems: an empirical study about the relationship between type casts and development time. In Proceedings of the 7th symposium on Dynamic languages, DLS '11, pages 97--106, New York, NY, USA, 2011. ACM. Google Scholar
Digital Library
- W. Taha. A gentle introduction to multi-stage programming. In C. Lengauer, D. Batory, C. Consel, and M. Odersky, editors, Domain-Specific Program Generation, volume 3016 of phLecture Notes in Computer Science, pages 30--50. Springer Berlin / Heidelberg, 2004.Google Scholar
- B. Thomsen. phReflections on the teaching of programming, chapter Using On-Line Tutorials in Introductory IT Courses, pages 68--74. Springer Verlag, LNCS 4821, 2008. Google Scholar
Digital Library
- ark}Thomsen09aL. L. Thomsen, B. Thomsen, and K. Nørmark. Computational abstraction steps. phJournal of Object Technology, 9 (6): 1--23, November 2010.Google Scholar
Cross Ref
- S. Tobin-Hochstadt and M. Felleisen. Interlanguage migration: from scripts to programs. In phCompanion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications, OOPSLA '06, pages 964--974, New York, NY, USA, 2006. ACM. Google Scholar
Digital Library
- D. Ungar and R. B. Smith. SELF: The power of simplicity. Lisp and Symbolic Computation: An International Journal, 4 (3): 187 -- 205, 1991. Google Scholar
Digital Library
- D. Ungar, C. Chambers, B. wei Chang, and U. Hölzle. Organizing programs without classes. In Lisp and Symbolic Computation, pages 223--242. Kluwer Academic Publishers, 1991. Google Scholar
Digital Library
- T. Wrigstad. StOP - internal workshop series on scripts to programs. http://wrigstad.com/stop/. http://wrigstad.com/stop/.Google Scholar
Index Terms
Object-oriented programming with gradual abstraction
Recommendations
Object-oriented programming with gradual abstraction
DLS '12: Proceedings of the 8th symposium on Dynamic languagesWe describe an experimental object-oriented programming language, ASL2, that supports program development by means of a series of abstraction steps. The language allows immediate object construction, and it is possible to use the constructed objects for ...
What Is Object-Oriented Programming?
The meaning of the term 'object oriented' is examined in the context of the general-purpose programming language C++. This choice is made partly to introduce C++ and partly because C++ is one of the few languages that supports data abstraction, object-...









Comments