vault backup: 2025-04-14 19:38:20
This commit is contained in:
55
Languages & Machines/Introduction.md
Normal file
55
Languages & Machines/Introduction.md
Normal file
@ -0,0 +1,55 @@
|
||||
---
|
||||
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)
|
Reference in New Issue
Block a user