Concepts of Programming Languages

(Sean Pound) #1

778 Index


Concurrency (continued)
cooperation synchronization in,
586–589, 591–592
cooperation synchronization in,
Ada, 599
cooperation synchronization in,
Java, 608–611
design issues for, 585–586
explicit locks in, Java 5.0,
612–613
in F#, 620–621
in functional languages,
618–621
in High-Performance Fortran,
621–623
introduction to, 21, 576–581
in Java threads. see Threads
language design for, 585
message passing in, 593–594
monitors in, 591–593
in Multilisp, 618
multiprocessor architectures
in, 577–579
nonblocking synchronization
in, 612
protected objects in, 602–603
reasons for using, 580–581
semaphores in, 586–590, 607
statement-level, 621–623
subprogram-level, 581–586
synchronizing threads in,
616–617
synchronous message passing
in, 593–594
task priorities in, 601–602
task termination in, 601
thread priorities in, 606–607
Concurrent Pascal, 591
Concurrent ML (CML), 619
Conditional expressions, 325, 708
Conditional targets, 337
Conjunctions, 738
CONS function, 688–694
Consequents, 149, 731–732
const constants, 233


Constrained variant variables,
285–287
Constraint_Error
exceptions, 639–642
Constructors, 487
Context-free grammars, 117–118
Continuation, 634–635
Control expressions, 350
Control flow, 685–686
Control statements, 348
Control structures, 349
Cooper, Alan, 66
Cooper, Jack, 82
Cooperation synchronization
in Ada, 599
in concurrency, 586–589
introduction to, 581–585
in Java, 608–611
with monitors, 591–592
with semaphores, 586–589
Coroutines, 73, 432–435
Costs of languages, 16–18
Counter-controlled loops, 363,
367–368
in Ada, 364
in C-based languages,
364–366
in functional languages,
367–368
in Python, 366–367
Cox, Brad, 90
CPUs (central processing units),
18–19
CSP (Communicating Sequential
Processes), 597
Currie, Malcolm, 81
Currying, 706
Cut Prolog, 752–753

D
Dahl, Ole-Johan, 72–73
Dangling pointers, 292–293
Dangling references, 294
Data abstraction. see Abstraction
Data members, 486, 539

Data structures, 371–375
Data types
array. see Array types
associative array, 272–276
boolean, 249
character, 249–250
character string, 250–255
complex, 248
decimal, 248–249
equivalence in, 304–308
floating point, 247–248
integer, 246–247
introduction to, 12, 244–246
in LISP, 677–678
list, 281–284
numeric, 246–249
ordinal, 255–258
pointer, 289–295, 297–302
primitive, 246–250
problem set on, 314–315
programming exercises on,
315–316
record, 276–280
reference, 290, 295–302
review questions on, 312–313
string length options in,
252–253
string operations in,
250–252
strong typing, 303–304
summary of, 310–311
theory and, 308–310
tuple, 280–281
union, 284–289
Dead tasks, 584
Deadlocks, 585
Deallocation, 214, 532–533
Decimal data types, 248–249
Declaration order, 223–224
Declarative languages, 728,
734–735
declare blocks, Ada, 263
Decorating parse trees, 137
Decrement fields, 687
Deep access, 462–464
Free download pdf