https://github.com/praisetompane/computer_programming
Attempts to define a unified discipline of computer programming independent of programming language implementations.
https://github.com/praisetompane/computer_programming
computation-model computer-programming
Last synced: 18 days ago
JSON representation
Attempts to define a unified discipline of computer programming independent of programming language implementations.
- Host: GitHub
- URL: https://github.com/praisetompane/computer_programming
- Owner: praisetompane
- License: mit
- Created: 2025-02-09T06:56:49.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2025-04-10T08:41:20.000Z (24 days ago)
- Last Synced: 2025-04-10T08:44:14.467Z (24 days ago)
- Topics: computation-model, computer-programming
- Language: Python
- Homepage:
- Size: 1.08 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# What is Computer Programming?
## Objectives
- Attempts to define a unified scientific discipline of computer programming independent of programming language implementations.## Definitions
- 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
- 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
- set of techniques for:
- reasoning about programs- 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:
## Dependencies
- [Docker](https://docs.docker.com/get-started/)
- [Mozart2](http://mozart2.org)## Setup Instructions
- The repository is configured to use [devcontainers](https://containers.dev) for development.
- [Developing inside a Container](https://code.visualstudio.com/docs/devcontainers/containers)## History
## Notation
## Tools
## State of the art
## Community
## Computer Programmers
## Spell Check
```shell
pipenv shell
``````shell
pyspelling -c spellcheck.yaml
```## References
- 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.# Legend
**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.