- Attempts to define a unified scientific discipline of computer programming independent of programming language implementations.
-
def computer programming: the act of extending or changing a system's functionality (Haridi and Van Roy, 2004:xv).
-
formal: ???
- in words: ???
-
intuition: ???
-
properties:
-
learning order:
- concepts and techniques
- algorithms and data structures
- program design and software engineering
-
practitioners:
- general users: by changing the setting of an alarm
- expert users: by writing new features for the system or updating existing
-
-
examples:
- extending a system's functionality:
- writing a new application for iOS
- changing a system's functionality:
- moving iOS from using 4 digits to 7 digits passwords
- extending a system's functionality:
-
use cases: ???
-
proof: ???
-
-
def computation model(Haridi and Van Roy, 2004:xiii):
-
formal: ???
- in words: formal system, that defines how computations are done
-
plain english: ???
-
intuition: ???
-
properties:
-
based on a simple core language called its kernel language (Haridi and Van Roy, 2004:xiv)
- def kernel language: TBD
-
defined in terms of (Haridi and Van Roy, 2004:xiii):
- data types
- operations
- a programming language
NB there are other ways to define computation models: - finite automata (Sipser, 2012:xvii)
-
provides:
- a programming model:
- def programming model: a set of programming techniques and design principles
used to write programs
in the language of the computation model (Haridi and Van Roy, 2004:29).
- def programming techniques: TBD
- def design principles: TBD
- def programming model: a set of programming techniques and design principles
used to write programs
in the language of the computation model (Haridi and Van Roy, 2004:29).
- set of techniques for:
- reasoning about programs
- a programming model:
-
-
examples: ???
-
use cases: ???
-
proof: ???
-
-
def creative extension principle: main criterion for when and which concept to add to a computation mode/kernel language (Haridi and Van Roy, 2004:xiv)
-
def technology(Haridi and Van Roy, 2004:xiii): a tool or concept that enables us to do something.
-
def λ calculus:
-
def π calculus:
-
def abstractions:
- The repository is configured to use devcontainers for development.
pipenv shell
pyspelling -c spellcheck.yaml
- Van Roy P, Haridi S. 2004. Concepts, Techniques and Models of Computer Programming. The MIT Press.
- Sipser, M. 2012. Introduction to the Theory of Computation. 3rd ed. Cengage Learning.
Q: Question for later research
MYINC: My Insight/Conjecture [Could Be Unoriginal/False and Likely Is]
Disclaimer: This is an ongoing and incomplete project to unpack these concepts and serves as my distributed memory.