26
Appendices

Appendices - EECS at UC Berkeleybh/pdf/v3ch07.pdf · Pascal User Manual and Report, should Essentials of Programming Languages, ... This is the official report of the international

  • Upload
    lamcong

  • View
    214

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Appendices - EECS at UC Berkeleybh/pdf/v3ch07.pdf · Pascal User Manual and Report, should Essentials of Programming Languages, ... This is the official report of the international

Appendices

Page 2: Appendices - EECS at UC Berkeleybh/pdf/v3ch07.pdf · Pascal User Manual and Report, should Essentials of Programming Languages, ... This is the official report of the international
Page 3: Appendices - EECS at UC Berkeleybh/pdf/v3ch07.pdf · Pascal User Manual and Report, should Essentials of Programming Languages, ... This is the official report of the international

341

Bibliography

This book is a little like the previews of coming attractions at the movies; it’s meant towhet your appetite in several directions, without giving you the complete story aboutanything. To find out more, you’ll have to consult more specialized books on each topic.

There are a lot of books on computer programming and computer science, andwhichever I chose to list here would be out of date by the time you read this. Instead oftrying to give current references in every area, in this edition I’m listing only the few mostimportant and timeless books, plus an indication of the sources I used for each chapter.

Computer science is a fast-changing field; if you want to know what the current hotissues are, you have to read the journals. The way to start is to join the Associationfor Computing Machinery, 1515 Broadway, New York, NY 10036. If you are a full-timestudent you are eligible for a special rate for dues, which as I write this is $25 per year. (Butyou should write for a membership application with the current rates.) The Associationpublishes about 20 monthly or quarterly periodicals, plus the newsletters of about 40Special Interest Groups in particular fields.

Page 4: Appendices - EECS at UC Berkeleybh/pdf/v3ch07.pdf · Pascal User Manual and Report, should Essentials of Programming Languages, ... This is the official report of the international

Read These!

Chapter 1: Automata Theory

Structure and Interpretationof Computer Programs,

Godel, Escher, Bach: an Eternal Golden Braid,

Computation: Finite and Infinite Machines,

342 Bibliography

If you read no other books about computer science, you must read these two. One isan introductory text for college computer science students; the other is intended for anonspecialist audience.

Abelson, Harold, and Gerald Jay Sussman with Julie Sussman,MIT Press, Second Edition, 1996.

The introductory computer science text at MIT, this book uses Lispas the vehicle for an intense study of everything from data structuresto machine architecture. Although it’s not a book about artificialintelligence as such, this is the definitive presentation of the artificialintelligence view of what computer science in general is about, and thebest computer science book ever written.

Hofstadter, Douglas R., Basic Books, 1979.

This book won the Pulitzer Prize for its success in explaining to readerswho aren’t computer scientists some of the deepest ideas of computerscience, and it makes a strong case for the view that those ideas also havea lot to teach us about human intelligence.

The reference I used in thinking about this chapter was

Minsky, Marvin, Prentice-Hall, 1967.

Part of the interest of this particular text is that its author is a leadingfigure in artificial intelligence research, and so the question of whetherthe insights of automata theory apply also to human intelligence is alwaysvisible as a motivating force in the presentation of the theory. Minsky’sbibliography will refer you to the original papers by Turing, Kleene,Church, and so on as well as some left-field references to biologicalinformation processing from people like Lettvin and McCulloch.

Page 5: Appendices - EECS at UC Berkeleybh/pdf/v3ch07.pdf · Pascal User Manual and Report, should Essentials of Programming Languages, ... This is the official report of the international

Chapter 2: Discrete Mathematics

Elements of Discrete Mathematics,

What Is the Name of This Book?The Lady or the Tiger?5000 B.C. and Other Philosophical Fantasies,Alice in Puzzle-Land,

Chapter 2: Discrete Mathematics 343

This chapter touches on several topics. An overall introduction for computer scientists is

Liu, Chung Laung, McGraw-Hill, Second Edition, 1985.

This book requires no advanced mathematical background, but it doesrequire that the reader feel comfortable with mathematical notation andthe notion of formal proof. The topics include both purely mathematicalones, like set theory, combinatorics, and modern algebra, and relatedcomputer science ones like computability, formal languages, automatatheory, analysis of algorithms, and recursion. This list is not unlike theone in the book you’re reading now, and in fact Professor Liu expressesa goal similar to mine: to show computer science undergraduates therelevance of mathematics to their work. The difference is that I useactual programs to illustrate the ideas whenever possible, whereas his isa “straight” math book. (Of course another difference is that he treatsall these topics in much more depth. But don’t be scared away; he startssimply.)

