Evolution of Programming Paradigms: A Narrative Review

Authors

  • Sigit Nurcahyono Universitas Salakanagara
  • Faza Alameka Universitas Mulia
  • Mohd Hafiz Zulkifli Universiti Kebangsaan Malaysia

DOI:

https://doi.org/10.56861/inheriten.v1i1.12

Keywords:

Programming Paradigms; Programming Language; Evolution

Abstract

This narrative review examines the historical evolution and conceptual shifts of programming paradigms, offering a comprehensive analysis of how they have shaped language design and software development practices over time. Beginning with low-level machine code and assembly languages, the paper traces the emergence of imperative and structured programming, which introduced disciplined control flow and modularity. It then explores the rise of object-oriented programming, emphasizing encapsulation, inheritance, and polymorphism to manage complexity in large systems. Functional programming is discussed for its mathematical foundations, immutability, and suitability for concurrent processing. The review also analyzes the impact of parallel and concurrent programming paradigms in the era of multi-core processors and distributed systems, highlighting the shift toward multi-paradigm languages that blend approaches to meet modern software demands. By clarifying definitional nuances and examining the philosophical underpinnings of paradigms themselves, this review provides a valuable resource for understanding the dynamic, interdisciplinary nature of programming and its critical role in addressing increasingly complex computational challenges

References

Abdelhafez, A., Luque, G., & Alba, E. (2020). Parallel execution combinatorics with metaheuristics: Comparative study. Swarm and Evolutionary Computation, 55, 100692. https://doi.org/10.1016/j.swevo.2020.100692

Abou-Assali, M. (2014). The Nature of Educational Inquiry: Is One Approach Better? International Review of Contemporary Learning Research, 3(2), 71. https://doi.org/10.12785/irclr/030203

Ahmadulin, R. K., & Bakanovskaya, L. N. (2017). Object-Oriented Programming When Developing Software in Geology and Geophysics. IOP Conference Series Earth and Environmental Science, 50, 12049. https://doi.org/10.1088/1755-1315/50/1/012049

Aldinucci, M., Cesare, V., Colonnelli, I., Martinelli, A. R., Mittone, G., Cantalupo, B., Cavazzoni, C., & Drocco, M. (2021). Practical parallelization of scientific applications with OpenMP, OpenACC and MPI. Journal of Parallel and Distributed Computing, 157, 13. https://doi.org/10.1016/j.jpdc.2021.05.017

Al‐Fedaghi, S. (2017). Diagramming the Class Diagram: Toward a Unified Modeling Methodology. arXiv (Cornell University). https://doi.org/10.48550/arxiv.1710.00202

AlQaralleh, E. A., & Darabkh, K. A. (2014). A new method for teaching microprocessors course using emulation. Computer Applications in Engineering Education, 23(3), 455. https://doi.org/10.1002/cae.21616

Amin, M. T. A. (2010). Multi-core: Adding a New Dimension to Computing. arXiv (Cornell University). https://doi.org/10.48550/arxiv.1011.3382

Barrero, A. (1996). Implementation of abstract data types with arrays of unbounded dimensions. Communications of the ACM, 39, 167. https://doi.org/10.1145/272682.272710

Benton, M. C., & Radziwill, N. (2016). Improving Testability and Reuse by Transitioning to Functional Programming. arXiv (Cornell University). https://doi.org/10.48550/arxiv.1606.06704

Bercich, N. H. (2003). The Evolution of the Computerized Database. arXiv (Cornell University). https://doi.org/10.48550/arxiv.cs/0305038

Brown, R. A., Shoop, E., Adams, J. C., Clifton, C., Gardner, M. K., Haupt, M., & Hinsbeeck, P. (2010). Strategies for preparing computer science students for the multicore world. https://doi.org/10.1145/1971681.1971689

Buhr, P. A. (2016). Understanding Control Flow. In Springer eBooks. Springer Nature. https://doi.org/10.1007/978-3-319-25703-7

