Smalltalk-80: the language and its implementation
Smalltalk-80: the language and its implementation
Emerald: a general-purpose programming language
Software—Practice & Experience
The early history of Smalltalk
HOPL-II The second ACM SIGPLAN conference on History of programming languages
A syntactic approach to type soundness
Information and Computation
Information and Computation
Using types to analyze and optimize object-oriented programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Types and programming languages
Types and programming languages
A Theory of Objects
Programming as an Experience: The Inspiration for Self
ECOOP '95 Proceedings of the 9th European Conference on Object-Oriented Programming
Is Structural Subtyping Useful? An Empirical Study
ESOP '09 Proceedings of the 18th European Symposium on Programming Languages and Systems: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
On understanding data abstraction, revisited
Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications
Modules as objects in newspeak
ECOOP'10 Proceedings of the 24th European conference on Object-oriented programming
Refactoring using type constraints
ACM Transactions on Programming Languages and Systems (TOPLAS)
An empirical study of the influence of static type systems on the usability of undocumented software
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Practical Foundations for Programming Languages
Practical Foundations for Programming Languages
Hi-index | 0.00 |
The simplest and purest practical object-oriented language designs today are seen in dynamically-typed languages, such as Smalltalk and Self. Static types, however, have potential benefits for productivity, security, and reasoning about programs. In this paper, we describe the design of Wyvern, a statically typed, pure object-oriented language that attempts to retain much of the simplicity and expressiveness of these iconic designs. Our goals lead us to combine pure object-oriented and functional abstractions in a simple, typed setting. We present a foundational object-based language that we believe to be as close as one can get to simple typed lambda calculus while keeping object-orientation. We show how this foundational language can be translated to the typed lambda calculus via standard encodings. We then define a simple extension to this language that introduces classes and show that classes are no more than sugar for the foundational object-based language. Our future intention is to demonstrate that modules and other object-oriented features can be added to our language as not more than such syntactical extensions while keeping the object-oriented core as pure as possible. The design of Wyvern closely follows both historical and modern ideas about the essence of object-orientation, suggesting a new way to think about a minimal, practical, typed core language for objects.