On the topic of mathematical logic, there is a range of books that vary in accessibility.Among the most pleasant are

Smullyan, Raymond, Prentice-Hall, 1978—, Knopf, 1982—, St. Martin’s, 1984—, Penguin, 1984.

These are books of puzzles based on logic, but they go beyond the simplepropositional inference puzzles like the one in the text. Smullyan startswith some of the classic puzzle categories, like the Liars and Truth-Tellers puzzle, and builds up to an exposition in puzzle form of topicslike self-reference, modal logic, and Godel’s Theorem.

“Logic programming” is the use of mathematical logic formalisms as a programminglanguage. It is also called “declarative programming” because instead of issuing com-mands to the computer, the programmer makes statements about things known to betrue. The algorithm by which the programming system makes inferences from thesestatements is not explicitly provided by the programmer, but is built into the language.

Page 6: Appendices - EECS at UC Berkeleybh/pdf/v3ch07.pdf · Pascal User Manual and Report, should Essentials of Programming Languages, ... This is the official report of the international

Chapter 3: Algorithms and Data Structures

Beginning Micro-Prolog,

Programming Pearls,

Com-munications

344 Bibliography

The most widely known logic programming language, although not the only one, isProlog. An accessible introductory text is

Ennals, Richard, Harper & Row, Second Edition, 1984.

I list this book here because it’s a Prolog text and therefore relevantto mathematical logic, but for me the main interest of the book is thatit argues for the use of Prolog in teaching kids, as an alternative toLogo. The book gives examples of logic programming at work in variouscurriculum areas.

To a software engineer, the issues in this chapter are among the central ones in computerscience. That’s not my own way of thinking, so it’s possible that my presentation doesn’tgive the field all the pizazz that an enthusiast would manage. To compensate for that,you should read

Bentley, Jon, Addison-Wesley, 1986.

This is a collection of monthly articles written by Bentley for theof the Association for Computing Machinery. It requires

virtually no formal mathematics and is extremely readable. If the bookhas a moral, it’s “Think first, program later.” It makes its case with anumber of true-to-life examples of projects in which orders of magni-tude were saved in the execution time of a program by rethinking itsfundamental structure.

Page 7: Appendices - EECS at UC Berkeleybh/pdf/v3ch07.pdf · Pascal User Manual and Report, should Essentials of Programming Languages, ... This is the official report of the international

Chapter 4: Programming Language Design

Chapter 5: Programming Language Implementation

Chapter 6: Artificial Intelligence

Structure and Interpretation ofComputer Programs,

Pascal User Manual and Report,

should

Essentials of ProgrammingLanguages,

Language as a Cognitive Process, Volume 1: Syntax,

Chapter 6: Artificial Intelligence 345

There are textbooks in “comparative programming languages,” but I’m going to stick tothe strategy of the chapter by using Pascal as the example.

one of my must-reads, will be useful as a contrast here, giving the Lisppoint of view.

Jensen, Kathleen, and Niklaus Wirth, Springer-Verlag,Third Edition, 1985.

This is the official report of the international committee responsible forthe design of the language. The book has two parts, a reference manualand the committee report itself. The latter includes some explicitdiscussion of the design decisions in the language.

I really didn’t have a reference for this chapter; I just sort of forged ahead on my own!But here’s the book I have read first:

Friedman, Daniel P., Mitchell Wand, and Christopher T. Haynes,MIT Press, 1992.

This book uses the Scheme dialect of Lisp as the basis for a study ofprogramming language interpreters. It’s harder reading than most ofthe books in this bibliography, but it encourages the reader to think verydeeply about how programming languages work.

I’ll list two references here; one on language understanding in general and one thatcontains a paper about the Student program specifically.

Winograd, Terry, Addison-Wesley, 1983.

A planned second volume on semantics was not published. This is atechnically meaty book, but considering its depth it is quite readable.

Page 8: Appendices - EECS at UC Berkeleybh/pdf/v3ch07.pdf · Pascal User Manual and Report, should Essentials of Programming Languages, ... This is the official report of the international

Computers and People

Semantic Information Processing,

The Second Self: Computers and the Human Spirit,

Computer Power and Human Reason: From Judgment to Calculation,

346 Bibliography

The book strikes a good balance among technical programming issues,psychological issues, and the ideas of mainstream linguistics. It includesan extensive bibliography. When I attended Terry’s course at Stanfordin which he first presented the material that became this book, it was thefirst time I experienced a course that ended with a standing ovation forthe instructor. The book shows the same clarity of explanation and thesame enthusiasm.