Chapman, B. (2007). The Multicore Programming Challenge. In Springer eBooks (p. 3). Springer Nature. https://doi.org/10.1007/978-3-540-76837-1_3

Chickerur, S. (2019). Introductory Chapter: High Performance Parallel Computing. In IntechOpen eBooks. IntechOpen. https://doi.org/10.5772/intechopen.84193

Chien, A. A. (2007). Pervasive parallel computing. 160. https://doi.org/10.1145/1229428.1229467

Codd, E. F. (1970). A relational model of data for large shared data banks. Communications of the ACM, 13(6), 377. https://doi.org/10.1145/362384.362685

Cohen, S. (2020). The evolution of machine learning: past, present, and future. In Elsevier eBooks (p. 1). Elsevier BV. https://doi.org/10.1016/b978-0-323-67538-3.00001-4

Dabagia, M., Papadimitriou, C. H., & Vempala, S. (2021). Assemblies of neurons learn to classify well-separated distributions. arXiv (Cornell University). https://doi.org/10.48550/arxiv.2110.03171

Danelutto, M., Mencagli, G., Torquati, M., González–Vélez, H., & Kilpatrick, P. (2020). Algorithmic Skeletons and Parallel Design Patterns in Mainstream Parallel Programming. International Journal of Parallel Programming, 49(2), 177. https://doi.org/10.1007/s10766-020-00684-w

Darlington, J., Field, A. J., Harrison, P. G., Kelly, P. H. J., Sharp, D. W. N., Wu, Q., & While, R. L. (1993). Parallel programming using skeleton functions. In Lecture notes in computer science (p. 146). Springer Science+Business Media. https://doi.org/10.1007/3-540-56891-3_12

Dillon, R. F. (1979). Structured flow of control in a laboratory control language. Behavior Research Methods, 11(2), 234. https://doi.org/10.3758/bf03205655

Dongarra, J., Abaļenkovs, M., Abdelfattah, A., Gates, M., Haidar, A., Kurzak, J., Łuszczek, P., Tomov, S., Yamazaki, I., & YarKhan, A. (2016). Parallel Programming Models for Dense Linear Algebra on Heterogeneous Systems. Supercomputing Frontiers and Innovations, 2(4). https://doi.org/10.14529/jsfi150405

Du, T. C., & Wolfe, P. M. (1997). Overview of emerging database architectures. Computers & Industrial Engineering, 32(4), 811. https://doi.org/10.1016/s0360-8352(97)00011-9

Effatparvar, M., Sarkohaki, F., & Behzad, S. (2019). An Improvement Over Threads Communications on Multi-Core Processors. arXiv (Cornell University). https://doi.org/10.48550/arxiv.1909.11644

Fleissner, S., & Baniassad, E. (2009). Harmony-oriented programming and software evolution. 991. https://doi.org/10.1145/1639950.1640069

Flynn, M., & Rudd, K. W. (1996). Parallel architectures [Review of Parallel architectures]. ACM Computing Surveys, 28(1), 67. Association for Computing Machinery. https://doi.org/10.1145/234313.234345

Ghose, S. (2024). General-Purpose Multicore Architectures (p. 1). https://doi.org/10.1007/978-981-15-6401-7_46-1

Giles, M. B., & Reguly, I. Z. (2014). Trends in high-performance computing for engineering calculations. Philosophical Transactions of the Royal Society A Mathematical Physical and Engineering Sciences, 372(2022), 20130319. https://doi.org/10.1098/rsta.2013.0319

Goldwasser, M. H., & Letscher, D. (2008). Teaching an object-oriented CS1 -. ACM SIGCSE Bulletin, 40(3), 42. https://doi.org/10.1145/1597849.1384285

Gorodnyaya, L. V., & Andreyeva, T. (2015). PROGRAMMING PARADIGMS IN HIGHER EDUCATION. Bulletin of the Novosibirsk Computing Center Series Computer Science, 38. https://doi.org/10.31144/bncc.cs.2542-1972.2015.n38.p67-90

