Unit 5 Study Guide

  • Understand what names and variables are in the context of programming languages, and explain the difference between the two.
  • Recognize the conventions governing naming in programming languages.
  • State the difference between keywords and reserved words.
  • List and briefly define the six attributes of a variable.
  • Distinguish between l-value and r-value uses of a variable.
  • Explain the basic concept of a binding and explain why binding times are relevant to variables. Give examples of important bindings and binding times.
  • Distinguish between static and dynamic bindings.
  • Distinguish between static and dynamic typing, and explain their relative advantages and disadvantages. Give examples of languages in either category.
  • Explain what memory allocation is and how it relates to a variable's lifetime.
  • Distinguish the four variable lifetime categories: static, stack-dynamic, explicit heap-dynamic, and implicit heap-dynamic. Give examples of variables with each of the four variable lifetime categories.
  • Describe the regions where memory is allocated for each of the four variable lifetime categories.
  • Explain the difference between static and dynamic scoping, and how these concepts relate to syntactic blocks and runtime call stacks.
  • Define a statement's referencing environment.
  • Explain the utility and advantages of named constants.