Minsky, Marvin L., MIT Press, 1969.

This is a collection of early research reports. I include it here becauseone of its chapters is a paper by Bobrow on STUDENT, and you won’tbe able to find the more complete description in Bobrow’s unpublishedthesis. Other chapters describe similar microworld-strategy projects ofthe same vintage.

Last but far from least, some of the most fascinating reading connected with computerscience is found outside of the technical literature, in the reactions of psychologists,philosophers, and sociologists to the computer as a social force. You owe it to yourself tounderstand the human context of your work; you owe it to everyone else to be stronglyaware of the social implications of what you do.

Turkle, Sherry, Simon and Schuster, 1984.

A sociologist’s view of the computer culture, this book explores both thepsychology of computer experts and the ways in which a computer-richenvironment has changed the thinking of non-experts not only abouttechnology but about what it means to be human.

Weizenbaum, Joseph, W.H. Freeman, 1976.

Weizenbaum is a computer scientist, and this book is in part a technicalargument about the limitations of what computers can do. But it is moreimportantly a call to computer scientists to take responsibility for theuses to which their inventions are put. Weizenbaum argues that there

Page 9: Appendices - EECS at UC Berkeleybh/pdf/v3ch07.pdf · Pascal User Manual and Report, should Essentials of Programming Languages, ... This is the official report of the international

shouldn’t can

What Computers Still Can’t Do: A Critique of Artificial Reason,

The Psychology of Computer Programming,

Computers and People 347

are things we do with computers, even if we learn how toovercome the technical obstacles. Computer-based weapons of war arean obvious example, but Weizenbaum is also worried about things likeautomated psychotherapy, which was just a daydream when the bookappeared but has since become a reality to a limited extent. Manycomputer scientists find this book offensive, and it is certainly possibleto find flaws in the details. But the critics rarely present an alternativewith an equally strong social conscience.

Dreyfus, Hubert L., MIT Press,1992.

Dreyfus is a philosopher who uses the phenomenological ideas of Hei-degger and others to suggest a fundamental flaw in the assumptions AIresearchers make about human intelligence. To try to sum it up in onesentence, the sort of thinking that people do in solving a puzzle is verydifferent from the much more profound intelligence we use in carryingout our more customary activities. AI programs mimic the former butnot the latter. This is a revision of an earlier book, taking into accountmore recent developments in AI research.

Weinberg, Gerald M., Van Nostrand Reinholt,1971.

This book studies programming as a social activity, programming as anindividual activity, and the programming environment. In my opin-ion, its main contribution is the idea of “egoless programming,” whichmeans more or less that when your friend finds that impossible bug inyour program for you, you should feel happy rather than threatened.Weinberg offers several good ideas for how to act as part of a program-ming community. On the other hand, I’m less enthusiastic about hismanager’s-eye view of the programmer as a cog in the machine, ratherthan as a creative artist. But overall I think this book is well worthreading; it’s also entertainingly written.

Page 10: Appendices - EECS at UC Berkeleybh/pdf/v3ch07.pdf · Pascal User Manual and Report, should Essentials of Programming Languages, ... This is the official report of the international
Page 11: Appendices - EECS at UC Berkeleybh/pdf/v3ch07.pdf · Pascal User Manual and Report, should Essentials of Programming Languages, ... This is the official report of the international

Credits

The Second Self: Computers and the Human Spirit

Mind Benders B–2

The Dell Book of Logic Problems #4.

Natural Language Input for a Computer ProblemSolving Program

Mindstorms: Children, Computers, and Powerful Ideas

Language as a Cognitive Process, Volume 1: Syntax

349

Material on page xiv quoted from bySherry Turkle. Copyright 1984 by Sherry Turkle. Reprinted by permission of Simon& Schuster, Inc.

Material on page 48 quoted from by Anita Harnadek. Copyright1978 by Midwest Publications (now called Critical Thinking Press, Box 448, Pacific Grove,CA 93950). Reprinted by permission of the publisher.

Material on page 53 by Diane C. Baldwin quoted fromCopyright 1989 by Dell Publishing, a division of Bantam Doubleday Dell PublishingGroup, Inc., reprinted by permission of Dell Magazines.

Material on pages 279 and 294 quoted fromby Daniel G. Bobrow (unpublished Ph.D. thesis). Copyright 1964 by

Daniel G. Bobrow. Reprinted by permission of the author.