Gray, J. (2007). Data Management: Past, Present, and Future. arXiv (Cornell University). https://doi.org/10.48550/arxiv.cs/0701156

Guerra, G., & Martínez-Velasco, J. A. (2017). Evaluation of MATPOWER and OpenDSS load flow calculations in power systems using parallel computing. The Journal of Engineering, 2017(6), 195. https://doi.org/10.1049/joe.2017.0023

Hai, R., Koutras, C., Quix, C., & Jarke, M. (2021). Data Lakes: A Survey of Functions and Systems. arXiv (Cornell University). https://doi.org/10.48550/arxiv.2106.09592

Hardgrave, B. C. (1997). Adopting object-oriented technology: Evolution or revolution? Journal of Systems and Software, 37(1), 19. https://doi.org/10.1016/s0164-1212(96)00046-5

Hendrickson, B. (2009). Computational science: Emerging opportunities and challenges. Journal of Physics Conference Series, 180, 12013. https://doi.org/10.1088/1742-6596/180/1/012013

Hennessy, J. L., & Patterson, D. A. (1989). Computer Architecture: A Quantitative Approach. https://cds.cern.ch/record/1414394/files/9780123838728_TOC.pdf

Herlihy, M., & Shavit, N. (2012). The Art of Multiprocessor Programming, Revised Reprint. In Morgan Kaufmann Publishers Inc. eBooks. https://dl.acm.org/citation.cfm?id=2385452

Holland, I. M., & Lieberherr, K. (1996). Object-oriented design [Review of Object-oriented design]. ACM Computing Surveys, 28(1), 273. Association for Computing Machinery. https://doi.org/10.1145/234313.234421

Hwu, W., Tsao, S. C., Navarro, N., Lumetta, S., Frank, M. I., Patel, S. J., Ryoo, S., Ueng, S.-Z., Kelm, J. H., Gelado, I., Stone, S. S., Kidd, R. E., Baghsorkhi, S. S., & Mahesri, A. (2007). Implicitly parallel programming models for thousand-core microprocessors. Proceedings - ACM IEEE Design Automation Conference. https://doi.org/10.1145/1278480.1278669

Jóźwiak, L., & Jan, Y. (2013). Design of massively parallel hardware multi-processors for highly-demanding embedded applications. Microprocessors and Microsystems, 37(8), 1155. https://doi.org/10.1016/j.micpro.2013.09.005

Kachris, C., & Soudris, D. (2016). A survey on reconfigurable accelerators for cloud computing. 1. https://doi.org/10.1109/fpl.2016.7577381

Kakar, A., & Kakar, A. (2020). A Brief History of Software Development and Manufacturing. https://aisel.aisnet.org/sais2020/4/

Kankam, P. K. (2019). The use of paradigms in information research. Library & Information Science Research, 41(2), 85. https://doi.org/10.1016/j.lisr.2019.04.003

Kiasari, P. M. (2025). Are Programming Paradigms Paradigms? A Critical Examination of Floyd’s Appropriation of Kuhn’s Philosophy. https://doi.org/10.48550/ARXIV.2505.01901

Kim, M., Bergman, L., Lau, T., & Notkin, D. (2004). An ethnographic study of copy and paste programming practices in OOPL. 83. https://doi.org/10.1109/isese.2004.10

Kingra, S. K., Parmar, V., Chang, C., Hudec, B., Hou, T., & Suri, M. (2020). SLIM: Simultaneous Logic-in-Memory Computing Exploiting Bilayer Analog OxRAM Devices. Scientific Reports, 10(1). https://doi.org/10.1038/s41598-020-59121-0

Kizza, J. M. (2020). Introduction to Computer Network Vulnerabilities. In Texts in computer science (p. 87). Springer International Publishing. https://doi.org/10.1007/978-3-030-38141-7_4

Kunugi, M., Yohda, M., Tamura, S., Kishida, Y., Hayashi, T., & Hasegawa, T. (1992). PI architecture functionally distributed system for power network supervisory control. Electrical Engineering in Japan, 112(6), 47. https://doi.org/10.1002/eej.4391120605

