[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
10.1109/ESEM.2017.45acmconferencesArticle/Chapter ViewAbstractPublication PagesesemConference Proceedingsconference-collections
research-article

Quantifying the transition from python 2 to 3: an empirical study of python applications

Published: 09 November 2017 Publication History

Abstract

Background: Python is one of the most popular modern programming languages. In 2008 its authors introduced a new version of the language, Python 3.0, that was not backward compatible with Python 2, initiating a transitional phase for Python software developers. Aims: The study described in this paper investigates the degree to which Python software developers are making the transition from Python 2 to Python 3. Method: We have developed a Python compliance analyser, PyComply, and have assembled a large corpus of Python applications. We use PyComply to measure and quantify the degree to which Python 3 features are being used, as well as the rate and context of their adoption. Results: In fact, Python software developers are not exploiting the new features and advantages of Python 3, but rather are choosing to retain backward compatibility with Python 2. Conclusions: Python developers are confining themselves to a language subset, governed by the diminishing intersection of Python 2, which is not under development, and Python 3, which is under development with new features being introduced as the language continues to evolve.

References

[1]
R.-G. Urma, D. Orchard, and A. Mycroft, "Programming language evolution workshop report," in Workshop on Programming Language Evolution, 2014, pp. 1--3.
[2]
R. Lammel and V. Zaytsev, "An Introduction to Grammar Convergence," in Integrated Formal Methods, ser. LNCS, vol. 5423, 2009, pp. 246--260.
[3]
V. Zaytsev, "Negotiated Grammar Evolution," The Journal of Object Technology, vol. 13, no. 3, pp. 1:1--22, July 2014.
[4]
B. A. Malloy and J. F. Power, "Extending automated grammar convergence to the generation and verification of multiple parser versions," {under review}.
[5]
B. Wang, L. Chen, W. Ma, Z. Chen, and B. Xu, "An empirical study on the impact of Python dynamic features on change-proneness," in International Conference on Software Engineering and Knowledge Engineering, July 2015, pp. 134--139.
[6]
Z. Chen, L. Chen, W. Ma, and B. Xu, "Detecting code smells in Python programs," in International Conference on Software Analysis, Testing and Evolution, Nov. 2016, pp. 18--23.
[7]
W. Lin, Z. Chen, W. Ma, L. Chen, L. Xu, and B. Xu, "An empirical study on the characteristics of Python fine-grained source code change types," in International Conference on Software Maintenance and Evolution, Nov. 2016, pp. 188--199.
[8]
G. Destefanis, M. Ortu, S. Porru, S. Swift, and M. Marchesi, "A statistical comparison of Java and Python software metric properties," in International Workshop on Emerging Trends in Software Metrics, 2016, pp. 22--28.
[9]
R. Toal, R. Rivera, A. Schneider, and E. Choe, Programming Language Explorations. CRC Press, 2016.
[10]
G. Lindstrom, "Programming with Python," IT Professional, vol. 7, pp. 10--16, 2005.
[11]
S. Gee, "Python 2.7 to be maintained until 2020," 2014, {accessed 03-April-2017}. {Online}. Available: http://www.i-programmer.info/news/216-python/7179-python-27-to-be-maintained-until-2020.html
[12]
N. Coghlan, "Python 3 Q&A," 2012, {accessed 03-April-2017}. {Online}. Available: http://python-notes.curiousefficiency.org/en/latest/python3/questions_and_answers.html#other-changes
[13]
B. Cannon, "Porting Python 2 code to Python 3," {accessed 04-April-2017}. {Online}. Available: https://docs.python.org/3/howto/pyporting.html
[14]
R.-G. Urma, "Programming language evolution," Univ. of Cambridge, Computer Laboratory, Tech. Rep. UCAM-CL-TR-902, Feb. 2017.
[15]
M. Sipser, Introduction to the Theory of Computation. Cengage Learning, 2012.
[16]
B. A. Malloy, S. A. Linde, E. B. Duffy, and J. F. Power, "Testing C++ compilers for ISO language conformance," Dr. Dobbs Journal, pp. 71--80, June 2002.
[17]
B. A. Malloy, T. H. Gibbs, and J. F. Power, "Progression toward conformance for C++ language compilers," Dr. Dobbs Journal, pp. 54--60, November 2003.
[18]
K. Memarian, J. Matthiesen, J. Lingard, K. Nienhuis, D. Chisnall, R. N. M. Watson, and P. Sewell, "Into the depths of C: elaborating the de facto standards," in Programming Language Design and Implementation, 2016, pp. 1--15.
[19]
M. Orrù, E. D. Tempero, M. Marchesi, and R. Tonelli, "How do Python programs use inheritance? A replication study," in Asia-Pacific Software Engineering Conference, Dec. 2015, pp. 309--315.
[20]
M. Orrù, E. Tempero, M. Marchesi, R. Tonelli, and G. Destefanis, "A curated benchmark collection of Python systems for empirical studies on software engineering," in International Conference on Predictive Models and Data Analytics in Software Engineering, 2015, pp. 2:1--2:4.
[21]
A. Hora, R. Robbes, N. Anquetil, A. Etien, S. Ducasse, and M. T. Valente, "How do developers react to API evolution? the Pharo ecosystem case," in International Conference on Software Maintenance and Evolution, 2015, pp. 251--260.
[22]
W. Ma, L. Chen, X. Zhang, Y. Zhou, and B. Xu, "How do developers fix cross-project correlated bugs?" in International Conference on Software Engineering, 2017.
[23]
E. Tempero, C. Anslow, J. Dietrich, T. Han, J. Li, M. Lumpe, H. Melton, and J. Noble, "Qualitas corpus: A curated collection of Java code for empirical studies," in Asia Pacific Software Engineering Conference, Dec. 2010, pp. 336--345.
[24]
C. Parnin, C. Bird, and E. Murphy-Hill, "Java generics adoption: How new features are introduced, championed, or ignored," in Working Conference on Mining Software Repositories, 2011, pp. 3--12.
[25]
R. Lämmel, "Grammar adaptation," in Formal Methods Europe, ser. LNCS, vol. 2021, 2001, pp. 550--570.
[26]
P. Klint, R. Lämmel, and C. Verhoef, "Toward an engineering discipline for grammarware," ACM Trans. Softw. Eng. Methodol., vol. 14, no. 3, pp. 331--380, 2005.

Cited By

View all
  • (2021)Understanding Software-2.0ACM Transactions on Software Engineering and Methodology10.1145/345347830:4(1-42)Online publication date: 23-Jul-2021
  • (2020)On the adoption, usage and evolution of Kotlin features in Android developmentProceedings of the 14th ACM / IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM)10.1145/3382494.3410676(1-12)Online publication date: 5-Oct-2020
  • (2019)An empirical analysis of the transition from Python 2 to Python 3Empirical Software Engineering10.1007/s10664-018-9637-224:2(751-778)Online publication date: 1-Apr-2019
  1. Quantifying the transition from python 2 to 3: an empirical study of python applications

    Recommendations

    Comments

    Please enable JavaScript to view thecomments powered by Disqus.

    Information & Contributors

    Information

    Published In

    cover image ACM Conferences
    ESEM '17: Proceedings of the 11th ACM/IEEE International Symposium on Empirical Software Engineering and Measurement
    November 2017
    481 pages
    ISBN:9781509040391

    Sponsors

    Publisher

    IEEE Press

    Publication History

    Published: 09 November 2017

    Check for updates

    Qualifiers

    • Research-article

    Conference

    ESEM '17
    Sponsor:

    Acceptance Rates

    Overall Acceptance Rate 130 of 594 submissions, 22%

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)2
    • Downloads (Last 6 weeks)0
    Reflects downloads up to 21 Dec 2024

    Other Metrics

    Citations

    Cited By

    View all
    • (2021)Understanding Software-2.0ACM Transactions on Software Engineering and Methodology10.1145/345347830:4(1-42)Online publication date: 23-Jul-2021
    • (2020)On the adoption, usage and evolution of Kotlin features in Android developmentProceedings of the 14th ACM / IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM)10.1145/3382494.3410676(1-12)Online publication date: 5-Oct-2020
    • (2019)An empirical analysis of the transition from Python 2 to Python 3Empirical Software Engineering10.1007/s10664-018-9637-224:2(751-778)Online publication date: 1-Apr-2019

    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