Material on page 295 quoted fromby Seymour Papert. Copyright 1984 by Basic Books, Inc., publishers. Reprinted bypermission of the publisher.

The illustration on page 313 quoted fromby Terry Winograd. Copyright 1983 by Addison-Wesley Publishing Company, Inc.Reprinted by permission of the publisher.

Page 12: Appendices - EECS at UC Berkeleybh/pdf/v3ch07.pdf · Pascal User Manual and Report, should Essentials of Programming Languages, ... This is the official report of the international
Page 13: Appendices - EECS at UC Berkeleybh/pdf/v3ch07.pdf · Pascal User Manual and Report, should Essentials of Programming Languages, ... This is the official report of the international

A B

C

351

Index of Defined Procedures

This index lists example procedures whose definitions are in the text. The general indexlists technical terms and primitive procedures.

335335

335335336

336336

336

33136

36140, 141, 155

193318

317318

318318

336336

336143, 157

25742

256255

4337

393737

332

144, 158158

31736

257316

333181

9943

316315

316

#gather#test#test2&test@test@[email protected]^test

absacceptacceptpartaddchildaddnumbersageifyageprobagepronagesenagewhenalwaysanyofanyof1areacodearglistarray.save

arraysizearraytypearrow.stubarrowheadarrows.from.startarrowtailarrowtextarticle

balancebalance1bkt1blankblockbodybracket

capcardscategorychange.headchangeonechangeschanges1

Page 14: Appendices - EECS at UC Berkeleybh/pdf/v3ch07.pdf · Pascal User Manual and Report, should Essentials of Programming Languages, ... This is the official report of the international

D

E

F

G

H

352 Index of Defined Procedures

31631641

263136, 141, 155

93, 104133, 135, 137, 157

157143, 157

102270

265249, 265

75, 76, 104270

25840

26657, 102

136, 141, 155182

325315

4058, 100

10036

325326

326332

64, 101206276

273273

27378, 104

224

320

93, 105, 16479, 104, 162, 163

162326

326326

10059, 99

63, 103138, 157316

316100

315100

4362, 103

274274

274274

3535

3536

241, 256

35101

215, 272331

273273

120

34170

changes2changes3check.ndcheck.typechildrenchoosecitiescities1citycleanupcodecodeloadcodestorecombscommalistcompoundcopy.to.acceptscopyarraycub.reporter

datumdeckdenomdepunctdeterminedifferdiffer1displaydistribtimesdistribxdivtermdlm

equivexchexitexp.modeexp.typeexp.valueexpandexpression

expt

ffactfact.seqfactorfactor1factor2falsesfalsifyfemalefinddatumfinddelimfinddelim1findfalsefindkeyfindtruefix.arrowsfoote.familyframe.outerframeframe.prevframeframe.retaddrframe.save.newfpfsmfsm1fsmnextfsmtestfunction

gamegetgetchargeteqnsgetidgettypeguess.middle.value

haltphanoi

Page 15: Appendices - EECS at UC Berkeleybh/pdf/v3ch07.pdf · Pascal User Manual and Report, should Essentials of Programming Languages, ... This is the official report of the international

I

J

L

M

N

Index of Defined Procedures 353

112145, 159

116, 155

255273

273273

315222

22247, 61, 101

101336

19741

194

276276

275276275

63, 100101

315138, 156

137, 156138, 156

116, 15542

272264

265143, 158

333272

133, 135, 137, 156

133, 135, 137, 157157

88, 105105105

145, 159

3737

3643

63, 103333

335335335335336336

326327

206265

266327

17036

195221, 270

403838

3939

257276

272270

4040

haspairhighbranchhowmany

idid.lnameid.pointerid.typeidiomsifbeifbeelseimpliesimplies1inincrementinsertIntSquare

jaljrjumpjumpfjumptjustbeforejustbefore1

last2leafleafpleaveslessthanpletter.joinletterplindexlindex1listcitylsaylnamelocate

locate.in.forestlocate1locklock1lock2lowbranch

machinemake.arrowmake.machinemake.stubmalematchmatch!match#match&match?match@match^maybeaddmaybemulmedianmemaddrmemsetupminusinmovediskmovepartmultimustbe

nd.traversendconcatndletterndmanyndornewargnewlinenewlnamenewregisternewstatenewtail

Page 16: Appendices - EECS at UC Berkeleybh/pdf/v3ch07.pdf · Pascal User Manual and Report, should Essentials of Programming Languages, ... This is the official report of the international

O

P

354 Index of Defined Procedures

256265

115, 154, 164322

316246, 263

