An open API service indexing awesome lists of open source software.

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.

Awesome Lists containing this project

README

        

# What is Computer Programming?
![build status](https://github.com/praisetompane/computer_programming/actions/workflows/computer_programming.yaml/badge.svg)

## 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.