Programming Languages & Theory

0.0(0)
Studied by 0 people
call kaiCall Kai
learnLearn
examPractice Test
spaced repetitionSpaced Repetition
heart puzzleMatch
flashcardsFlashcards
GameKnowt Play
Card Sorting

1/199

encourage image

There's no tags or description

Looks like no tags are added yet.

200 Terms

1
New cards

internal fragmentation

allocated block larger than required

2
New cards

forward reference

an attempt to use a name before its declaration

3
New cards

dynamic scoping

bindings depend on flow of control at run-time

4
New cards

static scoping

bindings depend on text of program at compile-time

5
New cards

early binding time

bound before run time

6
New cards

shallow binding

choice made when reference finally used

7
New cards

deep binding

choice made when reference first created

8
New cards

binding lifetime

creation to destruction of a name-to-object association

9
New cards

elaboration

declarations become active when control first enters a scope

10
New cards

definition

describes object in sufficient detail for compiler to determine implementation

11
New cards

limited extent

destroyed at end of scope's execution

12
New cards

symbol table

dictionary mapping names to information the compiler knows about them

13
New cards

static

greater efficiency, compiler-based

14
New cards

late binding time

greater flexibility, interpreter-based

15
New cards

declaration

introduces a name and indicates its scope

16
New cards

information hiding

make objects and algorithms invisible to system portions that don't need them

17
New cards

first-class

passed as parameter, returned from subroutine, or assigned to variable

18
New cards

external fragmentation

space needed for request in multiple pieces

19
New cards

stack

storage region in which subblocks are allocated and deallocated in LIFO order

20
New cards

heap

storage region in which subblocks can be allocated and deallocated at arbitrary times

21
New cards

tail recursion

additional computation doesn't follow recursive call, so return value is what recursive call returns

22
New cards

nondeterminacy

allows the programmer to leave certain aspects of control flow deliberately unspecified

23
New cards

precedence

certain operators group more tightly by default than others

24
New cards

compound statement

delimited list of statements where a single statement is expected

25
New cards

normal-order evaluation

evaluating only when the value is actually needed

26
New cards

definite assignment

every possible control path to an expression must assign a value to every variable in that expression

27
New cards

enumeration-controlled

executed once for every value in a given finite set

28
New cards

statement

executed solely for side effects

29
New cards

logically controlled

executed until some Boolean condition changes value

30
New cards

speculation

executing a fragment of code optimistically, rolling back if needed

31
New cards

l-value

expressions that denote locations

32
New cards

r-value

expressions that denote values

33
New cards

initialization

give a value to a variable without a previous value

34
New cards

associativity

grouping direction for a sequence of equal-precedence operators

35
New cards

iterator

mechanism to loop through each element of a well-defined set

36
New cards

memoization

mechanism tracking which promises have already been evaluated

37
New cards

short-circuit

skips evaluation of second expression when overall Boolean value can be determined from first expression

38
New cards

goto

unstructured alternative to return, break, exit, exception

39
New cards

value model

variable is a named container for data

40
New cards

reference model

variable is a reference to a data object

41
New cards

strict name equivalence

aliased types considered distinct

42
New cards

loose name equivalence

aliased types considered equivalent

43
New cards

duck typing

an object has an acceptable type if it supports the requested method

44
New cards

universal reference type

arbitrary l-values can be assigned to this with no concern about type safety, but the compiler will not allow any operations to be performed on that object

45
New cards

conversion

changing a value of one type into a value of another

46
New cards

aggregate

composite literal

47
New cards

structural equivalence

consisting of the same components, put together in the same way

48
New cards

discrete

countable domain, well-defined notion of predecessor and successor

49
New cards

nonconverting type cast

interpret the bits of a value of one type as if they represented a value of some other type

50
New cards

type system

mechanism to define types and associate them with certain language constructs, and a set of rules for type equivalence, type compatibility, and type inference

51
New cards

coercion

performs a conversion automatically in certain contexts