22, 38272

269

327265

273273

332332333

320333

320320

253320

4243

39

264334

248, 262248, 263246, 263

263269

269229, 267

26910079, 104

332228, 267

267229, 267

259269

262268

267220, 222, 245, 258

263254

333268

229, 267332

229, 268259

260330

330263

334258

241, 257260

260261

241, 256261

254254

332274

275120, 121, 123, 154, 205

155264

264276

276276

276276

259261

261

newvarnextindexnextrownmtestnocapnoimmediatenondetnumbernumtype

occvaroffsetop.instrop.nargsop0op1op2opdiffoperatorpopformopremopsetupoptestoptimizeoptimize.stateor.splice

parrayassignparse.specialpassignpassign1pbooleanpcharpchardatapchecktypepclosepdatapeerspermspersonppexpr

pexpr1pexproppforpfuncallpfunsetpgetbinarypgetunarypifpintegerplibrarypluralpnewtypepopenpossproppopoppproccallpproccall1pranspranswersprealprematchprepeatproc1procargprocargsprocarrayargprocedureprocvarargprogramprogram1pronounprunprun1psortpsort1pstringassignpstringassign1putchputintputrealputstrputtfpwhilepwritepwrite1

Page 17: Appendices - EECS at UC Berkeleybh/pdf/v3ch07.pdf · Pascal User Manual and Report, should Essentials of Programming Languages, ... This is the official report of the international

Q

R

S

Index of Defined Procedures 355

262262

262

319108, 109, 153

336332

255256

272193194

113, 153, 195274

274274

274270

36327

327327

118271

110275

334331275

33360, 103

318319

334334

264

33359, 99

100205181

182328328

93, 10693, 105, 115, 154, 164, 166

165328

328329329

329333

271127

76, 77, 10484, 105102

322323

102, 323324

325325

325325

324324

324324

324324

32341, 206

276334

39194, 321

118, 154154

36

pwrite2pwrite3pwriteln

qsetquadraticquotedqword

rangerange1rc1readnumberRealSquarerealtreg.globalptrreg.retaddrreg.stackptrreg.zeroregfreerejectremfactorremfactor1remopremove.oncereservedpreverserloadrmatchroundoffrunsetup

saysayssenformsenform1set.inset.specialsetindex

setminussettruthsettruth1showdatashowdeckshufflesimdivsimonesimpsimplexsimplex.seqsimplussimplus1simplus2simtimessimtimes1singularskipcommentslowsortsockssocktestsolutionsolvesolve.reducesolve1solveqsolveq.minussolveq.productsolveq.product1solveq.quotientsolveq.rplussolveq.sumsolveq.sum1solveq.sum2solveq1solveqbothsolversortspacesspecialsplicesquaressortssort1startpart

Page 18: Appendices - EECS at UC Berkeleybh/pdf/v3ch07.pdf · Pascal User Manual and Report, should Essentials of Programming Languages, ... This is the official report of the international

T

U

V

W

X

356 Index of Defined Procedures

220, 258101, 275

38, 27138

26442

444443

314314

329329330330

115, 154, 164

97, 106, 112, 113, 153, 195265

322275

216, 271272

170137, 141, 155

145, 158158

34336332

256322

321320

320321

321320

320321322

321321

321321

321322

320217, 271

89, 105256

331

332255

331255

330331

331332

58, 99

132, 135, 138, 139, 156

60, 101

statementstorestringstringastringlosestub.addstub.arrowstub.headstub.textstudent1student2subordsubord1substopsubtermsumprods

ttargetaddrthistobooltokentoken1towertreetreecitytreecity1trytry.predtryidiomtryprocparttrysolvetst.differencetst.divbytst.lessthantst.minustst.minusstst.numoftst.pertst.percenttst.perlesstst.plustst.pluss

tst.squaretst.squaredtst.sumtst.timestst.tothepowertwochartwototypecheck

unitstring

varequalvargroupvarkeyvarpartvartermsvartestvartest1verbverify

worldtree

xor

Page 19: Appendices - EECS at UC Berkeleybh/pdf/v3ch07.pdf · Pascal User Manual and Report, should Essentials of Programming Languages, ... This is the official report of the international

A

B

357

begin

∀∧¬∨⊗Σ→

General Index

This index lists technical terms and primitive procedures. There is also an index ofdefined procedures, which lists procedures whose definitions are in the text.

67464646689146

