Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/1639950.1640056acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
short-paper

Traditional assignment considered harmful

Published: 25 October 2009 Publication History

Abstract

Data movement in nearly all modern imperative languages is based on a single primitive: traditional assignment. (With traditional assignment, data are moved between variables by copying.) Unfortunately, traditional assignment poses many known software engineering drawbacks with respect to efficiency for value types, and with respect to modular reasoning for reference types. Moreover, its entrenched legacy has stifled serious regard of potentially superior data-movement primitives. Exploration of the complete design space for data-movement primitives supports the following conclusions: (1) traditional assignment is fundamentally flawed, and (2) any other data-movement primitive would be better.

References

[1]
Yoonsik Cheon and Gary T. Leavens. A simple and practical approach to unit testing: The JML and JUnit way. In Proceedings of ECOOP 2002, volume 2374 of Lecture Notes in Computer Science, pages 231--255. Springer-Verlag, 2002.
[2]
S. A. Cook. Soundness and completeness of an axiom system for program verification. SIAM Journal on Computing, 7: 70--90, 1978.
[3]
James O. Coplien. phAdvanced C Programming Styles and Idioms. Addison-Welsey, New York, NY, 1992.
[4]
George W. Ernst and William F. Ogden. Specification of Abstract Data Types in Modula. ACM Trans. on Programming Languages and Systems (TOPLAS), 2 (4): 522--543, 1980.
[5]
George W. Ernst, Raymond J. Hookway, and William F. Ogden. Modular verification of data abstractions with shared realizations. IEEE Trans. on Software Engineering, 20 (4): 288--307, 1994.
[6]
Douglas E. Harms and Bruce W. Weide. Copying and swapping: influences on the design of reusable software components. IEEE Trans. on Software Engineering, 17 (5): 424--435, May 1991.
[7]
C.A.R. Hoare. Hints on programming-language design. In C.A.R. Hoare and C.B. Jones, editors, Essays in Computing Science. Prentice Hall, 1989.
[8]
C.A.R. Hoare. Null references: The billion dollar mistake. Presentation at QCon London, March 2009.
[9]
John Hogg. Islands: aliasing protection in object-oriented languages. In Proceedings of OOPSLA '91, pages 271--285. ACM Press, 1991.
[10]
John Hogg, Doug Lea, Alan Wills, Dennis deChampeaux, and Richard Holt. The Geneva convention on the treatment of object aliasing. ACM SIGPLAN OOPS Messenger, 3 (2): 11--16, 1992.
[11]
Joseph E. Hollingsworth, Lori Blankenship, and Bruce W. Weide. Experience report: using RESOLVE/C for commercial software. In Proceedings of the ACM SIGSOFT 8th International Symposium on the Foundations of Software Engineering (FSE-00), ACM Software Engineering Notes, pages 11--19, New York, NY, USA, November 2000. ACM Press.
[12]
J. J. Horning. A case study in language design: Euclid. In F. L. Bauer and M. Broy, editors, Program Construction, volume 69 of Lecture Notes in Computer Science, pages 113--132. Springer Verlag, 1978.
[13]
R. B. Kieburtz. Programming without pointer variables. ACM SIGPLAN Notices, 11 (3S): 95--107, March 1976.
[14]
Gregory Kulczycki and Jyotindra Vasudeo. Simplifying reasoning about objects with Tako. In Fifth International Workshop on Specification and Verification of Component-Based Systems, pages 57--64, New York, NY, USA, 2006. ACM.
[15]
Gary T. Leavens and William E. Weihl. Reasoning about object-oriented programs that use subtypes. In phProceedings of the Joint ECOOP/OOPSLA Conferences, pages 212--223. ACM Press, 1990.
[16]
K. Rustan M. Leino and Greg Nelson. Data abstraction and information hiding. ACM Trans. on Programming Languages and Systems (TOPLAS), 24 (5): 491--553, 2002.
[17]
Barbara H. Liskov and Jeannette M. Wing. A behavioral notion of subtyping. ACM Trans. on Programming Languages and Systems (TOPLAS), 16 (6): 1811--1841, 1994.
[18]
David C. Luckham and Norihisa Suzuki. Verification of Array, Record, and Pointer Operations in Pascal. ACM Trans. on Prog. Languages and Systems (TOPLAS), 1 (2): 226--244, 1979.
[19]
Naftaly H. Minsky. Towards alias-free pointers. In Proceedings of ECOOP '96, volume 1098 of Lecture Notes in Computer Science, pages 189--209. Springer-Verlag, 1996.
[20]
D. Musser, G. Derge, and A. Saini. STL Tutorial and Reference Guide, Second Edition. Addison-Wesley, Reading, 2001.
[21]
James Noble, Jan Vitek, Doug Lea, and Paulo Sergio Almeida. Aliasing in object oriented systems. In ECOOP '99 Workshops, volume 1743 of Lecture Notes in Computer Science, pages 136--163. Springer-Verlag, 1999.
[22]
Scott M. Pike, Wayne D. Heym, Bruce Adcock, Derek Bronish, Jason Kirschenbaum, and Bruce W. Weide. A systematic analysis of assignment primitives. Technical Report OSU-CISRC-8/09-TR39, Department of Computer Science, The Ohio State University, Columbus, OH, August 2009.
[23]
Murali Sitaraman and Bruce W. Weide. Component-based software using RESOLVE. ACM SIGSOFT Software Engineering Notes, 19 (4): 21--67, 1994.
[24]
B. Weide, S. Edwards, D. Harms, and D. Lamb. Design and specification of iterators using the swapping paradigm. IEEE Trans. on Software Engineering, 20 (8): 631--643, August 1994.
[25]
Bruce W. Weide and Wayne D. Heym. Specification and verification with references. In 2001 OOPSLA Workshop on Specification and Verification of Component-Based Systems. http://www.cs.iastate.edu/leavens/SAVCBS/papers-2001, 2001.
[26]
B.W. Weide, W.D. Heym, and J.E. Hollingsworth. Reverse engineering of legacy code exposed. In Proceedings of the 17th ICSE, pages 327--331. ACM Press, 1995.

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
OOPSLA '09: Proceedings of the 24th ACM SIGPLAN conference companion on Object oriented programming systems languages and applications
October 2009
502 pages
ISBN:9781605587684
DOI:10.1145/1639950
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 25 October 2009

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. aliasing
  2. assignment
  3. data movement
  4. parameter passing
  5. swapping

Qualifiers

  • Short-paper

Conference

OOPSLA09
Sponsor:

Upcoming Conference

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • 0
    Total Citations
  • 210
    Total Downloads
  • Downloads (Last 12 months)4
  • Downloads (Last 6 weeks)0
Reflects downloads up to 01 Sep 2024

Other Metrics

Citations

View Options

Get Access

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media