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

Regrowing a language: refactoring tools allow programming languages to evolve

Published: 25 October 2009 Publication History

Abstract

Successful programming languages change as they age. They tend to become more complex, and eventually some features become outdated or are rarely used. Programming tools for these languages become more complex as well, since they have to support archaic features. Old programs are hard to maintain, since these archaic features are unfamiliar to modern programmers. These problems can be solved by refactoring tools that can transform programs to use the modern form. We show that refactoring tools can ease the cost of program evolution by examining the evolution of two languages, Fortran and Java, and showing that each change corresponds to an automatable refactoring.

References

[1]
J. Backus, R. Beeber, S. Best, R. Goldberg, H. Herrick, R. Hughes, L. Mitchell, R. Nelson, R. Nutt, D. Sayre, P. Sheridan, H. Stern, and I. Ziller. Fortran Automatic Coding System for the IBM 704: Programmer's Reference Manual. International Business Machines Corporation, New York, NY, 1956.
[2]
E. Chikofsky and J. Cross II. Reverse engineering and design recovery: A taxonomy. IEEE Software, 7(1):13--17, 1990.
[3]
B. Daniel, D. Dig, K. Garcia, and D. Marinov. Automated testing of refactoring engines. In Proc. ESEC-FSE '07, pages 185--194, New York, NY, 2007. ACM.
[4]
D. Dig and R. Johnson. How do APIs evolve? A story of refactoring. J. Software Maintenance and Evolution: Research and Practice, 18(2):83--107, 2006.
[5]
D. Dig, J. Marrero, and M. Ernst. Refactoring sequential code for concurrency via concurrent libraries. In Proc. ICSE '09, Washington, DC, USA, 2009. IEEE Computer Society.
[6]
J. Favre. Languages evolve too! Changing the software time scale. In Proc. IWPSE '05, pages 33--44, Washington, DC, USA, 2005. IEEE Computer Society.
[7]
M. Fowler. Refactoring: Improving the design of existing code. Addison-Wesley, Boston, MA, 1999.
[8]
M. Fowler. MF Bliki: RefactoringMalapropism. http://martinfowler.com/bliki/RefactoringMalapropism.html, January 2004.
[9]
A. Garrido. Program Refactoring in the Presence of Preprocessor Directives. PhD thesis, University of Illinois at Urbana-Champaign, Champaign, IL, 2005.
[10]
A. Garrido and R. Johnson. Refactoring C with conditional compilation. In Proc. ASE '03.
[11]
J. Gosling, B. Joy, G. Steele, and G. Bracha. The Java Language Specification. Addison-Wesley, Boston, MA, third edition, 2005.
[12]
IBEAM. IBEAM. http://www.ibeam.org.
[13]
Fortran 2003. ISO/IEC 1539-1:2004: International standard: information technology, programming languages, Fortran. International Organization for Standardization and International Electrotechnical Commission, Geneva, Switzerland, fourth edition, 2004.
[14]
D. Woolley. Plato: The emergence of online community. http://thinkofit.com/plato/dwplato.htm.

Cited By

View all
  • (2024)Mining Discussions on Software Migration: A study of the Boost mailing list regarding C++ code evolutionProceedings of the XXIII Brazilian Symposium on Software Quality10.1145/3701625.3701665(264-274)Online publication date: 5-Nov-2024
  • (2024)Towards a Theory for Source Code RejuvenationCompanion Proceedings of the 32nd ACM International Conference on the Foundations of Software Engineering10.1145/3663529.3664464(701-703)Online publication date: 10-Jul-2024
  • (2023)Understanding the Motivations, Challenges, and Practices of Software Rejuvenation2023 IEEE International Conference on Software Maintenance and Evolution (ICSME)10.1109/ICSME58846.2023.00082(611-616)Online publication date: 1-Oct-2023
  • Show More Cited By

Index Terms

  1. Regrowing a language: refactoring tools allow programming languages to evolve

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM Conferences
    OOPSLA '09: Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications
    October 2009
    590 pages
    ISBN:9781605587660
    DOI:10.1145/1640089
    • cover image ACM SIGPLAN Notices
      ACM SIGPLAN Notices  Volume 44, Issue 10
      OOPSLA '09
      October 2009
      554 pages
      ISSN:0362-1340
      EISSN:1558-1160
      DOI:10.1145/1639949
      Issue’s Table of Contents
    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. fortran
    2. java
    3. language design
    4. language evolution
    5. refactoring
    6. restructuring

    Qualifiers

    • Research-article

    Conference

    OOPSLA09
    Sponsor:

    Acceptance Rates

    OOPSLA '09 Paper Acceptance Rate 25 of 144 submissions, 17%;
    Overall Acceptance Rate 268 of 1,244 submissions, 22%

    Upcoming Conference

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)10
    • Downloads (Last 6 weeks)1
    Reflects downloads up to 16 Jan 2025

    Other Metrics

    Citations

    Cited By

    View all
    • (2024)Mining Discussions on Software Migration: A study of the Boost mailing list regarding C++ code evolutionProceedings of the XXIII Brazilian Symposium on Software Quality10.1145/3701625.3701665(264-274)Online publication date: 5-Nov-2024
    • (2024)Towards a Theory for Source Code RejuvenationCompanion Proceedings of the 32nd ACM International Conference on the Foundations of Software Engineering10.1145/3663529.3664464(701-703)Online publication date: 10-Jul-2024
    • (2023)Understanding the Motivations, Challenges, and Practices of Software Rejuvenation2023 IEEE International Conference on Software Maintenance and Evolution (ICSME)10.1109/ICSME58846.2023.00082(611-616)Online publication date: 1-Oct-2023
    • (2023)Embracing modern C++ features: An empirical assessment on the KDE communityJournal of Software: Evolution and Process10.1002/smr.2605Online publication date: 2-Aug-2023
    • (2022)An Automated Tool for Upgrading Fortran CodesSoftware10.3390/software10300141:3(299-315)Online publication date: 13-Aug-2022
    • (2018)Reconciling the past and the present: An empirical study on the application of source code transformations to automatically rejuvenate Java programs2018 IEEE 25th International Conference on Software Analysis, Evolution and Reengineering (SANER)10.1109/SANER.2018.8330247(497-501)Online publication date: Mar-2018
    • (2013)Refactoring MATLABProceedings of the 22nd international conference on Compiler Construction10.1007/978-3-642-37051-9_12(224-243)Online publication date: 16-Mar-2013
    • (2020)An Exploratory Study Towards Understanding Lambda Expressions in PythonProceedings of the 24th International Conference on Evaluation and Assessment in Software Engineering10.1145/3383219.3383255(318-323)Online publication date: 15-Apr-2020
    • (2019)On the use of lambda expressions in 760 open source Python projectsProceedings of the 2019 27th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3338906.3342499(1232-1234)Online publication date: 12-Aug-2019
    • (2019)Combining Data Mining Techniques for Evolutionary Analysis of Programming Languages2019 IEEE 20th International Conference on Information Reuse and Integration for Data Science (IRI)10.1109/IRI.2019.00015(1-8)Online publication date: 30-Jul-2019
    • Show More Cited By

    View Options

    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