Here We Go Again: Why Is It Difficult for Developers to Learn Another Programming Language?
Abstrak
Once a programmer knows one language, they can leverage concepts and knowledge already learned, and easily pick up another programming language. But is that always the case? To understand if programmers have difficulty learning additional programming languages, we conducted an empirical study of Stack Overflow questions across 18 different programming languages. We hypothesized that previous knowledge could potentially interfere with learning a new programming language. From our inspection of 450 Stack Overflow questions, we found 276 instances of interference that occurred due to faulty assumptions originating from knowledge about a different language. To understand why these difficulties occurred, we conducted semi-structured interviews with 16 professional programmers. The interviews revealed that programmers make failed attempts to relate a new programming language with what they already know. Our findings inform design implications for technical authors, toolsmiths, and language designers, such as designing documentation and automated tools that reduce interference, anticipating uncommon language transitions during language design, and welcoming programmers not just into a language, but its entire ecosystem.
Artikel Ilmiah Terkait
Weile Lian Shaowei Wang Haoran Yang + 1 lainnya
1 Mei 2023
Developing a software project using multiple languages together has been a dominant practice for years. Yet it remains unclear what issues developers encounter during the development, which challenges cause the issues, and what solutions developers receive. In this paper, we aim to answer these questions via a study on developer discussions on Stack Overflow. By manually analyzing 586 highly relevant posts spanning 14 years, we observed a large variety (11 categories) of issues, dominated by those with interfacing and data handling among different languages. Behind these issues, we found that a major challenge developers faced is the diversity and complexity in multilingual code building and interoperability. Another key challenge lies in developers' lack of particular technical background on the diverse features of various languages (e.g., threading and memory management mechanisms). Meanwhile, Stack Overflow itself served as a key source of solutions to these challenges-the majority (73%) of the posts received accepted answers eventually, and most in a week (36.5% within 24 hours and 25% in the next 6 days). Based on our findings on these issues, challenges, and solutions, we provide actionable insights and suggestions for both multi-language software researchers and developers.
Pierre Weill-Tessier A. Costache Maksymilian Sekula + 2 lainnya
1 Agustus 2022
Objectives. Java is a popular programming language for use in computing education, but it is difficult to get a wide picture of the issues that it presents for novices; most studies look only at the types or frequency of errors. In this observational study, we aim to learn how novices use different features of the Java language. Participants. Users of the BlueJ development environment have been invited to opt in to anonymously record their activity data for the past 8 years. This dataset is called Blackbox, which was used as the basis for this study. BlueJ users are mostly novice programmers, predominantly male, with a median age of 16 years. Our data subset featured approximately 225,000 participants from around the world. Study Methods. We performed a secondary data analysis that used data from the Blackbox dataset. We examined over 320,000 Java projects collected over the course of 8 years and used source code analysis to investigate the prevalence of various specifically selected Java programming usage patterns. As this was an observational study without specific hypotheses, we did not use significance tests. Instead, we present the results themselves with commentary, having applied seasonal trend decomposition to the data. Findings. We found many long-term trends in the data over the course of the 8 years, most of which were monotonic. There was a notable reduction in the use of the main method (common in Java but unnecessary in BlueJ) and a general reduction in the complexity of the projects. We find that there is only a small number of frequently used types: int, String, double, and Boolean, but also a wide range of other infrequently used types. Conclusions. We find that programming usage patterns gradually change over a long period of time (a period in which the Java language was not seeing major changes) once seasonal patterns are accounted for. Any changes are likely driven by instructors and the changing demographics of programming novices. The novices use a relatively restricted subset of Java, which implies that designers of languages specifically targeted at novices can satisfy their needs with a smaller set of language constructs and features. We provide detailed recommendations for the designers of educational programming languages and supporting development tools.
J. Prather Brett A. Becker Nigel Bosch + 3 lainnya
22 Februari 2022
As computing students progress through their studies they become proficient with multiple programming languages. Prior work investigating language transitions for novices has tended to analyze program artifacts rather than explore the benefits and difficulties as perceived by students in their own words, and has often overlooked problems that may arise in switching paradigms or where familiar syntax has a different meaning in the new language. In this paper, we ask students to reflect on the transition from an interpreted language and environment (MATLAB) to a compiled language (C), prompting comments on the aspects of learning the new language that they found both easier and harder. Analysis of over 70,000 words written by 771 students revealed that the highest-performing students expressed more negative sentiments towards the language transition -- a surprising result that we hypothesize is explained by their generally stronger metacognitive skills. We also report the most common difficulties described by students, which include challenges with syntax, error messages, and the process of compilation, and suggest teaching practices that might help students as they transition to a new programming language.
Andrea Gallidabino Igor Moreno Santos Matthias Hauswirth + 3 lainnya
26 Juni 2021
Knowledge about misconceptions is an important element of pedagogical content knowledge. The computing education research community collected a large body of research on misconceptions, using a diverse set of definitions and approaches. Inspired by this prior work, we present an actionable definition of misconceptions, focused on the area most commonly studied: programming and programming languages. We then introduce an organizational structure for collections of programming language misconceptions. We study how existing collections fit our organization, and we present a curated inventory of programming language misconceptions that aims to follow our definition and structure. Our inventory goes beyond traditional programming misconception collections. It connects misconceptions to the authoritative specifications of languages, to places they may be triggered in textbooks, to research papers that discuss them, and it provides support for integrating programming language misconceptions into educational platforms.
Kathryn T. Stolee Gina R. Bai Joshua Kayani
13 Juli 2020
Developers and computing students are usually expected to master multiple programming languages. To learn a new language, developers often turn to online search to find information and code examples. However, insights on how learners perform code search when working with an unfamiliar language are lacking. Under-standing how learners search and the challenges they encounter when using an unfamiliar language can motivate future tools and techniques to better support subsequent language learners. Research on code search behavior typically involves monitoring developers during search activities through logs or in situ surveys. We conducted a study on how computing students search for code in an unfamiliar programming language with 18 graduate students working on VBA tasks in a lab environment. Our surveys explicitly asked about search success and query reformulation to gather reliable data on those metrics. By analyzing the combination of search logs and survey responses, we found that students typically search to explore APIs or find example code. Approximately 50% of queries that precede clicks on documentation or tutorials successfully solved the problem. Students frequently borrowed terms from languages with which they are familiar when searching for examples in an unfamiliar language, but term borrowing did not impede search success. Edit distances between reformulated queries and non-reformulated queries were nearly the same. These results have implications for code search research, especially on reformulation, and for research on supporting programmers when learning a new language.
Daftar Referensi
0 referensiTidak ada referensi ditemukan.
Artikel yang Mensitasi
0 sitasiTidak ada artikel yang mensitasi.