Lott, S. F. (2009). Building Skills in Object-Oriented Design. http://slav0nic.org.ua/static/books/python/oodesign.pdf

Luxton-Reilly, A., Simon, N. P., Albluwi, I., Becker, B. A., Giannakos, M. N., Kumar, A. N., Ott, L., Paterson, J. H., Scott, M., Sheard, J., & Szabo, C. (2018). A review of introductory programming research 2003–2017 [Review of A review of introductory programming research 2003–2017]. 342. https://doi.org/10.1145/3197091.3205841

Mackenzie, N., & Knipe, S. (2006). Research dilemmas: Paradigms, methods and methodology. Issues in Educational Research, 16(2), 193. https://brainmass.com/file/125444/mackenzie.pdf

Mandal, A., & Pal, S. C. (2011). An Empirical Study and Analysis of the Dynamic Load Balancing Techniques Used in Parallel Computing Systems. arXiv (Cornell University). https://doi.org/10.48550/arxiv.1109.1650

Marz, N., & Warren, J. (2015). Big Data: Principles and best practices of scalable realtime data systems. http://ci.nii.ac.jp/ncid/BB19242389

Meijer, E., & Jones, S. P. (1997). Henk: a typed intermediate language. https://www.microsoft.com/en-us/research/wp-content/uploads/1997/01/henk.pdf

Mertens, D. M. (2012). What Comes First? The Paradigm or the Approach? Journal of Mixed Methods Research, 6(4), 255. https://doi.org/10.1177/1558689812461574

Micallef, J. (1987). Encapsulation, Reusability and Extensibility in Object-Oriented Programming Languages. https://doi.org/10.7916/d8tt4zzd

Mistretta, S. (2022). Virtual Robotics in Hybrid Teaching and Learning. In IntechOpen eBooks. IntechOpen. https://doi.org/10.5772/intechopen.102038

Moniruzzaman, A. B. M., & Hossain, S. A. (2013). NoSQL Database: New Era of Databases for Big data Analytics - Classification, Characteristics and Comparison. arXiv (Cornell University). https://doi.org/10.48550/arxiv.1307.0191

Morrison, A. (2016). Scaling synchronization in multicore programs. Communications of the ACM, 59(11), 44. https://doi.org/10.1145/2980987

Murji, K., & Solomos, J. (2016). Rejoinder: race scholarship and the future. Ethnic and Racial Studies, 39(3), 405. https://doi.org/10.1080/01419870.2016.1109692

Mutlu, O. (2020). Intelligent Architectures for Intelligent Computing Systems. arXiv (Cornell University). https://doi.org/10.48550/arxiv.2012.12381

Nami, M. (2008). A comparison of object-oriented languages in software engineering. ACM SIGSOFT Software Engineering Notes, 33(4), 1. https://doi.org/10.1145/1384139.1384145

Nathan, D., Kit, K. L. M., Min, K. C. H., Chin, P. W. J., & Weisensee, A. (2004). A High-Level Reconfigurable Computing Platform Software Frameworks. arXiv (Cornell University). https://doi.org/10.48550/arxiv.cs/0405015

Navaux, P. O. A., Lorenzon, A. F., & Serpa, M. S. (2023). Challenges in High-Performance Computing. Journal of the Brazilian Computer Society, 29(1), 51. https://doi.org/10.5753/jbcs.2023.2219

NoSQL : A Panorama for Scalable Databases in Web. (2017). International Journal of Modern Trends in Engineering & Research, 4(8), 142. https://doi.org/10.21884/ijmter.2017.4262.qwfhg

Pacheco, P. S. (2011). Why Parallel Computing? In Elsevier eBooks (p. 1). Elsevier BV. https://doi.org/10.1016/b978-0-12-374260-5.00001-4

Pankratius, V., Tichy, W. F., & Hinsbeeck, P. (2010). Multicore software engineering. 487. https://doi.org/10.1145/1810295.1810443

