program (text)
| NAMES (form)
|
«A name is a mnemonic character string used to represent something else ... »
«Names allow us to refer to variables, constants, operations, types, and so on
using symbolic identifiers rather than low-level concepts like addresses. »
[PLP 105f]
| |
NB «Names are also essential in the context of a second meaning of the word abstraction »
-> name
Sub-domains by mixed syntactic & semantic criteria:
|
| IDENTIFIERS | |
alphanumeric
predefined ("keyword") + user-definable
|
| | OPERATORS | |
non-alphanumeric
predefined + (in some PLs:) user-definable
|
|
| NUMERALS | |
numeric
predefined, more or less standard
|
| | LITERALS | |
nearly all ASCII characters
stand - save quotes & escapes - for themselves
|
|
|
|
environment
bind
| ing
| |
| |
bound-to
refer-to
represent
symbolize
denote
mean
|
«A binding is an association between two things,
such as a name and the thing it names »
[PLP 106].
Bindings can be
predefined,
explicitly specified by declarations in the program,
implicitly by the (first) use of a name.
| \| | /
| |
binding time, scope, ...
| | |
| |
ambiguitities ...
| | |
| | |
|
|
system
| DENOTABLES
| |
= the (semantic) domain of things to which NAMEs can refer
(cf. in linguistics "relata")
| |
Comprises three sub-domains:
| | MEMORY OBJECTS [PLP]
| Denotables represented in memory at runtime
(values, variables, subroutines, ...)
static objects with fixed absolute addresses
stack objects with nested lifetimes
(allocated in FIFO order in parallel to control-flow into and out of blocks)
heap objects with arbitary lifetimes
(destruction by user or by garbage collection)
 first-class value
| |
| CONCEPTUAL RELATA
| | Static semantic domains
without memory representation
(how did [PLP] call them?):
types, modules, namespaces/ environments,
goto labels, record labels, ...
|
EFFECTS [Ulf]
| The dynamic semantic domains
(classes of actions in the PL's model of computation,
in the behavioral repertoir of the PL's virtual machine)
to which names like
:=,
return, throw, break,
etc. are bound:
memory update,
subroutine return,
exception raising,
loop exiting, ...
| |
|
|