Abelson, Harold ix, xvii, 342accepting state 4access, random 148actual argument 176adder 71adder, finite-state 25address 147, 231age problem 281, 290aggregate type 187algebra word problems 278algorithm 15, 107, 294algorithm, two-stack 225algorithms, analysis of 107allocation, dynamic 148alphabet rule 11, 16alternatives rule 11, 19ambiguous 217

analysis of algorithms 107analysis, lexical 215Anderson, Chris xviiAPL 224apprenticeship xiargument, actual 176array 181, 187, 199array, packed 188, 189artificial intelligence 277assembly language 231assignment statement 178, 180, 195Association for Computing Machinery 341association list 287ATN 312augmented transition network 312automata theory 1, 309

background 300backtracking 65balanced tree 146balancing parentheses 13, 28Baldwin, Diane C. 53BASIC 196Beatles 46

(Pascal) 175

Page 20: Appendices - EECS at UC Berkeleybh/pdf/v3ch07.pdf · Pascal User Manual and Report, should Essentials of Programming Languages, ... This is the official report of the international

C

D

Boolean

char

358 General Index

Bentley, Jon 344bibliography 341binary computer 69binary number 25, 88binary operator 223binary search algorithm 143binary tree 132, 144binding, call by 199binomial coefficient 82bit 26, 28, 71block structure 166, 177Bobrow, Daniel G. xvii, 278

(Pascal) 187bottom-up 175bound reference 184branch node 132byte 147, 188

C 225CAI, intelligent 294call by binding 199call by reference 197, 198call by value 197, 198call, procedure 178category 49

(Pascal) 187checking, compile-time 223Chinese food 46circuit, integrated 230Clancy, Michael xviiclosed form definition 80, 98code generation 211, 245coefficient, binomial 82coefficient, multinomial 94cognitive science 278Colby, Kenneth 31combination 74, 79combination lock 74, 86combinatorics 72common subexpression elimination 109community xvcompile-time checking 223compiler 172

compiler compiler 219, 224compiler, incremental 174compiler, optimizing 109compiler, Pascal 209complexity ixcomposition of functions 162compound proposition 46compound statement 177computer assisted instruction 294computer center xvcomputer hardware 69computer logic 71computer science ixcomputer, binary 69concatenation rule 11, 17conditional statement 177constant string 189constructor 137context, limited 278context-free language 310continuous function 45contradiction, proof by 34contrapositive rule 61correctness 107correspondence, one-to-one 89counting problem 45

data structure 107, 129data type 187Davis, Jim xviideclaration part 176declarative knowledge 16declarative programming 168declarative programming languages 16declarative representation xdefinition, closed form 80, 98definition, formal 211definition, inductive 80, 91, 94, 112definition, recursive 12descent, recursive 220deterministic grammar 219directed graph 22discrete mathematics 45

Page 21: Appendices - EECS at UC Berkeleybh/pdf/v3ch07.pdf · Pascal User Manual and Report, should Essentials of Programming Languages, ... This is the official report of the international

E

F

G

H

General Index 359

end

first

for

function

Dreyfus, Hubert L. 347dyadic 224dynamic allocation 148dynamic environment 184, 241dynamic programming 115dynamic scope 184, 185, 197, 198, 242

economics xiveditor, text 9, 169education 294effective procedure 31efficiency 107elementary function 80elimination rule 50embedding 310

(Pascal) 175engineering, knowledge 278English 278Ennals, Richard 344enumerated type 191environment, dynamic 184, 241environment, lexical 184, 198, 241equation 281, 285equivalence relation 68ethics xivexclusive or 68expansion, multinomial 112experimental method 83expert system 278exponential 129expression 223expression, regular 11, 15, 211extensibility 181external memory 30

factorial 79fence 205Fermat, Pierre de 82finite-state adder 25finite-state machine 3, 15, 213, 309

110

food, Chinese 46forest 133formal definition 211formal parameter 176formal thinking ix

(Pascal) 178, 181, 183frame pointer 236frame, stack 235free reference 184, 185Friedman, Daniel P. 345function, continuous 45function, elementary 80function, generating 81, 98function, predicate 67function, sine 81function, truth-valued 46, 67functional programming 162functions, composition of 162

(Pascal) 194

gate 69general knowledge 300generated symbol 141, 239, 293, 304generating function 81, 98generation, code 211, 245global optimization 111global pointer 235Goldenberg, Paul xviigrammar, deterministic 219grammar, predictive 219graph 22graph, directed 22graphics xiii

half-adder 70halting state 31halting theorem 32Hanoi, Tower of 169hardware, computer 69Harnadek, Anita xvii, 48hash table 130

