Programming Paradigms, Turing Completeness and Computational Thinking

Greg Michaelson
DOI: https://doi.org/10.22152/programming-journal.org/2020/4/4
2020-02-15
Abstract:The notion of programming paradigms, with associated programming languages and methodologies, is a well established tenet of Computer Science pedagogy, enshrined in international curricula. However, this notion sits ill with Kuhn's classic conceptualisation of a scientific paradigm as a dominant world view, which supersedes its predecessors through superior explanatory power. Furthermore, it is not at all clear how programming paradigms are to be characterised and differentiated. Indeed, on closer inspection, apparently disparate programming paradigms are very strongly connected. Rather, they should be viewed as different traditions of a unitary Computer Science paradigm of Turing complete computation complemented by Computational Thinking.
Programming Languages
What problem does this paper attempt to address?
### Problems the Paper Attempts to Solve The paper "Programming Paradigms, Turing Completeness, and Computational Thinking" attempts to address the following issues: 1. **Definition and Distinction of Programming Paradigms**: - Is the concept of programming paradigms widely accepted in current computer science education reasonable? - How to define and distinguish different programming paradigms? Are there clear boundaries between these paradigms? 2. **Relationship Between Programming Paradigms and Scientific Paradigms**: - Do programming paradigms conform to Thomas Kuhn's classic definition of scientific paradigms, i.e., a dominant worldview composed of theory and complementary practice, which replaces its predecessor through stronger explanatory power? - Is there a single dominant paradigm in programming paradigms like in scientific paradigms, or can multiple paradigms coexist? 3. **Relationship Between Programming Languages and Methodologies**: - Do different programming paradigms have to be tied to specific types of programming languages? - Can programming methodologies be independent of specific types of programming languages? 4. **Role of Turing Completeness and Computational Thinking**: - Can Turing completeness serve as the foundational theory for all programming languages? - Can Computational Thinking (CT) serve as the foundational practice for all programming methodologies? ### Main Points of the Paper The author believes that there are many issues with the current understanding of programming paradigms, mainly reflected in the following aspects: - **Connections Between Paradigms**: Seemingly different programming paradigms are actually closely related and should not be viewed as completely independent entities. - **Decoupling Paradigms and Languages**: Programming methodologies do not necessarily have to be tied to specific types of programming languages; methodologies of different paradigms can be applied to various languages. - **Universality of Turing Completeness**: All modern programming languages are Turing complete, which means they theoretically have the same computational power. - **Importance of Computational Thinking**: Computational thinking, as a systematic approach to problem-solving, can transcend specific programming languages and paradigms, becoming a core practice in computer science. Through these viewpoints, the author attempts to redefine the concept of programming paradigms, emphasizing their unity and diversity in computer science.