52
New cards

strongly typed

prohibits the application of any operation to any object that is not intended to support that operation

53
New cards

abstraction-based view

regards types in terms of the operations they support

54
New cards

structural-based view

regards types in terms of their substructure

55
New cards

denotational-based view

regards types in terms of their values

56
New cards

enumeration

set of ordered named elements

57
New cards

ordinal value

small integer representing value of enumeration type

58
New cards

parametric polymorphism

taking a type (or set of types) as a parameter, either explicitly or implicitly

59
New cards

subrange

values compose a contiguous subset of some discrete base type's values

60
New cards

type clash

violation of the language's type compatibility rules

61
New cards

list comprehension

adapted from mathematical set notation; commonly with an expression, an enumerator, and one or more filters

62
New cards

persistent file

allows a program to read data that existed before the program began running, and to write data that will continue to exist after the program has ended

63
New cards

garbage

binding lifetime less than object lifetime

64
New cards

bit-vector representation

characteristic array; sometimes used to implement sets; doesn't work well for large base types

65
New cards

row-major

consecutive locations in memory hold elements that differ by one in the final subscript

66
New cards

column-major

consecutive locations in memory hold elements that differ by one in the initial subscript

67
New cards

conformant array

dynamic arrays as subroutine parameters, with shape fixed at subroutine call time

68
New cards

dope vector

holds shape information at run time

69
New cards

tracing collector

identifies useless blocks by recursively exploring all linked data in the program

70
New cards

reference count

keeps track of the number of pointers that refer to an object

71
New cards

dangling reference

object lifetime less than binding lifetime

72
New cards

packed

optimized for space instead of speed

73
New cards

smart pointer

program-level object (implemented on top of the language proper) that mimics the behavior of a pointer, but with additional semantics

74
New cards

slice

rectangular portion of an array

75
New cards

mark-and-sweep

recursively explores the heap, starting from external pointers, to determine what is useful

76
New cards

ragged array

rows with different lengths, without holes, enabled via row-pointer layout

77
New cards

stop-and-copy

technique performing storage compaction with overhead proportional to the number of nongarbage blocks

78
New cards

pointer reversal

technique used in heap exploration for garbage collection

79
New cards

generational collection

technique where garbage collector first examines the youngest region of the heap

80
New cards

temporary file

used for voluminous data within a single program run

81
New cards

closure

a reference to a subroutine, together with its referencing environment

82
New cards

caller

a subroutine performs its operation on behalf of this

83
New cards

display

allows access to objects in a scope k levels out in constant time

84
New cards

cactus stack

allows more than one coroutine to be declared in the same nonglobal scope, sharing access to objects in that scope

85
New cards

formal parameter

appears in the declaration of a subroutine; initialized by a variable or expression passed to the subroutine

86
New cards

prologue

code executed at the beginning of the subroutine itself

87
New cards

epilogue

code executed at the end of the subroutine itself

88
New cards

stack pointer

contains the address of either the last used location at the top of the stack, or the first unused location, depending on convention

89
New cards

context block

data structure representing a coroutine or thread

90
New cards

named

keyword-based correspondence between actual and formal parameters

91
New cards

static chain

maintained to access nonlocal variables in nested subroutines

92
New cards

leaf routine

makes no additional calls before returning

93
New cards

discrete event simulation

model naturally expressed in terms of interactions among various interesting objects that happen at specific times

94
New cards

default parameter

need not necessarily be provided by the caller; if missing, then a preestablished value will be used instead

95
New cards

positional

order-based correspondence between actual and formal parameters

96
New cards

control abstraction

principal purpose is to perform a well-defined operation

97
New cards

data abstraction

principal purpose is to represent information

98
New cards

frame pointer

register containing an address within the frame, used to access frame objects via displacement addressing

99
New cards

actual parameter

the caller passes this to influence subroutine's behavior, or provide it with data on which to operate

100
New cards

signal trampoline

used in typical implementation of spontaneous subroutine calls