Page 22: Appendices - EECS at UC Berkeleybh/pdf/v3ch07.pdf · Pascal User Manual and Report, should Essentials of Programming Languages, ... This is the official report of the international

I

J

K

L

360 General Index

if

integer

last

load

Haynes, Christopher T. 345heap 131heapsort 131heuristic 294, 298hierarchy 131, 146hierarchy, syntactic 213Hilfinger, Paul xviiHoare, C. A. R. 125Hofstadter, Douglas R. 342

(Pascal) 221immediate 232implication rule 60incremental compiler 174independent 72index register 235index variable 205individual 49induction, mathematical xinductive definition 80, 91, 94, 112inference system 47inference, rules of 47infinite loop 32infinite set 89insertion sort 119instruction, computer assisted 294integers, sum of the 119

(Pascal) 187integrated circuit 230intellectual property xvintelligence, artificial 277intelligent CAI 294interactive language 169intermediate language 173internal state 30interpreter 172intractable 129inverter 69Iverson, Kenneth E. 224

Jensen, Kathleen 345

joke 112

keyword 219Kleene, Stephen C. 16knowledge engineering 278knowledge representation 309knowledge, declarative 16knowledge, general 300knowledge, procedural 16Knuth, Donald E. 129

label 234language, context-free 310language, interactive 169language, intermediate 173language, machine 172, 209language, non-interactive 169

110leaf node 132lexical analysis 215lexical environment 184, 198, 241lexical scope 183limited context 278linear 129, 286linear search algorithm 143Lisp 185, 196, 282list, association 287list, property 301list, sorted 130Liu, Chung Laung 343

147local optimization 110local procedure 176lock, combination 74, 86lock, Simplex 85, 114logarithm 129logic problem 45, 48logic programming 168logic, computer 71logic, predicate 67logic, propositional 46

Page 23: Appendices - EECS at UC Berkeleybh/pdf/v3ch07.pdf · Pascal User Manual and Report, should Essentials of Programming Languages, ... This is the official report of the international

M

N

O

P

numof

General Index 361

logic, ternary 73Logo 169, 294Logo pattern matcher 283Logo variable 199lookahead 215lookahead, one-character 216loop, infinite 32

machine language 172, 209machine, finite-state 3, 15, 213, 309machine, nondeterministic 6, 22machine, theoretical 1mandatory substitution 280matching, pattern 282, 308mathematical induction xmathematical model 1mathematics, discrete 45memoization 112, 312memory 147, 230memory, computer 28memory, external 30mergesort 126Meteor 282microworld 278, 297Minsky, Marvin 342, 346model, mathematical 1modification, tree 139monadic 224multinomial coefficient 94multinomial expansion 112multiplication rule 72mutator 141

nand 70network, augmented transition 312network, recursive transition 213Newell, Allen 277node, branch 132node, leaf 132node, root 132non-interactive language 169

nondeterministic machine 6, 22nor 70null pointer 148number, binary 25, 88number, random 83numerical analysis xiii

281, 286

object-oriented programming 167offset 235one-character lookahead 216one-to-one correspondence 89operating systems xiiioperator precedence 223operator, binary 223operator, relational 224operator, unary 223optimization, global 111optimization, local 110optimizing compiler 109optional substitution 304ordered subset 74ordering 146ordering relation 68ordinal type 188overflow signal 71

P-code 173packed array 188, 189pair 147Papert, Seymour x, 295paradigm, programming 162parameter, formal 176parameter, value 197parameter, variable 197parentheses 227parentheses, balancing 13, 28Parry 31parser 211, 212, 217parser generator 217partition sort 120, 204

Page 24: Appendices - EECS at UC Berkeleybh/pdf/v3ch07.pdf · Pascal User Manual and Report, should Essentials of Programming Languages, ... This is the official report of the international

Q

R

362 General Index

procedure

program

real

repeat

Pascal 161, 310, 345Pascal compiler 209Pascal program 172Pascal variable 199Pascal’s Triangle 82, 94Pascal, Blaise 82pattern matcher, Logo 283pattern matching 282, 308periodic 81Perlis, Alan J. xipermutation 74, 79philosophy xivPiaget, Jean xpiracy, software xvpointer 147, 190pointer, frame 236pointer, global 235pointer, null 148pointer, stack 236portable 173precedence 225, 285precedence, operator 223predicate function 67predicate logic 67predictive grammar 219probability 73problem, logic 48procedural knowledge 16procedural representation xprocedure call 178procedure, effective 31procedure, local 176procedure, recursive 75, 80

