Programming Language Selection in Software Engineering: Results from an Adapted MLR Focused on Go, Haskell, Python and Rust


Collins Z., Di Paolo L., O’Grady C., Ryan N., Marks G., YILMAZ M., ...Daha Fazla

32nd European Conference on Systems, Software and Services Process Improvement, EuroSPI 2025, Riga, Letonya, 17 - 19 Eylül 2025, cilt.2657 CCIS, ss.176-193, (Tam Metin Bildiri) identifier identifier

  • Yayın Türü: Bildiri / Tam Metin Bildiri
  • Cilt numarası: 2657 CCIS
  • Doi Numarası: 10.1007/978-3-032-04288-0_11
  • Basıldığı Şehir: Riga
  • Basıldığı Ülke: Letonya
  • Sayfa Sayıları: ss.176-193
  • Anahtar Kelimeler: Programming languages, software engineering
  • Gazi Üniversitesi Adresli: Evet

Özet

Programming language selection is a critical decision in software engineering, affecting performance, security, and overall system reliability. In this paper, we present a Multivocal Literature Review (MLR) of four languages – Go, Haskell, Python, and Rust – chosen for their distinct paradigms and widespread adoption in industry. We synthesise findings from both peer-reviewed works and trusted grey literature to evaluate these languages across three key dimensions: Safety & Security, Resource Efficiency, and Domain Suitability. Our analysis reveals that Go’s lightweight concurrency model excels in cloud-native services, yet lacks proper safety tooling for parallel programming. Haskell’s purely functional design and strong type system foster correctness and verifiability, but lazy evaluation may hinder efficiency. Python dominates data-centric fields due to its extensive ecosystem and simplicity, though it suffers from interpreted overhead and package-vulnerability risks. Rust’s ownership model mitigates memory-related vulnerabilities, offering near-C performance and robust concurrency, albeit with a steeper learning curve. By illustrating each language’s strengths, trade-offs, and optimal usage contexts, this review provides researchers and practitioners with actionable insights for informed language selection for software development.