Pearce, O. (2019). Exploring utilization options of heterogeneous architectures for multi-physics simulations. Parallel Computing, 87, 35. https://doi.org/10.1016/j.parco.2019.05.003

Penry, D. A. (2009). Multicore diversity. ACM SIGOPS Operating Systems Review, 43(2), 100. https://doi.org/10.1145/1531793.1531810

Pokorný, J. (2015). Database technologies in the world of big data. 1. https://doi.org/10.1145/2812428.2812429

Polychronopoulos, C. D. (1993). PARALLEL PROGRAMMING ISSUES. International Journal of High Speed Computing, 5(3), 413. https://doi.org/10.1142/s0129053393000189

Pretorius, L. (2024). Demystifying Research Paradigms: Navigating Ontology, Epistemology, and Axiology in Research. The Qualitative Report. https://doi.org/10.46743/2160-3715/2024.7632

Roy, P. V. (2009). Programming paradigms for dummies: what every programmer should know. https://www.researchgate.net/profile/Peter_Van_Roy/publication/241111987_Programming_Paradigms_for_Dummies_What_Every_Programmer_Should_Know/links/00b7d52a23e20bcd69000000.pdf?disableCoverPage=true

Saha, B., & Ray, U. K. (2015). Learning Programming : An Indian Perspective. arXiv (Cornell University). https://doi.org/10.48550/arxiv.1506.08712

Saxena, V., Xin, W., & Zhu, K. (2018). Energy-Efficient CMOS Memristive Synapses for Mixed-Signal Neuromorphic System-on-a-Chip. arXiv (Cornell University). https://doi.org/10.48550/arxiv.1802.02342

Shannon‐Baker, P. (2015). Making Paradigms Meaningful in Mixed Methods Research. Journal of Mixed Methods Research, 10(4), 319. https://doi.org/10.1177/1558689815575861

Silberschatz, A., Korth, H. F., & Sudarshan, S. (1996). Data models [Review of Data models]. ACM Computing Surveys, 28(1), 105. Association for Computing Machinery. https://doi.org/10.1145/234313.234360

Silio, C. B. (2005). Basics of Computer Architecture. In Birkhäuser Boston eBooks (p. 145). https://doi.org/10.1007/0-8176-4404-0_7

Sjöberg, V., Sang, Y., Weng, S.-C., & Shao, Z. (2019). DeepSEA: a language for certified system software. Proceedings of the ACM on Programming Languages, 3, 1. https://doi.org/10.1145/3360562

Stanisic, L., Thibault, S., Legrand, A., Videau, B., & Méhaut, J. (2015). Faithful performance prediction of a dynamic task‐based runtime system for heterogeneous multi‐core architectures. Concurrency and Computation Practice and Experience, 27(16), 4075. https://doi.org/10.1002/cpe.3555

Stroustrup, B. (1988). What is object-oriented programming? IEEE Software, 5(3), 10. https://doi.org/10.1109/52.2020

Su, L., Naffziger, S., & Papermaster, M. (2017, December 1). Multi-chip technologies to unleash computing performance gains over the next decade. 2021 IEEE International Electron Devices Meeting (IEDM). https://doi.org/10.1109/iedm.2017.8268306

Sufi, F. (2023). Algorithms in Low-Code-No-Code for Research Applications: A Practical Review [Review of Algorithms in Low-Code-No-Code for Research Applications: A Practical Review]. Algorithms, 16(2), 108. Multidisciplinary Digital Publishing Institute. https://doi.org/10.3390/a16020108

Suh, S. (2023). Cheat Sheet for Teaching Programming with Comics: Through the Lens of Concept-Language-Procedure Framework. arXiv (Cornell University). https://doi.org/10.48550/arxiv.2306.00464

Taylor, G. (2012). The next decade of computing. AIP Conference Proceedings, 55. https://doi.org/10.1063/1.4730642

Taylor-Sakyi, K. (2016). Big Data: Understanding Big Data. arXiv (Cornell University). https://doi.org/10.48550/arxiv.1601.04602