(Pascal) 176, 194process ixprocessor 147, 230production rule 13, 212, 310program verification 107program, Pascal 172programming languages, declarative 16programming paradigm 162programming, declarative 168programming, dynamic 115programming, functional 162programming, logic 168

programming, object-oriented 167programming, sequential 162

(Pascal) 171, 172Prolog 16, 68, 344proof by contradiction 34property list 55, 301property, intellectual xvproposition, compound 46proposition, simple 46propositional logic 46psychology xiv, 277

quadratic 129quadratic formula 108quantifier 283quicksort 125

random access 148random number 83range 188

(Pascal) 187record 190recursive definition 12recursive descent 220recursive procedure 75, 80recursive transition network 213reference, bound 184reference, call by 197, 198reference, free 184, 185Reggini, Horacio xviiregister 230register, index 235regular expression 11, 15, 211reject state 4relation 67relation, equivalence 68relation, ordering 68relational operator 224

(Pascal) 178repetition rule 11, 21reserved word 183

Page 25: Appendices - EECS at UC Berkeleybh/pdf/v3ch07.pdf · Pascal User Manual and Report, should Essentials of Programming Languages, ... This is the official report of the international

S

T

round

store

General Index 363

retrieval time 131robust 109, 146, 193root node 132

(Pascal) 190RTN 213, 310rule, production 13, 212rules of inference 47

scalar type 187science, cognitive 278scope 239, 241scope, dynamic 184, 185, 197, 198, 242scope, lexical 183search algorithm, binary 143search algorithm, linear 143searching 142selection sort 117selector 136self-reference 32semantics 180sentence, simple 281sentinel 205sequential programming 162set theory 89set, infinite 89sharable 150sigma 91Simon, Herbert A. 277simple proposition 46simple sentence 281simple statement 177, 178Simplex lock 85, 114simulation 83sine function 81Smullyan, Raymond 343sociology xivsoftware engineering x, 174software piracy xvSomos, Michael xviisort, insertion 119sort, partition 120, 204sort, selection 117sorted list 130

sorting 115source file 171space, time and 130Spock, Mr. 72spreadsheet 16stack frame 235stack pointer 236start state 5state 3state, accepting 4state, halting 31state, internal 30statement part 175statement, assignment 178, 180, 195statement, compound 177statement, conditional 177statement, simple 177, 178statement, structured 178storage time 130

147string, constant 189structure, block 177structured statement 178Student 278subrange type 191subset, ordered 74substitution technique 285substitution, mandator y 280substitution, optional 304sum of several terms 91sum of the integers 119Sussman, Gerald Jay ix, 342Sussman, Julie 342symbol, generated 141, 239, 293, 304symmetric 68syntactic hierarchy 213syntax 179system, expert 278system, inference 47

table of values 81table, hash 130ternary logic 73

Page 26: Appendices - EECS at UC Berkeleybh/pdf/v3ch07.pdf · Pascal User Manual and Report, should Essentials of Programming Languages, ... This is the official report of the international

U

V

W

Y

364 General Index

trunc

type

var

while

writelnwrite

text editor 9, 169theoretical machine 1thinking, formal ixtime and space 130time, retrieval 131time, storage 130timesharing systems xvitoken 214tokenization 211, 214top-down 174Tower of Hanoi 169tractable 129tradeoff 130transition network, augmented 312transition network, recursive 213transitive 68transitive rules 51tree 131tree modification 139tree, balanced 146tree, binary 132, 144

(Pascal) 190truth-valued function 46, 67Turing machine 30, 311Turing machine, universal 33Turing’s thesis 31Turing, Alan M. 30Turkle, Sherry xiv, xvii, 346two-stack algorithm 225type, aggregate 187type, data 187type, enumerated 191type, ordinal 188type, scalar 187type, subrange 191type, user-defined 191typed variable 187

(Pascal) 191

unambiguous 217unary operator 223uniqueness rule 50, 67unit 286

universal Turing machine 33Unix xiii, xvi, 9user-defined type 191

value parameter 197value, call by 197, 198variable parameter 197variable, index 205variable, Logo 199variable, Pascal 199variable, typed 187

(Pascal) 176, 178, 197verification, program 107

Wand, Mitchell 345Weinberg, Gerald M. 347Weizenbaum, Joseph 346

(Pascal) 178White, Dick xviiWinograd, Terry xvii, 312, 345Wirth, Niklaus 345word 147, 189word problems, algebra 278word, reserved 183workspace 171workstations xvi

(Pascal) 178(Pascal) 178

YACC 219