Programming, The Impossible Challenge (eBook)
472 Seiten
Elsevier Science (Verlag)
9781483295886 (ISBN)
In its modern form, the computer is only about 40 years old. And so is the job of the computer programmer. This book is a critical history of programming, written to give programmers and analysts in the commercial application field a more pragmatic insight into the background of their profession. It tells the story of why the technology evolved as it did, and how Fifth Generation techniques are already changing the situation.As well as charting the real advances and the passing fashions, this unusual book looks at the situation in perspective, drawing some sad and maybe surprising conclusions while discussing questions such as ``Is programming a job for human beings?'' ``Is it High Noon for the world of programming?''
Front Cover 1
Programming, the Impossible Challenge 4
Copyright Page 5
Table of Contents 12
PROLOGUE 6
WARNING 8
ACKNOWLEDGMENTS 9
PART 1: THE WORLD OF PROGRAMS AND SYSTEMS 18
Chapter 1. THE YEARS OF ASSEMBLER AND FORTRAN 20
Let there be the machine 20
First there was machine code and assembler followed 22
And then there was FORTRAN 25
Assembler's revenge 27
Assembler gets pregnant 30
Fiat macroprocessor 31
The Fortran spawn 35
Chapter 2. THE YEARS OF SYSTEM AND COBOL 38
Monitor leaves the scene, System makes it 38
The overlay fanaticism 39
What's in a name? 40
There are even stranger objects 42
Subroutines and functions: what's in a name? 43
Those magnificent men with their sparkling Cobol 44
Cobol alternates 45
Cobol iterates 46
What's in a Cobol name? 49
The conclusion is obvious 50
Fortran, the infantile disease? 51
Chapter 3. THE YEARS OF ALGOL AND PL1 54
Meanwhile, in some dark recess... 54
Algol's predicament 57
Meanwhile, in Vienna, in the early 60's 58
PL1's
61
A new question: what's in a label? 61
Storage classes: an evolution? 63
Scope, the great pretender 64
Not really new, but renovated: the expression 66
What's in a name: the question recurs 68
Stacking: a new-looking oldie 70
Exceptional Exceptions 71
Chapter 4. THE YEARS OF MULTI AND PASCAL 72
The roaring 60's : SYSTEM went multi 72
The good old days were gone forever 74
Macroprocessor pops up again 76
PL1's pre-processor 79
The last piece: Pascal 80
Strong typing: a restriction or a benediction? 83
Pascal's misfortune 84
Is there still something in a name? 84
The roaring 60's 85
Decision tables: A matter of style? 86
Programming goes micro 88
Chapter 5. THE YEARS OF THE SEMAPHORES 94
Loosely connected processes 94
Dijkstra invents semaphores 97
The producer-consumer business 98
Deadly embrace or fatal osculation 99
The banker's algorithm 100
And as if all that wasn't enough 102
Chapter 6. THE YEARS OF STRUCTURED PROGRAMMING 106
An unexpected ultimatum 106
But, what is programming? 108
And what is an algorithm? 109
Here come the connectives 110
So let it be GOTO-less 113
And what about the backward GOTO? 116
D-structures and DREC structures 117
COME FROM: a lot of noise 119
The Loop: a nasty, naughty being 120
Away with duplicate actions 121
Subroutines considered harmful 122
Cullinet's Logical Record Facility 125
Chapter 7. RECURSION, THE OMINOUS 128
Much ado about nothing? 128
Recursion: noble iteration? 128
Recursion = trees 129
The really famous case: the Hanoi towers 132
Combinatorial explosion 132
Recursion, the Ominous 133
The data stack: a digression 135
A classic: convert infix to polish 137
Conclusion 138
Chapter 8. THE YEARS OF ON-LINE AND 4G 140
System's exhaustion 140
Is the system big enough? 141
A change in attitude: on-line programming 143
The fourth generation 146
4G and the microwave 147
DFD's - The universal truth 148
Menus: another way of giving structure to programs? 150
Jobs and tasks and things 152
Chapter 9. THE YEARS OF C AND ADA 156
C follows B 156
CASE revisited 158
Expression versus statement 160
C is successful 161
An incursion into BASIC 161
BASIC'S storage 163
ADA: the ultimate ... or not? 164
ADA has types within types 165
Programming in ADA 166
Information hiding 169
ADA offers no I/O but has error handling 170
ADA's Rendez-Vous 171
Parallel processing needs to be controlled 173
Is ADA the epitome of languages? 174
The end of that decade 175
PART 2: THE WORLD OF SYMBOLS AND STRINGS 176
Chapter 10. STRING PROCESSING 178
What are strings? 178
What are patterns? 179
Arbitrary patterns: the gist of string processing 181
Repetitive patterns 183
Conditional patterns 184
SNOBOL 184
STRIP or string processing 185
STRIP semantics 185
What to use string processing for? 186
A small problem 187
A generation process 187
Why not string processing? 188
Chapter 11. THE YEARS OF FORMAL LANGUAGES 190
Introduction 190
The whereabouts of phrases 190
Artificial languages 192
Came a man named Chomsky 196
Properties of grammars and languages 199
Syntax analyzers: the painful story 202
Chapter 12. THE YEARS OF UNDECIDABILITY 206
A very informal look at undecidability 206
Along came Gödel, and Türing
209
Undecidability: a statement of failure? 212
How undecidable is undecidable? 213
Decidability and complexity 214
Chapter 13. TÜRING MACHINES
218
Türing's
218
The machine
221
Push-down stack automata 222
PDA=CF 226
There were also Markov and Church 227
Türing and Church and their
230
Chapter 14. LIST PROCESSING AND LISP 232
The non-numerical stuff 232
Lisp Lists 233
And what is a program? 235
An interesting function: list 236
Iteration and recursion in Lisp 237
Lisp evaluation 238
QUOTE and CSET and properties 240
Pseudo-functions 242
Other function types 243
Environment manipulation and closing of functions 244
Mc Carthy's evaluator 245
Garbage collection in the heap storage 247
An example: string processing in Lisp 248
Lisp's success and Lisp's failure 249
PART 3: THE WORLD OF DATA 252
Chapter 15. THE YEARS OF FILES AND DATA-BASES 254
When I/O was still a baby 254
A closer look at interrupts 255
Files: what is all the fuss about? 258
The PL1 way 260
What's in PLl's file name? 261
Other I/O views: what's in a name revisited 261
The world of data 262
Data structures by Codd 263
Tables are related 265
The CODASYL view 266
They all manipulate data 268
The relational algebra 269
A look at views 271
Chapter 16. THE YEARS OF DATA NORMALIZATION 274
Should one normalize? 274
Here comes the fourth 276
And then there was the fifth 277
Normalize versus denormalize 279
A plea for data independence 280
So what is relational? 283
Chapter 17. THE YEARS OF THE STRUCTURED QUERY LANGUAGE 286
Some SQL-like data definition aspects 286
Structured query language riddles 287
JOIN by virtue of SELECT 289
WHERE is the engine of SELECT 289
EXISTS powers the engine 290
SQL has BIFs 292
SELECT does it all 293
Curse SQL's cursors 294
SQL and updates: SQUL 295
The unclean SELECT 296
Chapter 18. THE YEARS OF THE B.O.M. 300
Recursion in data structures? 300
Recursive Data Structures Hymn 300
Generalized Tree Models 303
Some examples 304
Circularity in Recursive Data Structures 306
The infinity syndrome 307
SQL and the BOM 308
Chapter 19. THE YEARS OF DATA STRUCTURING 310
Environment decomposition: user views 310
How important is meaning? 311
All the various keys and attributes 313
Concatenated keys 313
Primary keys: well-behaved creatures 314
Multiple relationships 314
The many to many mess 315
Nested structures 315
Synthesis 316
ID-N attributes: annoying beings 317
Key-only forms 320
Data is a prisoner 321
Chapter 20. YEARS OF WAR AND METHODS 324
Generations in the world of data 324
War! (again) 325
The data-base failure 326
We are not yet at the end of our pains 327
Subject data-bases go corporate 328
The methods fight 331
Design languages 332
Michael Jackson's complaint 333
Michael Jackson's method 335
Dictionaries and encyclopedias 338
The whole miserable war 340
PART 4: THE WORLD OF KNOWLEDGE 342
Chapter 21. THE YEARS OF THE FIFTH GENERATION 344
Never ending generations: the fifth 344
A first incursion into Prolog 345
brother (A,B):—son (A,X), son(B,X). 347
Prolog backtracks 348
Prolog and recursion 350
Inferencing can be failed or cut 353
Prolog's what's in a name? 355
Instantiation of variables in Prolog. 357
Usage of rule-based programming in conventional applications 359
An annoying game: ND is its name 360
Chapter 22. THE YEARS OF THE NEW PROGRAMMING STYLE 366
State-driven programming 366
Away from conventional programming 369
Functional programming 371
Higher order functions are gourmet food 374
Backus' other normal form 376
Programming without variables 378
Object-oriented programming: a paradigm 380
A flavoured way of centering objects 382
Component engineering 385
Chapter 23. THE YEARS OF KNOWLEDGE STRUCTURES 388
Knowledge is all you need 388
Did the butler respect his master? 390
Clauses and things 392
A resolution procedure 394
Prolog and inferences and Horn clauses 396
Asking for facts 399
Action and inference 400
Heuristics: getting to work without being certain 401
The MYCIN uncertainty syndrome: a way about heuristics 402
Searching: the road through knowledge 404
The riddle of the water-jug 407
LISP versus Prolog 409
Chapter 24. THE YEARS OF EXPERT SYSTEMS 412
Well then, what is an expert system? 412
Cooperation and embedding 413
Expert knowledge and expert inference 414
The abilities of an expert system 416
Some do it with OPS5 418
Cullinet's EXL series 421
First and a half generation of expert systems 424
if can-drive(X) then task (travel,X) and if can-walk(X) then task (travel, X) 424
The second generation of expert systems 427
Making a knowledge-base is like making a movie 429
Electronic brains after all? 432
Conclusion and caveat 435
PART 5: EPILOGUE 438
Chapter 25. PROGRAMMING, THE IMPOSSIBLE CHALLENGE 440
Balance - a first appraisal 440
Let us be fair 442
Man-machine communication 442
Appraisal 2: how does it get done? 444
Appraisal 3: can quality be achieved? 447
Appraisal 4: can a program be tested? 450
Appraisal 5: can a programming style be chosen? 452
Appraisal 6 - Can a system be chosen? 455
Chapter 26. PROGRAMMING, THE INHUMAN CHALLENGE 456
Can a suitable programming language be built? 456
Can a programming language be chosen? 461
In the methods jungle 463
Curtains for programming 465
Not programming but software engineering 468
Analysis and design or divide and conquer 469
The houses of Ret Up Moc 472
Afterword to an epilogue: an epitaph 473
INDEX OF CONCEPTS & BIBLIOGRAPHY
INDEX OF CONCEPTS 476
BIBLIOGRAPHY 478
| Erscheint lt. Verlag | 28.6.2014 |
|---|---|
| Sprache | englisch |
| Themenwelt | Mathematik / Informatik ► Informatik ► Grafik / Design |
| Mathematik / Informatik ► Informatik ► Programmiersprachen / -werkzeuge | |
| Mathematik / Informatik ► Informatik ► Theorie / Studium | |
| ISBN-13 | 9781483295886 / 9781483295886 |
| Informationen gemäß Produktsicherheitsverordnung (GPSR) | |
| Haben Sie eine Frage zum Produkt? |
Kopierschutz: Adobe-DRM
Adobe-DRM ist ein Kopierschutz, der das eBook vor Mißbrauch schützen soll. Dabei wird das eBook bereits beim Download auf Ihre persönliche Adobe-ID autorisiert. Lesen können Sie das eBook dann nur auf den Geräten, welche ebenfalls auf Ihre Adobe-ID registriert sind.
Details zum Adobe-DRM
Dateiformat: PDF (Portable Document Format)
Mit einem festen Seitenlayout eignet sich die PDF besonders für Fachbücher mit Spalten, Tabellen und Abbildungen. Eine PDF kann auf fast allen Geräten angezeigt werden, ist aber für kleine Displays (Smartphone, eReader) nur eingeschränkt geeignet.
Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen eine
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen eine
Geräteliste und zusätzliche Hinweise
Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.
aus dem Bereich