sandbox/uc/hs-simple/meaning.md

1.7 KiB

-- # The Meaning of Programs

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