1.1: Programming Paradigms
Early
in computer science history, functional programming was the practice of
choice. This is normal given the reason for the first practical
computer to be built, to perform time-consuming calculations faster.
Functional programming grew into modular programming so that it would be
possible to group associated and oft-used calculations into callable
modules. Modular programming gradually evolved into object-oriented
programming, the main approach used today. We begin with functional
programming and then move into object-oriented. Whichever programming
approach is used, the general computing paradigm has several aspects:
the task to be performed; a strategy for how the task will be performed;
transformation of the strategy into a detailed strategy that
corresponds to activities that a computer can perform; implementation of
the strategy as a set of instructions that can be executed by a
computer; and validation that the results of the execution perform the
task in a satisfactory manner. In software engineering, these aspects
are called requirements analysis, architecture and design, program code,
and validation. As approaches evolved from functional to modular to
object-oriented, these still support the general paradigm. A programming
language, while supporting a particular paradigm, typically may support
other paradigms as well.
This video addresses the basic nature of computers and speaks to what they are capable of. It emphasizes the fact that computers only do what humans program them to do. The video mentions the language Python, but any language would apply here, including Java and C++. Watch from 6:55-28:40.
Read this introduction to functional programming, through Section 3.3.1. As you will see from the article's index, many languages support functional programming, including (although not mentioned in the article) C/C++.
These slides review the object-oriented approach and relate it to earlier approaches.