Copying and Swapping: Influences on the Design of Reusable Software Components
IEEE Transactions on Software Engineering
Islands: aliasing protection in object-oriented languages
OOPSLA '91 Conference proceedings on Object-oriented programming systems, languages, and applications
The Geneva convention on the treatment of object aliasing
ACM SIGPLAN OOPS Messenger
Component-based software using RESOLVE
ACM SIGSOFT Software Engineering Notes
Computer program verification: improvements for human reasoning
Computer program verification: improvements for human reasoning
“…And nothing else changes”: the frame problem in procedure specifications
ICSE '93 Proceedings of the 15th international conference on Software Engineering
Object-oriented software construction (2nd ed.)
Object-oriented software construction (2nd ed.)
Ownership types for flexible alias protection
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Data groups: specifying the modification of extended state
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Modular specification and verification techniques for object-oriented software components
Foundations of component-based systems
Experience report: using RESOLVE/C++ for commercial software
SIGSOFT '00/FSE-8 Proceedings of the 8th ACM SIGSOFT international symposium on Foundations of software engineering: twenty-first century applications
Assignment and Procedure Call Proof Rules
ACM Transactions on Programming Languages and Systems (TOPLAS)
Introduction to Algorithms
Alias annotations for program understanding
OOPSLA '02 Proceedings of the 17th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Reasoning about Software-Component Behavior
ICSR-6 Proceedings of the 6th International Conerence on Software Reuse: Advances in Software Reusability
ECCOP '98 Proceedings of the 12th European Conference on Object-Oriented Programming
A Logic of Object-Oriented Programs
TAPSOFT '97 Proceedings of the 7th International Joint Conference CAAP/FASE on Theory and Practice of Software Development
ECCOP '96 Proceedings of the 10th European Conference on Object-Oriented Programming
Programming without pointer variables
Proceedings of the 1976 conference on Data : Abstraction, definition and structure
Proceedings of an ACM conference on Language design for reliable software
The role of verification in software reusability
The role of verification in software reusability
Model variables: cleanly supporting abstraction in design by contract: Research Articles
Software—Practice & Experience
SEFM '05 Proceedings of the Third IEEE International Conference on Software Engineering and Formal Methods
A specification-based approach to reasoning about pointers
SAVCBS '05 Proceedings of the 2005 conference on Specification and verification of component-based systems
Non-null references by default in the Java modeling language
SAVCBS '05 Proceedings of the 2005 conference on Specification and verification of component-based systems
Traditional assignment considered harmful
Proceedings of the 24th ACM SIGPLAN conference companion on Object oriented programming systems languages and applications
Hi-index | 0.00 |
A fundamental complexity in understanding and reasoning about object-oriented languages is the need for programmers to view variables as references to objects rather than directly as objects. The need arises because a simplified view of variables as (mutable) objects is not sound in the presence of aliasing. Tako is an object-oriented language that is syntactically similar to Java but incorporates alias-avoidance techniques. This paper describes the features of the Tako language and shows how it allows programmers to view all variables directly as objects without compromising sound reasoning. It discusses the benefits of such a language, including its use as an instructional tool to help teach students how to reason formally about their code.