sandbox/uc/hs-simple/programs_and_machines.lhs

47 lines
1.5 KiB
Plaintext

What is computation? what a computer does.
computation environment:
* machine
* language
* program
Fundamentally, programming is about ideas: a program is a snapshot of
an idea, a codification of the mental structures of the programmer(s)
involved.
== The Meaning of "Meaning"
/semantics/ is the connection between words and meanings: while "dog"
is an arrangment of shapes on a page, an actual dog is a very separate
things. Semantics relates concrete signifiers and abstract meanings,
and attempts to study the fundamental nature of the abstract meanings.
_Formal semantics_ is the attempt at formalising the meanings of
programmings, and using this formalisation to reason about
languages. In order to specify a programming language, we need to
define both its /syntax/ (the representation) and its /semantics/ (the
meaning).
Most languages lack a formal specification and opt to use a canonical
reference implementation. An alternative is to write a prose
specification, which is the approach of C++. A third approach is to
mathematically specify the language such that automated mathematical
analysis can be done.
=== Syntax
The language's syntax is what differentiates valid examples of code like
> y x = x + 1
from nonsense like `$%EHI`. In general, a parser reads a string (like
"y x = x + 1") and turns it into an /abstract syntax tree/. Syntax is ultimately only concerned with the surface appearance of the program
=== Operational Semantics
A practical means of thinking about the meaning of a program is /what it does/.