Tibbetts, N., Ibtisum, S., & Puri, S. (2025). A Survey on Heterogeneous Computing Using SmartNICs and Emerging Data Processing Units (Expanded Preprint). https://doi.org/10.48550/ARXIV.2504.03653

Tichy, W. F. (2014). The Multicore Transformation Opening Statement. Ubiquity, 2014, 1. https://doi.org/10.1145/2618393

Torrellas, J. (2016). Extreme-scale computer architecture. National Science Review, 3(1), 19. https://doi.org/10.1093/nsr/nwv085

Tröger, P. (2008). The Multi-Core Era - Trends and Challenges. arXiv (Cornell University). https://doi.org/10.48550/arxiv.0810.5439

Truică, C., Apostol, E., Darmont, J., & Pedersen, T. B. (2021). The Forgotten Document-Oriented Database Management Systems: An Overview and Benchmark of Native XML DODBMSes in Comparison with JSON DODBMSes. Big Data Research, 25, 100205. https://doi.org/10.1016/j.bdr.2021.100205

Tseng, C.-Y., Cheng, T.-H., & Chang, C.-H. (2024). A Novel Approach to Boosting Programming Self-Efficacy: Issue-Based Teaching for Non-CS Undergraduates in Interdisciplinary Education. Information, 15(12), 820. https://doi.org/10.3390/info15120820

Turing, A. (2007). Computing Machinery and Intelligence. In Springer eBooks (p. 23). Springer Nature. https://doi.org/10.1007/978-1-4020-6710-5_3

Vaidehi, M., & Nair, T. R. G. (2010). Multicore Applications in Real Time Systems. arXiv (Cornell University). https://doi.org/10.48550/arxiv.1001.3539

Végh, J. (2020). How to extend the Single-Processor Paradigm to the Explicitly Many-Processor Approach. arXiv (Cornell University). https://doi.org/10.48550/arxiv.2006.00532

Venu, B. (2011). Multi-core processors - An overview. arXiv (Cornell University). https://doi.org/10.48550/arxiv.1110.3535

Wegner. (1976). Programming Languages—The First 25 Years. IEEE Transactions on Computers, 12, 1207. https://doi.org/10.1109/tc.1976.1674589

Wiederhold, G. (1977). Database design. https://openlibrary.org/books/OL2374515M/File_organization_for_database_design

Woo, M. (2020). The Rise of No/Low Code Software Development—No Experience Needed? Engineering, 6(9), 960. https://doi.org/10.1016/j.eng.2020.07.007

Xue, W., Wang, H., & Roy, C. J. (2024). CPU–GPU heterogeneous code acceleration of a finite volume Computational Fluid Dynamics solver. Future Generation Computer Systems, 158, 367. https://doi.org/10.1016/j.future.2024.04.049

Yang, C., Liu, Y., & Yu, J. (2018, December 8). Exploring Violations of Programming Styles. Proceedings of the 2018 2nd International Conference on Computer Science and Artificial Intelligence. https://doi.org/10.1145/3297156.3297227

Yavuz, A. (2012). Competing Paradigms: The Dilemmas and Insights of an ELT Teacher Educator. International Education Studies, 5(1). https://doi.org/10.5539/ies.v5n1p57

Yuen, C. K. (1997). Parallel programming — A critique. Parallel Computing, 23(3), 369. https://doi.org/10.1016/s0167-8191(97)00092-6

Zackariasson, P., & Wilson, T. L. (2010). Paradigm shifts in the video game industry. Competitiveness Review An International Business Journal Incorporating Journal of Global Competitiveness, 20(2), 139. https://doi.org/10.1108/10595421011029857

Zolfani, S. H., Sedaghat, M., Maknoon, R., & Zavadskas, E. K. (2015). Sustainable tourism: a comprehensive literature review on frameworks and applications. Economic Research-Ekonomska Istraživanja, 28(1), 1.

Downloads

Submitted

2026-01-17

Accepted

2026-01-17

Published

2026-01-10