Abstract
Programming languages development has intensified in recent years. New ones are created; new features, often cross-paradigm, are featured in old ones.
This new programming landscape makes language selection a more complex decision, both from the companies points of view (technical, recruiting) and from the developers point of view (career development).
In this paper, however, we argue that programming languages have a secondary role in software development design decisions. We illustrate, based on a practical example, how the main influencer are higher-level traits: those traditionally assigned with programming paradigms.
Following this renovated perspective, concerns about language choice are shifted for all parties. Beyond particular syntax, grammar, execution model or code organization, the main consequence of the predominance of one paradigm or another in the mind of the developer is the way solutions are designed.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Similar content being viewed by others
Notes
- 1.
In this particular case, these two abstractions will likely hide from the master control the particulars of interacting with the corresponding external systems featured in Fig. 1.
References
Ahmed, F., Capretz, L.F., Bouktif, S., Campbell, P.R.J.: Soft skills and software development: a reflection from the software industry. Int. J. Inf. Process.Manage. 3(4), 171–191 (2013)
Brilliant, S.S., Wiseman, T.R.: The first programming paradigm and language dilemma. In: SIGCSE Technical Symposium on Computer Science Education. vol. 28, pp. 338–342. Association for Computing Machinery (1996)
Brosgol, B.: An introduction to the C# language and .NET infrastructure. In: ACM SIGAda Annual International Conference on Ada and Related Technologies, pp. 3–4. Association for Computing Machinery (2009)
Brown, S.: The c4 model for software architecture. https://c4model.com/ (2018)
Cantrill, B., Bonwick, J.: Real-world concurrency. Queue 6(5), 16–25 (2008)
Cass, S.: The 2019 top programming languages. IEEE Spectr. 33 (2020)
Derk, M.: What makes a programming language popular? an essay from a historical perspective. In: ACM SIGPLAN Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software, pp. 163-166. Association for Computing Machinery (2011)
Dovland, J., Johnsen, E., Owe, O.: Verification of concurrent objects with asynchronous method calls. In: IEEE International Conference on Software - Science, Technology and Engineering, pp. 141–150 (2005)
Espinosa, J.A.: Shared Mental Models and Coordination in Large-Scale, Distributed Software Development. Ph.D. thesis, Carnegie Mellon University (2002)
Flauzino, M., Veríssimo, J., Terra, R., Cirilo, E., Durelli, V., Durelli, R.: Are you still smelling it? a comparative study between java and kotlin language. In: ACM International Conference Proceeding Series, pp. 23–32 (2018)
Fraser, S.D., et al.: The future of programming languages and programmers. In: ACM SIGPLAN International Conference on Systems, Programming, Languages and Applications: Software for Humanity, pp. 63-66. Association for Computing Machinery (2015)
García-Peñalvo, F., Mendes, A.: Exploring the computational thinking effects in pre-university education. Comput. Hum. Behav. 80, 407–411 (2018)
Gurcan, F., Kose, C.: Analysis of software engineering industry needs and trends: implications for education. Int. J. Eng. Educ. 33(4), 1361–1368 (2017)
Gyori, A., Franklin, L., Dig, D., Lahoda, J.: Crossing the gap from imperative to functional programming through refactoring. In: Joint Meeting on Foundations of Software Engineering, pp. 543–553 (2013)
Hickey, R.: The clojure programming language. In: Symposium on Dynamic Languages. Association for Computing Machinery (2008)
Hu, Z., Hughes, J., Wang, M.: How functional programming mattered. Natl. Sci. Rev. 2(3), 349–370 (2015)
Hughes, J.: Why functional programming matters. Comput. J. 32(2), 98–107 (1989)
Ierusalimschy, R.: First-class functions in an imperative world. J. Univ. Comput. Sci. 23(1), 112–126 (2017)
Jackson, D., Kang, E.: Separation of concerns for dependable software design. In: FSE/SDP Workshop on Future of Software Engineering Research, pp. 173-176. Association for Computing Machinery (2010)
Knaus, C.Y.: Essential programming paradigm. In: ACM SIGPLAN Conference on Object-Oriented Programming Systems Languages and Applications, pp. 823-26. Association for Computing Machinery (2008)
Köhl, M., Baum, K., Langer, M., Oster, D., Speith, T., Bohlender, D.: Explainability as a non-functional requirement. In: IEEE International Conference on Requirements Engineering, pp. 363–368. IEEE Computer Society (2019)
Matsakis, N., Klock, F.S., J.: The rust language. In: ACM Conference on High Integrity Language Technology, p. 103 (2014)
Meyerovich, L.A., Rabkin, A.S.: Empirical analysis of programming language adoption, vol. 48(10), pp. 1–8. ACM SIGPLAN Notices (2013)
Meyerson, J.: The go programming language. IEEE Softw. 31(5), 104–104 (2014)
Minsky, Y., Weeks, S.: CAML trading-experiences with functional programming on wall street. J. Funct. Program. 18(4), 553 (2008)
Moran, A.: Functional programming in the real world. ACM SIGPLAN Not. 39(12), 17–20 (2004)
Odell, J.: Objects and agents compared. J. Object Technol. 1(1), 41–53 (2002)
Odersky, M., et al.: An overview of the scala programming language. Tech. rep., École Polytechnique Fédérale de Lausanne (2004)
Perugini, S., Wright, D.J.: Concurrent programming with the actor model in elixir. J. Comput. Sci. Coll. 35(5), 111–114 (2019)
Piro, C., Letuchy, E.: Functional programming at facebook. In: Commercial Users of Functional Programming Conference, vol. 10 (2009)
Rebouças, M., Pinto, G., Ebert, F., Torres, W., Serebrenik, A., Castor, F.: An empirical study on the usage of the swift programming language. In: IEEE International Conference on Software Analysis, Evolution, and Reengineering, vol. 1, pp. 634–638 (2016)
Rogalski, J., Samurçay, R.: Acquisition of programming knowledge and skills. In: Hoc, J.M., Green, T., Samurçay, R., Gilmore, D. (eds.) Psychology of Programming, pp. 157 – 174. Academic Press (1990)
Shoham, Y.: Agent-oriented programming. Artifi. Intell. 60(1), 51–92 (1993)
Siddiqi, J.I.A., Osborn, R., Roast, C., Khazaei, B.: The pitfalls of changing programming paradigms. In: Empirical Studies of Programmers, pp. 219–232. Intellect Books (1996)
Stolin, Y., Hazzan, O.: Students’ understanding of computer science soft ideas: the case of programming paradigm. ACM SIGCSE Bull. 39(2), 65–69 (2007)
Syme, D.: The early history of F#. ACM on Programming Languages 4 (2020)
Vick, P.: The Visual Basic. Addison-Wesley Professional, Net Programming Language (2004)
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2020 The Editor(s) (if applicable) and The Author(s), under exclusive license to Springer Nature Switzerland AG
About this paper
Cite this paper
Castro, L.M. (2020). It Was Never About the Language: Paradigm Impact on Software Design Decisions. In: Silhavy, R., Silhavy, P., Prokopova, Z. (eds) Software Engineering Perspectives in Intelligent Systems. CoMeSySo 2020. Advances in Intelligent Systems and Computing, vol 1294. Springer, Cham. https://doi.org/10.1007/978-3-030-63322-6_13
Download citation
DOI: https://doi.org/10.1007/978-3-030-63322-6_13
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-63321-9
Online ISBN: 978-3-030-63322-6
eBook Packages: Intelligent Technologies and RoboticsIntelligent Technologies and Robotics (R0)