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