55 lines
1.3 KiB
Markdown
55 lines
1.3 KiB
Markdown
---
|
|
type: theoretical
|
|
ty:
|
|
---
|
|
|
|
## The foundations of computation
|
|
Looking for answers for basic questions like:
|
|
- Computability?
|
|
- Power $\leftrightarrow$ Programming constructs?
|
|
|
|
Which leads us to fundamental concepts like:
|
|
- State
|
|
- Transitions
|
|
- Non-determinism
|
|
- Undecideability
|
|
|
|
|
|
## Models
|
|
### Finite memory
|
|
Finite automata, regexp
|
|

|
|
### Finite memory with stack
|
|
Push down automata
|
|

|
|
### Unrestricted
|
|
Turing machines
|
|
|
|

|
|
|
|
|
|
|
|
## Grammars
|
|
|
|

|
|
|
|
|
|
On a higher level, it seems like grammars and machines are very different, but parsing a language (a set of strings) is quite similar to computation.
|
|
|
|
## State-based systems and glossary
|
|
An FSM can be a specification for OOP.
|
|
|
|
- States ($q_0,\ldots, q_n$)
|
|
- Transitions ($a,b,c,\ldots,z$)
|
|
- We can interpret the transitions as class methods and specify the sequences of allowed invocations - **typestate**
|
|
|
|
|
|
|
|
## Notation
|
|
- $x \in X, X\subseteq Y$
|
|
- $\forall x \in X: P(x), \exists x \in X: P(x)$
|
|
- $R \subseteq X \times Y$ is a relation between $X$ and $Y$
|
|
- $xRy \equiv (x,y) \in R$
|
|
- $G = (V, E)$, where $E \subseteq V\times V$ is a directed graph
|
|
|
|
Part of [Relations and Digraphs](Relations%20and%20Digraphs.md) |