Ulf's  >  PLD  >          >      related: 
                       
  Names      Spelling    Binding    ^Domains      Variables      
     
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
  • -->spelling of names
    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, ...

    program  DEFINITIONS -> binding
    Bind a name to a denotable.
     
    program  SCOPES -> binding
    a. The textual region in which a binding is active.
    b. A program region of maximal size in which no bindings change (eg. a module).
    Ulf Schünemann; ulf@cs.mun.ca; 031004