Donald Knuth

76 results back to index


pages: 429 words: 114,726

The Computer Boys Take Over: Computers, Programmers, and the Politics of Technical Expertise by Nathan L. Ensmenger

barriers to entry, business process, Claude Shannon: information theory, computer age, deskilling, Donald Knuth, Firefox, Frederick Winslow Taylor, functional programming, future of work, Grace Hopper, informal economy, information retrieval, interchangeable parts, Isaac Newton, Jacquard loom, job satisfaction, John von Neumann, knowledge worker, loose coupling, new economy, Norbert Wiener, pattern recognition, performance metric, Philip Mirowski, post-industrial society, Productivity paradox, RAND corporation, Robert Gordon, Shoshana Zuboff, sorting algorithm, Steve Jobs, Steven Levy, the market place, The Theory of the Leisure Class by Thorstein Veblen, Thomas Kuhn: the structure of scientific revolutions, Thorstein Veblen, Turing machine, Von Neumann architecture, Y2K

Nicholas Metropolis, Jack Howlett, and Gian-Carlo Rota (New York: Academic Press, 1980), 125–135. 60. Frederick Brooks, The Mythical Man-Month: Essays on Software Engineering (New York: Addison-Wesley, 1975), 7. 61. Donald Ervin Knuth, The Art of Computer Programming. Addison-Wesley Series in Computer Science and Information Processing (Reading, MA: Addison-Wesley, 1968); Donald Knuth, Literate Programming (Stanford, CA: Center for the Study of Language/Information, 1992). 62. P. Mody, “Is Programming an Art?” Software Engineering Notes 17, no. 4 (1992): 19–21; Steve Lohr, Go to: The Story of the Math Majors, Bridge Players, Engineers, Chess Wizards, Maverick Scientists, and Iconoclasts—The Programmers Who Created the Software Revolution (New York: Basic Books, 2001). 63.

Technology and Culture 47 (3) (2006): 513–535. Knoebel, Robert M. “The Federal Government’s Role in the Education of Data Processing Personnel.” In SIGCPR ’67: Proceedings of the Fifth SIGCPR Conference on Computer Personnel Research, 77–84. New York: ACM Press, 1967. Knuth, Donald Ervin. The Art of Computer Programming, Volume 1: Fundamental Algorithms. Reading, MA: Addison-Wesley, 1968. Knuth, Donald Ervin. Literate Programming. Stanford, CA: Center for the Study of Language/Information, 1992. Koss, Adele Mildred. “Programming on the Univac 1.” IEEE Annals of the History of Computing 25 (1) (2003): 48–59. Kraft, Philip. Programmers and Managers: The Routinization of Computer Programming in the United States.

The seeming paradox between the inevitable progress promised by Moore’s Law and the perpetual crisis in software production challenges conventional assumptions about the progressive nature of computer technology. This is perhaps the most significant lessons to be learned from the history of software: There is no Moore’s Law for software technology. But the real problem with software is not so much that it is “hard” (as computer scientist Donald Knuth famously declared) but rather that it is inherently contested; the problem was generally not that the software itself did not work but instead that the work that it did do turned out to have undesirable side effects for the organizations that used them.23 Computerization projects created “unusual internal implications,” “placed stress on established organizational relationships,” and demanded “skills not provided by the previous experience of people assigned to the task.”24 Such projects generally crossed organizational boundaries and disrupted existing hierarchies and power relationships.


pages: 1,758 words: 342,766

Code Complete (Developer Best Practices) by Steve McConnell

Ada Lovelace, Albert Einstein, Buckminster Fuller, call centre, continuous integration, data acquisition, database schema, don't repeat yourself, Donald Knuth, fault tolerance, Grace Hopper, haute cuisine, if you see hoof prints, think horses—not zebras, index card, inventory management, iterative process, Larry Wall, loose coupling, Menlo Park, Perl 6, place-making, premature optimization, revision control, Sapir-Whorf hypothesis, slashdot, sorting algorithm, statistical model, Tacoma Narrows Bridge, the scientific method, Thomas Kuhn: the structure of scientific revolutions, Turing machine, web application

Creating Effective Software: Computer Program Design Using the Jackson Methodology. New York, NY: Yourdon Press. [bib36entry269] Knuth,Donald. 1971. “"An Empirical Study of FORTRAN programs,"” Software—Practice and Experience 1:105–33. [bib36entry270] Knuth,Donald. 1974. “"Structured Programming with go to Statements."” In Classics in Software Engineering, edited by Edward Yourdon. Englewood Cliffs, NJ: Yourdon Press, 1979. [bib36entry271] Knuth,Donald. 1986. Computers and Typesetting, Volume B, TEX: The Program. Reading, MA: Addison-Wesley. [bib36entry272] Knuth,Donald. 1997a. The Art of Computer Programming, vol. 1, Fundamental Algorithms, 3d ed.

Newcomer is an experienced systems programmer who describes the various pitfalls of ineffective optimization strategies in graphic detail. Algorithms and Data Types cc2e.com/2599 Knuth, Donald. The Art of Computer Programming, vol. 1, Fundamental Algorithms, 3d ed. Reading, MA: Addison-Wesley, 1997. Knuth, Donald. The Art of Computer Programming, vol. 2, Seminumerical Algorithms, 3d ed. Reading, MA: Addison-Wesley, 1997. Knuth, Donald. The Art of Computer Programming, vol. 3, Sorting and Searching, 2d ed. Reading, MA: Addison-Wesley, 1998. These are the first three volumes of a series that was originally intended to grow to seven volumes.

The Art of Computer Programming, vol. 1, Fundamental Algorithms, 3d ed. Reading, MA: Addison-Wesley. [bib36entry273] Knuth,Donald. 1997b. The Art of Computer Programming, vol. 2, Seminumerical Algorithms, 3d ed. Reading, MA: Addison-Wesley. [bib36entry274] Knuth,Donald. 1998. The Art of Computer Programming, vol. 3, Sorting and Searching, 2d ed. Reading, MA: Addison-Wesley. [bib36entry275] Knuth,Donald. 2001. Literate Programming. Cambridge University Press. [bib36entry276] Korson,TimothyD., and VijayK.Vaishnavi. 1986. “"An Empirical Study of Modularity on Program Modifiability."” In Soloway and Iyengar 1986: 168–86. [bib36entry277] Kouchakdjian,Ara, ScottGreen, and VictorBasili. 1989.


pages: 236 words: 50,763

The Golden Ticket: P, NP, and the Search for the Impossible by Lance Fortnow

Alan Turing: On Computable Numbers, with an Application to the Entscheidungsproblem, Albert Einstein, Andrew Wiles, Claude Shannon: information theory, cloud computing, complexity theory, Donald Knuth, Erdős number, four colour theorem, Gerolamo Cardano, Isaac Newton, Johannes Kepler, John von Neumann, linear programming, new economy, NP-complete, Occam's razor, P = NP, Paul Erdős, Richard Feynman, Rubik’s Cube, smart grid, Stephen Hawking, traveling salesman, Turing machine, Turing test, Watson beat the top human players on Jeopardy!, William of Occam

But one Turing Award for the P versus NP problem is not enough, and in 1985 Richard Karp received the award for his work on algorithms, most notably for the twenty-one NP-complete problems. What’s in a Name? Karp’s paper gave the names P and NP that we use today. But what should people call those hardest problems in NP? Cook called them by a technical name “deg({DNF tautologies}),” and Karp used the term “(polynomial) complete.” But these names didn’t feel right. Donald Knuth took up this cause. In 1974 Knuth received the Turing Award for his research and his monumental three-volume series, The Art of Computer Programming. For the fourth volume, Knuth, realizing the incredible importance of the P versus NP problem, wanted to settle the naming issue for the hardest sets in NP.

He truly wanted a single English world that captured the intuitive meaning of hard search problems, a term for the masses. In a 1974 wrap-up of his survey, Knuth wrote “NP-complete actually smacks of being a little too technical for a mass audience, but it’s not so bad as to be unusable.” “NP-complete” quickly became the standard terminology. It took Donald Knuth about four decades to finish volume 4. Knuth should have pushed a bit harder for less technical names for “NP-complete,” and perhaps for “P” and “NP” as well. The P versus NP problem has taken on an importance that goes well beyond computer science, and using terminology that just abbreviates a technical definition hides this import from outsiders.

* Computers and Intractability: A Guide to the Theory of NP-Completeness, by Michael Garey and David Johnson (New York: W. H. Freeman, 1979). Chapter 5 THE PREHISTORY OF P VERSUS NP One does not fear the Perebor, but rather uses it reasonably.* IN THE LAST CHAPTER WE RECOUNTED Donald Knuth’s ultimately unsuccessful attempt to find a good English word to capture NP-completeness. Knuth could have turned east to the Russians to find perebor (Перебор). Perebor means “brute force search,” the process of trying all possibilities to find the best solution. P versus NP asks whether we need perebor to solve the clique problem or whether some faster approach could work.


pages: 523 words: 143,139

Algorithms to Live By: The Computer Science of Human Decisions by Brian Christian, Tom Griffiths

4chan, Ada Lovelace, Alan Turing: On Computable Numbers, with an Application to the Entscheidungsproblem, Albert Einstein, algorithmic bias, algorithmic trading, anthropic principle, asset allocation, autonomous vehicles, Bayesian statistics, Berlin Wall, Bill Duvall, bitcoin, Community Supported Agriculture, complexity theory, constrained optimization, cosmological principle, cryptocurrency, Danny Hillis, David Heinemeier Hansson, delayed gratification, dematerialisation, diversification, Donald Knuth, double helix, Elon Musk, fault tolerance, Fellow of the Royal Society, Firefox, first-price auction, Flash crash, Frederick Winslow Taylor, Garrett Hardin, George Akerlof, global supply chain, Google Chrome, Henri Poincaré, information retrieval, Internet Archive, Jeff Bezos, Johannes Kepler, John Nash: game theory, John von Neumann, Kickstarter, knapsack problem, Lao Tzu, Leonard Kleinrock, linear programming, martingale, Nash equilibrium, natural language processing, NP-complete, P = NP, packet switching, Pierre-Simon Laplace, prediction markets, race to the bottom, RAND corporation, RFC: Request For Comment, Robert X Cringely, Sam Altman, sealed-bid auction, second-price auction, self-driving car, Silicon Valley, Skype, sorting algorithm, spectrum auction, Stanford marshmallow experiment, Steve Jobs, stochastic process, Thomas Bayes, Thomas Malthus, Tragedy of the Commons, traveling salesman, Turing machine, urban planning, Vickrey auction, Vilfredo Pareto, Walter Mischel, Y Combinator, zero-sum game

And in the private sector, interrupt coalescing offers a redemptive view of one of the most maligned office rituals: the weekly meeting. Whatever their drawbacks, regularly scheduled meetings are one of our best defenses against the spontaneous interruption and the unplanned context switch. Perhaps the patron saint of the minimal-context-switching lifestyle is the legendary programmer Donald Knuth. “I do one thing at a time,” he says. “This is what computer scientists call batch processing—the alternative is swapping in and out. I don’t swap in and out.” Knuth isn’t kidding. On January 1, 2014, he embarked on “The TeX Tuneup of 2014,” in which he fixed all of the bugs that had been reported in his TeX typesetting software over the previous six years.

the record for sorting a deck of cards: While we couldn’t find a video of Bradáč’s performance, there are plenty of videos online of people trying to beat it. They tend to sort cards into the four suits, and then sort the numbers within each suit. “But there is a faster way to do the trick!” urges Donald Knuth in The Art of Computer Programming: First, deal out the cards into 13 piles based on their face value (with one pile containing all the 2s, the next all the 3s, etc.). Then, after gathering up all the piles, deal the cards out into the four suits. The result will be one pile for each suit, with the cards ordered within each.

Subsequent engineers have suggested that Bogobogosort isn’t even the bottom of the well, and have proposed getting even more meta and Bogosorting the program rather than the data: randomly flipping bits in the computer memory until it just so happens to take the form of a sorting program that sorts the items. The time bounds of such a monstrosity are still being explored. The quest for pessimality continues. Computer science has developed a shorthand: Big-O notation originated in the 1894 book Die analytische zahlentheorie by Paul Bachmann. See also Donald Knuth, The Art of Computer Programming, §1.2.11.1. Formally, we say that the runtime of an algorithm is O(f(n)) if it is less than or equal to a multiple (with a coefficient that is a positive constant) of f(n). There is also the kindred “Big-Omega” notation, with Ω(f(n)) indicating that the runtime is greater than or equal to a multiple of f(n), and “Big-Theta” notation, with Θ(f(n)) meaning the runtime is both O(f(n)) and Ω(f(n)).


pages: 1,201 words: 233,519

Coders at Work by Peter Seibel

Ada Lovelace, Bill Atkinson, bioinformatics, cloud computing, Conway's Game of Life, domain-specific language, don't repeat yourself, Donald Knuth, fault tolerance, Fermat's Last Theorem, Firefox, functional programming, George Gilder, glass ceiling, Guido van Rossum, HyperCard, information retrieval, Larry Wall, loose coupling, Marc Andreessen, Menlo Park, Metcalfe's law, Perl 6, premature optimization, publish or perish, random walk, revision control, Richard Stallman, rolodex, Ruby on Rails, Saturday Night Live, side project, slashdot, speech recognition, the scientific method, Therac-25, Turing complete, Turing machine, Turing test, type inference, Valgrind, web application

Jamie Zawinski and Dan Ingalls emphasized the importance of getting code up and running right away while Joshua Bloch described how he designs APIs and tests whether they can support the code he wants to write against them before he does any implementation and Donald Knuth described how he wrote a complete version of his typesetting software TeX in pencil before he started typing in any code. And while Fran Allen lay much of the blame for the decline in interest in computer science in recent decades at the feet of C and Bernie Cosell called it the “biggest security problem to befall modern computers”, Ken Thompson argued that security problems are caused by programmers, not their programming languages and Donald Knuth described C's use of pointers as one of the “most amazing improvements in notation” he's seen.

This is a good time to be an over-the-hill programmer emeritus, because you have a few props because you did it once, but the world is so wondrous that you can take advantage of it, maybe even get a little occasional credit for it without having to still be able to do it. Whereas if you were in college—if you major in computer science and you have to go out there and you have to figure out how you are going to add to this pile of stuff—save me. Donald Knuth Of all the subjects of this book, Donald Knuth perhaps least needs an introduction. For the past four decades he has been at work on his multivolume masterwork The Art of Computer Programming, the bible of fundamental algorithms and data structures, which American Scientist included on its list of the top 12 physical-sciences monographs of the century, in the company of works by Russell and Whitehead, Einstein, Dirac, Feynman, and von Neumann.

Hoare in Communications of the ACM, Vol. 14, Issue 1 (ACM, 1971) Programming Pearls, Jon Bentley (ACM Press, 1999) Purely Functional Data Structures, Chris Okasaki (Cambridge University Press, 2008) A Retargetable C Compiler: Design and Implementation, David Hanson and Christopher Fraser (Addison-Wesley Professional, 1995) Smalltalk-80: The Interactive Programming Environment, Adele Goldberg (Addison-Wesley, 1983) Smalltalk-80: The Language & Its Implementation, David Robson and Adele Goldberg (Addison-Wesley, 1983) Structure and Interpretation of Computer Programs, Harold Abelson and Gerald Jay Sussman (MIT Press, 1996) TeX: The Program, Donald Knuth (Addison-Wesley, 1986) The Programming Language LISP: Its Operation and Applications, Edmund Berkeley and Daniel Bobrow, eds. (MIT Press, 1966) The Psychology of Computer Programming: Silver Anniversary Edition, Gerald Weinberg (Dorset House, 1998) The TeXbook, Donald Knuth (Addison-Wesley Professional, 1986) Writers at Work: The Paris Review Interviews, Malcolm Cowley (Penguin, 1977) Zen and the Art of Motorcycle Maintenance: An Inquiry into Values, Robert Pirsig (Bantam, 1984) Index A abstraction, 22, 29 ACS-1 supercomputer, 485 ActionScript, 143 Ada, 349 ADsafe, 99 Adventure, 576, 577 aesthetics, 26, 234, 235, 283, 284, 285, 369, 371, 372, 488, 555 Agorics, 95 AI, 3, 206, 300, 301 Ajax, 91, 97, 101, 102, 111, 125, 142, 158 Algol, 243, 248 Allen, Fran, 560 Altair, 245 Andreessen, Marc, 14, 18, 19 Android, 71 ANSI C, 420 AOL, 53 Apache, 58, 61 APL, 2, 93, 325, 327, 328, 340, 344, 352, 353 App Engine, 64, 65, 66 Apple II, 49, 50, 135 Apple Users Group, 3 Armstrong, Joe, 150 ARPANET, 519, 529, 541 Art of Computer Programming, The, 565, 568, 570, 572, 577, 579, 583, 584 assertions, 31, 32, 364, 365 asserts, 468 Atari 800, 94 Atlas, 102 awk, 145 BASIC, 2, 50, 62, 168, 169, 170, 288, 289, 373, 377, 383, 386 B Basic Four, 94, 121 BBN, 519, 520, 521, 522, 523, 525, 526, 535, 539, 540, 541, 543, 549, 551, 552, 553, 554 BBS, 52 BCPL, 244, 246, 255, 456 BDDs, 575, 584, 587, 588 Bell Labs, 449, 457, 458, 463, 464, 474 Belle, 449 Berkeley, 451, 453, 454 Big Brother Database, 9 BigInteger, 176 Big-O, 565 Bina, Eric, 16 bit twiddling, 172 BitBlt, 373, 380, 384, 385, 386, 387, 394, 395, 409, 410 Björklund, Martin, 230 Bliss, 325, 353, 462 Bobrow, Dan, 461 Bobrow, Danny, 430 Bolt Beranek and Newman (BBN), 519 books, 43, 44, 81, 160, 161, 171, 276, 299, 326, 327, 330, 332, 334, 401, 477, 527 Books, 175 Boolean decision diagrams (BDDs), 575 bots, 53 British Robotics Association, 206, 209 Brooks, Fred, 492, 493, 494 buddy programming, 200 Butterfield, Steve, 546 C C, 30, 52, 72, 134, 137, 144, 147, 184, 191, 197, 213, 221 -2, 325, 353, 355, 388, 406, 420, 444, 456, 460, 467, 501-3, 557, 559-60, 585 589 C--, 264 C code, 11 C language, 10 C*, 325, 354 C++, 9-11, 20-1, 38, 49, 62-4, 80 85, 138-9, 147-8, 156, 162-4, 170 184-6, 191, 193, 198,224,247 262, 325, 349, 353-4, 377, 389 406-7, 467-8, 475-6, 503, 529, 559 Cambridge, 241, 244, 245, 246, 247, 249, 255 Cambridge Electron Accelerator, 413, 414, 416 Canady, Rudd, 464 Carnegie Mellon, 353 Carnegie Mellon University (CMU), 3, 4 Carnegie-Mellon University, 167 Case Institute of Technology, 566 CGI, 53, 54, 56, 57 change files, 586, 587, 588 Charles, Philippe, 489 Chrome, 71 Chromix, 248 Church, Alonzo, 146 Clark, Jim, 136 Clarke, Thomas, 245, 253, 256 Cleanroom process, 493, 494 CMU, 190 CMU Common Lisp, 3 COBOL, 325, 353, 376, 398, 596 Cocke, John, 515 code design, 154, 155 code ownership, 201 code reading, 92, 102, 103, 104, 105, 107, 116, 129, 182 Collabra, 19 Columbia University, 167 combinatorial algorithms, 580 comments, 36, 541, 545, 555, 556 Common Lisp, 325, 338, 343, 350, 351, 353, 365, 372 computer science, 41, 42, 52, 66, 68, 130, 135, 137, 150, 160, 205, 208, 209, 217, 233, 244, 247, 249, 250, 288, 290, 295, 297, 298, 311, 331, 332, 333, 347, 379, 390, 393, 400, 410, 431, 453, 482, 486, 502, 506, 510, 511, 512, 513, 565, 569, 594, 595, 600 concurrency, 271, 274 concurrent programming, 237 continue statement, 106 Crockford, Doug, 142, 143, 144, 146, 148 Crowther, Will, 525, 529, 531, 532, 534, 535, 536, 537, 538, 547 curiosity, 44 curly-brace languages, 107 CWEB, 572, 575, 579, 589 D Danga Interactive, 49 De Bellis, Thomas, 169 debugging, 8, 29, 31, 32, 43, 78, 79, 86, 120, 121, 151, 152, 153, 183, 187, 189, 190, 207, 225, 226, 227, 266, 268, 269, 295, 300, 312, 313, 314, 315, 335, 337, 342, 362, 364, 365, 366, 367, 368, 388, 395, 397, 399, 404, 405, 406, 452, 453, 460, 465, 466, 468, 470, 477, 481, 488, 489, 514, 520, 524, 533, 535, 537, 546, 547, 570, 586, 588, 589, 590 DEC, 327, 331, 354 design reviews, 538, 540 designing software, 326, 340, 458 Deutsch, L.


Guide to LaTeX by Helmut Kopka, Patrick W. Daly

centre right, Donald Knuth, framing effect, hypertext link, invention of movable type, Menlo Park

For bibliographies with author–year citations (Section 9.3.4) the entries in the thebibliography are the same, except that the optional label must be present, taking a special form that will transfer the author and year texts to the citation commands. A sample (numerical) thebibliography environment could look as follows: \begin{thebibliography}{99} \bibitem{lamport} Leslie Lamport. \textsl{\LaTeX\ -- A Document Preparation System}, 2nd edition. Addison-Wesley, Reading, MA, 1994 . . . . . . . . . \bibitem{knuth} Donald E. Knuth. \textsl{Computers and Typesetting Vol.\ A--E}. Addison-Wesley, Reading, MA, 1986 \bibitem[6a]{knuth:a} Vol A: \textsl{The {\TeX}book}, 1986 . . . . . . . . . \bibitem[6e]{knuth:e} Vol E: \textsl{Computer Modern Typefaces}, 1986 \end{thebibliography} Here lamport, knuth, and knuth:a have been chosen as keys.

In fact, we feel that even for a single document, it is simpler to make an entry into the database than to adhere to the very precise and fiddly requirements of a literature list, especially regarding punctuation and positioning of the authors’ initials. The database entry proceeds very quickly and easily if one has a generalized template, as illustrated in Section 14.2.6. The entries in a bibliographic database are of the form @BOOK{knuth:86a, AUTHOR = "Donald E. Knuth", TITLE = {The \TeX{}book}, EDITION = "third", PUBLISHER = "Addison--Wesley", ADDRESS = {Reading, Massachusetts}, YEAR = 1986 } The first word, prefixed with @, determines the entry type, as explained in the next section. The entry type is followed by the reference information for that entry enclosed in curly braces { }.

In the next Section we outline the development of TEX and LATEX, and go on to show that LATEX, a product of the mid 1980’s, is a programmable markup language that is ideally suited for the modern world of electronic publishing. 6 Chapter 1. Introduction 1.3 TEX and its offspring The most powerful formatting program for producing book quality text of scientific and technical works is that of Donald E. Knuth (Knuth, 1986a, 1986b, 1986c, 1986d, 1986e). The program is called TEX, which is a rendering in capitals of the Greek letters τχ. For this reason the last letter is pronounced not as an x, but as the ch in Scottish loch or German ach, or as the Spanish j or Russian kh. The name is meant to emphasize that the printing of mathematical texts is an integral part of the program and not a cumbersome add-on.


Speaking Code: Coding as Aesthetic and Political Expression by Geoff Cox, Alex McLean

4chan, Amazon Mechanical Turk, augmented reality, bash_history, bitcoin, cloud computing, computer age, computer vision, crowdsourcing, dematerialisation, Donald Knuth, Douglas Hofstadter, en.wikipedia.org, Everything should be made as simple as possible, finite state, Gödel, Escher, Bach, Hacker Conference 1984, Ian Bogost, Jacques de Vaucanson, Larry Wall, late capitalism, means of production, natural language processing, new economy, Norbert Wiener, Occupy movement, packet switching, peer-to-peer, Richard Stallman, Ronald Coase, Slavoj Žižek, social software, social web, software studies, speech recognition, stem cell, Stewart Brand, The Nature of the Firm, Turing machine, Turing test, Vilfredo Pareto, We are Anonymous. We are Legion, We are the 99%, WikiLeaks, Yochai Benkler

Nevertheless, there is more to coding than simply the demonstration of formal logic, as if everything could be reduced to binary representation at a fundamental level. The conventions of writing and reading, of both text and code, might be considered to be part of coded systems of input and output (abbreviated as I/0), and yet formal logic fails to break the apparent paradox of language. In The Art of Computer Programming (1968), Donald Knuth already emphasized the depth of the relationship between writing a computer program and the logic that underpins it— what he referred to as “literate programming”—and so acknowledged programming to be somewhat like composing poetry or music.28 He also demonstrated how reading could be understood as procedural and reflexive in his “Procedures for Reading This Set of Books.”

(Available at http://www.electronicbookreview.com/thread/electropoetics/codology? mode=print.) 26. Piet is an esoteric programming language written by David Morgan-Mar. His explanation of the Piet “Hello world!” program is available at http://www.retas.de/thomas/computer/programs/ useless/piet/explain.html. Notes to Pages 7–12 113 27. Kittler, “Code,” 46. 28. Donald Knuth, The Art of Computer Programming, vol. 1, Fundamental Algorithms (Reading, MA: Addison-Wesley, 1981), v. 29. Ibid., xv–xvi. 30. N. Katherine Hayles, Writing Machines (Cambridge, MA: MIT Press, 2002), 25. 31. Roland Barthes, “The Death of the Author,” in Image, Music, Text (London: Fontana, 1977), 142–148. 32.

InformatikerInnen für eine andere Informatik, 34–44. Bonn: FIfF, 1991. Kittler, Friedrich. “There Is No Software.” In Timothy Druckrey, ed., Electronic Culture, 331–337. New York: Aperture, 1996. Kleiner, Dmytri. The Telekommunist Manifesto. Network Notebooks 03. Amsterdam: Institute of Network Cultures, 2010. Knuth, Donald. The Art of Computer Programming. Vol. 1, Fundamental Algorithms. Reading, MA: Addison-Wesley, 1981. Lakoff, George, and Mark Johnson. Philosophy in the Flesh: The Embodied Mind and Its Challenge to Western Thought. New York: HarperCollins, 1999. Laporte, Dominique. History of Shit. Cambridge, MA: MIT Press, 2000.


pages: 255 words: 76,834

Creative Selection: Inside Apple's Design Process During the Golden Age of Steve Jobs by Ken Kocienda

1960s counterculture, anti-pattern, Apple's 1984 Super Bowl advert, bash_history, Bill Atkinson, Charles Lindbergh, conceptual framework, Donald Knuth, en.wikipedia.org, HyperCard, Kickstarter, Lao Tzu, premature optimization, profit motive, QWERTY keyboard, Richard Feynman, Richard Stallman, Robert X Cringely, Silicon Valley, Steve Ballmer, Steve Jobs, Steven Levy, zero-sum game

So, did Edison really talk about his working method exactly as we say that he did? I don’t know, but posterity seems to be voting in the affirmative, and by using this quotation again myself, I realize I’m just adding another log onto the fire. 4. One Simple Rule 1. Donald E. Knuth, The Art of Computer Programming (Boston: Addison-Wesley, various years). 2. Donald Knuth, “Structured Programming with go to Statements,” ACM Computing Surveys 6, no. 4 (1974): 261–301. I love how Knuth’s famous statement on optimization comes in an article that references one of the other most famous statements in computer science, that from the age of “structured programming,” the assertion made by E.

When an essential bit of new code caused a slowdown, things could get tricky. Finding remedies for speed setbacks typically involved the prickly issue of software optimization, and that term warrants some explanation. * * * There aren’t many famous computer scientists, even among programmers, but Donald Knuth is rightly revered. He is the author of The Art of Computer Programming, one of the foundational texts of computer science, a multivolume treatise that he’s been writing, with something approximating monklike asceticism and devotion, since 1962.1 Knuth undertakes meticulous research, writes with extreme care, and issues publications with titles like Introduction to Combinatorial Algorithms and Boolean Functions, Bitwise Tricks & Techniques; Binary Decision Diagrams, and Generating All Trees—History of Combinatorial Generation.

I can use Kant, but only if I know about him, and only to the extent that I’ve internalized what he said and what it means to me. The same goes for the whole scope of creative achievement, from the paintings of Frida Kahlo, the blues music of the Reverend Gary Davis, the theories of Charles Darwin, the philosophy of Lao Tzu, the software optimization ideas of Donald Knuth, or the beliefs and practices of the ancient Greek visitors to the Delphic Oracle. When I study the past, I make a point of deciding what I like, and sometimes this built-up catalog of refined-like responses about past works finds a suitable outlet and a natural expression in my present-day work.


pages: 394 words: 118,929

Dreaming in Code: Two Dozen Programmers, Three Years, 4,732 Bugs, and One Quest for Transcendent Software by Scott Rosenberg

A Pattern Language, Benevolent Dictator For Life (BDFL), Berlin Wall, Bill Atkinson, c2.com, call centre, collaborative editing, conceptual framework, continuous integration, Donald Knuth, Douglas Engelbart, Douglas Engelbart, Douglas Hofstadter, Dynabook, en.wikipedia.org, Firefox, Ford paid five dollars a day, Francis Fukuyama: the end of history, functional programming, George Santayana, Grace Hopper, Guido van Rossum, Gödel, Escher, Bach, Howard Rheingold, HyperCard, index card, Internet Archive, inventory management, Jaron Lanier, John Markoff, John von Neumann, knowledge worker, Larry Wall, life extension, Loma Prieta earthquake, Menlo Park, Merlin Mann, Mitch Kapor, new economy, Nicholas Carr, Norbert Wiener, pattern recognition, Paul Graham, Potemkin village, RAND corporation, Ray Kurzweil, Richard Stallman, Ronald Reagan, Ruby on Rails, semantic web, side project, Silicon Valley, Singularitarianism, slashdot, software studies, source of truth, South of Market, San Francisco, speech recognition, stealth mode startup, stem cell, Stephen Hawking, Steve Jobs, Stewart Brand, Ted Nelson, Therac-25, thinkpad, Turing test, VA Linux, Vannevar Bush, Vernor Vinge, web application, Whole Earth Catalog, Y2K

“I think we need to be ashamed” and “Everything we’ve done”: Richard Gabriel talk at the Software Development Forum, Palo Alto, California, January 23, 2003. “art meant something devised” and “The chief goal of my work”: Donald Knuth, “Computer Programming as an Art,” 1974 Turing Award lecture, in Communications of the ACM, December 1974. “couldn’t stand to write books”: Donald Knuth quoted in Steve Ditlea, “Rewriting the Bible in 0’s and 1’s,” Technology Review, September–October1999. “Beware of bugs in the above code”: Knuth explains the exact origins of the much-cited quote at http://www-cs-faculty.stanford.edu/~knuth/faq.htm. “What were the lessons I learned”: Donald Knuth, Selected Papers on Computer Science (CSLI Publicational/Cambridge University Press, 1996), p. 161.

CONTENTS TITLE PAGE DEDICATION EPIGRAPH AUTHOR’S NOTE CHAPTER 0 SOFTWARE TIME [1975–2000] CHAPTER 1 DOOMED [JULY 2003] CHAPTER 2 THE SOUL OF AGENDA [1968–2001] CHAPTER 3 PROTOTYPES AND PYTHON [2001–NOVEMBER 2002] CHAPTER 4 LEGO LAND [NOVEMBER 2002–AUGUST 2003] CHAPTER 5 MANAGING DOGS AND GEEKS [APRIL–AUGUST 2003] CHAPTER 6 GETTING DESIGN DONE [JULY–NOVEMBER 2003] CHAPTER 7 DETAIL VIEW [JANUARY–MAY 2004] CHAPTER 8 STICKIES ON A WHITEBOARD [JUNE–OCTOBER 2004] CHAPTER 9 METHODS CHAPTER 10 ENGINEERS AND ARTISTS CHAPTER 11 THE ROAD TO DOGFOOD [NOVEMBER 2004–NOVEMBER 2005] EPILOGUE A LONG BET [2005–2029 AND BEYOND] NOTES ACKNOWLEDGMENTS ABOUT THE AUTHOR COPYRIGHT For my parents Software is hard. —Donald Knuth, author of The Art of Computer Programming AUTHOR’S NOTE The shelves of the world are full of how-to books for software developers. This is not one of them. I’m barely an elementary programmer myself. I wouldn’t presume to try to teach the experts. And if my research had uncovered some previously unknown innovation or fail-safe insight into building better software, I’d be smarter to seek investors, not readers.

Could some radical breakthrough be right around the corner? Or is there something at the root of what software is, its abstractness and intricateness and malleability, that dooms its makers to a world of intractable delays and ineradicable bugs—some instability or fickleness that will always let us down? “Software is hard,” wrote Donald Knuth, author of the programming field’s most respected textbooks. But why? Maybe you noticed that I’ve called this Chapter 0. I did not mean to make an eccentric joke but, rather, to tip my hat to one small difference between computer programmers and the rest of us: Programmers count from zero, not from one.


pages: 450 words: 569

ANSI Common LISP by Paul Graham

Donald Knuth, functional programming, general-purpose programming language, Paul Graham, premature optimization, Ralph Waldo Emerson, random walk

If this were inconvenient, you could use the following read-macro instead: 409 NOTES (defvar *symtab* (make-hash-table :test #'equal)) (defun pseudo-intern (name) (or (gethash name *symtab*) (setf (gethash name *symtab*) (gensym)))) (set-dispatch-macro-character #\# #\[ #'(lambda (stream charl char2) (do ((ace nil (cons char ace)) (char (read-char stream) (read-char stream))) ((eql char #\]) (pseudo-intern ace))))) Then it would be possible to say just: (defclass counter () ((#[state] rinitform 0))) (defmethod increment ((c counter)) (incf (slot-value c '#[state]))) (defmethod clear ((c counter)) (setf ( s l o t - v a l u e c ' # [ s t a t e ] ) 0)) 204 The following macro pushes new elements into binary search trees: (defmacro bst-push (obj bst <) (multiple-value-bind (vars forms var s e t access) (get-setf-expansion bst) ( l e t ((g (gensym))) ' ( l e t * ( ( , g ,obj) ,®(mapcar # ' l i s t vars forms) ( , ( c a r var) ( b s t - i n s e r t ! ,g ,access , < ) ) ) ,set)))) 213 Knuth, Donald E. Structured Programming with goto Statements. Computing Surveys, 6:4 (December 1974), pp. 261-301. 214 Knuth, Donald E. Computer Programming as an Art. In ACM Turing Award Lectures: The First Twenty Years. ACM Press, 1987. This paper and the preceding one are reprinted in: Knuth, Donald E. Literate Programming. CSLI Lecture Notes #27, Stanford University Center for the Study of Language and Information, Palo Alto, 1992. 216 Steele, Guy L., Jr.

I'm glad to have had the chance to work with Alan Apt again. The people at Prentice Hall—Alan, Mona Pompili, Shirley McGuire, and Shirley Michaels—are really a pleasure to work with. The cover is again the work of the incomparable Gino Lee, of the Bow & Arrow Press, Cambridge. This book was typeset using L^TgX, a language written by Leslie Lamport atop Donald Knuth's Tj3C, with additional macros by L. A. Carr, Van Jacobson, and Guy Steele. The diagrams were done with Idraw, by John Vlissides and Scott Stanton. The whole was previewed with Ghostview, by Tim Theisen, which is built on Ghostscript, by L. Peter Deutsch. I owe thanks to many others, including Henry Baker, Kim Barrett, Ingrid Bassett, Trevor Blackwell, Paul Becker, Gary Bisbee, Frank Deutschmann, Frances Dickey, Rich and Scott Draves, Bill Dubuque, Dan Friedman, Jenny X PREFACE Graham, Alice Hartley, David Hendler, Mike Hewett, Glenn Holloway, Brad Karp, Sonya Keene, Ross Knights, Mutsumi Komuro, Steffi Kutzia, David Kuznick, Madi Lord, Julie Mallozzi, Paul McNamee, Dave Moon, Howard Mullings, Mark Nitzberg, Nancy Parmet and her family, Robert Penny, Mike Plusch, Cheryl Sacks, Hazem Sayed, Shannon Spires, Lou Steinberg, Paul Stoddard, John Stone, Guy Steele, Steve Strassmann, Jim Veitch, Dave Watkins, Idelle and Julian Weber, the Weickers, Dave Yost, and Alan Yuille.

I owe thanks to many others, including Henry Baker, Kim Barrett, Ingrid Bassett, Trevor Blackwell, Paul Becker, Gary Bisbee, Frank Deutschmann, Frances Dickey, Rich and Scott Draves, Bill Dubuque, Dan Friedman, Jenny X PREFACE Graham, Alice Hartley, David Hendler, Mike Hewett, Glenn Holloway, Brad Karp, Sonya Keene, Ross Knights, Mutsumi Komuro, Steffi Kutzia, David Kuznick, Madi Lord, Julie Mallozzi, Paul McNamee, Dave Moon, Howard Mullings, Mark Nitzberg, Nancy Parmet and her family, Robert Penny, Mike Plusch, Cheryl Sacks, Hazem Sayed, Shannon Spires, Lou Steinberg, Paul Stoddard, John Stone, Guy Steele, Steve Strassmann, Jim Veitch, Dave Watkins, Idelle and Julian Weber, the Weickers, Dave Yost, and Alan Yuille. Most of all, I'd like to thank my parents, and Jackie. Donald Knuth called his classic series The Art of Computer Programming. In his Turing Award Lecture, he explained that this title was a conscious choice—that what drew him to programming was "the possibility of writing beautiful programs." Like architecture, programming has elements of both art and science.


pages: 239 words: 64,812

Geek Sublime: The Beauty of Code, the Code of Beauty by Vikram Chandra

Alan Turing: On Computable Numbers, with an Application to the Entscheidungsproblem, Apple II, barriers to entry, Berlin Wall, British Empire, business process, conceptual framework, create, read, update, delete, crowdsourcing, don't repeat yourself, Donald Knuth, East Village, European colonialism, finite state, Firefox, Flash crash, functional programming, glass ceiling, Grace Hopper, haute couture, iterative process, Jaron Lanier, John von Neumann, land reform, London Whale, Norman Mailer, Paul Graham, pink-collar, revision control, Silicon Valley, Silicon Valley ideology, Skype, Steve Jobs, Steve Wozniak, supercomputer in your pocket, theory of mind, Therac-25, Turing machine, wikimedia commons, women in the workforce

Formal languages “contrast with natural languages such as English whose rules, evolving as they do with use, fall short of being either a complete or a precise definition of the syntax, much less the semantics, of the language.”6 So these formal dialects may be less flexible and less forgiving of ambiguity than natural languages, but coders—like poets—manipulate linguistic structures and tropes, search for expressivity and clarity. While a piece of code may pass instructions to a computer, its real audience, its readers, are the programmers who will add features and remove bugs in the days and years after the code is first created. Donald Knuth is the author of the revered magnum opus on computer algorithms and data structures, The Art of Computer Programming. Volume 3 of the Art was published in 1973; the first part of Volume 4 appeared in 2011, the next part is “under preparation.” If ever there was a person who fluently spoke the native idiom of machines, it is Knuth, computing’s great living sage.

The snarl in the dependency diagram (figure 6.1) may strike the civilian as a pretty picture, with its swirl of lines and punctuating sparks of gray; to the programmer, it is an abomination because it speaks of incoherence, incomprehensibility, unpredictability, sticky seams of connection that prevent swift diagnosis and make excision and replacement all but impossible. With his emphasis on programmer happiness, Matz makes explicit his allegiance to Donald Knuth’s literate programming. He writes: Programs share some attributes with essays. For essays, the most important question readers ask is, “What is it about?” For programs, the main question is, “What does it do?” In fact, the purpose should be sufficiently clear that neither question ever needs to be uttered … Both essays and lines of code are meant—before all else—to be read and understood by human beings.3 The trouble of course is that as software programs grow bigger and more complex, the code they comprise tends to become unreadable and incomprehensible to human beings.

Programmers like to point out that if each line of code, or even each logical statement (which may spread to more than one physical line), is understood to be a component, software systems are the most complicated things that humans have ever built: the Lucent 5ESS switch, used in telephone exchanges, derives its functionality from a hundred million lines of code; the 2008 Fedora 9 distribution of Linux comprises over two hundred million lines of code.4 No temple, no cathedral has ever contained as many moving parts. So if you’ve ever written code, you understand in your bones the truth of Donald Knuth’s assertion, “Software is hard. It’s harder than anything else I’ve ever had to do.”5 If you’ve ever written code, the fact that so much software works so much of the time can seem profoundly miraculous. Software is complicated because it tries to model the irreducible complexity of the world.


pages: 351 words: 123,876

Beautiful Testing: Leading Professionals Reveal How They Improve Software (Theory in Practice) by Adam Goucher, Tim Riley

Albert Einstein, barriers to entry, Black Swan, call centre, continuous integration, Debian, Donald Knuth, en.wikipedia.org, Firefox, Grace Hopper, index card, Isaac Newton, natural language processing, p-value, performance metric, revision control, six sigma, software as a service, software patent, the scientific method, Therac-25, Valgrind, web application

If there are too few buckets, the test is not very demanding and errors could go undetected. On the other hand, if there are too many buckets, then we do not expect to find many samples in each bucket and the theoretical requirements of the test are not met. A common rule of thumb is that the expected number of samples in ‖ Knuth, Donald E. The Art of Computer Programming, Vol. 2: Seminumerical Algorithms, Third Edition. Addison-Wesley, 1998. 138 CHAPTER TEN each bucket should be at least five.# This is no problem because we are generating our data rather than collecting it. We can determine our number of buckets first, then choose the number of samples n so large that we expect well more than five samples in each bucket.

The counts in each bucket would not be affected by such a bug, and if the generator were otherwise correct, the bucket test would pass most of the time. We would like a more fine-grained test of how the random samples are distributed. Here’s one way to proceed. Take a large number of samples n. For each sample xi we can compare the actual proportion of samples less than xi to the proportion of samples we would expect to have # Knuth, Donald E. The Art of Computer Programming, Vol. 2: Seminumerical Algorithms, Third Edition. Addison-Wesley, 1998. * In case you’re curious: xi = tan(π(0.1 i − 0.5)). TESTING A RANDOM NUMBER GENERATOR 139 seen. In other words, we will compare the empirical distribution function with the theoretical distribution function.

We’re going to pull a rabbit out of the hat and give range values without saying where they came from. For large n, we expect K+ to be between 0.07089 and 1.5174 around 98% of the time. How large does n need to be for this to hold? Values of n that you would want to use for testing, say n = 1,000, are more than big enough. Donald Knuth’s book gives more details concerning the K-S test, such as an explanation of where the range values come from and how to find your own values based on how often you want the test to pass. If the K-S test usually passes, this is strong evidence that the transformation from uniform to nonuniform random values was implemented correctly.


Deep Work: Rules for Focused Success in a Distracted World by Cal Newport

8-hour work day, Albert Einstein, barriers to entry, Bluma Zeigarnik, business climate, Cal Newport, Capital in the Twenty-First Century by Thomas Piketty, Clayton Christensen, David Brooks, David Heinemeier Hansson, deliberate practice, disruptive innovation, Donald Knuth, Donald Trump, Downton Abbey, en.wikipedia.org, Erik Brynjolfsson, experimental subject, follow your passion, Frank Gehry, informal economy, information retrieval, Internet Archive, Jaron Lanier, knowledge worker, Mark Zuckerberg, Marshall McLuhan, Merlin Mann, Nate Silver, new economy, Nicholas Carr, popular electronics, remote working, Richard Feynman, Ruby on Rails, Silicon Valley, Silicon Valley startup, Snapchat, statistical model, the medium is the message, Watson beat the top human players on Jeopardy!, web application, winner-take-all economy, zero-sum game

But supporting this decision with the strategies that follow—or strategies of your own devising that are motivated by the same principles—will significantly increase the probability that you succeed in making deep work a crucial part of your professional life. Decide on Your Depth Philosophy The famed computer scientist Donald Knuth cares about deep work. As he explains on his website: “What I do takes long hours of studying and uninterruptible concentration.” A doctoral candidate named Brian Chappell, who is a father with a full-time job, also values deep work, as it’s the only way he can make progress on his dissertation given his limited time.

This strategy will help you avoid this fate by presenting four different depth philosophies that I’ve seen work exceptionally well in practice. The goal is to convince you that there are many different ways to integrate deep work into your schedule, and it’s therefore worth taking the time to find an approach that makes sense for you. The Monastic Philosophy of Deep Work Scheduling Let’s return to Donald Knuth. He’s famous for many innovations in computer science, including, notably, the development of a rigorous approach to analyzing algorithm performance. Among his peers, however, Knuth also maintains an aura of infamy for his approach to electronic communication. If you visit Knuth’s website at Stanford with the intention of finding his e-mail address, you’ll instead discover the following note: I have been a happy man ever since January 1, 1990, when I no longer had an email address.

These efforts, I argued, were aimed at increasing the intensity of Jung’s deep work to a level that would allow him to succeed in intellectual combat with Freud and his many supporters. In recalling this story I want to emphasize something important: Jung did not deploy a monastic approach to deep work. Donald Knuth and Neal Stephenson, our examples from earlier, attempted to completely eliminate distraction and shallowness from their professional lives. Jung, by contrast, sought this elimination only during the periods he spent at his retreat. The rest of Jung’s time was spent in Zurich, where his life was anything but monastic: He ran a busy clinical practice that often had him seeing patients until late at night; he was an active participant in the Zurich coffeehouse culture; and he gave and attended many lectures in the city’s respected universities.


pages: 509 words: 92,141

The Pragmatic Programmer by Andrew Hunt, Dave Thomas

A Pattern Language, Broken windows theory, business process, buy low sell high, c2.com, combinatorial explosion, continuous integration, database schema, domain-specific language, don't repeat yourself, Donald Knuth, general-purpose programming language, George Santayana, Grace Hopper, if you see hoof prints, think horses—not zebras, index card, lateral thinking, loose coupling, Menlo Park, MVC pattern, premature optimization, Ralph Waldo Emerson, revision control, Schrödinger's Cat, slashdot, sorting algorithm, speech recognition, traveling salesman, urban decay, Y2K

Aspect-oriented programming. In European Conference on Object-Oriented Programming (ECOOP), volume LNCS 1241. Springer-Verlag, June 1997. [Knu97a] Donald Ervin Knuth. The Art of Computer Programming: Fundamental Algorithms, volume 1. Addison Wesley Longman, Reading, MA, third edition, 1997. [Knu97b] Donald Ervin Knuth. The Art of Computer Programming: Seminumerical Algorithms, volume 2. Addison Wesley Longman, Reading, MA, third edition, 1997. [Knu98] Donald Ervin Knuth. The Art of Computer Programming: Sorting and Searching, volume 3. Addison Wesley Longman, Reading, MA, second edition, 1998. [KP99] Brian W.

Related sections include: Estimating, page 64 Challenges Every developer should have a feel for how algorithms are designed and analyzed. Robert Sedgewick has written a series of accessible books on the subject ([Sed83, SF96, Sed92] and others). We recommend adding one of his books to your collection, and making a point of reading it. For those who like more detail than Sedgewick provides, read Donald Knuth's definitive Art of Computer Programming books, which analyze a wide range of algorithms [Knu97a, Knu97b, Knu98]. In Exercise 34, we look at sorting arrays of long integers. What is the impact if the keys are more complex, and the overhead of key comparison is high? Does the key structure affect the efficiency of the sort algorithms, or is the fastest sort always fastest?

Pragmatic Programmers embrace documentation as an integral part of the overall development process. Writing documentation can be made easier by not duplicating effort or wasting time, and by keeping documentation close at hand—in the code itself, if possible. These aren't exactly original or novel thoughts; the idea of wedding code and documentation appears in Donald Knuth's work on literate programming and in Sun's JavaDoc utility, among others. We want to downplay the dichotomy between code and documentation, and instead treat them as two views of the same model (see It's Just a View, page 157). In fact, we want to go a little further and apply all of our pragmatic principles to documentation as well as to code.


pages: 394 words: 108,215

What the Dormouse Said: How the Sixties Counterculture Shaped the Personal Computer Industry by John Markoff

Any sufficiently advanced technology is indistinguishable from magic, Apple II, back-to-the-land, beat the dealer, Bill Duvall, Bill Gates: Altair 8800, Buckminster Fuller, California gold rush, card file, computer age, computer vision, conceptual framework, cuban missile crisis, different worldview, Donald Knuth, Douglas Engelbart, Douglas Engelbart, Dynabook, Edward Thorp, El Camino Real, Electric Kool-Aid Acid Test, general-purpose programming language, Golden Gate Park, Hacker Ethic, hypertext link, informal economy, information retrieval, invention of the printing press, Jeff Rulifson, John Markoff, John Nash: game theory, John von Neumann, Kevin Kelly, knowledge worker, Mahatma Gandhi, Menlo Park, Mother of all demos, Norbert Wiener, packet switching, Paul Terrell, popular electronics, QWERTY keyboard, RAND corporation, RFC: Request For Comment, Richard Stallman, Robert X Cringely, Sand Hill Road, Silicon Valley, Silicon Valley startup, South of Market, San Francisco, speech recognition, Steve Crocker, Steve Jobs, Steve Wozniak, Steven Levy, Stewart Brand, Ted Nelson, The Hackers Conference, The Theory of the Leisure Class by Thorstein Veblen, Thorstein Veblen, Turing test, union organizing, Vannevar Bush, Whole Earth Catalog, William Shockley: the traitorous eight

SAIL research also led to a wave of AI startups in the late seventies and early eighties. Ultimately, the dream of AI went unrealized, but SAIL nurtured an eclectic group of computer hackers who passed through before going on in a computing diaspora that eventually was every bit as influential as the later scattering from Xerox PARC. During the evenings, Donald Knuth, a Stanford computer scientist who invented several of the field’s most important algorithms, would show up to use the SAIL computer along with other hackers. Knuth eventually wrote The Art of Computer Programming, the definitive text in the field. Years later, after becoming annoyed with the declining quality of the typesetting in the production of math books, he designed an advanced text-formatting language called TeX.

There was just one small problem: Lehtman knew almost nothing about computers. The visit ended inconclusively, but the computing bug had bitten Lehtman. He discovered a new program that was being started at UCSD in physics and information. He entered the graduate school and was given the responsibility for teaching a computer-science course. Since Donald Knuth’s first volume of The Art of Computer Programming had recently been published, he got a copy and throughout the quarter managed to keep barely ahead of everyone in the class. During the summer of 1969 he called Bill English and told him, “I know about computers now.” He arrived as a summer intern and then came to work full-time the next year.

Designing simple electronic circuits grew into a captivating hobby, and upon graduating from Harvard, Ingalls, remembering a childhood visit, decided to head for California’s beaches and Stanford University. Once at Stanford, his passion for hardware cooled a bit, and he began spending more and more time trying to pursue the softer side of computing. He took a colloquium taught by Donald Knuth, the Stanford computer scientist who spent his evenings hacking at SAIL. The Knuth course explored program optimization, the craft of speeding software performance. It opened new vistas for Ingalls, who became deft at designing programs called optimizers—software that would overcome bottlenecks in programs that were inefficient.


pages: 285 words: 86,853

What Algorithms Want: Imagination in the Age of Computing by Ed Finn

Airbnb, Albert Einstein, algorithmic bias, algorithmic trading, Amazon Mechanical Turk, Amazon Web Services, bitcoin, blockchain, Chuck Templeton: OpenTable:, Claude Shannon: information theory, commoditize, Credit Default Swap, crowdsourcing, cryptocurrency, disruptive innovation, Donald Knuth, Douglas Engelbart, Douglas Engelbart, Elon Musk, factory automation, fiat currency, Filter Bubble, Flash crash, game design, Google Glasses, Google X / Alphabet X, Hacker Conference 1984, High speed trading, hiring and firing, Ian Bogost, invisible hand, Isaac Newton, iterative process, Jaron Lanier, Jeff Bezos, job automation, John Conway, John Markoff, Just-in-time delivery, Kickstarter, late fees, lifelogging, Loebner Prize, Lyft, Mother of all demos, Nate Silver, natural language processing, Netflix Prize, new economy, Nicholas Carr, Norbert Wiener, PageRank, peer-to-peer, Peter Thiel, Ray Kurzweil, recommendation engine, Republic of Letters, ride hailing / ride sharing, Satoshi Nakamoto, self-driving car, sharing economy, Silicon Valley, Silicon Valley ideology, Silicon Valley startup, social graph, software studies, speech recognition, statistical model, Steve Jobs, Steven Levy, Stewart Brand, supply-chain management, TaskRabbit, technological singularity, technoutopianism, The Coming Technological Singularity, the scientific method, The Signal and the Noise by Nate Silver, The Structural Transformation of the Public Sphere, The Wealth of Nations by Adam Smith, transaction costs, traveling salesman, Turing machine, Turing test, Uber and Lyft, Uber for X, uber lyft, urban planning, Vannevar Bush, Vernor Vinge, wage slave

That is to say, an algorithm reliably delivers an expected result within a finite amount of time (except, perhaps, for those edge cases that fascinate mathematicians and annoy engineers). Historian Nathan Ensmenger recounts how the academic discipline of computer science coalesced only after its advocates embraced the concept of the algorithm, with one of the field’s founders, Donald Knuth, tracing the field’s origins to al-Khwarizmi in his seminal textbook The Art of Computer Programming.6 The algorithm was an ideal object of study, both easily grasped and endlessly puzzling: By suggesting that the algorithm was as fundamental to the technical activity of computing as Sir Isaac Newton’s laws of motion were to physics, Knuth and his fellow computer scientists could claim full fellowship with the larger community of scientists.7 And yet, as mathematician Yiannis Moschovakis points out, Knuth’s argument about what algorithms actually are is an extremely rare instance where the question is foregrounded.8 For computer scientists the term remains more of an intuitive, unexamined notion than a delineated logical concept grounded in a mathematical theory of computation.

The Huffington Post, March 5, 2015. http://www.huffingtonpost.com/2015/03/05/tip-uber-driver_n_6810296.html. Kline, Ronald R. The Cybernetics Moment: Or Why We Call Our Age the Information Age. Johns Hopkins University Press, 2015. Knack, Ruth Eckdish. “Pay As You Park.” Planning Magazine, May 2005. http://shoup.bol.ucla.edu/PayAsYouPark.htm. Knuth, Donald E. “Ancient Babylonian Algorithms.” Communications of the ACM 15 (7) (July 1972): 671–677. doi:10.1145/361454.361514. Kolbe, Winrich, director. “Evolution.” Star Trek: The Next Generation, September 23, 1989. http://www.imdb.com/title/tt0708710. Kosner, Anthony Wing. “Facebook Is Recycling Your Likes to Promote Stories You’ve Never Seen to All Your Friends.”

., 59 Jenkins, Henry, 102 Johansson, Scarlett, 78 Jonze, Spike, 11, 77–79, 84–85 Journalists, 3 automatization and, 38 Bitcoin and, 12 cultural values and, 171–172 Facebook and, 116, 170, 172 gamification and, 116 Gawker Media and, 170–175, 210n35 Google and, 75 Siri and, 58 Thiel and, 170–171 transactional algorithms and, 151 “Trending Topics” widget and, 180 Uber and, 129 Kael, Pauline, 175 Kasparov, Gary, 135–138 Kindle, 195 Kirschenbaum, Matthew, 47–48 Kiva Systems, 134 Kline, Ronald, 31 KnowledgeGraph, 71–73, 75, 94 Knuth, Donald, 17–18 Kurzweil, Ray, 184 Labor, 7, 18, 46, 122 Adam Smith on, 146 affective, 145–148 arbitrage and, 97, 112, 123–145 Bitcoin and, 164, 178 capitalism and, 165 cloud warehouses and, 131–445 culture machines and, 93, 119 deep structures of, 123 faking sincerity and, 146–147 feedback systems and, 145–148 HITs and, 135, 139, 141, 145 identity and, 146–147 intellectual, 12 interface economy and, 123–145 ludic, 120 mandatory smiles and, 146 Marx on, 165 Mechanical Turk and, 135–145 pickers and, 132–134 Taylorism and, 93 worker conditions and, 8, 132–134, 139–140 Lambda calculus, 24 Langlois, Ganaele, 111 Language abstraction and, 2, 24 advertisements and, 178 algorithms and, 24–28, 33–41, 44, 51, 54–55 cognition and, 39 color words and, 4 culture machines and, 39–40 epistemological layers and, 4, 11, 148, 155, 157, 175, 177, 188 ethos of information and, 159 grammar and, 2, 16, 25, 38–41, 62–64, 110–112, 138, 178–179 imagination and, 38, 185, 196 incompleteness and, 24, 40 as intellectual technology, 4 intelligent assistants and, 11, 57, 62, 64–65, 77 machine learning and, 2, 112 many registers of, 1–2 mathematics and, 2, 55 meaning and, 1 metaphor and, 183–184 (see also Metaphor) natural language processing (NLP) and, 62–63 of new media, 112, 122 plasticity and, 38, 191 power of, 1–2, 4–5 procedural, 3–4, 6 reality and, 1 rhetoric and, 6, 16, 22, 30, 45, 89, 96, 101, 104, 110, 112, 123, 127, 136 Siri and, 57–65, 71–84 spoken, 2, 58, 60, 62–63, 67, 84, 185 symbolic, 2, 26, 38–41 tricks and, 3–4 Turing Machine and, 33, 41 universal, 5 vocabulary and, 2, 4, 25, 138, 160, 190 Wiener and, 28 Language of New Media, The (Manovich), 122 Lawsuits, 90, 171, 175 Leibniz, Gottfried Wilhelm, 25–27, 72 Lem, Stanislaw, 184 Levy, Steven, 3 Lewis, Michael, 12, 151, 153, 168 Leyden, Peter, 160 Library Computer Access/Retrieval System (LCARS), 67–68 Life magazine, 31 Literacy, 5, 39, 52, 75, 109, 129, 159, 177 LiveJournal, 209n20 Loebner Prize, 87, 203n50 Logic general substitutability and, 33 Gödel and, 24, 40 halting states and, 41–46 information theory and, 10, 27 invisibly exclusionary, 110 pragmatist approach and, 18–25, 42, 58, 62 process and, 41–46 proofs and, 15, 24–25, 41, 44 rationality and, 38, 40 symbolic, 2, 21, 24, 39, 41, 44, 54–55 “Long Boom, The” (Schwartz and Leyden), 160–161 Lyft, 123, 127–130, 145, 148 Machine learning artificial intelligence (AI) and, 2, 15, 28, 42, 62, 66, 71, 85, 90, 112, 181–186, 191 big data and, 90 computationalist approach and, 183 DeepMind and, 28, 66, 181–182 Google and, 66, 181–186, 191 imagination and, 181–186 language and, 2, 112 Netflix and, 182–183 neural networks and, 28, 31, 39, 182–183, 185 Siri and, 62, 182 (see also Siri) Turing Machine and, 182 (see also Turing Machine) Macy Conferences, 30, 199n42 Madrigal, Alexis, 92, 94–95 Magic agency and, 78 artificial intelligence and, 135–136 cached content and, 159 code as, 1–5, 8, 10, 16, 49–50, 196 computation as, 4, 8, 10, 46, 52, 59–60, 94, 96, 121, 161 constructed reality and, 39 curses and, 1 data cloud and, 131, 134 fantasy and, 121, 124, 126 government currency and, 172 hacker powers as, 3, 51 incantations and, 1, 3–5, 51, 196 invisible sides of system and, 178 machines and, 137–138, 188 Memex and, 188 metaphors for, 32–36 myths and, 1–2, 10, 16 ontology and, 62–65 ratings and, 130 rational language for, 25 shamans and, 1, 3, 5 Siri and, 59–60, 62–65 sourcery and, 3, 10, 17, 21, 33–34 symbolic, 105 Manjoo, Farhad, 75 Manovich, Lev, 112, 122 Market impacts advertisements and, 34 (see also Advertisements) arbitrage and, 152, 161 attention and, 119 automobiles and, 127 Bitcoin and, 163–180 crashes and, 151 cryptocurrency and, 160–180 digital identity and, 159 digital trading and, 152 eliminating vulnerability and, 161–162 encryption and, 153, 162–163 fungible space and, 54 gaming and, 119, 121 gaming the system and, 153 Google and, 66 high frequency trading (HFT) and, 151–158, 168–169, 177 hyperinflation and, 166 international trade and, 12 invisible hand and, 33 labor and, 8 (see also Labor) Mechanical Turk and, 135–145 NASDAQ and, 152 Netflix and, 87, 97, 107–110, 114–115 NYSE and, 152 parallel computing and, 139 pension funds and, 151, 168 Siri and, 59, 75–77 stock market and, 12, 15, 154 transaction fees and, 164–165 transparency and, 160–164, 168, 171, 177–178 virtuous action and, 146 Wall Street and, 16, 66, 109, 151, 153, 171, 185 Marx, Karl, 165 Master Algorithm, The (Domingos), 183 Materiality, 26, 47–49, 53, 133 Mathematics abstract symbolism, 2, 55 algebra, 17 Babylonian, 17 Berlinski and, 9, 181 calculus, 24, 26, 30, 34, 44–45, 98, 148, 186 complexity, 28 computationalist approach and, 23, 183, 185 Conway and, 29–30 culture machines and, 49–50 Descartes and, 26, 69, 75 effective computability and, 40 “extended mind” hypothesis and, 40 Fibonacci sequence, 17 Golden Ratio, 2 Hilbert and, 23 Hindu-Arabic numerals, 17 language and, 2, 55 Leibniz and, 25–26, 72 logic, 2, 10, 24 machine duplication and, 22 materiality and, 26 Moschovakis and, 17 Nakamoto and, 161–162 Netflix Prize and, 87–91 ontology and, 84 perceived reality and, 20 Post and, 9 Pragmatic Chaos and, 90 proofs, 15, 24–25, 41, 44 pure, 47 reality and, 34 Rendell and, 30 Shannon and, 27 Strogatz and, 44, 183 theory of computation and, 18 Turing and, 6–9, 23–30, 33, 39–43, 54, 73, 79–82, 87, 138, 142, 182, 186 Mathesis universalis, 25–26, 28, 72 Matrix, The (film), 3, 36, 109 Maturana, Humberto, 28–29 McClelland, Mac, 132–133 McCloud, Scott, 110, 154–155 McCulloch-Pitts Neuron, 28, 39 Meaning acceleration of epistemological change and, 188–189 algorithms and, 35–36, 38, 44–45, 50, 54–55 belonging and, 122 black boxes and, 7, 15–16, 47–48, 51, 55, 64, 72, 92–93, 96, 136, 138, 146–147, 153, 162, 169–171, 179 Chun on, 35 Cow Clicker and, 116, 118–119 cultural exchange and, 12, 111–112 data mining and, 175 decision-making and, 20, 28, 34, 37, 90 digital culture and, 3, 7, 18, 22, 43, 49, 66, 87, 156, 160, 191, 193–194 endless hunt for, 184 imagination and, 184 (see also Imagination) intimacy and, 75 language and, 1 Mechanical Turk and, 136–140 metaphor and, 183–184 (see also Metaphor) obfuscations and, 7, 55, 64 organization of, 8 PageRank and, 169 Siri and, 65 structures of, 89, 96 value and, 155 vs. information, 9, 9–10 Mechanical Turk Google and, 12, 135–145 history of original, 136–138 meaning and, 136–140 as metaphor, 143 von Kempelen and, 135 worker conditions and, 139–140 Mechanisms (Kirschenbaum), 47–48 Memex, 186–189, 195 Memory computation and, 18, 21, 37, 43–44, 51, 56, 58, 69, 75, 159–160, 176, 185–186, 191–193 culture and, 43 human, 37, 43–44 process and, 21 technical, 51, 192 understanding and, 37 Metaphor, 121 assumption of code and, 43 cathedral of computation and, 6–8, 27, 33, 49, 51 Church-Turing thesis and, 41–42 cloud, 131 for communication, 32–36 computational, 22 cultural, 50, 54 effective computability and, 34 human cognition and, 39 imagination and, 183–184, 189 interfaces and, 25, 60 Mechanical Turk and, 143 Netflix as, 96, 104 obelisk and, 155 reality and, 10, 50 Samantha (Her) and, 84–85 Microsoft, 97, 144, 152 Miners (Bitcoin), 165, 167–168, 171–172, 175–179 Money abstraction and, 153, 159, 161, 165–167, 171–175 algorithmic trading and, 12, 20, 99, 155 arbitrage and, 151–152, 155–163, 169–171, 175–179 Bitcoin and, 160–180 as collective symbol, 165–166 ontology and, 156–159, 178–179 Moore’s Law, 43 Morowitz, Harold, 23 Moschovakis, Yiannis, 17 Moth machine (Wiener), 31–32, 34 Musk, Elon, 191 My Mother Was a Computer (Hayles), 21, 93 Myths ancient, 28 Campbell on, 94 code and, 7–8, 16, 44 cultural space and, 5 culture machine and, 55 fantasy and, 78 government currency and, 172 human-computer interaction and, 36, 51 magic and, 1–2, 10, 16 material reality and, 47 ontology and, 26 origin, 68 personalization and, 106–107 power of language and, 6, 44, 196 Sumerian, 3, 5, 16 unitary simplicity and, 49 Nakamoto, Satoshi, 161–162, 165–167 Nam-shubs, 1, 3–6, 37–40, 56, 135 Nardi, Bonnie, 121 NASDAQ, 152 Natural-Born Cyborgs (Clark), 37 Natural language processing (NLP), 62–63 Natural selection, 44 Negri, Antonio, 145 Netflix, 161 abstraction of aesthetics and, 87–112, 205n36 abundant choices and, 176 arbitrage and, 94, 97, 109–112, 124 art of personalization and, 97–103 Bogost on, 92–95 business model of, 87–88 Cinematch and, 88–90, 95 commissioned shows of, 97–98 computationalist approach and, 90, 104 consumer desire and, 93–96 disruptive technologies and, 124 effective computability and, 93 Facebook and, 91, 110 fan making and, 100–101 FCC and, 90 genre categories of, 94 ghost in the machine and, 55, 95, 183 gutter problem and, 110 Hastings and, 97–98 House of Cards and, 11, 54, 92, 98–112, 192 influence of, 87 interface economy and, 124 Leibniz and, 26 machine learning and, 182–183 market issues and, 87, 97, 107–110, 114–115 metaphor and, 96, 104 ontology and, 92, 94, 96 original content by, 97–98 parsing data and, 182 personalization and, 97–103, 109 Pragmatic Chaos and, 89–90 predictor ensemble and, 89–90 quantum mechanics and, 91–94, 96, 99, 112 recommendation algorithm competition of, 87–91 rejection of big-data approach and, 11 serendipitous glitches and, 55 Spoiler Foiler and, 101–102, 108 streaming and, 90 system behavior and, 16 taggers and, 54, 88, 92–93, 96, 99 techno-utopian rhetoric and, 16 Neural networks, 28, 31, 39, 182–183, 185 New Digital Age, The (Schmidt), 66 Newitz, Annalee, 60 Newton, Isaac, 17, 166 New York Stock Exchange (NYSE), 152 New York Times, 170 Nielsen ratings, 102 Note Book (Nunokawa), 53 @NSA_prismbot, 194–195 Nunokawa, Jeff, 53 Nyby, Christian I., II, 95 Of the Subcontract, Or Principles of Poetic Right (Thurston), 12, 140–145 OK Google, 51 One-way functions, 162–163 Ontology Apple and, 62–63, 65 computationalist approach and, 8 consciousness and, 178 culture machines and, 62–65, 68–69 Google and, 159–160 ideology and, 68 imagination and, 69, 73–74 of information, 8, 63, 69–71 mathematics and, 84 meaning and, 8, 21–22, 26, 39 money and, 156–159, 178–179 Netflix and, 92, 94, 96 Siri and, 62–65, 71–73, 82, 84 work of algorithms and, 122 Open source software, 6, 162, 167 ORION, 19, 47 Orwellian surveillance, 132–134 Page, Larry, 155–156 PageRank, 20, 111, 155–159, 169, 177–178, 189 Pariser, Eli, 46, 50 Parisian Great Exhibition, 80 Pasquale, Frank, 21 Pension funds, 151, 168 Perfect knowledge, 13, 65, 71, 73, 190 Perry Mason (TV series), 95–96 Phaedrus (Plato), 37 Phoenix, Joaquin, 77 Pickers, 132–134 Pitts, Walter, 28 Planned Parenthood, 64 Plato, 4, 31, 37–38, 40, 82 Popova, Maria, 175–176 Post, Emil, 9 Pragmatic Chaos (Netflix), 89–90 Pragmatist approach algorithmic, 2, 18–25, 42 effective computability and, 25–26 experimental humanities and, 193 growing power of computation and, 27 justice and, 146 models of reason and, 47 reframing humanities and, 193 Siri and, 58, 62 Privacy, 49, 62, 75, 90, 160–161, 163, 173 Private keys, 163 Programmability, 16, 178 Programmable culture, 169–175 Programmed Visions (Chun), 33 Project Loon, 66 Proofs, 15, 24–25, 41, 44 Protocol (Galloway), 50 Public keys, 163 Purdy, Jedediah, 146–147 Quantum mechanics Netflix and, 91–94, 96, 99, 112 Wiener and, 26–27 Raley, Rita, 194–195 Ramsey, Stephen, 52 Raymond, Eric, 6 Reading Machines (Ramsey), 52 Religion, 1, 7, 9, 49, 69, 71, 80, 136 Rendell, Paul, 30 Rice, Stephen P., 144–145 Rid, Thomas, 199n42 Riskin, Jessica, 136–137 Robotics, 31, 34, 43–45, 132–134, 188 Rood of Grace, 137 Rotten Tomatoes, 96 RSE encryption, 163 Samantha (Her), 77–85, 154, 181 Sample, Mark, 194–195 Sandvig, Christian, 107, 131 Sarandos, Ted, 98, 100, 104 Schmidt, Eric, 66, 73, 127 Schwartz, Peter, 160–161 Scorsese, Martin, 59 Searle, John, 4 Shannon, Claude, 27 Sharing economy, 54, 123, 127–129, 145, 148 Shoup, Donald, 127 Silicon Valley, 3, 9, 30–31, 49, 54, 87, 100, 124, 182 SimCity (game), 194 Simondon, Gilbert, 40, 42–44, 53, 59, 84, 106, 118 Singhal, Amit, 72, 76 Siri abortion scandal and, 64 abstraction and, 64–65, 82–84 anticipation and, 73–74 as beta release, 57 CALO and, 57–58, 63, 65, 67, 79, 81 cognition and, 57–65, 71–84 computationalist approach and, 65, 77 consciousness and, 57–65, 71–84 conversation and, 57–65, 71–84 DARPA and, 11, 57–58 Easter eggs in, 60, 148 effective computability and, 58, 62, 64, 72–76, 81 emotional work and, 148 Enlightenment and, 71–76, 79–80, 82 gender and, 60–61, 80 interfaces and, 59–60, 63, 75, 77 intimacy and, 11, 75–81 language and, 57–65, 71–84 launch of, 57 machine learning and, 62–65, 182 market issues and, 59, 75–77 meaning and, 65 ontology and, 62–65, 71–73, 82, 84 parsing data and, 182 performing knowledge and, 59–61 quest for knowledge and, 71–75, 82, 84 reading, 58–59 reduced abilities of, 59 speed of, 131 Skinner boxes, 61, 115–116, 119–120, 122 Smith, Adam, 12, 146–147 Smith, Kevin, 88 Sneakers (film), 3 Snow Crash (Stephenson), 1, 3–5, 9, 17, 36, 38, 50 Social behavior, 22, 146 addiction and, 114–119, 121–122 discrimination and, 21, 130 exploitationware and, 115–116 Social gaming, 114, 118, 120–122 Social media, 6 Arab Spring and, 111, 186 changing nature of, 171 digital culture and, 3, 7, 18, 22, 43, 49, 66, 87, 156, 160, 191, 193–194 Enlightenment and, 173 identity formation and, 191 in-person exchanges and, 195 intellectual connection and, 186 newsfeeds and, 116, 177–178 peer review and, 194 raising awareness and, 174 Spoiler Foiler (Netflix) and, 101–102, 108 transaction streams and, 177 Uber and, 148 Software agency and, 6 Apple and, 59, 62 apps and, 6, 8, 9, 15, 59, 83, 91, 94, 102, 113–114, 124, 128, 145, 149 blockchains and, 163–168, 171, 177, 179 cathedrals of computation and, 6–8, 27, 33, 49, 51 Chun on, 33, 42, 104 Church-Turing thesis and, 25 consciousness and, 77 dehumanizing nature of, 116 depersonification of, 6 digital materiality and, 53 experience and, 34 as foundation of computational expression, 47 imagination and, 186, 194 in-house affect and, 59 interfaces and, 124 (see also Interfaces) logic of general substitutability and, 33 Manovich and, 112 material layers and, 48 as metaphor for metaphors, 35 Metaverse, 50 networks vs. individuals and, 118 open source, 6, 162, 167 Pasquale on, 21 reality and, 10 self-modification and, 1, 38 Weizenbaum and, 33–40 Solaris (Lem), 184 Sourcery, 3, 10, 17, 21, 33–34 Space of computation, 2–5, 9, 21, 42, 45, 76, 154, 185 Spacey, Kevin, 98–99, 106–107 Spoiler Foiler (Netflix), 101–102, 108 SRI International, 57, 59, 63, 169 Srinivasan, Balaji, 169 Star Fleet Federation, 67 Star Trek computer anticipation and, 73–74 conversation and, 67 Google and, 11, 65–82, 159, 186 interfaces and, 67–68 LCARS and, 67–68 Memex and, 186–189, 195 public expectations and, 67 Star Trek: The Next Generation (TV series), 67 Stephenson, Neal, 1, 3–5, 9, 17, 36, 38, 50, 51 Stiegler, Bernard, 43–44, 53, 106 Streaming content, 49, 54, 87, 90–92, 97, 99, 101–102, 104, 205n39 Strogatz, Steven, 44, 183 Sumerian myths, 3, 5, 16 SuperPACs, 174 Symbolic logic, 2, 21, 24, 39, 41, 44, 54–55 Symposium (Plato), 82 Tacit negotiation, 20 Taggers, 54, 88, 92–93, 96, 99 Tanz, Jason, 116 TaskRabbit, 124 Taylorism, 93 Teller, Astro, 66 Terminator (film series), 191 Terrorism, 163, 178 Theory of Communicative Action, The (Habermas), 109 Theory of Moral Sentiments (Smith), 12, 146–147 Thiel, Peter, 170–171, 174 Third parties, 59, 114, 125, 132–133, 147, 162, 170–171 Thurston, Nick, 12, 140–145 Tindr, 128 Transaction fees, 164–165 Transcendent Man (Kurzweil), 184 Transparency bazaar model and, 6 cryptocurrency and, 160–164, 168, 171, 177–178 feedback and, 146 freedom and, 9 interfaces and, 189 market issues and, 160–164, 168, 171, 177–178 politics of algorithms and, 18, 20 proprietary platforms and, 9 Traveling salesman problem, 19 “Trending Topic” widget, 180 Turing, Alan, 8, 23, 42, 79–80, 182 Turing Machine, 182 Berlinski and, 9, 24 computability boundary and, 23–24 concept of, 23 effective computability and, 42 finite-time processes and, 42 game of life and, 29–31 language and, 33, 41 McCulloch-Pitts Neuron and, 28 as though experiment, 23–24 as uniting platform, 25 Turing’s Cathedral (Dyson), 6 Turing test, 43, 79–82, 87, 138, 142 Turner, Fred, 3, 46 Twain, Mark, 151 Twitter, 53, 101–102, 173, 177, 179, 194–195, 210n43 Uber, 9, 12, 97, 138 abstraction levels of, 129 African Americans and, 130 business model of, 54, 93–94, 96 feedback system of, 145–148 interface economy and, 123–133, 145, 147 massive infrastructure of, 131 threats to, 129 Ubiquitous computation algorithms and, 3–4, 15, 33, 43, 54, 119, 124–125, 127, 178, 189–190 Bitcoin and, 178 colonization of margins and, 119 gamification and, 124 imagination and, 189–190 interfaces and, 189 Uber and, 125, 127 Unit Operations (Bogost), 118 U.S.S.


Algorithms Unlocked by Thomas H. Cormen

bioinformatics, Donald Knuth, knapsack problem, NP-complete, optical character recognition, P = NP, Silicon Valley, sorting algorithm, traveling salesman

[KL08] Jonathan Katz and Yehuda Lindell. Introduction to Modern Cryptography. Chapman & Hall/CRC, 2008. [Knu97] Donald E. Knuth. The Art of Computer Programming, Volume 1: Fundamental Algorithms. Addison-Wesley, third edition, 1997. [Knu98a] Donald E. Knuth. The Art of Computer Programming, Volume 2: Seminumeral Algorithms. Addison-Wesley, third edition, 1998. [Knu98b] Donald E. Knuth. The Art of Computer Programming, Volume 3: Sorting and Searching. Addison-Wesley, second edition, 1998. [Knu11] Donald E. Knuth. The Art of Computer Programming, Volume 4A: Combinatorial Algorithms, Part I. Addison-Wesley, 2011.

MacCormick’s treatment is less technical than this book. If you find that my approach in this book is too mathematical, then I recommend that you try reading MacCormick’s book. You should be able to follow much of it even if you have a meager mathematical background. In the unlikely event that you find CLRS too watered down, you can try Donald Knuth’s multi-volume set The Art of Computer Programming [Knu97, Knu98a, Knu98b, Knu11]. Although the title of the series makes it sound like it might focus on details of writing code, these books Chapter 1: What Are Algorithms and Why Should You Care? 9 contain brilliant, in-depth analyses of algorithms.


Design Patterns: Elements of Reusable Object-Oriented Software (Joanne Romanovich's Library) by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides

A Pattern Language, Donald Knuth, finite state, loose coupling, MVC pattern, yield curve

ACM Press. [JZ91] Ralph E. Johnson and Jonathan Zweig. Delegation in C++. Journal of Object-Oriented Programming, 4(11):22-35, November 1991. [Kir92] David Kirk. Graphics Gems III. Harcourt, Brace, Jovanovich, Boston, MA, 1992. [Knu73] Donald E. Knuth. The Art of Computer Programming, Volumes 1, 2, and 3. Addison-Wesley, Reading, MA, 1973. [Knu84] Donald E. Knuth. The TEXbook. Addison-Wesley, Reading, MA, 1984. [Kof93] Thomas Kofler. Robust iterators in ET++. Structured Programming, 14:62-85, March 1993. [KP88] Glenn E. Krasner and Stephen T. Pope. A cookbook for using the model-view controller user interface paradigm in Smalltalk-80.

(Judging from this book, we suspect “architecture encyclopedia” will be a more appropriate name than “architecture handbook.”) That first workshop has led to a series of meetings, the most recent of which being the first conference on Pattern Languages of Programs held in August 1994. This has created a community of people interested in documenting software expertise. Of course, others have had this goal as well. Donald Knuth’s The Art of Computer Programming [Knu73] was one of the first attempts to catalog software knowledge, though he focused on describing algorithms. Even so, the task proved too great to finish. The Graphics Gems series [Gla90, Arv91, Kir92] is another catalog of design knowledge, though it too tends to focus on algorithms.

A abstract class 15, 16c, 359, 364, 365c abstract coupling, see coupling, abstract in OBSERVER 296 ABSTRACT FACTORY 87 extensibility of 91 in catalog summary 8 Lexi’s use of 51 used to configure a subsystem 193 Abstract Factory participant of ABSTRACT FACTORY 88c, 89 abstract operation, see operation, abstract use to implement ADAPTER 144 abstract syntax tree 244, 251, 331 class structure for 244c, 331c constructing in Smalltalk 250 object structure for 244o AbstractExpression participant of INTERPRETER 245c, 245 Abstraction participant of BRIDGE 153c, 154 AbstractProduct participant of ABSTRACT FACTORY 88c, 89 accumulating state 336 acquaintance 22, 359 C++, defined in 23 compared with aggregation 23 Smalltalk, defined in 23 Action, see COMMAND active iterator, see iterator, active Ada 4, 21 Adaptee participant of ADAPTER 141, 141c ADAPTER 139 compared with BRIDGE 161, 219 compared with DECORATOR 184 compared with PROXY 216 in catalog summary 8 Adapter participant of ADAPTER 141, 141c adapter 140 class adapter 141, 141c object adapter 141, 141c parameterized 145 pluggable, see pluggable adapter two-way 143, 143c adorner 179 Aggregate participant of ITERATOR 259, 259c aggregate object 257 aggregation 22, 359 C++, defined in 23 compared with acquaintance 23 notation for 23 Smalltalk, defined in 23 Alexander, Christopher xiii, 2, 356, 358 algorithm avoiding dependence on 24 defining steps of 326 family of 317 skeleton 327 AlternationExpression 244co, 343 implemented in Smalltalk 249 aluminum alloy 76 Ambassador, see also PROXY C++idiom 208 AnalogClock 303 analysis object model transforming to design object model 353 ancestor class 361, see also class, parent Anderson, Bruce xi, 357 AndExp 253 Andrew Toolkit use of OBSERVER 303 Application 107, 107c, 223o, 224ci, 231, 325, 325c application programs 25 ApplicationWindow 53, 54c, 55c, 157, 233c, 234c ArrayCompositor 42c, 315, 315c, 322 ASCII7Stream 183, 183c aspect of an object 298 AssignmentNode 333c associations, see also acquaintance, aggregation in OMT 364 B BTree 202 base class, see class, parent Beck, Kent xi, 357 Bedrock use of DECORATOR 179, 180 behavioral pattern 10, 221 comparison between class and object scope 221 discussion 345 black-box reuse, see reuse, black-box block, Smalltalk 270 BNF form 247 examples of 243, 248, 251 BombedMazeFactory 93 BombedMazeGame 115 BombedWall 93, 94, 124 Booch Components use of ITERATOR 270 use of STRATEGY 323 Booch, Grady xiii, 260 Booch method 363 Boolean expression 251 variable 254 BooleanExp 252 Border 44, 45c, 46o BorderDecorator 176o, 176c, 180 BRIDGE 151 compared with ADAPTER 219 configured by ABSTRACT FACTORY 155 in catalog summary 8 Lexi’s use of 58 use of delegation in 21 bridge 152 broadcast communication 296 BUILDER 97 compared with ABSTRACT FACTORY 105, 135 compared with PROTOTYPE 135 in catalog summary 8 use in compiler example 189 Builder participant of BUILDER 98, 98c Bureaucrat 232, see also CHAIN OF RESPONSIBILITY Button 50c, 223o, 224ci, 229, 279 C C 4 Calder, Paul 33, 38 callback function 235 Caretaker participant of MEMENTO 285, 285c, 286i Cargill, Tom 308 CHAIN OF RESPONSIBILITY 223 combined with COMPOSITE 166, 232 compared with MEDIATOR 348 compared with OBSERVER 348 defined by parent references 166, 232 in catalog summary 8 use of delegation in 21 ChangeManager 282, 299, 300c Character 38, 38c character represented as object 38, 195–196 Cheshire Cat 155 Choices operating system use of FACADE 192 use of PROXY 209 class 14, 359 abstract, see abstract class adapter, see adapter, class compared with type 16 concrete, see concrete class derived 360 friend, see friend class inability to alter 24 inheritance, see inheritance instance 15 library, see toolkit mixin, see mixin class notation for 15, 363 parent 15, 361 subclass 15 template, see template class diagram 363, 365c, 359 class hierarchy adding operations to 356 connecting parallel 109, 258 explosion 25, 43, 151, 177 minimizing size of 113, 120, 177, 277, 317, 348 visiting multiple 336 class operation 359 alternatives provided by SINGLETON 128 Client participant of ABSTRACT FACTORY 88c, 89 participant of ADAPTER 141, 141c participant of BUILDER 98, 98c, 99i participant of CHAIN OF RESPONSIBILITY 225ci, 226, 348i participant of COMMAND 236, 236c, 237i participant of COMPOSITE 164c, 165 participant of FLYWEIGHT 198c, 199 participant of INTERPRETER 245c, 246 participant of PROTOTYPE 119, 119c client 11 isolating concrete classes from 89 ClockTimer 302 clone operation 117 used in PROTOTYPE 117 implementing 121 cloned object 117 initializing 121 CLOS 4, 260, 338 closure 260, 267 Coad, Peter 357 code structure run-time versus compile-time 23 CodeGenerationVisitor 332c Colleague communicating with Mediator 278, 282 participant of MEDIATOR 276co, 277, 348i COMMAND 233 combined with MEMENTO 239, 287 combined with PROTOTYPE 238 in catalog summary 8 use in Lexi 64 Command 60, 61c, 233, 233c, 239 configured in MenuItem 61 history of 62 participant of COMMAND 236, 236c, 237i, 347i command C++ idiom, see functor copying before execution 238 history, see history list implemented through C++ templates 239, 240 intelligence of 238 common vocabulary 352 communication encapsulated or distributed 346 between Strategy and Context 318 between Visitor and Element 337 compilation dependencies reducing using FACADE 188 Compiler 185, 186c, 191 compiler example in FACADE 185, 186c, 188 implemented using VISITOR 331 Smalltalk, see RTL Smalltalk compiler Component participant of COMPOSITE 164c, 165, 168 participant of DECORATOR 177, 177c COMPOSITE 163 caching children of 169 child management 167 combined with INTERPRETER 255 combined with ITERATOR 262 combined with VISITOR 339 compared with DECORATOR 219–220 compared with INTERPRETER 247 data structure for 169, 170 in catalog summary 8 interface of 167 Lexi’s use of 40 parent references 166 sharing components 166 use in Model/View/Controller 5 Composite participant of COMPOSITE 164c, 165, 165o, 168 CompositeEquipment 171 Composition 41, 42c, 315, 315c, 320 composition, see object composition Compositor 41, 42, 315, 315c, 321 interface 41 CompressingStream 183c, 184 concrete class, 15, 359 avoiding specification of 24 isolating clients from 89 ConcreteAggregate participant of ITERATOR 259, 259c ConcreteBuilder participant of BUILDER 98c, 99, 99i ConcreteCommand participant of COMMAND 236, 236c, 238 ConcreteComponent participant of DECORATOR 177, 177c ConcreteDecorator participant of DECORATOR 177c, 178 ConcreteElement participant of VISITOR 334, 334c, 335i ConcreteFactory participant of ABSTRACT FACTORY 89 ConcreteFlyweight participant of FLYWEIGHT 198co, 199 ConcreteHandler participant of CHAIN OF RESPONSIBILITY 225c, 226 ConcreteImplementor participant of BRIDGE 153c, 154 ConcreteIterator participant of ITERATOR 259, 259c ConcreteObserver participant of OBSERVER 294c, 295, 295i ConcreteProduct participant of ABSTRACT FACTORY 88, 89 participant of FACTORY METHOD 108, 108c ConcretePrototype participant of PROTOTYPE 119, 119c ConcreteState participant of STATE 307, 307c ConcreteStrategy participant of STRATEGY 316c, 316 ConcreteSubject participant of OBSERVER 294c, 295, 295i Concrete Visitor participant 334, 334c, 335i conditional statements avoiding using STATE 307 avoiding using STRATEGY 317 consolidation phase of lifecycle 353 constraint solving 282, 283 see also ThingLab, QOCA ConstraintSolver 283–284, 288 constructor 360 Context 252 participant of INTERPRETER 245c, 246 participant of STATE 306, 306c participant of STRATEGY 316c, 316 control flow encapsulating, see MEDIATOR inversion of 27 Coplien, James 125, 153, 160, 242, 313, 357 copy deep 121 on write 210 shallow 121 CountingMazeBuilder 104 coupling 360 abstract 188, 278, 296, 359 loose 24, 26, 277, 347, see also decoupling reducing 24, 187, 188, 223, 226 tight 24 CreateMaze operation 84 ABSTRACT FACTORY variant (C++) 92 ABSTRACT FACTORY variant (Smalltalk) 94 BUILDER variant 102 FACTORY METHOD variant 114 PROTOTYPE variant (Smalltalk) 123, 125 creational pattern 10, 81 discussion of 135 Creator participant of FACTORY METHOD 108, 108c implementation of 111, 113 Cursor, see ITERATOR cursor, see iterator, cursor D data member 360 DebuggingGlyph 182 DECORATOR 175 compared with ADAPTER 175, 184 compared with COMPOSITE 44, 173, 219–220 compared with PROXY 216, 219–220 compared with STRATEGY 179 in catalog summary 8 Lexi’s use of 45c, 46o, 47 lightweight versus heavyweight 179 Decorator 176, 180 participant of DECORATOR 177, 177c, 180o decorator 175 decoupling, see also coupling, loose interface and implementation 154 senders and receivers 346 deep copy, see copy, deep delegate 20, 144 delegation 20, 278, 360 compared with inheritance 20–21 implementing pluggable adapters with 144 patterns that rely on 21 dependency 293 managing complex 299 Dependents, see OBSERVER derived class, see class, derived design déjà-vu 2 density 358 documenting with patterns 27, 352 for change 23 poetry of 356 for reuse 23 design object model 353 design pattern 360 adjunct to design methodology 353 aspects of design varied by 30 benefits 351 catalog summary 8 catalog template 6 classification 10 compared with frameworks 28 diagram of relationships 12 documenting designs with 27, 352 essential elements 3 finding 355 history of 355 how to use 29 purpose 10 refactoring with 353 scope 10 selection of 28 table of 10 destructor 360 ensuring iterator’s is called 266 Dialog 223, 231 DialogDirector 274o, 275ci, 278 DialogWindow 53, 54c, 55c DigitalClock 302 Director participant of BUILDER 98c, 99, 99i DirectoryBrowser 144, 144c, 145c discretionary glyph 75 dispatch double 338 multiple 339 single 338 Doc 205, see also Lexi Document 107, 107c, 233c, 234, 234c, 325, 325c document color 42, 322 formatting 40 logical structure 40 physical structure 35 documenting design with patterns 27, 352 doesNotUnderstand message used to implement CHAIN OF RESPONSIBILITY 229 used to implement PROXY 212, 215 Domain 192, 192c Door 82c, 83 extensions for PROTOTYPE 123 double-dispatch, see dispatch, double downcast 91 Dylan 4 use of MEMENTO 289 dynamic binding 14, 360 dynamic inheritance 309 dynamic_cast in C++ 91, 168 E e-mail address reaching the authors xii Eiffel 17, 21 Element participant of VISITOR 334, 334c encapsulation 11, 360 breaking with inheritance 19 breaking with VISITOR 337 preserving boundaries of 286 of algorithms, see STRATEGY of complex update semantics, 299, see also ChangeManager of concept that varies 29, 54 of document analysis and traversal 71 of protocol between objects, see MEDIATOR of how objects are created, see ABSTRACT FACTORY, BUILDER, PROTOTYPE of traversal, see ITERATOR of requests 59, see also COMMAND of state-specific behavior, see STATE EnchantedMazeFactory 93 envelope-letter idiom 313 Equipment 170, 340 EquipmentVisitor 341 error accumulation avoiding during undo/redo 239 ET++ use of ABSTRACT FACTORY 95 use of ADAPTER 126, 148 use of BRIDGE 160 use of BUILDER 105 use of CHAIN OF RESPONSIBILITY 232 use of COMPOSITE 172 use of COMMAND 242 use of DECORATOR 182, 183 use of FACADE 192 use of FACTORY METHOD 115 use of FLYWEIGHT 206 use of ITERATOR 261 use of MEDIATOR 281 use of OBSERVER 303 use of PROTOTYPE 120, 125 use of PROXY 216 use of STRATEGY 322–323 ET++SwapsManager use of STRATEGY 323 ETgdb 125 expansion phase of lifecycle 353, 354 explosion, see class hierarchy, explosion ExtendedHandler 228 external iterator, see iterator, external extrinsic state, see state, extrinsic F FACADE 185 compared with MEDIATOR 193, 282 in catalog summary 8 use in Choices 192 Facade participant of FACADE 185c, 187, 187c facade 185 FACTORY METHOD 107 in catalog summary 8 language-specific variants 112 parameterized with product identifier 110 used to implement ABSTRACT FACTORY 90, 91, 110 used to create an iterator 258 FileStream 183, 183c FLYWEIGHT 195 combined with COMPOSITE 167, 200 combined with INTERPRETER 247 combined with STATE 308 in catalog summary 9 Lexi’s use of 39 participant of FLYWEIGHT 198, 198co flyweight 196, 196o managing shared 200 FlyweightFactory 204 participant of FLYWEIGHT 198co, 199 FontDialogDirector 274, 274o, 275ci Foote, Brian 353 forwarding requests 229 framework 26, 360 compared with design patterns 28 documenting with patterns 27 graphical editor 117 see Bedrock see Choices see ET++ see HotDraw see MacApp see NEXTSTEP see NeXT AppKit see RApp see RTL Smalltalk compiler see Unidraw trade-offs associated with 27 Fresco 344 friend class 360 used to grant Iterator privileged access to collection 262 used to support Memento 287 functor 242 future cash flow 323 G gdb 126 generics 21 Glyph 38, 38c, 42c, 43o, 45c, 46o, 50c, 54c, 67c implemented as a flyweight 201–204 interface 39 interface for traversal 66 Glue, see FACADE GlyphArrayIterator 67, 67c GNU gdb 126 grammar 243 maintaining complex 247 Graphic 163c, 208c, 213 GraphicTool 117, 118c guaranteed receipt of request 226 GUIFactory 49, 50c, 51 H Hamlet 1 Handle/Body, see also BRIDGE C++idiom 155, 160 Handler participant of CHAIN OF RESPONSIBILITY 225, 225ci, 348i hardware platform isolating application from 24 help context-sensitive 223 on-line 223 HelpHandler 224, 224c, 227, 229 history list 62–64, 238 copying commands onto 238 Hollywood principle 327 hook operation 326, 328 in ABSTRACT FACTORY 109 in FACTORY METHOD 109 in PROXY 212 in TEMPLATE METHOD 326, 328 HotDraw use of STATE 313 hub of communication 274 hyphenation 64 I IconWindow 53, 54c, 151–152, 151c, 157 Image 207o, 208c, 213 ImageProxy 207o, 208c Implementor participant of BRIDGE 153c, 154 implicit receiver, see receiver, implicit incremental changes 287 inheritance 15, 360 C++, defined in 17 class versus interface 16 combined with polymorphism 18 compared with object composition 18, 178 compared with parameterized types 21 dynamic 309 Eiffel, defined in 17 implementation 17, 360 interface 17, 360 mixin, see mixin class notation for 15, 364, 365c proper use of 18 reuse through 18 Smalltalk, defined in 17 inorder traversal, see traversal, inorder instance, see also class, instance ensuring uniqueness, see SINGLETON variable 15, 360 instantiation 15 abstracting process of 48 notation for 15, 364, 365c integrated circuit 323 interaction diagram 7, 366 in BUILDER 99i in CHAIN OF RESPONSIBILITY 224i, 348i in COMMAND 237i, 347i in MEDIATOR 274i, 348i in MEMENTO 286i in OBSERVER 295i, 347i in VISITOR 335i Lexi’s Visitor 74i interface 13 benefits of programming to 18 bloat 257 conversion, see ADAPTER for iteration 262 inheritance 13, 17 narrow versus wide in MEMENTO 285 specifying in C++ 17 simplifying subsystems, see FACADE internal iterator, see iterator, internal INTERPRETER 243 combined with COMPOSITE 255 combined with VISITOR 247, 255 in catalog summary 9 InterViews use of ABSTRACT FACTORY 95 use of ADAPTER 148 use of COMMAND 242 use of COMPOSITE 172 use of DECORATOR 182 use of FLYWEIGHT 205 use of OBSERVER 303 use of SINGLETON 133 use of STRATEGY 320, 322–323 intrinsic state, see state, intrinsic inversion of control flow 27 invitation 358 Invoker participant of COMMAND 236, 236c, 237i, 347i IRIS Inventor use of VISITOR 344 ITERATOR 257 combined with COMPOSITE 362 combined with VISITOR 339 compared with VISITOR 336 in catalog summary 9 use in Lexi 69 Iterator 67, 67c, 258c, 263, 372 participant of ITERATOR 259, 259c iterator 66, 257, 339 access to aggregate 262 active 260 alternative to in Smalltalk 270 controlling 260 cursor 261 ensuring deletion of 266 external 260, 339, 269 interface to 261, 263 internal 260, 267, 339, see also ListTraverser null 262, see also NullIterator over recursive structures 262 parameterized with an operation 267 passive 260 polymorphic 258, 261, 265 privileged access to Aggregate 262 robust 261 K Kit, see also ABSTRACT FACTORY in InterViews 95 Knuth, Donald 357 L lazy initialization 112 Leaf participant of COMPOSITE 164c, 165, 165o, 168 Lempel-Ziv compression 183 Lexi 33 document structure 35 document traversal and analysis 64 look-and-feel standards 47 multiple window systems 51 user interface 33, 34 user operations 58 libg++ use of BRIDGE 160 lifecycle of software 353, 354 Linton, Mark 344 List 257, 257c, 258c, 263, 369 list box 274 list traversal 257 ListBox 274o, 275ci, 279 ListIterator 67, 257, 257c, 258c, 264, 372 ListTraverser 267 LiteralExpression 244co, 344 implemented in Smalltalk 250 look-and-feel standards 87 support in Lexi 35, 47 M MacApp use of CHAIN OF RESPONSIBILITY 232 use of COMMAND 242 use of DECORATOR 179, 180 use of FACTORY METHOD 113, 115 Macbeth 1 MacFactory 50c Macintosh 48, 52 MacroCommand 235, 235c, 241 magic token 346 Manipulator 109, 110c MapSite 82, 82c Marriage of Convenience 149 Maze 82c, 84 MazeBuider 101 MazeFactory 92 as singleton 133 MazeGame 84, 114 MazePrototypeFactory 122 MEDIATOR 273 combined with OBSERVER 299 compared with CHAIN OF RESPONSIBILITY 348 compared with FACADE 282 compared with OBSERVER 346, 348 in catalog summary 9 use of delegation in 21 Mediator communicating with Colleague 278, 282 participant of MEDIATOR 276co, 277, 348i omitting abstract class of 278 mediator 274 member function 361, see also operation MEMENTO 283 in catalog summary 9 Memento combined with COMMAND 239, 287 participant of MEMENTO 285, 285c, 286i memento 284 costs associated with 286 language support for 287 MemoryStream 183 Menu 50c, 233c menu 233 configuring 60, 234 pull-down 58 MenuItem 59, 61c, 233, 233c metaclass 133, 361 method 361, see also operation Microsoft Windows 52 mixin class 16, 16c, 361 Model/View/Controller 4, 5 use of COMPOSITE 5, 172 use of FACTORY METHOD 115 use of OBSERVER 5, 303 use of STRATEGY 6 MonoGlyph 44, 45c Motif 35, 47, 48, 49, 51, 87 MotifFactory 49, 50c multiple dispatch, see dispatch, multiple multiple inheritance, see also mixin class used to implement class adapter 141 used to implement BRIDGE 156 MVC, see Model/View/Controller Meyer, Bertrand 149 N naming conventions 29, 31 FACTORY METHOD 31, 113 TEMPLATE METHOD 329 VISITOR 337 NeXT AppKit use of ADAPTER 149 use of BRIDGE 160 use of CHAIN OF RESPONSIBILITY 232 use of TEMPLATE METHOD 329 NEXTSTEP use of ADAPTER 145 use of PROXY 208, 212, 216 Node 333c NodeVisitor 332c nonterminal symbol 246 NonTerminalExpression participant of INTERPRETER 245c, 246 notification 294 null iterator, see iterator, null NullIterator 67c, 67–68, 262 NXProxy 208, 212 O object 11, 361 adapter, see adapter, object acquaintance 22 aggregation 22 as argument to request 345 aspect of 298 avoiding dependence on implementation of 24 composition, see object composition finding 11 granularity of 13, see also FLYWEIGHT guts 179 reference 361 shared, see FLYWEIGHT skin 179 specifying implementation of 14 specifying interface to 13 object composition 18, 361 compared with inheritance 18–20 compared with parameterized types 22 reuse through 19 object diagram 364, 361 Objects for States, see STATE Object Modeling Technique 7, 14, 363, 364 Objective C 90, 120, 121, 135, 144 Objectory 363 ObjectWindows use of ITERATOR 270 use of STRATEGY 323 ObjectWorks\Smalltalk, see also Smalltalk use of ADAPTER 148–149 use of DECORATOR 182 use of FACADE 191 OBSERVER 293 combined with MEDIATOR 278, 282 compared with CHAIN OF RESPONSIBILITY 346, 348 compared with MEDIATOR 346, 348 in Model/View/Controller 5 in catalog summary 8 limiting unexpected updates in 296 Observer 300 combining with Subject 300 participant of OBSERVER 294c, 295, 295i, 300c, 347i OMT, see Object Modeling Technique operation 11, 361 abstract 15, 359 adding to classes 335 avoiding dependence on specific 24 class, see class operation concrete 327 dispatch, see dispatch hook, see hook operation overriding 16 primitive 327, 329 Orbix use of FACTORY METHOD 116 Originator participant of MEMENTO 285, 285c, 286i originator 284 overloading used to implement PROXY 211 used to implement VISITOR 72, 337 P parameterized types 21, 361, see also template compared with inheritance 22 compared with composition 22 parent class, see class, parent parent references defined in COMPOSITE 166 parser 247 part-whole, see recursive composition see also aggregation Pascal 4 passive iterator, see iterator, passive PassivityWrapper 182 path specifying multi-segment shapes 57 pattern language 356 Pattern Languages of Programs 357 pattern matching 243 persistence 209 Picture 163c, 164o PLoP, see Pattern Languages of Programs pluggable adapter 142 implementation of 144–145, 144c, 145c, 148, 149c PMFactory 50c PMIconWindow 151, 151c PMWindow 151, 151c PMWindowImp 152, 152c, 158–159 Point 373 Policy, see STRATEGY polymorphic iteration 258 implementing in C++ 261 polymorphism 14, 361 used with inheritance 18 postorder traversal, see traversal, postorder preorder traversal, see traversal, preorder PreorderIterator 67 member functions 68–69 Presentation Manager 35, 48, 52, 56, 57, 87, 151, 158 PricingVisitor 341 PrintDialog 223o, 224i private inheritance 361, see also inheritance, implementation Product participant of BUILDER 98c, 99 participant of FACTORY METHOD 108, 108c product objects 49 changing at run-time 119 creating in ABSTRACT FACTORY 90 exchanging 89 family of 87 varying representation of 100 protection proxy, see proxy, protection protocol 361 PROTOTYPE 117 compared with ABSTRACT FACTORY 126, 135 combined with COMMAND 238 compared with FACTORY METHOD 116, 120 in catalog summary 9 participant of PROTOTYPE 119, 119c used to implement ABSTRACT FACTORY 90 prototype 117 prototype manager 121 prototyping phase of lifecycle 353 PROXY 207 combined with ITERATOR 262 compared with DECORATOR 220 in catalog summary 9 Proxy participant of PROXY 209co, 209 proxy 207 protection 208, 210 remote 208, 210 virtual 208, 210 pseudocode 16, 16c, 365c Publish-Subscribe, see OBSERVER pull model 298 pull-down menu, see menu, pull-down purpose of design pattern, see design pattern, purpose push model 298 Q QOCA use of ADAPTER 143 use of INTERPRETER 255 use of MEMENTO 291 R RApp use of STRATEGY 323 RealSubject participant of PROXY 209co, 210 Receiver participant of COMMAND 236, 236c, 237i, 238 receiver 361 decoupling from sender 346 implicit 224 Rect 374 Rectangle 20, 20c recursive composition 36, see also COMPOSITE iteration over 262 of document structure 36 of graphic elements 163 of part-whole structures 164 redesign, causes of 24 redo, see undo/redo refactoring 326, 353 reference counting 210 RefinedAbstraction participant of BRIDGE 153c, 154 regular expression 243 representing in Smalltalk 248 RegularExpression 244c remote proxy, see proxy, remote RepetitionExpression 244co, 343 implemented in Smalltalk 249 request 11, 361 automatic forwarding of 229 encapsulation of 59, see also COMMAND guaranteed receipt of 226 representing 227 sequencing 234 Responder 232 reuse black-box 19, 354, 359 by composition 19 by parameterized types 21 by subclassing 19 code 26 designing for 24–25 frameworks 26 internal 25 maximizing 23 of implementation 18 toolkits 26 white-box 19, 354, 362 Rich Text Format 97 robust iterator, see iterator, robust Room 82c, 83 RTF, see Rich Text Format RTFReader 97, 97c RTL Smalltalk compiler use of COMPOSITE 172 use of STRATEGY 323 S scope of design pattern, see design pattern, scope Scrollbar 50c ScrollDecorator 176o, 176c Scroller 45, 46o Self 4, 121, 309 sender decoupling from receiver 346 SequenceExpression 244co, 343 implemented in Smalltalk 249 sequencing requests 234 shallow copy, see copy, shallow Shape 139, 140c, 146 shrinkability 320 signature 13, 361 SimpleCompositor 42, 42c, 315, 315c, 321 single static assignment form, SSA 172 single-dispatch, see dispatch, single SINGLETON 127 C++ implementation 129, 131 in catalog summary 9 registry of 130 subclassing 130 used to implement ABSTRACT FACTORY 90 Singleton participant of SINGLETON 127c, 128 Sketchpad 125 SkipList 258c, 265 skiplist 258 Smalltalk-80, see also ObjectWorks\Smalltalk, Smalltalk/V use of BUILDER 105 use of COMPOSITE 172 use of FACTORY METHOD 115 use of INTERPRETER 251 use of ITERATOR 270 use of OBSERVER 303 use of SINGLETON 133 use of VISITOR 344 Smalltalk/V use of INTERPRETER 251 use of MEDIATOR 278, 281 smart pointers 209 smart references 209 software platform isolating application from 24 Solitaire, see SINGLETON SolverState 283–284 SPECTalk use of INTERPRETER 255 spelling checking 64 SpellingChecker 71–73 SpellingCheckerVisitor 75 StandardMazeBuilder 103 STATE 305 C++ idiom for, see envelope-letter idiom in catalog summary 9 use of delegation in 21 State participant of STATE 306, 306c state accumulating during traversal 336 avoiding inconsistent 308 extrinsic 196 incremental changes to 287 intrinsic 196 sharing 308, see also FLYWEIGHT state transitions atomic 308 defining 308 table-driven 308 STRATEGY 315 compared with DECORATOR 179 in catalog summary 8 Lexi’s use of 42 use in Choices 193 use in Model/View/Controller 6 use of delegation in 21 Strategy 180o making optional 320 participant of STRATEGY 316c, 316 strategy 315 Stream 183, 183c StreamDecorator 183, 183c stretchability 320 Stroustrup, Bjarne 160 structural pattern 10, 137 comparison between class and object scope 137 discussion of 219 subclass, see class, subclass subclassing extending functionality by 24 Subject 301 avoiding dangling references to 297 combining with Observer 300 participant of OBSERVER 294c, 295, 295i, 300c, 347i participant of PROXY 209co, 210 subject 294 mapping to observers 297 observing more than one 297 subsystem 361 simplifying interface to, see FACADE subtype, see type, subtype successor 224 connecting in chain 227 implementing chain of 225 superclass 361, see also class, parent supertype, see type, supertype Surrogate, see PROXY Sutherland, Ivan 125 swaps 323 T Target participant of ADAPTER 141, 141c TCP protocol 309 TCPConnection 305, 305c, 309 TCPState 305, 305c, 310 template 21, see also parameterized types used to implement COMMAND 239 used to implement FACTORY METHOD 113 used to implement STRATEGY 319, 323 TEMPLATE METHOD 325 calling Factory Methods 116 in catalog summary 9 naming conventions for 329 used to implement ITERATOR 270 template method 326 terminal symbol 246 shared using FLYWEIGHT 247 TerminalExpression participant of INTERPRETER 245c, 246 TEX 42, 97, 316 TeXCompositor 42c, 315, 315c, 322 TextShape 139, 140c, 146, 147 TextView use in ADAPTER 139, 140c, 146 use in DECORATOR 176c, 176o ThingLab 125 THINK use of COMMAND 242 use of OBSERVER 303 Token, see MEMENTO Tool 117, 118c, 313, 313c toolkit 26, 233, 362 see Andrew see Booch Components see Fresco see Interviews see IRIS Inventor see Object Windows see QOCA see THINK Transaction, see COMMAND transaction 236 transparent enclosure 43, see also DECORATOR traversal of aggregate objects, see also ITERATOR across class hierarchies 336 assigning responsibility for in VISITOR 339 inorder, preorder, postorder 262 TreeAccessorDelegate 145, 145c TreeDisplay 142, 144, 144c, 145c two-way adapter, see adapter, two-way type 13 compared with class 16 C++, definition in 17 Eiffel, definition in 17 Smalltalk, definition in 17 subtype 13 supertype 13 type-checking 332 to identify requests at run-time 228 see also dynamic_cast TypeCheckingVisitor 332c U undo/redo 59–60, 62–64, 235, 238, 283, 287 avoiding error accumulation during 239 Unidraw use of ADAPTER 143 use of CHAIN OF RESPONSIBILITY 232 use of COMMAND 232, 242 use of FACTORY METHOD 111 use of ITERATOR 270 use of MEDIATOR 282 use of MEMENTO 289 use of OBSERVER 303 use of PROTOTYPE 126 use of STATE 313 UnsharedConcreteFlyweight participant of FLYWEIGHT 199 updates encapsulating complex 299 limiting unexpected 296 protocol for in OBSERVER 296 triggering 297 V Validator 323 VariableExp 252 VariableRefNode 333c ViewManager 281, 281o Virtual Constructor, see FACTORY METHOD virtual memory framework 192 virtual proxy, see proxy, virtual VISITOR 331 combined with INTERPRETER 247, 255 in catalog summary 9 interaction diagram for Lexi 74 use in Lexi 76 use in compiler example 190, 331 use of delegation in 21 Visitor 75, 337 participant of VISITOR 334, 334c visitor 74, 332 VisualComponent 176, 176c, 180 vocabulary, defining common 352 W Wall 82c, 83 white-box reuse, see reuse, white-box Widget 224c, 230, 275c, 278 widget 48, 87 Glyph hierarchy 50 WidgetFactory 87 Window 20c, 39, 54c, 55c, 152, 156 configuring with WindowImp 57–58 interface 53 window systems 35 support in Lexi 51 WindowImp 55, 55c, 152, 152c, 157 subclasses 55 Windows, see Microsoft Windows WindowSystemFactory 57 Wrapper, see ADAPTER, DECORATOR WYSIWYG 33 X X Window System 52, 56, 57, 151, 158 XIconWindow 151, 151c XWindow 151, 151c XWindowImp 152, 152c, 158 Class Diagram Notation Object Diagram Notation Interaction Diagram Notation Design Pattern Relationships


pages: 400 words: 94,847

Reinventing Discovery: The New Era of Networked Science by Michael Nielsen

Albert Einstein, augmented reality, barriers to entry, bioinformatics, Cass Sunstein, Climategate, Climatic Research Unit, conceptual framework, dark matter, discovery of DNA, Donald Knuth, double helix, Douglas Engelbart, Douglas Engelbart, en.wikipedia.org, Erik Brynjolfsson, fault tolerance, Fellow of the Royal Society, Firefox, Freestyle chess, Galaxy Zoo, Internet Archive, invisible hand, Jane Jacobs, Jaron Lanier, Johannes Kepler, Kevin Kelly, Magellanic Cloud, means of production, medical residency, Nicholas Carr, P = NP, publish or perish, Richard Feynman, Richard Stallman, selection bias, semantic web, Silicon Valley, Silicon Valley startup, Simon Singh, Skype, slashdot, social intelligence, social web, statistical model, Stephen Hawking, Stewart Brand, Ted Nelson, The Death and Life of Great American Cities, The Nature of the Firm, The Wisdom of Crowds, University of East Anglia, Vannevar Bush, Vernor Vinge, Yochai Benkler

Their heroes were people who could, in a few days, whip up a program that would take lesser programmers months to write. To give you the flavor of what skills were valued in those days, consider this story from one of the great pioneers of modern computing, Alan Kay, a recipient of the Turing Award, the highest honor in computer science. It’s an admiring story about the programming prowess of Donald Knuth, another legend of computing and Turing Award recipient: When I was at Stanford with the [artificial intelligence] project [in the late 1960s] one of the things we used to do every Thanksgiving is have a programming contest with people on research projects in the Bay area. The prize I think was a turkey.

Other forums used to propose new features include an online mailing list, a wiki, and even a weekly conference phone call of Firefox developers. p 58 more than a billion lines: This and the estimate of the rate of code growth are conservative estimates, based on work by Deshpande and Riehle [51], current as of the end of 2006. p 58: Alan Kay’s story about Donald Knuth is from page 101 of [192]. p 59 “Good programmers code; great programmers reuse other people’s code”: Variants of this saying have floated around the open source world for years, but I haven’t been able to track down the original source. This is fitting. There’s more, too: the quote is a paraphrase of a quote often attributed to Picasso, “Good artists copy; great artists steal.”

See also citations; papers, scientific Justinian (emperor), 158 Kacheishvili, Giorgi, 25 Karpov, Anatoly, 18 Kasparov, Garry, 15–18 on hybrid chess tournament, 114 limits on expertise of, 32 Kasparov versus the World, 15–18 amplifying collective intelligence in, 21, 66, 75 collective insight and, 66–68 conversational critical mass in, 30 dynamic division of labor in, 34–36 expert attention and, 24–26, 28, 66 microcontributions in, 64 shared praxis in, 75 superiority to committees, 39 Katznelson, Yitzhak, 212 Kay, Alan, 58 Kelly, Kevin, 221, 233 Kepler, Johannes, 104, 172–73 Kepler Mission, 201 Khalifman, Alexander, 26 Kleinberg, Jon, 217 knowledge: aggregated by the market, 37–39 current change in construction of, 10, 206 entire body of, 123 of information commons, 59 modern expansion of, 31–32 public accessibility of, 96. See also meaning found in knowledge Knuth, Donald, 58 Krush, Irina, 16–18, 24–26, 35, 66, 67–68, 74 Lakhani, Karim, 218 language translation by machine, 124–26 Lanier, Jaron, 223 Large Hadron Collider (LHC), 161 Large Synoptic Survey Telescope (LSST), 107, 151 lasers, 157 Lauer, Tod, 100–101, 103, 114 lean manufacturing, 36 Leibniz, Gottfried Wilhelm, 174 Lessig, Lawrence, 220 Lévy, Pierre, 217, 221 libraries, and new knowledge tools, 235–36 line-free configurations, 209–10, 212 Lintott, Chris, 133, 134–35 Linus’s Law, 223 Linux: conscious modularity in development of, 51–52, 56–57 microcontributions to, 63 near-fracturing of, 49–50 origin of, 20, 44–45 release 2.0, 52 societal change and, 158 ubiquity of, 45 Lockheed Martin Skunk Works, 36 Lockyer, Joseph Norman, 138 machine translation, 124–26 Mackay, Charles, 218 Mad Max (film), 34 Magellanic clouds, 99 Manhattan Project, 36 markets: collaboration markets, 85, 86, 87, 182, 196 delivering social benefits of science, 156–57, 158 online collaboration compared to, 37–38 subsumed by online tools, 38–39, 224 Masum, Hassan, 171 mathematical proof.


pages: 855 words: 178,507

The Information: A History, a Theory, a Flood by James Gleick

Ada Lovelace, Alan Turing: On Computable Numbers, with an Application to the Entscheidungsproblem, Albert Einstein, AltaVista, bank run, bioinformatics, Brownian motion, butterfly effect, citation needed, Claude Shannon: information theory, clockwork universe, computer age, conceptual framework, crowdsourcing, death of newspapers, discovery of DNA, Donald Knuth, double helix, Douglas Hofstadter, en.wikipedia.org, Eratosthenes, Fellow of the Royal Society, Gödel, Escher, Bach, Henri Poincaré, Honoré de Balzac, index card, informal economy, information retrieval, invention of the printing press, invention of writing, Isaac Newton, Jacquard loom, Jaron Lanier, jimmy wales, Johannes Kepler, John von Neumann, Joseph-Marie Jacquard, lifelogging, Louis Daguerre, Marshall McLuhan, Menlo Park, microbiome, Milgram experiment, Network effects, New Journalism, Norbert Wiener, Norman Macrae, On the Economy of Machinery and Manufactures, PageRank, pattern recognition, phenotype, Pierre-Simon Laplace, pre–internet, Ralph Waldo Emerson, RAND corporation, reversible computing, Richard Feynman, Rubik’s Cube, Simon Singh, Socratic dialogue, Stephen Hawking, Steven Pinker, stochastic process, talking drums, the High Line, The Wisdom of Crowds, transcontinental railway, Turing machine, Turing test, women in the workforce

♦ “THIS PROCESS OF CONQUEST AND INFLUENCE”: Julian Jaynes, The Origin of Consciousness in the Breakdown of the Bicameral Mind, 198. ♦ TO FORM LARGE NUMBERS, THE BABYLONIANS: Donald E. Knuth, “Ancient Babylonian Algorithms,” Communications of the Association for Computing Machinery 15, no. 7 (1972): 671–77. ♦ “IT WAS ASSUMED THAT THE BABYLONIANS”: Asger Aaboe, Episodes from the Early History of Mathematics (New York: L. W. Singer, 1963), 5. ♦ “OUR TASK CAN THEREFORE PROPERLY BE COMPARED”: Otto Neugebauer, The Exact Sciences in Antiquity, 2nd ed. (Providence, R.I.: Brown University Press, 1957), 30 and 40–46. ♦ “A CISTERN. THE HEIGHT IS 3,20”: Donald E. Knuth, “Ancient Babylonian Algorithms,” 672. ♦ “FUNDAMENTALLY LETTERS ARE SHAPES”: John of Salisbury, Metalogicon, I:13, quoted and translated by M.

In 1949, when the number of cuneiform tablets housed in museums reached (at his rough guess) a half million, Neugebauer lamented, “Our task can therefore properly be compared with restoring the history of mathematics from a few torn pages which have accidentally survived the destruction of a great library.”♦ In 1972, Donald Knuth, an early computer scientist at Stanford, looked at the remains of an Old Babylonian tablet the size of a paperback book, half lying in the British Museum in London, one-fourth in the Staatliche Museen in Berlin, and the rest missing, and saw what he could only describe, anachronistically, as an algorithm: A cistern.

“Andrei Nikolaevich Kolmogorov. 25 April 1903–20 October 1987.” Biographical Memoirs of Fellows of the Royal Society 37 (1991): 301–19. Keynes, John Maynard. A Treatise on Probability. London: Macmillan, 1921. Kneale, William. “Boole and the Revival of Logic.” Mind 57, no. 226 (1948): 149–75. Knuth, Donald E. “Ancient Babylonian Algorithms.” Communications of the Association for Computing Machinery 15, no. 7 (1972): 671–77. Kolmogorov, A. N. “Combinatorial Foundations of Information Theory and the Calculus of Probabilities.” Russian Mathematical Surveys 38, no. 4 (1983): 29–43. ———. Selected Works of A.


pages: 398 words: 107,788

Coding Freedom: The Ethics and Aesthetics of Hacking by E. Gabriella Coleman

activist lawyer, Benjamin Mako Hill, commoditize, crowdsourcing, Debian, disinformation, Donald Knuth, dumpster diving, en.wikipedia.org, financial independence, ghettoisation, GnuPG, Hacker Conference 1984, Hacker Ethic, Herbert Marcuse, informal economy, Jacob Appelbaum, Jaron Lanier, Jason Scott: textfiles.com, Jean Tirole, knowledge economy, laissez-faire capitalism, Larry Wall, Louis Pasteur, means of production, Paul Graham, peer-to-peer, pirate software, popular electronics, RFC: Request For Comment, Richard Stallman, rolodex, Ronald Reagan, Silicon Valley, Silicon Valley startup, slashdot, software patent, software studies, Steve Ballmer, Steven Levy, Ted Nelson, The Hackers Conference, the scientific method, The Structural Transformation of the Public Sphere, web application, web of trust, Yochai Benkler

He characterized computer programs as “writings” to argue that software was unfit for patents, although appropriate for copyrights and thus free speech protections (patents being for invention, and copyright being for expressive content). The idea that coding was a variant of writing was also gaining traction, in part because of the popular publications of Stanford Computer Science professor Donald Knuth (1998; see also Black 2002) on the art of programming. During the early 1990s, a new ethical sentiment emerged among Usenet enthusiasts (many of them hackers and developers) that the Internet should be a place for unencumbered free speech (Pfaffenberger 1996). This sensibility in later years would become specified and attached to technical artifacts such as source code.

Boston: Little, Brown and Company. Klein, Naomi. 2008. The Shock Doctrine: The Rise of Disaster Capitalism. New York: Henry Holt and Company. Kollock, Peter. 1999. The Economies of Online Cooperation: Gifts and Public Goods. In Communities in Cyberspace, ed. Marc A. Smith and Peter Kollock, 219–39. London: Routledge. Knuth, Donald. 1998. The Art of Computer Programming, Vol. 1. New York: Addison-Wesley. Lakoff, George. 2004. Don’t Think of an Elephant! Know Your Values and Frame the Debate. White River Junction, VT: Chelsea Green. 2006. Whose Freedom? The Battle over America’s Most Important Idea. New York: Farrar, Straus, Giroux.

See poetics of hacking Johansen, Jon Lech, 86, 161, 162, 170–73, 180, 181. See also DeCSS joking. See humor jurisgenesis, 124 Kant, Immanuel, 157, 221n23 KDE, 44, 75, 167 Kelty, Chris, 58, 68, 76, 123, 127, 189, 198, 209 kernel, 43, 46, 74, 75. See also Linux Kidder, Tracy, 61 Klecker, Joel “Espy,” 53 Knuth, Donald, 169 Kraft, Martin “madduck,” 54 Latour, Bruno, 57, 76, 185, 190, 197, 198 lawsuits, 46, 64, 72, 86, 161, 171–72, 180–82 legal education of hackers. See hackers: legal consciousness of Lehman, Bruce, 73 Lessig, Lawrence, 26, 41–42, 82, 83, 168, 180, 181, 190, 197–200. See also Creative Commons Levy, Steven, 19 liberalism, 2, 17, 68, 121, 211n4; definition of, 2–4; relation of to F/OSS, 3, 13, 15, 17, 75, 185, 189, 192, 202; history of, 2–4, 211n2; and notions of selfhood, 11, 94, 95, 118, 121, 202; principles of, 2, 3, 9, 17, 189, 195.


pages: 625 words: 167,349

The Alignment Problem: Machine Learning and Human Values by Brian Christian

Albert Einstein, algorithmic bias, Amazon Mechanical Turk, artificial general intelligence, augmented reality, autonomous vehicles, backpropagation, butterfly effect, Cass Sunstein, Claude Shannon: information theory, computer vision, Donald Knuth, Douglas Hofstadter, effective altruism, Elon Musk, game design, Google Chrome, Google Glasses, Google X / Alphabet X, Gödel, Escher, Bach, hedonic treadmill, ImageNet competition, industrial robot, Internet Archive, John von Neumann, Joi Ito, Kenneth Arrow, longitudinal study, mandatory minimum, mass incarceration, natural language processing, Norbert Wiener, Panopticon Jeremy Bentham, pattern recognition, Peter Singer: altruism, Peter Thiel, premature optimization, RAND corporation, recommendation engine, Richard Feynman, Rodney Brooks, Saturday Night Live, selection bias, self-driving car, side project, Silicon Valley, speech recognition, Stanislav Petrov, statistical model, Steve Jobs, strong AI, the map is not the territory, theory of mind, Tim Cook: Apple, zero-sum game

When Hoare himself was asked about the quote in 2004, he said he had “no recollection” of where it came from, suggesting perhaps it was the kind of thing that Edsger Dijkstra might have said, and adding, “I think it would be fair for you assume it is common culture or folklore” (Hans Gerwitz, “Premature Optimization Is the Root of All Evil,” https://hans.gerwitz.com/2004/08/12/premature-optimization-is-the-root-of-all-evil.html). Knuth, in 2012, conceded, “I did say things like ‘Premature optimization is the root of all evil in programming’” (Mark Harrison, “A note from Donald Knuth about TAOCP,” http://codehaus.blogspot.com/2012/03/note-from-donald-knuth-about-taocp.html). In all likelihood, the phrase was indeed his own. 3. The US Centers for Disease Control warns about babies getting hypothermia in cold bedrooms, and in 2017 a healthy, middle-aged man in Thailand died in his bedroom after hypothermic shock, simply from leaving fans running on a cold night.

“Brain Function and Adaptive Systems: A Heterostatic Theory.” Bedford, MA: Air Force Cambridge Research Laboratories, 1972. Knox, W. Bradley, Peter Stone, and Cynthia Breazeal. “Training a Robot via Human Feedback: A Case Study.” In International Conference on Social Robotics, 460–70. Springer, 2013. Knuth, Donald E. “Computer Programming as an Art.” Communications of the ACM 17, no. 12 (1974): 667–73. ———. “The Errors of TeX.” Software: Practice and Experience 19, no. 7 (1989): 607–85. ———. “Structured Programming with Go to Statements.” Computing Surveys 6, no. 4 (1974): 261–301. Kobayashi, Hiromi, and Shiro Kohshima.

See curiosity interface design, 269 interference, 292 interpretability, 113–17 See also transparency interventions medical predictive models and, 84, 86, 352n12 risk-assessment models and, 80–81, 317–18, 351nn87, 90 intrinsic motivation addiction and, 205–8, 374n65 boredom and, 188, 201, 202, 203–04 knowledge-seeking agents, 206–07, 209–10, 374n73 novelty and, 189–94, 207, 370–71nn29–30, 32, 35 reinforcement learning and, 186–89, 370n12 sole dependence on, 200–03, 373n58 surprise and, 195–200, 207–08, 372nn49–50, 373nn53–54, 58 inverse reinforcement learning (IRL), 253–68 aspiration and, 386–87n55 assumptions on, 324 cooperative (CIRL), 267–68, 385nn40, 43–44 demonstration learning for, 256–61, 323–24, 383nn22–23, 398n30 feedback learning and, 262, 263–66, 384–85n37 gait and, 253–55 as ill-posed problem, 255–56 inference and, 251–53, 385n39 maximum-entropy, 260–61 inverse reward design (IRD), 301–02 irreversibility, 290–91, 292, 293, 320, 391n39, 397n22 Irving, Geoffrey, 344n86 Irwin, Robert, 326 Isaac, William, 75–77, 349n76 Jackson, Shirley Ann, 9 Jaeger, Robert, 184 Jain, Anil, 31 James, William, 121, 122, 124 Jefferson, Geoffrey, 329 Jefferson, Thomas, 278 Jim Crow laws, 344n83 Jobs, Steve, 98 Johns Hopkins University, 196–97 Jorgeson, Kevin, 220–21 Jurafsky, Dan, 46 Kabat-Zinn, Jon, 321 Kaelbling, Leslie Pack, 266, 371n30 Kage, Earl, 28 Kahn, Gregory, 288 Kalai, Adam, 6–7, 38, 41–42, 48, 316 Kálmán, Rudolf Emil, 383n15 Kant, Immanuel, 37 Kasparov, Garry, 205, 235, 242 Kaufman, Dan, 87–88 Kellogg, Donald, 214–15, 375n7 Kellogg, Luella, 214–15, 375n7 Kellogg, Winthrop, 214–15, 375n7 Kelsey, Frances Oldham, 315 Kerr, Steven, 163, 164, 168 Kim, Been, 112–17 kinesthetic teaching, 261 Kleinberg, Jon, 67, 69, 70, 73–74 Klopf, Harry, 127, 129, 130, 133, 138, 150 knowledge-seeking agents, 206–07, 209–10, 374n73 Knuth, Donald, 311, 395n2 Ko, Justin, 104, 356n55 Kodak, 28–29 Krakovna, Victoria, 292–93, 295 Krizhevsky, Alex, 21, 23–25, 285, 339n20 l0-norm, 354n47 Labeled Faces in the Wild (LFW), 31–32, 340n44 Lab for Analytical Sciences, North Carolina State University, 88 labor recruiting, 22 Landecker, Will, 103–04, 355n54 language models.


pages: 749 words: 92,104

Hacker's Delight by Henry S. Warren

Donald Knuth, John von Neumann

In Papers of John von Neumann on Computing and Computing Theory, Volume 12 in the Charles Babbage Institute Reprint Series for the History of Computing, MIT Press, 1987. [Ken] Found in a GNU C compiler for the RS/6000 that was ported by Richard Kenner. He attributes this to a 1992 PLDI conference paper by him and Torbjörn Granlund. [Knu1] Knuth, Donald E. The Art of Computer Programming, Volume 1, Third Edition: Fundamental Algorithms. Addison-Wesley, 1997. [Knu2] Knuth, Donald E. The Art of Computer Programming, Volume 2, Third Edition: Seminumerical Algorithms. Addison-Wesley, 1998. [Knu3] The idea of using a negative integer as the base of a number system for arithmetic has been independently discovered by many people.

Single Cycle Merge/Logic Unit, US Patent No. 4,903,228, February 20, 1990. [GK] Granlund, Torbjörn and Kenner, Richard. "Eliminating Branches Using a Superoptimizer and the GNU C Compiler." In Proceedings of the 5th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), July 1992, 341-352. [GKP] Graham, Ronald L., Knuth, Donald E., and Patashnik, Oren. Concrete Mathematics: A Foundation for Computer Science, Second Edition. Addison-Wesley, 1994. [GLS1] Steele, Guy L., Jr. Private communication. [GLS2] Steele, Guy L., Jr. "Arithmetic Shifting Considered Harmful." AI Memo 378, MIT Artificial Intelligence Laboratory (September 1976); also in SIGPLAN Notices 12, 11 (November 1977), 61-69.


pages: 612 words: 187,431

The Art of UNIX Programming by Eric S. Raymond

A Pattern Language, Albert Einstein, barriers to entry, bioinformatics, Clayton Christensen, combinatorial explosion, commoditize, correlation coefficient, David Brooks, Debian, domain-specific language, don't repeat yourself, Donald Knuth, Everything should be made as simple as possible, facts on the ground, finite state, general-purpose programming language, George Santayana, Innovator's Dilemma, job automation, Larry Wall, MVC pattern, pattern recognition, Paul Graham, peer-to-peer, premature optimization, pre–internet, publish or perish, revision control, RFC: Request For Comment, Richard Stallman, Robert Metcalfe, Steven Levy, transaction costs, Turing complete, Valgrind, wage slave, web application

Nevertheless, my approach has certainly been influenced by Christopher Alexander's work[3] (especially The Timeless Way of Building and A Pattern Language), and I owe the Gang of Four and other members of their school a large debt of gratitude for showing me how it is possible to use Alexander's insights to talk about software design at a high level without merely uttering vague and useless generalities. Interested readers should see Design Patterns: Elements of Reusable Object-Oriented Software [GangOfFour] for an introduction to design patterns. The title of this book is, of course, a reference to Donald Knuth's The Art of Computer Programming. While not specifically associated with the Unix tradition, Knuth has been an influence on us all. Editors with vision and imagination aren't as common as they should be. Mark Taub is one; he saw merit in a stalled project and skillfully nudged me into finishing it.

Get it working before you optimize it. The most basic argument for prototyping first is Kernighan & Plauger's; “90% of the functionality delivered now is better than 100% of it delivered never”. Prototyping first may help keep you from investing far too much time for marginal gains. For slightly different reasons, Donald Knuth (author of The Art Of Computer Programming, one of the field's few true classics) popularized the observation that “Premature optimization is the root of all evil”.[11] And he was right. Rushing to optimize before the bottlenecks are known may be the only error to have ruined more designs than feature creep.

But in the Unix tradition, profilers have a far more important function. They enable you not to optimize the other 90%! This is good, and not just because it saves you work. The really valuable effect is that not optimizing that 90% holds down global complexity and reduces bugs. You may recall that we quoted Donald Knuth observing “Premature optimization is the root of all evil” in Chapter 1, and that Rob Pike and Ken Thompson had a few pungent observations on the topic as well. These were the voices of experience. Do good design. Think about what's right first. Tune for efficiency later. Profilers help you do this.


pages: 615 words: 168,775

Troublemakers: Silicon Valley's Coming of Age by Leslie Berlin

AltaVista, Apple II, Asilomar, Asilomar Conference on Recombinant DNA, Bear Stearns, beat the dealer, Bill Atkinson, Bill Gates: Altair 8800, Bob Noyce, Byte Shop, Clayton Christensen, cloud computing, computer age, discovery of DNA, don't be evil, Donald Knuth, double helix, Douglas Engelbart, Douglas Engelbart, Dynabook, Edward Thorp, El Camino Real, fear of failure, Fellow of the Royal Society, financial independence, game design, Haight Ashbury, hiring and firing, independent contractor, industrial robot, informal economy, Internet of things, inventory management, John Markoff, Kickstarter, Kitchen Debate, Leonard Kleinrock, manufacturing employment, Mark Zuckerberg, Menlo Park, Minecraft, Mother of all demos, packet switching, Ralph Nader, Robert Metcalfe, rolodex, Ronald Reagan, Sand Hill Road, Silicon Valley, Silicon Valley startup, Snapchat, software as a service, Steve Jobs, Steve Wozniak, Steven Levy, Stewart Brand, Ted Nelson, union organizing, upwardly mobile, William Shockley: the traitorous eight, women in the workforce

The people who mattered to Taylor—the world’s leading academic computer scientists, not venture capitalists, shareholders, the buying public, or the press—knew he had won. Chaired professors at MIT, Stanford, and Carnegie Mellon were impressed by PARC’s work and stunned by the caliber of Taylor’s lab. In 1983, Stanford computer science professor Donald Knuth called the computer science lab “the greatest by far team of computer scientists ever assembled in one organization.”16 If Xerox was too shortsighted to turn top work into products, if the general public was so undiscerning as to want to buy a toy and call it a computer, that didn’t mean that Taylor’s team had lost.

To bring Taylor back to PARC with more resources and more power would have exacerbated the problems perceived by Xerox management. While the group was making its case to Kearns, other members of the lab contacted the world’s leading computer scientists to ask them to write to the CEO and pressure him not to let Taylor leave. Within days, the letters were on Kearns’s desk. “A mind-boggling event,” Donald E. Knuth, the distinguished computer scientist at Stanford, called it. “Bob has accomplished such miraculous things. I had always assumed he was considered one of Xerox’s most important people.” With Taylor gone, Knuth wrote, the world’s finest assembly of computer scientists would likely dissolve, which would “spell the end of Xerox’s leadership in computer systems.”26 Similar letters arrived from Dana S.

Smith, Fumbling the Future: How Xerox Invented, Then Ignored, the First Personal Computer (New York: iUniverse, 1999). 15. Though Gary Starkweather began working on the laser printer at Xerox’s Webster Research Center in Rochester, the work came to fruition only once he moved to PARC and began working with Butler Lampson and others on a digital control system and character generator. 16. Donald E. Knuth to David T. Kearns, Sept. 23, 1983, RWT. 17. Butler Lampson, interview by author, April 18, 2014. 18. Geschke, interview by author, April 21, 2014. Young Maniacs — Mike Markkula 1. Arthur Rock, interview by author, April 4, 2016. It could not have hurt matters that Richard B. Fisher, the leading senior executive at Morgan Stanley (he would be named president in 1984) had been one of Bill Hambrecht’s closest friends since college (Hambrecht ROHO interview).


pages: 315 words: 70,044

Learning SPARQL by Bob Ducharme

database schema, Donald Knuth, en.wikipedia.org, G4S, linked data, semantic web, SPARQL, web application

RDF lets you define custom datatypes for your own needs, and as this query demonstrates, SPARQL lets you query for them. (We’ll learn how to query for d:item2d, which has the @en tag to show that it’s in English, in Checking, Adding, and Removing Spoken Language Tags.) Note The Potrzebie System of Weights and Measures was developed by noted computer scientist Donald Knuth. He published it as a teenager in Mad Magazine in 1957, so it is not considered normative. A single potrzebie is the thickness of Mad magazine issue number 26. The use of non-XSD types in RDF is currently most common in data using the SKOS standard for controlled vocabularies. In SKOS, the skos:notation property names an identifier for a concept that is often a legacy value from a different thesaurus expressed as a cryptic numeric sequence (for example, “920” to represent biographies in the library world’s Dewey Decimal System), unlike the concept’s skos:prefLabel property that provides a more human-readable name.

., Adding Data to a Dataset integer datatype, Datatypes and Queries IRI, Glossary IRI(), Node Type Conversion Functions isBlank(), Node Type and Datatype Checking Functions isIRI(), Node Type and Datatype Checking Functions isLiteral(), Node Type and Datatype Checking Functions isNumeric(), Node Type and Datatype Checking Functions isURI(), FILTERing Data Based on Conditions, Node Type and Datatype Checking Functions J JavaScript, SPARQL and Web Application Development, SPARQL Query Results XML Format Jena, Defining Rules with SPARQL, Getting Started with Fuseki, Getting Started with Fuseki, Standalone Processors join (SPARQL equivalent), Searching Further in the Data JSON, The SPARQL Specifications, SPARQL and Web Application Development, SPARQL Query Results XML Format, Standalone Processors as ARQ output, Standalone Processors query results, SPARQL Query Results XML Format K Knuth, Donald, Datatypes and Queries L lang(), Checking, Adding, and Removing Spoken Language Tags, Checking, Adding, and Removing Spoken Language Tags langMatches() vs., Checking, Adding, and Removing Spoken Language Tags langMatches(), Checking, Adding, and Removing Spoken Language Tags language codes, Making RDF More Readable with Language Tags and Labels, Using the Labels Provided by DBpedia, Checking, Adding, and Removing Spoken Language Tags, Checking, Adding, and Removing Spoken Language Tags checking, adding, and removing, Checking, Adding, and Removing Spoken Language Tags, Checking, Adding, and Removing Spoken Language Tags filtering on, Using the Labels Provided by DBpedia LCASE(), String Functions LIMIT, Retrieving a Specific Number of Results, Federated Queries: Searching Multiple Datasets with One Query Linked Data, What Exactly Is the “Semantic Web”?


pages: 619 words: 210,746

Reversing: Secrets of Reverse Engineering by Eldad Eilam

Donald Knuth, functional programming, software as a service

., 319 architecture compilers, 55–58 decompilers, 459 Windows operating system, 70–71 arithmetic flags carry flag (CF), 520–521 defined, 519 EFLAGS register, 519–520 overflow flag (OF), 520–521 parity flag (PF), 521 sign flag (SF), 521 zero flag (ZF), 521 arithmetic operations ADC instruction, 529 ADD instruction, 522, 529 DIV/IDIV instruction, 524 LEA instruction, 522 modulo, 527–528 MUL/IMUL instruction, 523–524 reciprocal multiplication, 524–527 SBB instruction, 529 64-bit arithmetic, 528–534 SUB instruction, 522, 529 arithmetic (pure), 510–512 array restructuring, 356 arrays, 31, 548–549 The Art of Computer Programming — Volume 2: Seminumerical Algorithms (Second Edition), Donald E. Knuth, 251 The Art of Computer Programming — Volume 3: Sorting and Searching (Second Edition), Donald E. Knuth, 177, 187 assembler program, 11 Index assemblies (.NET), 426, 453 assembly language AT&T Unix notation, 49 code examples, 52–53 defined, 10–11, 44 flags, 46–47 instructions, 47–51 Intel notation, 49 machine code, 11 operation code (opcode), 11 platforms, 11 registers, 44–46 AT&T Unix assembly language notation, 49 attacks copy protection technologies, 324 DoS (Denial-of-Service) attacks, 280 power usage analysis attacks, 319 audio, 321 Automatic Detection and Prevention of Buffer-Overflow Attacks, Crispin Cowan, Calton Pu, David Maier, Heather Hinton, Peat Bakke, Steve Beattie, Aaron Grier, Perry Wagle, and Qian Zhang, 252 B back end of decompilers, 476–477 backdoor access (with malicious software), 280 backdoors, 276 Bakke, Peat, Automatic Detection and Prevention of Buffer-Overflow Attacks, 252 base object, 29 BaseNamedObjects directory, 83 basic block (BB), 464–466 Beattie, Steve, Automatic Detection and Prevention of Buffer-Overflow Attacks, 252 beq instruction, 432 Best, Robert M., Microprocessor for Executing Enciphered Programs patent, 311, 318 bge instruction, 432 bgt instruction, 432 binary code, 11 binary file comparison programs, 242 binary search algorithm, 177 binary searching, 32 binary trees, 32, 552, 554 BIOS/firmware malware, 279–280 ble instruction, 432 blt instruction, 432 bne instruction, 432 Boomerang IA-32 decompiler, 477 box instruction, 432 br instruction, 432 branch prediction, 67–68 branchless logic conditional instructions, 513–515 defined, 509 pure arithmetic, 510–512 break conditions in loops, 506–507 breaking copy protection technologies attacks, 324 challenge response, 315–316 class breaks, 312–313 cracking, 357–358 crypto-processors, 318–319 Defender crackme program, 415–416 dongle, 316–317 encryption, 318 hardware-based, 316–317 media-based, 314–316 objectives, 312 online activation, 315–316 requirements, 313 ripping algorithms, 365–370 serial numbers, 315 563 564 Index breaking copy protection technologies (continued) server-based software, 317 StarForce suite (StarForce Technologies), 345 trusted components, 312 Uncrackable Model, 314 breakpoint interrupt, 331 BreakPoint Software Hex Workshop, 131–132 breakpoints, 331–332 brute-forcing the Defender crackme program, 409–414 BSA and IDC Global Software Piracy Study, Business Software Alliance and IDC, 310 bugs (overflows) heap overflows, 255–256 integer overflows, 256–260 stack overflows, 245–255 string filters, 256 Business Software Alliance, BSA and IDC Global Software Piracy Study, 310 Byte magazine, 311 bytecodes defined, 12 difference from binary code, 61 interpreters, 61–62 just-in-time compilers (JiTs), 62 reversing strategies, 62–63 virtual machines, 12–13, 61 C C programming language, 34–35 C# programming language, 36–37, 428 C++ programming language, 35 CALL instruction, 51, 487, 540 call instruction, 431 calling conventions cdecl, 540 defined, 540 fastcall, 541 stdcall, 541 thiscall, 541 calling functions, 487 carry flag (CF), 520–521 cases Felten vs.

The function is looping toward higher-valued elements by constantly moving to the next node on the right until it finds a node whose middle element is higher-valued than the element you’re looking for (which would indicate that the element is somewhere in the left node). Whenever that happens the function moves to the left node and then continues to move to the right from there until the element is found. This is the classic binary search algorithm defined in Donald E. Knuth. The Art of Computer Programming - Volume 3: Sorting and Searching (Second Edition). Addison Wesley. [Knuth3]. Of course, this function is probably not searching for an existing element, but is rather looking for a place to fit the new element. Callback Parameters Let’s take another look at the parameters passed to the callback and try to guess their meaning.

Volume 32 , Issue 3, July 1985, which is essentially a binary tree with a unique organization scheme. The problem of properly organizing a binary tree has been heavily researched and there are quite a few techniques that deal with it (If you’re patient, Knuth provides an in-depth examination of most of them in [Knuth3] Donald E. Knuth. The Art of Computer Programming—Volume 3: Sorting and Searching (Second Edition). Addison Wesley. The primary goal is, of course, to be able to reach elements using the lowest possible number of iterations. A splay tree (also known as a self-adjusting binary search tree) is an interesting solution to this problem, where every node that is touched (in any operation) is immediately brought to the top of the tree.


pages: 519 words: 142,646

Track Changes by Matthew G. Kirschenbaum

active measures, Apple II, Apple's 1984 Super Bowl advert, Bill Gates: Altair 8800, Buckminster Fuller, commoditize, computer age, corporate governance, David Brooks, dematerialisation, Donald Knuth, Douglas Hofstadter, Dynabook, East Village, en.wikipedia.org, feminist movement, forensic accounting, future of work, Google Earth, Gödel, Escher, Bach, Haight Ashbury, HyperCard, Jason Scott: textfiles.com, Joan Didion, John Markoff, John von Neumann, Kickstarter, low earth orbit, mail merge, Marshall McLuhan, Mother of all demos, New Journalism, Norman Mailer, pattern recognition, pink-collar, popular electronics, RAND corporation, rolodex, Ronald Reagan, self-driving car, Shoshana Zuboff, Silicon Valley, social web, Stephen Hawking, Steve Jobs, Steve Wozniak, Steven Levy, Stewart Brand, technoutopianism, Ted Nelson, text mining, thinkpad, Turing complete, Vannevar Bush, Whole Earth Catalog, Y2K, Year of Magical Thinking

His colophon to the three books (just shy of 3,000 published pages of scientific and historical fiction) captures what I mean. He tells us there that the manuscript was drafted longhand, using a succession of boutique fountain pens. Stephenson then transcribed the text to his personal computer system using the venerable Emacs program and typeset it himself using TeX, the computer typesetting system to which Donald Knuth (perhaps our most famous living computer scientist) devoted nearly a decade of his career to perfecting. His publisher, however, wanted the manuscript set using what was then the industry standard, QuarkXPress, so Stephenson next took it upon himself to put together a conversion program written in LISP.90 Point for point, the brand names of the fountain pens—Waterman, Rotring, Jorg Hysek—balance out the technical particulars of the software programs and computing languages that follow.

Though the Jobs visit is the one that will remain inscribed in legend, there were many outsiders who came through PARC, and the Alto, Bravo, and Gypsy teams did many demos. A year or so before the group from Apple, a young Hollywood screenwriter named Bonnie MacBird showed up. She had an unusual background: she had read about PARC in Ted Nelson’s book Computer Lib / Dream Machines (1974) and had studied with Donald Knuth, one of the world’s foremost computer scientists, at Stanford. She was also working on a rather unusual script. MacBird had recently left a writing position at Universal Studios for a new production company run by Steven Lisberger specializing in animated films and computer graphics. Lisberger had an idea for a movie about video games, which were quickly becoming the rage in coin-operated arcades (Space Invaders had just been released in the United States by Midway).

See Amazon.com King, Stephen, xi, 42, 43, 59–62, 74–77, 83–86, 279n1, 279n9; On Writing, 83, 84; The Talisman, 59–62, 58, 76, 84; “The Word Processor,” 77–83, 85, 157, 186, 188; Under the Dome, 83–84 Kittler, Friedrich, 28, 48, 158, 160, 163, 209, 235, 243, 324n2 Kleinschrod, Walter, 34, 146 Kling, Thomas, 233 Knickerbocker, Conrad, 167 Knopf, 132, 133, 137 Knuth, Donald, 30, 128 Kokkonen, Kim, 112 Kopelson, Kevin, 75 Kosofsky Sedgwick, Eve, 3, 330n19 Krementz, Jill, 74–76, 83, 90 Kruse, Horst, 251n1 Labor: computers and, 25, 39, 50, 58, 71, 101, 142–144, 244; gender and, 140–143, 150 162, 167, 176; of writing, 97, 160, 243–244 Langford, David, 268n37 Lanham, Richard, 196, 197, 198 Lanier, 33, 44, 51, 117, 216 Larson, Jonathan, 26, 234 Larsson, Stieg, 216, 222 Le Guin, Ursula K., 113 Leiber, Fritz, 38, 192, 268n27, 279n10 Lem, Stanislaw, 38, 41, 192, 279n10 Levertov, Denise, 160 Levine, David, 253n16 Levy, Steven, 54, 140–141 Lexitron, 35, 46, 119, 164, 216, 221, 304n105 Licklider, J.


pages: 525 words: 142,027

CIOs at Work by Ed Yourdon

8-hour work day, Apple's 1984 Super Bowl advert, business intelligence, business process, call centre, cloud computing, crowdsourcing, distributed generation, Donald Knuth, Flash crash, Googley, Grace Hopper, Infrastructure as a Service, Innovator's Dilemma, inventory management, Julian Assange, knowledge worker, Mark Zuckerberg, Nicholas Carr, rolodex, shareholder value, Silicon Valley, six sigma, Skype, smart grid, smart meter, software as a service, Steve Ballmer, Steve Jobs, Steven Levy, the new new thing, the scientific method, WikiLeaks, Y2K, Zipcar

When I was working my way through school, I was spending a lot of time reading, guess what? I think it was classic computer science texts. Yourdon: [laughter] Fried: And everything from reading [Brian] Kernighan and [P.J.] Plauger’s Elements of Programming Style [McGraw-Hill, 1978], the books of the Bell Labs guys, [Donald] Knuth’s Art of Computer Programming [Addison-Wesley, 2011], and the stuff he did. Did you guys [Bell Labs team and Ed Yourdon] publish together? I thought I remembered. Yourdon: Well, because it took two years to get my books out—in fact, because of Bill Plauger, we had the first nonacademic UNIX license in the country.

Nobody wants to spend more than ten minutes focusing intellectually on anything. Nicholas Kristof wrote something saying that in today’s world you could never read War and Peace because who’s got time for a 1200-page book, whether it’s a novel or a computer science book? Fried: Yeah. Yourdon: Who’s going to read Donald Knuth’s four volumes? Fried: Yeah, I just got the new one, the 4A just came out, right? So, that’s interesting. There had been this period of time when many of us had thought or hoped that the prevalence of e-mail would lead to a second great, generation of letters, of people of letters. But of course, what happened instead was instant messaging and tweets and so on—more and more sharding of one’s attention.

., 87 Arizona Public Service (APS) Company, 66, 211, 223 Arizona State University, 227 ARPANET, 19, 117, 135 Art of Computer Programming, 2 Atlanta-based Southern Company, 191 AT&T, 191, 249 B Ballmer, Steve, 39 Bank of Boston, 47 Baylor-Grapevine Board of Trustees, 47 Bedrock foundation, 249 Bell Atlantic Mobile, 231 Bell Labs, 2, 249 BlackBerry, 60, 96, 116, 121, 171, 184, 246, 261, 296, 317 Blalock, Becky, 182, 191, 215 adaptability, 192 Air Force brat, 191, 192 Atlanta-based Southern Company, 191 banking industry, 203 Boucher, Marie, 196 brainstorm, 202 24/7 business, 199 business intelligence, 204 cloud computing, 205 cognitive surplus, 206 cognitive time, 206 Coker, Dave, 196 communication and education, 200 Community and Economic Development, 194 consumer market, 202 cybersecurity, 207, 209 data analytics, 204, 205 disaster recovery, 209 distributed generation, 204 distribution organization, 201 Egypt revolution, 198 farming technology, 206 finance backgrounds/marketing, 200, 209 Franklin, Alan, 193 Georgia Power, 191 Georgia Power Management Council, 193 global society, 206 Google, 198 incredible technology, 195 Industrial Age, 206 Information Age, 206 InformationWeek's, 196 infrastructure, 202 intellectual property, 196 intelligence and redundancy, 207 Internet, 198, 206 leapfrog innovations, 205 mainframe system, 207 marketing and customer service, 193, 200 MBA, finance, 192 microfiche, 207 microwave tower, 207 mobile devices, 203 mobility and business analytics, 205 Moore's Law, 205 new generation digital natives, 197 flexible and adaptable, 199 innovation and creativity, 199 superficial fashion, 198 Olympic sponsor, 193 out pushing technology, 202 reinforcement, 201 sense of integrity, 200 Southern Company, 194, 198, 201, 207 teamwork survey, 201 technology lab, 202 undergraduate degree, marketing, 192 virtualization, 205 VRU, 203 Ward, Eileen, 196 wire business, 201 world-class customer service, 203 Bohlen, Ken, 211 American Production Inventory Control Society, 211 Apple, 217 APS, 211, 223 ASU, 227 benchmarking company, 216 chief innovation officer, 229 Citrix, 217 cloud computing, 218, 219 cognitive surplus, 220 DECnet, 212 Department of Defense, 222 distributed computing, 217 energy industry, 214 gizmo/whiz-bang show, 216 GoodLink, 217 hard-line manufacturing, 218 home computing, 219 home entertainment, 219 Honeywell, 219 HR generalists, 215 information technology department, 211 Intel machines, 217 John Deere, 213 just say yes program, 223 Lean Six Sigma improvement process, 211 Linux, 220 MBA program, 214 mentors, 213 national alerts, 224 North American universities, 228 paradigm shifts, 218, 220 PDP minicomputers, 212 Peopleware, 226 prefigurative culture, 221 R&D companies, 218 Rhode Island, 226 role models, 213 San Diego Fire Department, 224 security/privacy issues, 217 skip levels, 223 smart home concepts, 219 smartphone, 217 social media, 225 Stead, Jerry, 214 Stevie Award, 211 Storefront engineering, 212 traditional management, 219, 226 Twitter, 224 vocabulary, 221 Waterloo operations, 213 Web 2.0 companies, 227 Web infrastructure, 215 wikipedia, 220 Y2K, 222 Botnets, 23 Brian's and Rob Pike's, 2 Bristol-Myers Squibb, 33 Broadband networks, 241 Brown, 227 Bryant, 227 BT Global Services, 253 BT Innovate & Design (BTI&D), 253 Bumblebee tuna, 130 C Career writing technology, 67 CASE tools, 232 Cash, Jim, 50 Christensen, Clyde, 212 Chrome, 14, 18 Chrysler Corporation, 175 Citibank, 337 Citicorp, 313 Citrix, 217 Client-server-type applications, 59 Cloud computing, 218, 219, 239, 240, 261, 262, 310, 311, 313 Cloud technology, 62 CNN, 54 COBOL, 250 Cognitive surplus, 20, 79, 206, 291 College of Engineering, University of Miami, 113 Columbia University, 1 Community and Economic Development, 194 Computer Sciences Corporation, 35 Computerworld magazine, 196 Consumer-oriented technology, 22 Content management system, 133 Corporate information management (CIM) program, 309 Corporate Management Information Systems, 87 Corvus disk drive, 36 Customer Advisory Boards of Oracle, 191 Customer-relationship management (CRM), 56 Cutter Business Technology Council, 173 D Dallas Children's Medical Center Development Board, 48 DARPA, 19 DDoS attacks and security, 81 DECnet, 212 Dell Platinum Council, 113 DeMarco, Tom, 16, 226 Department of Defense, 222, 329, 332 Detroit Energy, 252 Digital books, 30 Digital Equipment, 48 Distributed computing, 217 Dodge, 189 Dogfooding, 11, 37, 38, 236 DTE Energy, 173 DuPont Dow Elastomers, 151 E Educational Testing Service (ETS), 151 E-government, 282, 285 Electrical distribution grid, 182 Elementary and Secondary Education Strategic Business Unit, 151 Elements of Programming Style, 2 Ellyn, Lynne, 173 advanced technology software planning, 175 Amazon, 184 artificial intelligence group, 175 Association for Women in Computing, 173 benchmark, 180, 181 BlackBerries, 184 Burns, Ursula, 175 Chrysler, 176 Cisco, 186 cloud computing, 183, 184 component-based architecture, 186 corporate communications customer service, 185 Crain's Detroit Business, 173 cyber security threats, 177 degree of competence, 187 diversity and sophistication, 182 DTE Energy, 173 energy trading, 176 engineering and science programs, 188 enterprise business systems policy, 186 executive MBA program, 176 Facebook, 185 fresh-out-of-the-university, 187 General Electric, 174 Google, 184 Grace Hopper, 174 grid re-automation, 182 Henry Ford Hospital, 174 internal social media, 185 International Coaching Federation, 178 iPads, 184 IP electrical grids, 182 iPod applications, 182 IT budgets, 186 IT responsibilities, 176 Java, 186 level of sophistication, 179 lobbying efforts, 181 medical computing, 175 Miller, Joan, 174 Mulcahey, Anne, 175 Netscape, 175 neuroscience leadership, 189 object-oriented programming, 186 Oracle, 186 peer-level people, 179 people system, 177 policies and strategies, 180 Radio Shack, 180 remote access capacity, 189 security tool and patch, 183 sense of community, 180 Shipley, Jim, 174 smart grid, 177, 182 smart meters, 182 smart phone applications, 183 swarming, 179 technical competence, 178, 179 Thomas, Marlo, 174 Twitter, 185 UNITE, 181 vendor community, 186 virtualization, 183, 184 Xerox, 175 E-mail, 9 Employee-relationship management (ERM), 56 Encyclopedia, 115 Encyclopedia Britannica, 292 ERP, 123 F Facebook, 244 Ellyn, Lynne, 185 Sridhara, Mittu, 73, 84 Temares, Lewis, 116, 121, 131 Wakeman, Dan, 169 Federal information technology investments, 299 Flex, 236 Ford, 102 Ford, Monte, 47 agile computing, 59 agile development, 62, 66 airplanes, 51 American Airlines, 47 Arizona Public Services, 66 Bank of Boston, 47 Baylor-Grapevine Board of Trustees, 47 BlackBerry, 60 board of Chubb, 51 board of Tandy, 51 business organizations, 63 business school, dean, 50 career writing technology, 67 client-server-type applications, 59 cloud technology, 62 CNN, 54 common-sense functionality, 49 consumer-based technology, 60 CRM, 56 Dallas Children's Medical Center Development Board, 48 Digital Equipment, 48 ERM, 56 financial expert, 69 frequent-flier program, 57 frontal lobotomy, 57 Harvard Business Review, 50 HR policies, 65 IBM, 48 information technology, 47, 52 Internet, 54 Internet-based protocol, 59 iPhone, 52 IT stuff, 58 Knight Ridder, 51 legacy apps, 59 mainframe-like applications, 59 management training program, 64 marketing and technical jobs, 48 Maynard, Massachusetts mill, 48 MBA program, 50 mentors, 49 Microsoft, 50 mobile computing, 62 New York Times, 53 operations center, 54 PDP-5, 49 PDP-6, 49 Radio Shack, 51 revenue management, 57 role models, 49 security paradigms, 62 self-service machine, 57 Silicon Valley companies, 68 smartphones, 54 social networking, 51, 53, 56, 58 stateful applications, 59 techie department, 48 The Associates First Capital Corporation, 47 transmission and distribution companies, 47 wireless network, 59 YouTube, 65 Fort Worth, 226 Free software foundation, 19 Fried, Benjamin, 1, 241 agile development, 25 agile methodologies, 26 Apple Genius Bar, 8 ARPANET, 19 Art of Computer Programming, 2 Bell Labs, 2 books and records, accuracy, 25 botnets, 23 Brian's and Rob Pike's, 2 cash-like principles, 29 CFO, 4 check writers, 18 chrome, 14, 18 classic computer science text, 1 cognitive surplus, 20 Columbia University, 1 compensation management, 7 competitive advantage, 9, 18 computer science degree, 1 computer scientists, 6 consumer-driven computing, 12 consumer-driven software-as-a-service offerings, 12 consumer-driven technology, 12 consumer-oriented technology, 14, 22 corporate leadership, 25 cost centers, 4 DARPA, 19 decision makers, 17 decision making, 13 360-degree performance management, 7 detroit energy, 30 digital books, 30 document workbench, 2 dogfooding, 11 e-books, 29 Elements of Programming Style, 2 e-mail, 9 end-user support, 7 engineering executive group, 4 European vendors, 6 file servers and print servers, 17 Folger Library editions, 30 free software foundation, 19 German company, 13 German engineering, 13 Gmail, 15 Godot, 26 Google, 1 books, 29 products, 5, 10 software engineers, 6 hiring managers, 6 HR processes and technologies, 6 IBM model, 13 instant messaging, 9 Internet age, 6 interviewers, training, 6 iPad, 29 iPhone, 29 IPO, 3 IT, engineering and computer science parts, 4 Knuth's books, 2 Linux machine, 8 Linux software, 19 machine running Windows, 8 Macintosh, 8 Mac OS, 9 macro factors, 11 Managing Director, 1 mentors, 1 microcomputers, 18 Microsoft, 5 Minds for Sale, 20 Morgan Stanley, 1–3, 5, 16 nonacademic UNIX license, 2 nontechnical skills, 5 oil exploration office, 17 open-source phone operating system, 20 outlook, 15 PARC, 19 performance review cycles, 7 personal computer equipment, 15 post-Sarbanes-Oxley world, 25 project manager, 13 quants, 24 rapid-release cycle, 26 R&D cycle, 24 regression testing, 27 role models, 1 shrink-wrapped software, 14 signature-based anti-virus, 22 smartphone, 20, 27 social contract, 8 society trails technology, 21 software engineering tool, 13 software installation, 14 supply chain and inventory and asset management, 10 SVP, 4 telephony, 17 ten things, 13 TMRC, 19 TROFF, 2 typesetter workbench, 2 UI designer, 14 university computing center, 28 videoconferencing, 12 Visicalc, 24 Wall Street, 23 Walmart, 6 waterfall approach, 25 XYZ widget company, 5 YouTube video, 20 G Gates, Bill, 39, 50 General Electric, 134 General Foods, 309, 326–328 General Motors, 33, 321, 329, 332 George Mason School of Information Technology, 309 Georgia Power Company, 191–193, 196 Georgia Power Management Council, 193 German company, 13 German engineering, 13 German manufacturing company, 232 Gizmo/whiz-bang show, 216 Gmail, 15 GoodLink, 217 Google, 1, 84, 85, 117, 217, 219, 220, 222, 235, 241, 263, 302, 319 apps, 314 books, 29 commercial products, 10 model, 293 Government Accountability Office (GAO), 305 4G program, 250 4G smartphone, 235 GTE, 231 Gupta, Ashish aspiration, organization, 256 bandwidth and network infrastructure, 267 BlackBerry, 261 business and customer outcomes, 274 capital investment forums, 269 career progression, 255 cloud-based shared infrastructure model, 263 cloud computing, 261, 262 collaboration, 272 communications infrastructure, 258 compute-utility-based model, 262 control and integrity, 268 core competency, 255 core network infrastructure, 267 core strengths, 256 cost per unit of bandwidth, 267 customer demands, 268 data protection, 261, 262 decision-making bodies, 269 demographics, 272, 273 device convergence, 263 dogfooding, 259 employee flexibility, 260, 264 engagement and governance, 269 enterprise market segment, 261 equipment management, 260 executive MBA, 256 fourth-generation LTE networks, 267 functional service departments, 270 Global Services, distributed organization, 257 Google, 263, 275 Google Apps, 266 handheld devices, 265 hastily formed networks, 258 IMF, 266 innovation and application development, 265 iPad, 257, 260, 261, 266,267 iPhone, 266 Japan, 257, 258 London Business School, 253 management functions, 257 management sales functions, 257 market segments, 259 MBA, General Management, 253 measurements, 271 messaging with voice capability, 264 mini-microcomputer model, 261 mobile communications network, 258 mobile-enabling voice, 259 mobile phone network, 260 mobile traffic explosion, 265 network infrastructures, 265 network IT services, 254 network quality, 257 new generation digital natives, 271 disadvantages, 273 Google, 273 opportunities, 273 Olympics, 263 opportunities, 275 organizational construct, 272 outsourced network IT services, 259 outsourcing, 271 per-use-based model, 262 portfolio and business alignment, 274 Portfolio & Service Design (P&SD), 253 primary marketing thrust, 264 product development thrust, 264 product management team, 259 project and program management, 255 resource balance, 270 scalability, 262 security, 262 Selley, Clive, 254, 255 service delivery organization, 254 single-device model, 264 smart devices, 267 smart phones, 266 telecommunications capability, 259 upward-based apps, 264 virtualization, 261 voice-over-IP connections, 258 Windows platform, 261 Gurnani, Roger, 231 accounting/finance department, 233 analog cellular networks, 250 AT&T, 249 bedrock foundation, 249 Bell Atlantic Mobile, 231 Bell Labs, 249 blogs, 244 broadband networks, 241 business benefits, 237 business device, 240 business executives, 238 business leaders, 248, 249 business relationship management, 248 buzzword, 239 CASE tools, 232 cloud computing, 239, 240 COBOL, 250 consumer and business products, 231 consumer electronics devices, 241 consumer telecom business, 233 customer-engagement channel, 244 customer forums, 244 customer support operations, 251 customer-touching channels, 236 degree of control, 246 distribution channel, 250 dogfooding, 236 ecosystem, 243, 249 enterprise business, 233 ERP systems, 236 face-to-face communications, 244 FiOS product, 235 flex, 236 "follow the sun" model, 239 German manufacturing company, 232 4G program, 250 4G smartphone, 235 hardware/software vendors, 247 information assets, 245 information technology strategy, 231 intellectual property rights, 244 Internet, 235, 239 iPhone, 243 Ivan, 232 Lowell, 232 LTE technology-based smartphone, 235 marketing, 251 MIT, 246 mobile technology, 234 Moore's law, 242 MP3 file, 235 network-based services, 240 Nynex Mobile, 233 P&L responsibility, 251 PDA, 238 personal computing, 235 product development, 234, 251 role models, 232 sales channels, 251 smartphones, 238 state-level regulatory issues, 251 state-of-the-art networks, 243 telecom career, 232 telephone company, Phoenix, 234 Verizon Communication, 231, 232 virtual corporations, 241 Web 2.0, 244 Williams Companies, 232, 233 WillTell, 233 wireless business, 233 H Hackers, 19 Harmon, Jay, 213 Harvard Business Review, 50 Harvard Business School, 331 Heller, Martha, 171 Henry Ford Hospital, 174 Hewlett-Packard piece, 129 Home computing, 219 Honda, 102 Honeywell, 219 Houghton Mifflin, 134, 136 I IBM, 48, 250 manpower, 311 model, 13 Indian IT outsourcing company, 255 Information technology, 52 Intel machines, 217 International Coaching Federation, 178 Internet, 9, 44, 54, 117, 235, 239, 316, 322 Internet-based protocol, 59 Interoperability, 341 iPads, 2, 94, 97, 184, 257, 260, 264, 267, 288, 289, 295, 296 IP electrical grids, 182 iPhones, 43, 52, 96, 101, 170, 181, 260, 264,296 iPod, 101 IT lifecycle management process, 37 Ivan, 232 J John Deere, 213 K Kansas, 226 Kernigan, Brian, 2 Knight Ridder, 51 Knuth, Donald, 2, 29 Kraft Foods Inc, 309 Krist, Nicholas, 28 Kundra, Vivek Clever Commute, 305 cognitive surplus, 303 command and control systems, 301 consumerization, 302 consumption-based model, 300 cyber-warfare, 301 Darwinian pressure, 302 desktop core configuration, 306 digital-borne content, 301 digital oil, 300, 307 digital public square, 304 enterprise software, 303 entrepreneurial startup model, 306 frugal engineering, 306 Google, 302 government business, 302 innovator's dilemma, 307 iPad, 302 IT dashboard, 302 leapfrog technology, 306 massive consumerization, 301 megatrends, 301 parameter security, 302 Patent Office, 305 pharmaceutical industry, 304 phishing attacks, 301 policy and strategic planning, 299 security and privacy, 301 server utilization, 300 social media and technology, 300, 306 storage utilization, 300 Trademark Office, 305 Wikipedia, 303 L LAN, 259 Lean Six Sigma improvement process, 211 Levy, Steven (Hackers), 19 Linux, 220 machine, 8 open-source software, 19 Lister, Tim, 226 London Business School, 73, 253, 256 Long-term evolution (LTE), 235 Lowell, 232 M MacArthur's intelligence officer, 327 Macintosh, 8 Mainframe computers, 118 Mainframe-like applications, 59 Marriott's Great America, 35 McDade, 327 McGraw-Hill Education, 133, 147, 150 Mead, Margaret, 221 Mendel, 311 Microcomputers, 18 Microsoft Corporation, 5, 11, 33, 36, 38, 41, 44, 46, 50, 156, 217, 223, 236, 250, 293 Microsoft Higher Education Advisory Group, 113 Microsoft's operational enterprise risk management, 33 Middlesex University, 189 Miller, Joan Apple products, 295 authority and accuracy, 292 award-winning ICT programs and services, 277 back locked-down information, 289 big-scale text issues, 294 big-time computing, 279 BlackBerry, 296 business management training, 281 business skills, 281 central government, 283 cognitive surplus, 291 community care project, 278 community development programs, 277, 278 computers, constituency office, 294 confidential information, 284 data management, 281 decision making, 286 democratic process, 288 economics degree, 278 e-government, 282, 285 electronic communication, 289 electronic-enabled public voice, 286 electronic information, 288 electronic media, 286 electronic records, 280, 284 electronic services, 294 e-mail, 289, 290, 295 forgiving technology, 296 front-office service, 282, 283 Google, 292 Google's cloud service, 290 Government 2, 287 Health and Social Care, 284 House business, 294 House of Lords, 288 ICT strategy, 289, 290 information management, 278 insurance company, 278 Internet information, 285 iPad, 288, 289, 296 IT data management, 279 management principle, 280 local government, 283 mainframe environment, 289 member-led activity, 287 messages, 289 Microsoft, 293 Microsoft's cloud service, 290 mobile electronic information, 284 mobile technology, 289 national organization, 284 network perimeters, 290 official government information, 285 on-the-job training, 281 organizational planning, 278 Parliamentary ICT, 277 project management, 279 public sector, 282 public transportation, 285 quango-type organizations, 283 representational democracy, 286 security, 290, 291 social care organization, 279 social care services, Essex, 278 social care systems, 284 social networking, 285 sovereignty, 291 sustainability and growth, 293 technical language, 294 technology skills, 281 transactional services, 285 transferability, 291 Web-based services, 285 Wikipedia, 291, 292 X-factor, 286 Minds for Sale, 20 Mitchell & Co, 333 MIT Media Labs, 149 Mobile computing, 62 Mobile technology, 234 Mooney, Mark, 133 artificial intelligence, 134 back-office legacy, 136 balancing standpoint, 145 BBC, 140 Bermuda Triangle, 135 BlackBerry shop, 142 Bureau of National Standards, 136 business model, 140 career spectrum, 144 cloud computing, 148 competitive intelligence and knowledge, 143 Connect, 141 customer-facing and product development, 135 customer-facing product space, 137 customer space and product development, 136 digital products development, 144 digital space and product, 146 educational and reference content, 139 educational products, 141 entrepreneur, 150 General Electric, 134 GradeGuru, 140 handheld devices, 142 hard-core technical standpoint, 146 hardware servers, 142 Houghton Mifflin, 134, 136 HTML, 138 industrial-strength product, 141 intellectual content, 148 Internet, 148 iPad, 138, 139, 142 iPhone, 142, 143 iTunes, 138 Klein, Joel, 147 learning management systems, 137 long-term production system, 141 Marine Corps, 134 McGraw-Hill Education, 133, 147 media development, 144 media space, 138, 142 mobile computing, 139 MOUSE, 150 online technology, 138 open-source capabilities, 142 Oracle quota-management system, 143 people's roles and responsibilities, 137 Phoenix, 149 product development, 149 publishing companies, 142 publishing systems, 137 Reed Elsevier, 133, 136 Salesforce.com, 144, 149 scalability testing, 145 senior business leaders, 146 social network, 148 soft discipline guidelines, 141 solar energy, 149 Strassmann, Paul, 135 technical skill set, 143, 144 testing systems integration, 145 The Shallows, 139 transactional systems, 142 trust and integrity, 145 TTS, QuickPro, and ACL, 144 Vivendi Universal, 134 War and Peace today, 139 Moore's law, 242 Morgan Stanley, 2, 3, 16 N NASA, 309, 333, 334 National Institute of Standards and Technology (NIST), 173 Naval Postgraduate School, 134 Netscape, 175 New Brunswick model, 282 News Corp., 147 New York Stock Exchange (NYSE), 87, 116, 223, 278 New York Times, 53 North American universities, 228 NSA/CIA software, 134 Nynex Mobile, 233 O Oil exploration office, 17 Open-source phone operating system, 20 Outlook, 15 P Pacer Software, 135 Paradigm shifts, 218, 220 Parks and Recreation Department, 126 PDP minicomputers, 212 Peopleware, 226 Personal computing, 235 Personal digital assistant (PDA), 238 Petri dish, 44 Phoenix, 211 Plauger, Bill, 2 Q Quants, 24 R Radio Shack, 51 Reed Elsevier, 133, 136 Reed, John, 335 Rubinow, Steve, 87 AdKnowledge, Inc., 87 agile development, 110 Agile Manifesto, 110 Archipelago Holdings Inc., 87 attributes, 108 capital market community, 91 cash/actual trading business, 88 channel marketing departments, 92 cloud computing, 97 CNBC, 89 collaborative technology, 95 collective intelligence, 95 communication skills, 102, 106 conference organizations, 99 consumer marketplace, 94 data center, 90 decision making, 105, 108 economy standpoint, 100 e-mail, 100 Fidelity Investments, 105 financial services, 92 IEEE, 101 innovative impression, 94 Internet, 98 iPad, 97 iPod device, 91 labor laws, 110 listening skills, 106 logical progression, 104 Mac, 96 mainframe, 104 management and leadership, 104, 105 market data system, 89 micro-second response time, 89 mobile applications, 94 multidisciplinary approach, 103 multimedia, 97 multi-national projects, 110 multiprocessing options, 99 network operating system, 103 NYSE Euronext, 87 open outside system, 88 parallel programming models, 99 personal satisfaction, 109 PR function, 106 proclaimed workaholic, 109 real estate business, 88 regulatory and security standpoint, 96 Rolodex, 94 Rubin, Howard, 99 server department, 97 software development, 89 sophisticated technology, 101 technology business, 88 technology integration, 91 trading engines, 90 typewriter ribbon, 94 virtualization, 98 Windows 7, 96 younger generation video games, 93 visual interfaces, 93 Rumsfeld, Donald, 222 S San Diego Fire Department, 224 Santa Clara University, 36 SAS programs, 131 Scott, Tony, 10, 33, 236 Android, 43 Apple Computer, 35 architectural flaw, 44 BASIC and Pascal, 35 Bristol-Myers Squibb, 33 Bunch, Rick (role model), 34 business groups, 42 COO, 39 Corporate Vice President, 33 Corvus disk drive, 36 CSC, 35 Defense department, 45 dogfooding, 37, 38 games and arcades, 35 General Motors, 33 IBM's role, 37 information systems management, 36 integrity factor, 40 Internet, 44 iPhone, 43 IT lifecycle management process, 37 leadership capability, 40 leisure studies, 34 macro-architectural threats, 44 Marriott's Great America, 35 math models, 36 Microsoft Corporation, 33, 36, 38, 41, 44, 46 Microsoft's operational enterprise risk management, 33 parks and recreation, 34 Petri dish, 44 playground leader, 42 product groups, 42 quality and business excellence team, 33 Santa Clara University, 36 Senior Vice President, 33 smartphone, 43 social computing, 38 Sun Microsystems, 36 theme park industry, 35 University of Illinois, 34 University of San Francisco, 36 value-added business, 33 Walt Disney Company, 33 Senior Leadership Technology and Product Marketing, 71 Shakespeare, 30 Shirky, Clay, 220 Sierra Ventures, 191 Silicon Valley companies, 68 Silicon Valley software factories, 323 Skype, 118 Smart Grid Advisory Committee, 177 Smartphones, 20, 27, 43, 54, 217, 238 Social care computer electronic record system, 279 Social computing, 38, 320 Social networking, 51, 53, 56, 58 Society trails technology, 21 SPSS programs, 131 Sridhara, Mittu, 71 Amazon, 76 American Airlines, 72 back-end computation and presentation, 80 banking, 77 B2B and B2C, 85 business/product departments, 82 business work context, 74 buzzword, 77 career aspiration, 73 career spans, 73 coders, 72 cognitive surplus, 79 competitive differentiation, 74 computing power, 78 contribution and energy, 85 convergence, 75 CPU cycles, 78 cross-channel digital business, 71 cultural and geographic implementation, 72 customer experience, 84, 85 customer profile, 76 data visualization, 79, 80 DDoS protection, 81 economies of scale, 77 elements of technology, 72 encryption, 82 end customer, 83 entertainment, 75 ERP system, 72 Facebook, 84 finance and accounting, 73 foster innovation and open culture, 81 friends/mentors/role models, 74 FSA, 76 gambling acts, 81 games, 79 gaming machines, 80 GDS, 72 global organization, 71 Google, 75, 84, 85 Group CIO, Ladbrokes PLC, 71 industry-standard technologies, 77 integrity and competence, 83 IT, 74, 82 KickOff app, 71 land-based casinos, 79 live streaming, 78 London Business School, 73 mobile computing, 78 multimedia, 84 new generation, 84 on-the-job training, 73 open-source computing, 79 opportunity, 80, 83 PCA-compliant, 81 personalization, 76 real-time systems, 74 re-evaluation, 81 reliability and availability, 77 security threats, 80 smart mobile device, 75 technology-intense customer, 85 top-line revenue, 74 trader apps, 82 true context, 73 underpinning business process, 76 virtualization, 78 Visa/MasterCard transactions, 78 Web 3.0 business, 76 web-emerging web channel, 76 Wikipedia, 79, 85 Word documents and e-mail, 82 work-life balance, 84 young body with high miles, 72 Zuckerberg, Mark, 73 Stead, Jerry, 214 Storefront engineering, 212 Strassmann, Paul, 228, 309 agile development, 340 Amazon EC2, 314 America information processors, 322 Annapolis, 340 AT&T, 332 backstabbing culture, 339 BlackBerry, 317 block houses, 319 CFO/CEO position, 337 CIM program, 309 Citibank, 337 Citicorp, 313, 339 cloud computing, 310, 311, 313 coding infrastructure, 341 communication infrastructure, 341 corporate information management, 329 Corporate Information Officer, 309 counterintelligence, 320 cyber-operations, 338 Dell server, 314 Department of Defense, 329, 332 Director of Defense Information, 309 employee-owned technology, 316 enterprise architecture, 316 exfiltration, 313 financial organizations, 320 firewalls and antiviruses, 312 General Foods, 309, 326–328 General Motors, 321, 329, 332 George Mason School of Information Technology, 309 Google apps, 314 government-supported activities, 326 Harvard Business School, 331 HR-related issues, 331 IBM manpower, 311 infiltration, 313 Internet, 316, 322 interoperability, 315, 317, 341 Kraft Foods Inc, 309 MacArthur's intelligence officer, 327 Machiavellian view, 327 mash-up, 316 military service, 331 NASA, 309, 333, 334 police department, economics, 312 powerpoint slides, 324 Radio Shack, 319 senior executive position, 334 service-oriented architecture, 316 Silicon Valley software factories, 323 social computing, 320 Strassmann's concentration camp, 318 structured methodologies, 342 U.S.


pages: 326 words: 91,559

Everything for Everyone: The Radical Tradition That Is Shaping the Next Economy by Nathan Schneider

1960s counterculture, Affordable Care Act / Obamacare, Airbnb, altcoin, Amazon Mechanical Turk, back-to-the-land, basic income, Berlin Wall, Bernie Sanders, bitcoin, blockchain, Brewster Kahle, Burning Man, Capital in the Twenty-First Century by Thomas Piketty, carbon footprint, Clayton Christensen, collaborative economy, collective bargaining, Community Supported Agriculture, corporate governance, creative destruction, crowdsourcing, cryptocurrency, Debian, disruptive innovation, do-ocracy, Donald Knuth, Donald Trump, Edward Snowden, Elon Musk, Ethereum, ethereum blockchain, Food sovereignty, four colour theorem, future of work, gig economy, Google bus, hydraulic fracturing, Internet Archive, Jeff Bezos, jimmy wales, joint-stock company, Joseph Schumpeter, Julian Assange, Kickstarter, Lyft, M-Pesa, Marc Andreessen, Mark Zuckerberg, Marshall McLuhan, mass immigration, means of production, Money creation, multi-sided market, new economy, offshore financial centre, old-boy network, Peter H. Diamandis: Planetary Resources, Pier Paolo Pasolini, post-work, precariat, premature optimization, pre–internet, profit motive, race to the bottom, Richard Florida, Richard Stallman, ride hailing / ride sharing, Sam Altman, Satoshi Nakamoto, self-driving car, shareholder value, sharing economy, Silicon Valley, Slavoj Žižek, smart contracts, Steve Bannon, Steve Jobs, Steve Wozniak, Stewart Brand, surveillance capitalism, transaction costs, Turing test, Uber and Lyft, uber lyft, underbanked, undersea cable, universal basic income, Upton Sinclair, Vanguard fund, white flight, Whole Earth Catalog, WikiLeaks, women in the workforce, working poor, Y Combinator, Y2K, Zipcar

Less glamorously, the professional organizations for doctors, lawyers, real estate agents, and hairdressers have clung to the guild model, complete with monopoly powers recognized by governments and peers. As we talked on the rooftop, Prime Produce’s founders freely mixed medieval idiom with that of Silicon Alley. Taeyoung cited the computer programming guru Donald Knuth’s dictum, “Premature optimization is the root of all evil.” That is, if they decided too much ahead of time and in too much detail, they wouldn’t be as flexible or as iterative. Hsu described what Prime Produce was doing as “crafted social innovation,” a form of “slow entrepreneurship.” The guild’s appeal wasn’t just nostalgic to them but was a means of navigating an often lonely, attention-deficient economy, by cultivating habits of excellence and communizing resources like office space, companionship, and broadband.

Infospai, 118–119 Innocent IV (pope), 23 Institute for Cooperative Development, 66 Institute for Local Self-Reliance, 175 Institute for the Formation of Character, 47 insurance industry, 5, 8, 10, 14, 38, 54–56, 183, 185 Integral Cooperative, 119, 120 integral human development, 62 Integral Revolution, 119, 126 Integralism, 128–129 International Cooperative Alliance, 8–9, 11–12, 58, 233 International Ladies’ Garment Workers’ Union, 7 International Summit of Cooperatives, 11, 15 Internet, 147–148, 162, 212 investors, 80, 104, 233 Ipercoop store, 230 iStock, 148 Italy co-op laws in, 188–189, 232–233 co-ops in, 62–63, 229–230 Emilia-Romagna region, 62–63 Matera, 24–25, 28, 32 social co-ops in, 81 Jackson, Andrew, 192 Jackson Jambalaya (blog), 202 “Jackson Rising” (conference), 203–204, 215 Jackson-Kush Plan, 195, 196–198, 205 Jackson-Kush Plan: The Struggle for Black Self-Determination and Economic Democracy (pamphlet), 195 Jay Z, 34 Jefferson, Thomas, 43 Jesus Christ, 22 jobs as ideology, 45 technology and vulnerability of, 79, 225 Jobs, Steve, 79 Jobs of Our Own (Mathews), 61 Johnson, Derrick, 178 Johnson, Lyndon, 171 Johnstown, CO, 1 Joint Stock Companies Act (1856), 50 Joyce, James, 144 Juris, Jeffrey, 117 Jurowicz, Julek, 93 Kahle, Brewster, 158 Kauai Island Utility Cooperative, 174 Kazadi, Aleta, 184 Kelly, Marjorie, 151 Kelty, Christopher M., 135 Kenya, 65–67 King, Martin Luther, Jr., 199–200, 222 Kit Carson Electric Cooperative, 174 Kleiner, Dmytri, 160 Knights of Labor, 54–56, 61–62 Knuth, Donald, 35 Koch, Charles, 223 Koestler, Arthur, 139 König, Thomas, 131 Krause, Alanna, 95–96 Kunstler, James Howard, 97 Kurds, 207 Kush District, 190 labor unions, 6–7, 15, 34, 44, 53–54, 56, 76, 83–84, 85, 112, 124, 154, 224 Lander, Brad, 161 LaPlante, Rochelle, 144 Las Indias, 149–150 Laurini, Gianluca, 63 law school, 193 learning, lifetime of, 13 Lee, Jonathan, 196 Lee, Marcia, 73, 75 Legacoop, 63, 150, 231 Lehman Brothers, 119 Leo XIII (pope), 60 Leroux, Monique, 11 Lessig, Lawrence, 137 Liberty Distributors, 2, 3 (fig.), 6, 234–235 Lieder, Sheila, 85, 88 Lim, Leng, 33 Lincoln, Abraham, 44–45 Lincoln, Murray, 41, 57, 181 Lines Across the Land, 175 Linux software, 133–134 Lockwood, Jonathan, 186–187 Loconomics Cooperative, 150, 154 The Lone Ranger (radio dramas), 57 Long, Guillaume, 213 Loomio, 93–95, 104, 159, 167 Lopez, Alfredo, 135 Lumumba, Chokwe, 189–192, 197–198 mayoral campaign of, 196–197 Mississippi arrival of, 192–193 New Afrikan People’s Organization founded by, 194 Lumumba, Chokwe Antar, 190, 200–201, 203 (photo) mayoral election of, 205 Mississippi’s flag changed and, 204–205 Lumumba, Rukia, 195 Lundahl, Erika, 103 Lung Ta (farming commune), 123–124 Luther, Martin, 38 Magnolia Electric Power Association, 177 Malcolm X, 74, 189, 193, 194, 199 Malcolm X Grassroots Movement, 191, 194 Manna (Brain), 222–223 manufacturing cooperative, 63 (photo) Martin, Brendan, 82, 84 Marx, Karl, 53, 79 Matera, Italy, 24–25, 28, 32 Matheson, Jim, 171 Mathews, Race, 60–61 Maurin, Peter, 5 May First/People Link organization, 135–136 MBA programs, 69 McClelland, Jamie, 135–136 Mckesson, DeRay, 190 McKnight, Albert J., 62 McLean, Christopher, 174–175, 179–180 McRitchie, Jim, 166 Mead, Margaret, 20, 188 Mechanical Turk, 90, 92, 144 medieval guilds, 33–37, 212, 229 Megatrends (Naisbitt), 10 mendicant movement, 23 mercantilism, 215 Meredith, Greg, 157 migration, 216 Millet, Jean-François, 142 Mingo, Stephanie, 205 missing markets, 9, 52 Mississippi Sovereignty Commission, 193 Mississippi’s flag, 204–205 Modo cooperative, 152 monasteries, 22–23, 25–26, 32 Mondragon Corporation, 59–62, 124, 151, 156, 195, 206 money, as debt, 104–105 Moraa, Nyong’a Hyrine, 67–68 Mòrist, Joel, 123, 126 (photo) mortgage crisis, 119 movements, 9, 15, 23, 49–50 anti-globalization, 117 communal, 212–213 for co-ops, 12, 43–44, 225–226, 233 cryptocurrencies and, 130 free-software, 135, 137, 140–141 Malcolm X Grassroots, 191, 194 Mubarak, Hosni, 80 Müntzer, Thomas, 37–39 Musk, Elon, 79 Mussolini, Benito, 188 Mutual Broadcasting System, 57 MXGM organization, 194–197, 200–201, 204 Naisbitt, John, 10 Najm, Qinza, 36 (photo) Nakamoto, Satoshi, 106–107 Namasté Solar, 227 National Cooperative Business Association (NCBA), 41 National Domestic Workers Alliance, 151 National Grange of the Order of Patrons of Husbandry, 54 National Rural Electric Cooperative Association (NRECA), 171 National Security Agency, 135–136 National Trades Union, 44 NCBA.


pages: 332 words: 93,672

Life After Google: The Fall of Big Data and the Rise of the Blockchain Economy by George Gilder

23andMe, Airbnb, Alan Turing: On Computable Numbers, with an Application to the Entscheidungsproblem, Albert Einstein, AltaVista, Amazon Web Services, Asilomar, augmented reality, Ben Horowitz, bitcoin, Bitcoin Ponzi scheme, blockchain, Bob Noyce, British Empire, Brownian motion, Burning Man, business process, butterfly effect, carbon footprint, cellular automata, Claude Shannon: information theory, Clayton Christensen, cloud computing, computer age, computer vision, crony capitalism, cross-subsidies, cryptocurrency, Danny Hillis, disintermediation, distributed ledger, don't be evil, Donald Knuth, Donald Trump, double entry bookkeeping, Elon Musk, Erik Brynjolfsson, Ethereum, ethereum blockchain, fault tolerance, fiat currency, Firefox, first square of the chessboard, first square of the chessboard / second half of the chessboard, floating exchange rates, Fractional reserve banking, game design, George Gilder, Google Earth, Google Glasses, Google Hangouts, index fund, inflation targeting, informal economy, Internet of things, Isaac Newton, iterative process, Jaron Lanier, Jeff Bezos, Joan Didion, John Markoff, John von Neumann, Julian Assange, Kevin Kelly, Law of Accelerating Returns, Marc Andreessen, Mark Zuckerberg, means of production, Menlo Park, Metcalfe’s law, Money creation, money: store of value / unit of account / medium of exchange, move fast and break things, move fast and break things, Network effects, new economy, Norbert Wiener, Oculus Rift, PageRank, pattern recognition, Paul Graham, peer-to-peer, Peter Thiel, Ponzi scheme, prediction markets, quantitative easing, random walk, ransomware, Ray Kurzweil, Renaissance Technologies, Robert Mercer, Robert Metcalfe, Ronald Coase, Ross Ulbricht, Ruby on Rails, Sand Hill Road, Satoshi Nakamoto, Search for Extraterrestrial Intelligence, self-driving car, sharing economy, Silicon Valley, Silicon Valley ideology, Silicon Valley startup, Singularitarianism, Skype, smart contracts, Snapchat, software is eating the world, sorting algorithm, South Sea Bubble, speech recognition, Stephen Hawking, Steve Jobs, Steven Levy, Stewart Brand, stochastic process, telepresence, Tesla Model S, theory of mind, Tim Cook: Apple, transaction costs, tulip mania, Turing complete, Turing machine, Vernor Vinge, Von Neumann architecture, Watson beat the top human players on Jeopardy!, WikiLeaks, Y Combinator, zero-sum game

In embryo, Google had at its disposal the full bandwidth of the university’s T-3 line, then a lordly forty-five megabits a second, and ties to such venture capital titans as John Doerr, Vinod Khosla, Mike Moritz, and Don Valentine. The computer theorists Terry Winograd and Hector Garcia Molina supervised the doctoral work of the founders. Rollerblading down the corridors of Stanford’s computer science pantheon in the madcap spirit of Claude Shannon, the Google founders consorted with such academic giants as Donald Knuth, the conceptual king of software, Bill Dally, a trailblazer of parallel computation, and even John McCarthy, the founding father of artificial intelligence. By 1998, Brin and Page were teaching the course CS 349, “Data Mining, Search, and the World Wide Web.” Sun founder Andy Bechtolsheim, Amazon founder Jeff Bezos, and Cisco networking guru Dave Cheriton had all blessed the Google project with substantial investments.

., 94 Google, xv, 2–5, 7–8 25–26, 146, 150, 153–54, 157, 164–69, 171–73, 176, 181–84, 187, 189, 191–98, 220, 222–25, 247 “system of the world,” 11–23, 276 philosophy, 25–35 use of advertising, 37–43 rule of communications, 45–46 compared to the cryptocosm, 48–50 data center, 51–61 machine learning/innovation, 63–71 influence of Andrey Markov, 75–92 work with AI, 93–108 cloud technology, 199–211 Internet regulation, 227–41 the “great unbundling,” 259–69 Google Brain, 67–68, 71, 94, 192, 223 Google Era, 13, 45, 49, 57, 63, 75–76, 78, 80, 89, 247, 261–62, 277 Gosling, James, 179 Grainger, Alissa, 205, 207, 209 Grigg, Ian, 153 H Harari, Yuval Noah, 4, 7 Harik, Georges, 196–98 HashCash, 123, 134 Hassabis, Demis, 41, 93, 99 Hearn, Mike, 153, 245 Hennessy, John, 26, 222 Heyting, Arend, 15 Hilbert, David, 14–17, 247 Hillenmeyer, Hunter, 271–74 Hillis, Danny, 71 Hinton, Geoffrey, 41, 93, 192 Hoffman, Reid, 274 Hölzle, Urs, 53–56, 58, 67, 71, 82, 195, 199–202, 209, 232, 241 Horowitz, Ben, 125, 162 Horowitz, David, 162 Hoskinson, Charles, 153–54, 264–65 How to Create a Mind, 79, 101 I Ibárgüen, Giancarlo, 215–16 Inception, 192 Industrial and Commercial Bank of China, 11 iTunes, 8 Ivan on Tech, 204 J James, Daniel Colin, 39–40 JavaScript, 48, 166, 176, 179–80, 185–86 Jelinek, Fred, 81, 88 Jobs, Steve, xv, 8, 64, 144 Jouppi, Norm, 65, 69 K Kelley, Nick, xi Kelly, Kevin, 184–85, 191 Kendall, Mike, 249–50, 253–58 Khosla, Vinod, 26 King, Mervyn, 263 Kleiman, David, 140, 145–46 Klugmann, Mark, 216 Knuth, Donald, 26 Kolmogorov, Anton, 73 Kowalski, Jeff, 186 Krauss, Lawrence, 93 Krugman, Paul, 126, 136, 243 Kubrick, Stanley, xi Kurzweil, Raymond, 25, 68, 79, 89, 93, 95–101, 103, 280 L Langley, Samuel P., 224 Langville, Amy, 75 Lanier, Jaron, xiv, 60, 82–83, 89, 104, 185, 272, 275 Larimer, Dan, 153, 245, 265–66 Laughlin, Robert, 87 LeCun, Yann, 93, 99 Leibniz, Gottfried Willhelm, 12 Levandowski, Anthony, 41 Levy, Steven, 30–31 Lewis, C.


pages: 665 words: 159,350

Shape: The Hidden Geometry of Information, Biology, Strategy, Democracy, and Everything Else by Jordan Ellenberg

"side hustle", Albert Einstein, Andrew Wiles, autonomous vehicles, British Empire, Brownian motion, Claude Shannon: information theory, computer age, coronavirus, Covid-19, COVID-19, Donald Knuth, Donald Trump, double entry bookkeeping, East Village, Edmond Halley, Elliott wave, Erdős number, facts on the ground, Fellow of the Royal Society, germ theory of disease, global pandemic, greed is good, Henri Poincaré, index card, index fund, Isaac Newton, Johannes Kepler, John Conway, John Nash: game theory, John Snow's cholera map, Louis Bachelier, Mercator projection, Mercator projection distort size, especially Greenland and Africa, Milgram experiment, Nate Silver, Paul Erdős, pets.com, pez dispenser, probability theory / Blaise Pascal / Pierre de Fermat, Ralph Nelson Elliott, random walk, Rubik’s Cube, self-driving car, Snapchat, social graph, transcontinental railway, urban renewal

He was a compulsive inventor of games, which he liked to give funny names to: Col, Snort, ono, loony, dud, sesqui-up, Philosopher’s Football. But fun was never just for fun. He made theory out of fun. We’ve met his mathematical gaming already in this book: it was Conway who developed the notion that a game like Nim is a kind of number, an idea his colleague Donald Knuth wrote about in a 1974 book with the extremely 1974 title Surreal Numbers: How Two Ex-Students Turned On to Pure Mathematics and Found Total Happiness. The book is styled as a dialogue between two students who come upon a sacred text outlining Conway’s theory: “In the beginning, everything was void, and J.

“the murder weapon”: István Hargittai, “John Conway—Mathematician of Symmetry and Everything Else,” Mathematical Intelligencer 23, no. 2 (2001): 8–9. He was a compulsive: R. H. Guy, “John Horton Conway: Mathematical Magus,” Two-Year College Mathematics Journal 13, no. 5 (Nov. 1982): 290–99. began to create numbers: Donald Knuth, Surreal Numbers: How Two Ex-Students Turned on to Pure Mathematics and Found Total Happiness (Boston: Addison-Wesley, 1974). The Knuth book introduces Conway’s novel number system, but the connection of these numbers with games comes in Conway’s 1976 book On Numbers and Games. here are some: This is Figure 1 in John H.

See also intuition immunity, 219, 221–22, 221n independence of variables, 86–89, 89n, 91 Indo-European languages, 236n induction, mathematical, 119–20, 406n information theory, 93, 106 inherent value, 285 initial conditions, 239 Institute for Health Metrics and Evaluation, 257n, 259 integers, 273–74 integrals, 68 International Congress of Arts and Sciences, 59 International Congress of Mathematicians, 84, 212 International Mathematical Olympiad, 264 internet searching, 288–92 interpolation, 253–54 intuition and “compactness” of shapes, 367, 369 conceptualizing multidimensional space, 48 and exponential growth, 216 and gradient of confidence, 22 and Hudson, 213 and Kermack, 233 and linear algebra, 322 and multidimensional scaling, 193 and neutral networks, 206 and number theory, 110 and Pi (film), 276 and Poincaré, 39 and the pons asinorum, 24–26, 30 proofs as tools for, 416 and redistricting methods, 387 and strategy space, 165 and Sylvester, 323 invariance, 368–69 Inventional Geometry (Spencer), 15–16, 16–17 inverse assertions, 153 Iowa Baseball Confederacy, The (Kinsella), 160n Iran, 349 Ireland, 349 irrational numbers, 271–75 Isner, John, 160 isobutane, 316 isochrone maps, 189, 189–90, 302, 303n isometry, 52, 56 isoperimetric equality, 369 isosceles triangles, 26, 28–32, 191, 312, 412 Israel, 348 Isthmus of Panama, 304 Italy, 217 Izvestia, 85 Jeans, James, 154, 154n Jefferson, Thomas, 13–14, 48n, 319, 351, 414 Jefferson County, Alabama, 352 Jenner, Edward, 209 Jennings, Helen, 338 Jesuits, 413, 416 Jewish numerology, 276 Johns Hopkins University, 319 Johnson, Katherine, 3 Johnson, Ron, 341, 347 Jordan, Charles, 324–25, 330 Jordan Curve Theorem, 21 Journal of Prosthetic Dentistry, The, 278 Journal of the Royal Society of Medicine, 208 Jurin, James, 413 justiciability, 375, 404–5 Kagan, Elena, 402, 403, 405, 408–9 Karinthy, Frigyes, 338, 339 Kasich, John, 384 Kasiski examination, 133 Kasparov, Gary, 145 Kavanaugh, Brett, 404 Keats, John, 6 Keller, Helen, 59 Kempelen, Wolfgang von, 155 Kennedy, Anthony, 375, 384 Kepler, Johannes, 269–70, 277 Kerkman, Samantha, 344 Kermack, William Ogilvy, 233, 240, 286 Kerry, John, 346 Kinsella, W. P., 160n kin words, 190–91 Kirchoff, Gustav, 397 “Kittytron” (image recognition program), 169–70, 173–74 Kleitman, Daniel, 315n Knesset, 348 knot theory, 46, 205–6, 216, 223, 223–24, 331 Knuth, Donald, 223 Kochen, Manfred, 338 Kondlo, Lubabalo, 142 Lagerlöf, Selma, 339 laghu, 236 Lamb, Charles, 6 Lamone v. Benisek, 384 Láncszemek (Karinthy), 338 Langmuir, Alexander, 257 language and linguistics, 90–96, 191–99 Last Week Tonight, 408 Latifah, Queen, 315 latitude, 305–8 law of anti-averages, 72–74 law of conservation of area, 54 law of increase, 244, 248, 255, 333.


pages: 309 words: 65,118

Ruby by example: concepts and code by Kevin C. Baird

Benevolent Dictator For Life (BDFL), David Heinemeier Hansson, Debian, digital map, Donald Knuth, en.wikipedia.org, Firefox, fudge factor, functional programming, general-purpose programming language, Guido van Rossum, Larry Wall, MVC pattern, Paul Graham, Perl 6, premature optimization, union organizing, web application

/usr/bin/env ruby # factorial1.rb class Integer def fact() return 1 if (self.zero?) or (self == 1) return self * (self-1).fact end end And here’s fibonacci1.rb: #!/usr/bin/env ruby # fibonacci1.rb class Integer def fib() return 0 if (self.zero?) 2 122 C h ap te r 7 Commonly attributed to Donald Knuth, a computer programming genius if there ever was one. return 1 if self == 1 return (self-1).fib + (self-2).fib end end How It Works For factorial1.rb and fibonacci1.rb, we add a new method to all Integers: either fact or fib, respectively. In both cases, we have our exit conditions that return either zero or one.

method (Builder::XmlMarkup), 255 Integer class, 3–4 get_base method, 200 round_to_base method, 86 to_roman method, 81–87 Integers, multiplying Strings by, 86 Interactive Ruby (irb), 1–2 information in prompt, 8 starting, 2 Internet connection, for opening URLs, 95 Internet protocols, end-of-line marker, 52 interpolation, 23 irb. See Interactive Ruby (irb) J Java, 262–263 JavaScript, 157 join method (Array), 37, 47 JRuby, 263 K Kasahara, Motoyuki, 39 Kay, Alan, 265 kelvins, vs. Celsius, 134 keys method (Hash), 44 keys of Hash, 42 King Crimson, 29–30, 192–193 Knuth, Donald, 122n L command, 43, 100–102 creating Procs with, 105, 115, 116 nesting, 111–112 lazy evaluation, 127, 262 Lerdorf, Rasmus, 265 letters_only method (String), 47 lib directory for Rails, 230 library file, 155, 156 line break, 18 in HTML source, 209 line feed character (newline), 15, 52 line numbers, 2 displaying, 57–59 line_num.rb script, 57–59 lines, definition, 2 Linux, starting irb on, 2 Lisp, 22, 263–264 as Ruby ancestor, 99 lists, making, 36–39 load_old_rates method (CurrencyConverter), 97 local method (Time), 15 Locomotive, 228 log directory for Rails, 230 logs messages by radio_player2.rb, 191 radio station need for, 186 long options, 39 lookup tables, Hashes for, 42–43 ls command (Unix), 192 lambda M Mac OS X and Apache, 206 starting irb on, 2 magic numbers, 15 make_exp example, 111 make_exp_proc Proc, 112 make_incrementer method, 101 make_incrementer.rb script, 100–102 map method, 66, 185, 203–204 filtering Proc via, 106 I N D EX 273 Mastering Regular Expressions (Friedl), 55, 64 matches_block method (Array), 105 matching_compound_members method (Array), 106 matching_compound_members.rb script, 103–108 matching_members method (Array), 105 matching_members.rb script, 102–103 McKay, Brendan, 162 memoization of results, 126–127, 131 merge method (Hash), 151 merge_totals method (Hash), 151 <meta> tag (HTML), 144 Meta_Mutator class best_num method, 180 creating, 180 get_children method, 180 get_no_better_count method, 180 initialize method, 180 mutate_mutations!


pages: 894 words: 190,485

Write Great Code, Volume 1 by Randall Hyde

AltaVista, business process, Donald Knuth, John von Neumann, locality of reference, Von Neumann architecture, Y2K

The only problem is that certain operations may produce really large numerators or denominators (to the point where you get integer overflow in these values). Other than this problem, however, you can represent a wide range of fractional values using this scheme. 2.13 For More Information Donald Knuth’s The Art of Computer Programming, Volume Two: Seminumerical Algorithms is probably the seminal text on number systems and arithmetic. For more information on binary, decimal, fixed-point, rational, and floating-point arithmetic, you’ll want to take a look at that text. * * * [1] The “..” notation, taken from Pascal and other programming languages, denotes a range of values.

Inserting ThirdField into the Social Security packed type Here’s the C/C++ code that accomplishes the operation shown in Figure 3-10: packedValue = (packedValue & 0xFFc000FF) | (ThirdField << 8 ); You’ll note that $FFC000FF is the hexadecimal value that corresponds to all zeros in bit positions 8 through 21 and ones everywhere else. 3.8 For More Information My book, The Art of Assembly Language, provides additional information on bit processing, including several algorithms for counting bits, reversing the bits in an object, merging two bit strings, coalescing sets of bits, and spreading bits out across some value. Please see that text for more details on these low-level bit operations. Donald Knuth’s The Art of Computer Programming, Volume Two: Seminumerical Algorithms provides a discussion of various arithmetic operations (addition, subtraction, multiplication, and division) that you may find of interest. * * * [6] It’s also possible to set all the uninteresting bits to ones via the OR operation, but the AND operator is often more convenient

. // Okay, assemble the final real32 value: shr( 8, eax ); // Move mantissa into bits 0..23. and( $7f_ffff, eax ); // Clear the implied bit. or( ecx, eax ); // Merge mantissa & exponent into EAX. or( ebx, eax ); // Merge in the sign. Whew! This has been a lot of code. However, it’s worthwhile to go through all this just to see how floating-point operations work (so you can gain an appreciation of exactly what an FPU is doing for you). 4.8 For More Information Donald Knuth’s The Art of Computer Programming, Volume Two: Seminumerical Algorithms, provides an in-depth discussion of floating-point arithmetic and floating-point formats. This book is required reading for someone who wants to fully understand how floating-point arithmetic operates. Also, Intel’s documentation on its Pentium processors explains its floating-point formats, exceptional conditions, and other issues related to the use of its FPU.


pages: 893 words: 199,542

Structure and interpretation of computer programs by Harold Abelson, Gerald Jay Sussman, Julie Sussman

Andrew Wiles, conceptual framework, Donald Knuth, Douglas Hofstadter, Eratosthenes, Fermat's Last Theorem, functional programming, Gödel, Escher, Bach, industrial robot, information retrieval, iterative process, Johannes Kepler, loose coupling, probability theory / Blaise Pascal / Pierre de Fermat, Richard Stallman, Turing machine

Syntactic extensions in the programming language Lisp. Ph.D. thesis, Indiana University. Konopasek, Milos, and Sundaresan Jayaraman. 1984. The TK!Solver Book: A Guide to Problem-Solving in Science, Engineering, Business, and Education. Berkeley, CA: Osborne/McGraw-Hill. Knuth, Donald E. 1973. Fundamental Algorithms. Volume 1 of The Art of Computer Programming. 2nd edition. Reading, MA: Addison-Wesley. Knuth, Donald E. 1981. Seminumerical Algorithms. Volume 2 of The Art of Computer Programming. 2nd edition. Reading, MA: Addison-Wesley. Kowalski, Robert. 1973. Predicate logic as a programming language. Technical report 70, Department of Computational Logic, School of Artificial Intelligence, University of Edinburgh.

List of Exercises 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.10 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.20 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.30 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.40 1.41 1.42 1.43 1.44 1.45 1.46 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10 2.11 2.12 2.13 2.14 2.15 2.16 2.17 2.18 2.19 2.20 2.21 2.22 2.23 2.24 2.25 2.26 2.27 2.28 2.29 2.30 2.31 2.32 2.33 2.34 2.35 2.36 2.37 2.38 2.39 2.40 2.41 2.42 2.43 2.44 2.45 2.46 2.47 2.48 2.49 2.50 2.51 2.52 2.53 2.54 2.55 2.56 2.57 2.58 2.59 2.60 2.61 2.62 2.63 2.64 2.65 2.66 2.67 2.68 2.69 2.70 2.71 2.72 2.73 2.74 2.75 2.76 2.77 2.78 2.79 2.80 2.81 2.82 2.83 2.84 2.85 2.86 2.87 2.88 2.89 2.90 2.91 2.92 2.93 2.94 2.95 2.96 2.97 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13 3.14 3.15 3.16 3.17 3.18 3.19 3.20 3.21 3.22 3.23 3.24 3.25 3.26 3.27 3.28 3.29 3.30 3.31 3.32 3.33 3.34 3.35 3.36 3.37 3.38 3.39 3.40 3.41 3.42 3.43 3.44 3.45 3.46 3.47 3.48 3.49 3.50 3.51 3.52 3.53 3.54 3.55 3.56 3.57 3.58 3.59 3.60 3.61 3.62 3.63 3.64 3.65 3.66 3.67 3.68 3.69 3.70 3.71 3.72 3.73 3.74 3.75 3.76 3.77 3.78 3.79 3.80 3.81 3.82 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10 4.11 4.12 4.13 4.14 4.15 4.16 4.17 4.18 4.19 4.20 4.21 4.22 4.23 4.24 4.25 4.26 4.27 4.28 4.29 4.30 4.31 4.32 4.33 4.34 4.35 4.36 4.37 4.38 4.39 4.40 4.41 4.42 4.43 4.44 4.45 4.46 4.47 4.48 4.49 4.50 4.51 4.52 4.53 4.54 4.55 4.56 4.57 4.58 4.59 4.60 4.61 4.62 4.63 4.64 4.65 4.66 4.67 4.68 4.69 4.70 4.71 4.72 4.73 4.74 4.75 4.76 4.77 4.78 4.79 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 5.10 5.11 5.12 5.13 5.14 5.15 5.16 5.17 5.18 5.19 5.20 5.21 5.22 5.23 5.24 5.25 5.26 5.27 5.28 5.29 5.30 5.31 5.32 5.33 5.34 5.35 5.36 5.37 5.38 5.39 5.40 5.41 5.42 5.43 5.44 5.45 5.46 5.47 5.48 5.49 5.50 5.51 5.52 Index Any inaccuracies in this index may be explained by the fact that it has been prepared with the help of a computer. Donald E. Knuth, Fundamental Algorithms (Volume 1 of The Art of Computer Programming) ! in names " (double quote) λ calculus, see lambda calculus ⟼ notation for mathematical function π , see pi Σ (sigma) notation θ, see theta ' (single quote) read and, [2] * (primitive multiplication procedure) + (primitive addition procedure) , (comma, used with backquote) - (primitive subtraction procedure) as negation / (primitive division procedure) < (primitive numeric comparison predicate) = (primitive numeric equality predicate) =number?

., [2] read-eval-print loop intersection-set binary-tree representation ordered-list representation unordered-list representation interval arithmetic invariant quantity of an iterative process inverter inverter iteration contructs, see looping constructs iterative improvement iterative process as a stream process design of algorithm implemented by procedure call, [2], [3], see also tail recursion linear, [2] recursive process vs., [2], [3], [4] register machine for Jayaraman, Sundaresan Kaldewaij, Anne Karr, Alphonse Kepler, Johannes key key of a record in a data base in a table testing equality of Khayyam, Omar Knuth, Donald E., [2], [3], [4], [5], [6], [7] Kohlbecker, Eugene Edmund, Jr. Kolmogorov, A. N. Konopasek, Milos Kowalski, Robert KRC, [2] label (in register machine) simulating label-exp label-exp-label Lagrange interpolation formula λ calculus (lambda calculus) lambda (special form) define vs.


pages: 511 words: 111,423

Learning SPARQL by Bob Ducharme

Donald Knuth, en.wikipedia.org, G4S, hypertext link, linked data, place-making, semantic web, SPARQL, web application

RDF lets you define custom datatypes for your own needs, and as this query demonstrates, SPARQL lets you query for them. (We’ll learn how to query for d:item2d, which has the @en tag to show that it’s in English, in Checking, Adding, and Removing Spoken Language Tags.) Note The Potrzebie System of Weights and Measures was developed by noted computer scientist Donald Knuth. He published it as a teenager in Mad Magazine in 1957, so it is not considered normative. A single potrzebie is the thickness of Mad magazine issue number 26. The use of non-XSD types in RDF is currently most common in data using the SKOS standard for controlled vocabularies. In SKOS, the skos:notation property names an identifier for a concept that is often a legacy value from a different thesaurus expressed as a cryptic numeric sequence (for example, “920” to represent biographies in the library world’s Dewey Decimal System), unlike the concept’s skos:prefLabel property that provides a more human-readable name.

., Adding Data to a Dataset integer datatype, Datatypes and Queries IRI, Glossary IRI(), Node Type Conversion Functions, Solution isBlank(), Node Type and Datatype Checking Functions isIRI(), Node Type and Datatype Checking Functions isLiteral(), Node Type and Datatype Checking Functions isNumeric(), Node Type and Datatype Checking Functions isURI(), FILTERing Data Based on Conditions, Node Type and Datatype Checking Functions J Java, SPARQL and Web Application Development JavaScript, SPARQL Query Results JSON Format, SPARQL and Web Application Development Jena, Defining Rules with SPARQL, Getting Started with Fuseki, Getting Started with Fuseki, Standalone Processors join (SPARQL equivalent), Searching Further in the Data JSON, The SPARQL Specifications, SPARQL and Web Application Development ARQ and, Working with SPARQL Query Result Formats, Standalone Processors defined, SPARQL Query Results JSON Format query results, SPARQL Query Results JSON Format results from a SPARQL engine, SPARQL Query Results JSON Format K Knuth, Donald, Datatypes and Queries L lang(), Checking, Adding, and Removing Spoken Language Tags langMatches() vs., Checking, Adding, and Removing Spoken Language Tags langMatches(), Checking, Adding, and Removing Spoken Language Tags language codes, Making RDF More Readable with Language Tags and Labels, Checking, Adding, and Removing Spoken Language Tags–Checking, Adding, and Removing Spoken Language Tags adding, Checking, Adding, and Removing Spoken Language Tags checking, Checking, Adding, and Removing Spoken Language Tags filtering on, Using the Labels Provided by DBpedia removing, Checking, Adding, and Removing Spoken Language Tags LCASE(), String Functions, Discussion LIMIT, Retrieving a Specific Number of Results, Federated Queries: Searching Multiple Datasets with One Query Linked Data, What Exactly Is the “Semantic Web”?


pages: 468 words: 137,055

Crypto: How the Code Rebels Beat the Government Saving Privacy in the Digital Age by Steven Levy

Albert Einstein, Claude Shannon: information theory, cognitive dissonance, computer age, disinformation, Donald Knuth, Eratosthenes, Extropian, invention of the telegraph, John Markoff, Kevin Kelly, knapsack problem, Marc Andreessen, Mitch Kapor, MITM: man-in-the-middle, Mondo 2000, Network effects, new economy, NP-complete, Ronald Reagan, Saturday Night Live, Silicon Valley, Simon Singh, Stephen Hawking, Steven Levy, Watson beat the top human players on Jeopardy!, web of trust, Whole Earth Catalog, zero-sum game, Zimmermann PGP, éminence grise

While Merkle was figuring out how to get exponential, Diffie and Hellman focused on finding their own means of implementing a public key cryptosystem. Without some way of actually putting their ideas into action—or at least proving that some feasible scheme could exist—the whole concept of public key cryptography would be merely a mathematical mind-trick. One path was suggested by Stanford computer scientist Donald Knuth, whose encyclopedic series of books in progress, The Art of Computer Programming, would earn him the reputation as the high guru of algorithms. Knuth reminded them of an interesting mathematical phenomenon: while it is child’s play to multiply a pair of prime numbers, reversing the process—a task known as factoring—is an assignment that could confound the devil himself.

., ref-1, ref-2 Gardner, Martin, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6, ref-7, ref-8 Gates, Bill, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6, ref-7 Gauss, Carl Friedrich, ref-1, ref-2, ref-3, ref-4 Gejdenson, Sam, ref-1, ref-2, ref-3 General Communication Headquarters (GCHQ), ref-1, ref-2, ref-3, ref-4 Gersho, Alan, ref-1 Gill, John, ref-1 Gilmore, John, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6 Glaser, Edward, ref-1 Goen, Kelly, ref-1, ref-2, ref-3 Goldberg, Ian, ref-1, ref-2 Goodlatte, Robert, ref-1, ref-2 Gore, Al, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6, ref-7, ref-8, ref-9, ref-10, ref-11, ref-12 Graff, Michael, ref-1, ref-2 Graham, Sue, ref-1 groupware, ref-1 Haber, Stuart, ref-1 Hammond, Larry, ref-1 Harbert, Don, ref-1 Harmon, John, ref-1, ref-2 Heiman, Bruce, ref-1, ref-2 Hellman, Martin, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6, ref-7, ref-8, ref-9, ref-10, ref-11, ref-12, ref-13, ref-14, ref-15, ref-16, ref-17, ref-18, ref-19, ref-20, ref-21, ref-22, ref-23, ref-24 Diffie-Hellman algorithm, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6, ref-7, ref-8 Helsingius, Julf, ref-1, ref-2, ref-3, ref-4 heuristic qualifiers, ref-1 Hoffman, Lance, ref-1, ref-2, ref-3, ref-4 Homer, Mike, ref-1 Hughes, Eric, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6 hybrid system, ref-1 IBM, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6, ref-7, ref-8, ref-9, ref-10, ref-11, ref-12, ref-13, ref-14 Identification Friend or Foe (IFF), ref-1, ref-2, ref-3, ref-4 identity proofs: digital signatures, see signatures, digital zero-knowledge, ref-1 Ingram, Tim, ref-1 Inman, Bobby Ray, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6, ref-7, ref-8, ref-9, ref-10, ref-11, ref-12, ref-13 Intergraph, ref-1 International Data Encryption Algorithm (IDEA), ref-1, ref-2 Internet, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6, ref-7, ref-8, ref-9, ref-10, ref-11, ref-12 anonymity and, ref-1 browsers and, ref-1, ref-2, ref-3 factoring and, ref-1, ref-2 Iris Associates, ref-1, ref-2, ref-3, ref-4 ITAR, see export regulations Izen, Ted, ref-1 Jefferson, Thomas, ref-1 Kahn, David, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6, ref-7, ref-8, ref-9 Kallstrom, James, ref-1, ref-2, ref-3 Kammer, Raymond, ref-1, ref-2, ref-3 Kapor, Mitch, ref-1, ref-2, ref-3, ref-4, ref-5 Karn, Phil, ref-1, ref-2 Kaufman, Charles, ref-1 Keane, William, ref-1 Kelly, Jack, ref-1, ref-2 Kerckhoffs, Auguste, ref-1 Kerry, Bob, ref-1 keys, ref-1, ref-2 escrow system and, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6, ref-7, ref-8, ref-9, ref-10 nonsecret, ref-1 pairs of, ref-1, ref-2, ref-3, ref-4 public, see public key cryptography secret sharing of, ref-1 size of, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6, ref-7, ref-8, ref-9, ref-10, ref-11, ref-12 symmetrical, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6 knapsacks, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6 multiple-iteration, ref-1 single-iteration, ref-1 superincreasing, ref-1 Knuth, Donald, ref-1, ref-2, ref-3, ref-4 Kocher, Paul, ref-1 Kolata, Gina, ref-1 Konheim, Alan, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6, ref-7, ref-8 Kravitz, David, ref-1, ref-2 Kreps, Juanita, ref-1 Landau, Susan, ref-1 Larry King Live, ref-1 law enforcement, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6 Law Enforcement Access Field (LEAF), ref-1, ref-2 Leahy, Patrick, ref-1, ref-2, ref-3 Lee, Ronald, ref-1 Lenstra, Arjen, ref-1, ref-2 Lenstra, Hendrick, ref-1 Leyland, Paul, ref-1, ref-2 Limbaugh, Rush, ref-1 linear cryptanalysis, ref-1 Lloyds of London, ref-1, ref-2, ref-3 Lofgren, Zoe, ref-1, ref-2 Lotus, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6, ref-7, ref-8, ref-9, ref-10, ref-11, ref-12, ref-13 Lucifer, ref-1, ref-2, ref-3, ref-4 DSD-1, ref-1, ref-2, ref-3 see also Data Encryption Standard McCain, John, ref-1 McCarthy, John, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6 McConnell, Mike, ref-1, ref-2, ref-3, ref-4, ref-5 McNulty, Lynn, ref-1, ref-2, ref-3 Mailsafe, ref-1, ref-2, ref-3, ref-4, ref-5 Mann, Bill, ref-1, ref-2, ref-3 Manzi, Jim, ref-1 Markoff, John, ref-1 May, Tim, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6, ref-7, ref-8 BlackNet, ref-1 Mead, Carver, ref-1, ref-2 Merkle, Ralph C., ref-1, ref-2, ref-3, ref-4, ref-5, ref-6, ref-7, ref-8, ref-9, ref-10, ref-11, ref-12, ref-13, ref-14, ref-15 Merritt, Charlie, ref-1, ref-2, ref-3, ref-4 Metamorphic Systems, ref-1, ref-2 Meyer, Joseph A., ref-1, ref-2, ref-3, ref-4 Meyer, Karl, ref-1, ref-2, ref-3 Micali, Silvio, ref-1 Microsoft, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6, ref-7, ref-8, ref-9, ref-10 Access, ref-1 Moore’s Law, ref-1, ref-2 Morris, Lew, ref-1 Morris, Robert, Sr., ref-1, ref-2, ref-3 Mosaic, ref-1 “Multiuser Cryptographic Techniques” (Diffie and Hellman), ref-1, ref-2, ref-3 Murray, Patty, ref-1 Myhrvold, Nathan, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6 Mykotronx, ref-1, ref-2, ref-3 National Bureau of Standards (NBS), ref-1, ref-2, ref-3, ref-4, ref-5, ref-6, ref-7 National Institute of Standards and Technology (NIST), ref-1, ref-2, ref-3, ref-4, ref-5, ref-6, ref-7, ref-8, ref-9, ref-10, ref-11 National Research Council (NRC), ref-1, ref-2 National Science Foundation (NSF), ref-1, ref-2, ref-3, ref-4, ref-5, ref-6, ref-7 National Security Access Field (NSAF), ref-1 National Security Agency (NSA), ref-1, ref-2, ref-3, ref-4, ref-5, ref-6, ref-7, ref-8, ref-9, ref-10, ref-11, ref-12, ref-13, ref-14, ref-15, ref-16, ref-17, ref-18, ref-19, ref-20, ref-21, ref-22, ref-23, ref-24, ref-25, ref-26, ref-27, ref-28, ref-29, ref-30, ref-31, ref-32, ref-33 Clipper and, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6, ref-7, ref-8, ref-9, ref-10, ref-11 DES and, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6, ref-7, ref-8, ref-9 Diffie and, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6, ref-7, ref-8, ref-9, ref-10 dual roles of, ref-1 GCHQ and, ref-1, ref-2 Kahn and, ref-1, ref-2 Lotus Notes and, ref-1, ref-2, ref-3, ref-4 NRC report and, ref-1 NSAF and, ref-1 Project Overtake of, ref-1 security failures at, ref-1 Snuffle and, ref-1 National Security Decision Directive, ref-1 Nelson, Mike, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6 Netscape, ref-1, ref-2, ref-3 Neukom, Bill, ref-1 “New Directions in Cryptography” (Diffie and Hellman), ref-1, ref-2, ref-3, ref-4, ref-5, ref-6, ref-7 New York Times, ref-1, ref-2 Nicolai, Carl, ref-1, ref-2 nonrepudiation feature, ref-1 nonsecret encryption, ref-1 Notes, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6, ref-7, ref-8 NP-complete functions, ref-1, ref-2 O’Brien, Bart, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6, ref-7 Odom, William E., ref-1 Omura, Jim, ref-1, ref-2 one-time pads, ref-1, ref-2, ref-3 one-way functions, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6, ref-7, ref-8, ref-9, ref-10, ref-11 factoring, ref-1, ref-2, ref-3 knapsacks, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6 trapdoor, ref-1, ref-2, ref-3, ref-4 Ozzie, Ray, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6, ref-7 paranoia levels, ref-1 Parker, Donn, ref-1, ref-2 passwords, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6, ref-7 Pasta, John R., ref-1 Patel, Marilyn, ref-1 patents, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6, ref-7, ref-8, ref-9, ref-10, ref-11, ref-12, ref-13, ref-14, ref-15, ref-16, ref-17, ref-18, ref-19, ref-20, ref-21, ref-22 Patterson, Nick, ref-1, ref-2, ref-3, ref-4 Penet, ref-1, ref-2, ref-3, ref-4, ref-5 Phasorphone, ref-1 Podesta, John, ref-1, ref-2 Poe, Edgar Allan, ref-1, ref-2, ref-3 pornography, ref-1 Press, Frank, ref-1 Pretty Good Privacy (PGP), ref-1, ref-2, ref-3, ref-4, ref-5, ref-6, ref-7, ref-8, ref-9, ref-10, ref-11, ref-12 breaking of, ref-1, ref-2 Prime, Geoffrey, ref-1 prime numbers, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6, ref-7 Project C43, ref-1, ref-2 Project Overtake, ref-1 public key cryptography, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6, ref-7, ref-8, ref-9, ref-10, ref-11, ref-12, ref-13, ref-14, ref-15, ref-16, ref-17, ref-18, ref-19, ref-20, ref-21, ref-22, ref-23, ref-24, ref-25, ref-26 certification of, ref-1 escrow and, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6, ref-7, ref-8, ref-9, ref-10 nonsecret encryption and, ref-1 Secure Sockets Layer, ref-1, ref-2, ref-3 security failures and, ref-1 Public Key Partners (PKP), ref-1, ref-2, ref-3, ref-4, ref-5, ref-6 Puzzle Palace, The (Bamford), ref-1, ref-2 quantum computers, ref-1 Random Number Generator (RNG), ref-1 Ray, Charles, ref-1 RC-2, ref-1, ref-2, ref-3 RC-4, ref-1, ref-2, ref-3, ref-4 Reagan, Ronald, ref-1, ref-2 Reeds, Jim, ref-1 remailers (anonymous servers), ref-1, ref-2, ref-3, ref-4, ref-5 Penet, ref-1, ref-2, ref-3, ref-4, ref-5 Richardson, Elliot, ref-1 Ritner, Peter, ref-1, ref-2 Rivest, Ron, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6, ref-7, ref-8, ref-9, ref-10, ref-11, ref-12, ref-13, ref-14, ref-15, ref-16, ref-17, ref-18, ref-19, ref-20 Rizzo, Paul, ref-1 Roberts, Larry, ref-1 Robinson, William B., ref-1, ref-2 Rohrbacher, Dana, ref-1 Rosenblum, Howard, ref-1, ref-2 Rotenberg, Marc, ref-1, ref-2 RSA, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6, ref-7, ref-8, ref-9, ref-10, ref-11, ref-12, ref-13, ref-14, ref-15, ref-16, ref-17, ref-18, ref-19, ref-20, ref-21, ref-22, ref-23, ref-24, ref-25, ref-26, ref-27, ref-28, ref-29, ref-30, ref-31 Netscape and, ref-1 patents for, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6, ref-7, ref-8, ref-9, ref-10, ref-11 personal computers and, ref-1, ref-2 RSA Data Security, Inc., ref-1, ref-2, ref-3, ref-4, ref-5, ref-6, ref-7, ref-8, ref-9, ref-10, ref-11, ref-12, ref-13, ref-14, ref-15, ref-16 conference of, ref-1, ref-2, ref-3, ref-4 Sacco, Luigi, ref-1 Safire, William, ref-1 S-boxes (substitution boxes), ref-1, ref-2, ref-3, ref-4, ref-5, ref-6, ref-7 Schiller, Jeff, ref-1 Schneier, Bruce, ref-1, ref-2, ref-3 Schnorr, Claus, ref-1, ref-2 Schroeppel, Richard, ref-1, ref-2, ref-3, ref-4 Schwartz, John J., ref-1 Science, ref-1, ref-2, ref-3, ref-4 Scientific American, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6, ref-7, ref-8 Scientologists, ref-1, ref-2, ref-3 search warrants, ref-1, ref-2, ref-3, ref-4 secret sharing, ref-1 Secure Sockets Layer (SSL), ref-1, ref-2, ref-3 Security and Freedom through Encryption (SAFE) bill, ref-1, ref-2, ref-3 Security Dynamics, ref-1 Senate Bill ref-1, ref-2, ref-3, ref-4 servers, ref-1, ref-2 anonymous, see remailers Sessions, William, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6 Shamir, Adi, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6, ref-7, ref-8, ref-9, ref-10, ref-11, ref-12, ref-13, ref-14, ref-15, ref-16, ref-17 Shannon, Claude, ref-1, ref-2, ref-3, ref-4, ref-5 shareware, ref-1, ref-2 signals intelligence, ref-1 signatures, digital, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6, ref-7, ref-8, ref-9, ref-10, ref-11, ref-12, ref-13 blind, ref-1, ref-2 DSA, ref-1, ref-2, ref-3 Silver, Roland, ref-1, ref-2, ref-3, ref-4 Simmons, Gus, ref-1 Simons, Jim, ref-1, ref-2 Skipjack, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6, ref-7, ref-8, ref-9, ref-10, ref-11 Snefru, ref-1 Snow, Brian, ref-1 Snuffle, ref-1 stream ciphers, ref-1 Studeman, William O., ref-1, ref-2 substitution boxes (S-boxes), ref-1, ref-2, ref-3, ref-4, ref-5, ref-6, ref-7 SWIFT, ref-1 T Attack (differential cryptanalysis), ref-1, ref-2, ref-3 telephones: cellular, ref-1 security devices for, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6, ref-7, ref-8, ref-9, ref-10 Tempest technology, ref-1 Tenet, George, ref-1 Tessera, ref-1 threshold scheme, ref-1 Time, ref-1 time-sharing, ref-1, ref-2 toll payments, ref-1 trapdoors, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6, ref-7, ref-8, ref-9 knapsacks, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6 one-way function, ref-1, ref-2, ref-3, ref-4 Senate bill and, ref-1, ref-2, ref-3 Tritter, Alan, ref-1, ref-2, ref-3, ref-4 Tuchman, Walter, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6, ref-7, ref-8, ref-9, ref-10 univectors, ref-1, ref-2 Usenet, ref-1, ref-2 vector space, ref-1 VeriSign, ref-1 Very Large Scale Integration (VLSI), ref-1 ViaCrypt, ref-1 virtual private networks, ref-1 Wagner, Dave, ref-1 Walker, Steve, ref-1 Wall Street Journal, ref-1, ref-2 Warren, Jim, ref-1, ref-2 Washington Post, ref-1 web of trust, ref-1 Weingarten, Fred, ref-1 Weldon, Curt, ref-1 Williamson, Malcolm, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6 Windows, ref-1 wiretapping, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6, ref-7 Wise, William, ref-1 World Wide Web, ref-1, ref-2 browsers for, ref-1, ref-2, ref-3 Wormser, Dave, ref-1 Wylie, Shawn, ref-1 Xerox Corporation, ref-1, ref-2 xor operations, ref-1 Zero Knowledge, ref-1 zero-knowledge proofs of identity, ref-1 Zimmermann, Kacie, ref-1 Zimmermann, Phil, ref-1, ref-2, ref-3, ref-4, ref-5, ref-6, ref-7, ref-8, ref-9, ref-10, ref-11 contents acknowledgments preface the loner the standard public key prime time selling crypto patents and keys crypto anarchy the clipper chip slouching toward crypto epilogue: the open secret notes bibliography glossary index VIKING Published by the Penguin Group Penguin Putnam Inc., 375 Hudson Street, New York, New York 10014, U.S.A.


pages: 560 words: 135,629

Eloquent JavaScript: A Modern Introduction to Programming by Marijn Haverbeke

always be closing, domain-specific language, Donald Knuth, en.wikipedia.org, Firefox, functional programming, hypertext link, job satisfaction, MITM: man-in-the-middle, premature optimization, slashdot, web application, WebSocket

Passing this string to console.log should show something like this: # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # When you have a program that generates this pattern, define a binding size = 8 and change the program so that it works for any size, outputting a grid of the given width and height. “People think that computer science is the art of geniuses but the actual reality is the opposite, just many people doing things that build on each other, like a wall of mini stones.” — Donald Knuth 3 FUNCTIONS Functions are the bread and butter of JavaScript programming. The concept of wrapping a piece of program in a value has many uses. It gives us a way to structure larger programs, to reduce repetition, to associate names with subprograms, and to isolate these subprograms from each other.

., 82 Hooke’s law, 395 hooligan, 375 Host header, 313 hot code, 392 href attribute, 222, 232, 235 HTML, 221, 312, 326, 369 notation 221 structure 227 html (HTML tag), 223, 228 HTTP, 219–221, 311–317, 366, 367, 369, 373, client, 361, 367, 372 server, 360, 363, 375, 381 http package, 360–361 HTTPS, 221, 317, 361 https package, 361 human language, 23 Hypertext Markup Language, see HTML Hypertext Transfer Protocol, see HTTP hyphen character, 13, 147, 238 I id attribute, 232, 239, 323 idempotence, 189, 366, 425 identifier, 204 identity, 65 if keyword, 28, 162 chaining, 29, 34, 408 If-None-Match header, 374, 380, 385 image, 233, 258, 287, 313 imagination, 265 IME (input method editor), 252 img (HTML tag), 222, 233, 237, 258, 287, 295, 296, 345 immutable, 65, 120, 270, 335, 336, 342, 346, 423 implements (reserved word), 26 import keyword, 173 in operator, 64, 105 includes method, 68, 69, 399, 411 indentation, 32 index, 61 index property, 149 index.html file, 381 index.js file, 355 indexOf method, 71, 73, 94, 113, 146, 158, 411 infinite loop, 33, 47, 139, 409 infinity, 14 infrastructure, 169 inheritance, 100, 111–112, 139, 365 INI file, 160 ini package, 169, 173, 175, 356 initialization, 258 inline caching, 403, 404 inline element, 235, 237 inlining, 400 inner function, 44, 418 inner loop, 154 innerHeight property, 257 innerWidth property, 257 input, 134, 247, 266, 319, 353, 378 input (HTML tag), 257, 318, 322, 323, 325, 341, 345 input event, 322 insertBefore method, 232, 233 installation, 169 instance, 101 instanceof operator, 112, 139 instructions, 3, 391 integers, 13 integration, 145, 230 interface, 98 canvas, 287, 289 design, 54, 145, 150, 155, 158, 229, 230, 272, 290 HTTP, 316, 373 module, 168–172, 175, 315, 356 object, 105, 106, 109, 114, 126, 189, 269, 301, 322, 335 interface (reserved word), 26 internationalization, 162 internet, 160, 220, 221, 224 Internet Explorer, 225 interpolation, 15 interpretation, 7, 170, 207–208, 212, 391 interview question, 37 inversion, 147 invoking (of functions), see function application IP address, 221, 311, 313 isDirectory method, 366, 425 isEven (exercise), 56, 408 isolation, 97, 167, 170, 224 iterable interface, 107, 412 iterator, 196 iterator interface, 106, 107, 114, 398 J Jacques, the weresquirrel, 60 Java, 5 JavaScript, 5 availability of, 2 flexibility of, 6 history of, 5, 219 in HTML, 223 syntax, 23 uses of, 6 versions of, 6 weaknesses of, 6 JavaScript console, 7, 16, 27, 134, 138, 330, 354 JavaScript Object Notation, see JSON join method, 94, 104, 356 journal, 60, 62, 64, 66, 69 JOURNAL data set, 68 journalEvents function, 69 JSON, 77, 175, 184, 193, 315, 328, 373, 386, 425 json method, 315 JSON.parse function, 77, 426 JSON.stringify function, 77 JSX, 384 jump, 4 jump-and-run game, 265 jumping, 266, 282 just-in-time compilation, 392 K Kernighan, Brian, 128 key code, 282 key property, 252, 418, 423 keyboard, 26, 247, 251, 266, 281, 282, 285, 319, 320, 322, 349 keyboard bindings (exercise), 349, 423 keyboard focus, see focus keydown event, 251, 260, 282, 349, 418, 423 keyup event, 251, 282 keyword, 24, 26, 235 Khasekhemwy, 322 kill process, 360 Knuth, Donald, 40 L label, 295, 307 label (HTML tag), 323, 341 labeling, 323 landscape example, 44 Laozi, 180 lastChild property, 230 lastIndex property, 158–160 lastIndexOf method, 71 Last-Modified header, 313 latency, 174 lava, 266, 267, 275, 278, 280, 305 Lava class, 270, 280 layering, 194, 220 layout, 235–237 laziness, 236 Le Guin, Ursula K., 2 leaf node, 229 leak, 225, 285 learning, 2, 6, 371 left (CSS), 240–242, 244 LEGO, 168 length property for arrays, 61, 336 for strings, 53, 56, 61, 74, 409 less than, 16 let keyword, 24, 25, 43, 65, 75, 76, 130 level, 266, 267, 273, 275, 284 Level class, 267 lexical scoping, 44 library, 230, 334, 356, 357 license, 169 line, 24, 32, 161, 287, 289–294, 307, 420 line break, 14, 161 line comment, 35, 156 line drawing, 350, 424 line width, 290, 297 lines of code, 211 lineTo method, 290–291 lineWidth property, 290 link (HTML tag), 277 linked list, 79, 410, 426 links, 222, 230–231, 251, 252, 344 linter, 173 Liskov, Barbara, 96 list (exercise), 79, 410 listen method, 360 listening (TCP), 220, 360 literal expression, 23, 146, 206, 208 live data structure, 227, 233, 240, 419 live view, 372, 373, 387, 426 lives (exercise), 285 load event, 258, 295–296, 303, 326, 421 LoadButton class, 344 local binding, 48, 215, 409 local scope, 43, 212 localhost, 360 localStorage object, 326–327, 383 locked box (exercise), 141, 413 logging, 133 logical operators, 17 long polling, 372–374, 378, 380, 385 loop, 4, 30, 32, 37, 38, 50, 69, 85, 90, 91, 160, 189, 408, 409, 420 termination of, 33 loop body, 31, 85 lycanthropy, 60, 66 M machine code, 3, 213, 391 macro-optimization, 406 magic, 99, 203 mailRoute array, 123 maintenance, 169 malicious script, 224 man-in-the-middle, 317 map, 272, 321 map (data structure), 104 Map class, 105, 109, 195 map method, 88, 91, 94, 99, 104, 120, 191, 268, 340 Marcus Aurelius, 246 match method, 149, 159 matching, 146, 151, 152, 158, 164 algorithm, 152–154 Math object, 56, 61, 75 Math.abs function, 76, 424 Math.acos function, 75 Math.asin function, 75 Math.atan function, 75 Math.ceil function, 76, 278, 302–303 Math.cos function, 75, 241, 242, 421 mathematics, 50, 86 Math.floor, 76, 122, 278, 302–303 Math.max function, 27, 61, 74, 75, 302 Math.min function, 27, 56, 75, 302 Math.PI constant, 75, 293 Math.random function, 75, 122, 271, 330, 404 Math.round function, 76 Math.sin function, 75, 241, 242, 271, 281 Math.sqrt function, 68, 75, 411 Math.tan function, 75 Matrix class, 107–108, 335 matrix example, 107–108, 111 MatrixIterator class, 108 max-height (CSS), 275–276 maximum, 27, 75, 90 max-width (CSS), 275–276 McConnell, Steve, 390 Meadowfield, 117 measurement, 397 measuring, 399 measuring a robot (exercise), 125, 412 media type, 317, 329, 365 meetups, JavaScript, 371 memory, 3, 11 call stack, 24 organization, 12, 47, 60, 65, 77 persistence, 387 speed, 181, 213, 400, 402, 406 structure sharing, 79 mesh, 221 message event, 259 meta key, 252 metaKey property, 252, 349 method, 62, 100, 101 array, 71 HTTP, 312, 317, 360, 367, 373, 375 interface, 98 method attribute, 313 method call, 98 method property, 315 methods object, 363 micro-optimization, 397, 399, 406 Microsoft, 225 Middle East, graph of, 393 mime package, 365 MIME type, 329, 365 mini application, 326 minifiers, 175 minimalism, 265 minimum, 27, 56, 75 minimum (exercise), 56, 408 minus, 13, 165 Miró, Joan, 332 mirror, 298, 308, 421 mirroring, 297–298 MKCOL method, 368–369, 425 mkdir function, 368–369, 425 modification date, 366 modifier key, 252 modular robot (exercise), 177, 414 modularity, 97, 334 module, 168, 169, 177, 272, 355, 356, 375 design, 175 module loader, 355 module object, 172 module system, 169 modulo (remainder) operator, 14, 33, 297, 407, 408, 418, 420 Mongolian vowel separator, 162 monster (exercise), 285, 419 Mosaic, 225 motion, 266 mouse, 26 button, 249, 250, 253 cursor, 253 mouse trail (exercise), 262, 418 mousedown event, 250, 253, 255, 337, 338, 422 mousemove event, 254, 260–262, 338, 350, 418 mouseup event, 253–255 moveTo method, 290, 293 Mozilla, 225 multiple attribute, 324, 325 multiple-choice, 318–319, 323, 324 multiplication, 13, 269–270, 280 multiplier function, 49 music, 265 mutability, 63, 65, 120 N name attribute, 320, 324 namespace, 75 naming, 4, 5, 25–26 NaN (not a number), 14, 17, 18, 130 negation, 16, 17 neighbor, 330, 422 neighbors property, 190 nerd, 158 nesting of arrays, 67 of expressions, 23, 205 of functions, 44 of loops, 38, 408 of objects, 228, 231 in regular expressions, 154 of scope, 44 Netscape, 5, 225 network, 182, 219, 372 abstraction, 194, 316 protocol, 220 reliability, 188 security, 317 speed, 174, 181, 353 network function, 194 new operator, 101 newline character, 14, 38, 147, 156, 161, 268, 422 next method, 107, 197, 412 nextSibling property, 230 Nietzsche, Friedrich, 226 node, 228, 229 node program, 354 node-fetch package, 361 Node.js, 6, 7, 27, 171, 183, 353–369, 372, 373, 375, 387, 398 NodeList type, 230, 239 node_modules directory, 355, 356 nodeName property, 243 nodeType property, 229, 418, 419 nodeValue property, 231 nonbreaking space, 162 normalizing, 396 not a number (NaN), 14, 17, 18, 129 notation, 173 note-taking example, 327 notification, 372 NPM, 169, 171, 173, 174, 176, 177, 355–358, 365, 375, 376, 387, 415 npm program, 356, 357, 365 null, 18, 19, 51, 61, 77, 80, 134 number, 12, 65, 146, 165, 414 conversion to, 19, 28 notation, 12–13 precision of, 13 representation, 12 special values, 14 Number function, 28, 35 number puzzle example, 50–52 Number.isNaN function, 29 O object, 59, 63–65, 97, 112 creation, 77, 101, 328, 401, 403 identity, 65 as map, 272 as module, 169 mutability, 65 property, 27, 61, 75, 76, 99 representation, 77 Object prototype, 99, 100 object shape, 404 Object.assign function, 328, 336 Object.create function, 100, 104, 211 Object.keys function, 64, 80, 195, 410, 417 object-oriented programming, 97, 101, 105, 106, 111, 119, 175 Object.prototype, 104 observation, 399 obstacle, 277, 278 offsetHeight property, 235, 236 offsetWidth property, 235 on method, 362 onclick attribute, 224, 248 onclick property, 337 OpenGL, 289 opening tag, 222 operator, 13, 16, 19, 204, 210, 404 application, 13 optimization, 50, 55, 236, 260, 266, 275, 306, 308, 359, 392, 398–400, 403, 406, 426 option (HTML tag), 319, 324, 425 optional, in pattern, 148 optional arguments, 48, 78 options property, 324 ordering, 220 ordinal package, 171–172 organic growth, 167 organization, 167 outline, 289 output, 16, 26, 27, 133, 134, 211, 353, 422 overflow (CSS), 275–276 overflow, with numbers, 12 overlap, 278 overlay, 238 overriding, 103, 105, 111, 415 overwriting, 367, 369, 378 P p (HTML tag), 222, 235 package, 168, 171, 355, 357 package (reserved word), 26 package manager, 169 package.json file, 357 padding (CSS), 274 page reload, 258, 321, 326 pageX property, 253, 255 pageXOffset property, 236 pageY property, 253, 255 pageYOffset property, 236, 257 Palef, Thomas, 265 panning, 339 paragraph, 222 parallelism, 182, 313 parameter, 27, 42, 43, 46–48, 74, 76, 99, 131, 172 parent node, 249 parentheses arguments, 23, 41, 46, 85, 204 expression, 13 in regular expressions, 149, 151, 152, 162, 413 statement, 27, 29, 31, 33 parentNode property, 230 parse function, 207 parseApply function, 206 parseExpression function, 205 parseINI function, 161, 168 parsing, 77, 129, 161, 203–206, 208, 211, 223, 227, 364, 380 password, 317 password field, 318 path canvas, 290–293, 420 closing, 291 file system, 355, 363 URL, 312, 315, 363, 364, 373, 375 path package, 365 pathfinding, 123, 176, 193, 343 pathfinding (exercise), 405, 406, 426 patience, 350 pattern, 145–147, 157 pausing (exercise), 285, 419 pea soup, recipe analogy, 84 peanuts, in weresquirrel example, 70–71 percent sign, 314 percentage, 94, 257 performance, 154, 174, 212, 236, 266, 306, 359, 391, 393, 397, 399 period character, 27, 61, 74, 147, 156, 165, 336 persistence, 326, 372, 387, 425 persistent data structure, 119, 120, 126, 132, 335, 342, 346, 419 persistent group (exercise), 126 persistent map (exercise), 413 PGroup class, 126, 413 phase, 271, 281 phi coefficient, 66–68 phi function, 68, 76 phone, 252 physics, 277, 281, 393, 418 physics engine, 278 pi, 13, 75, 241, 271, 293 PI constant, 75, 242 pick function, 343 picture, 287, 288, 296, 306, 334, 346 Picture class, 335, 345 picture property, 335 PictureCanvas class, 337, 349 pictureFromImage function, 345 pie chart example, 294, 295, 307, 420 ping request, 190 pink, 336 pipe analogy, 220 pipe character, 152, 414 pipe method, 364, 367 pipeline, 175 pixel, 235, 242, 253, 267, 273, 288, 289, 295, 296, 302, 306, 308, 333, 335, 339, 342, 343, 345, 350, 423 pixel art, 296 PixelEditor class, 340, 347, 349 pizza, in weresquirrel example, 67 platform game, 265, 285 Plauger, P.J., 128 player, 265–267, 275, 278, 281, 284, 296, 303, 305 Player class, 270, 281 plus character, 13, 148, 165 pointer, 230 pointer events, 253–256, 337 pointerPosition function, 338 polling, 247 pollTalks function, 385 polymorphism, 105–106 pop method, 62, 71 Popper, Karl, 234 port, 220, 311, 360 pose, 296 position, of elements on screen, 236 position (CSS), 240, 244, 257, 266, 275 POST method, 313, 314, 321, 374 postMessage method, 259 power example, 42, 48, 50 precedence, 13, 17, 239 predicate function, 88, 92, 95 Prefer header, 374, 380, 385 premature optimization, 50 preventDefault method, 251, 256–258, 282, 321, 339, 423 previousSibling property, 230 primitiveMultiply (exercise), 141, 413 privacy, 225 private (reserved word), 26 private properties, 98, 141–142 process object, 354–355, 364–365 processor, 181, 400 profiling, 50, 399 program, 2, 23, 28 program size, 83, 84, 164, 272 programming, 1 difficulty of, 2 history of, 3 joy of, 1, 2 Programming Is Terrible, 166 programming language, 1–2 creating, 203, 213 DOM, 229 history of, 3 machine language and, 391 Node.js and, 354 power of, 5 programming style, 3, 24, 32, 35, 272 progress bar, 256 project chapter, 117, 203, 265, 333, 371 promise, 200, 416 Promise class, 186, 187, 189, 195, 197, 198, 200, 315, 326, 359, 361, 363, 386, 416 Promise.all function, 190, 199, 200, 416 Promise.reject function, 187 Promise.resolve function, 186, 190 promises package, 359 promptDirection function, 139 promptInteger function, 134 propagation, of events, 249, 250, 257, 258 proper lines (exercise), 350, 424 property access, 27, 61, 129, 348, 403 assignment, 63 definition, 63, 66, 109 deletion, 63, 98 inheritance, 99, 101, 103 model of, 63 naming, 105–107 testing for, 64 protected (reserved word), 26 protocol, 220, 221, 311–312 prototype, 99–104, 111, 211, 215, 417, 426 diagram, 103 prototype property, 101 pseudorandom numbers, 75 public (reserved word), 26 public properties, 98 public space (exercise), 369, 425 publishing (packages), 358 punch card, 3 pure function, 55, 79, 88, 175, 330, 422 push method, 62, 69, 71, 411, 426 pushing data, 372 PUT method, 312–313, 363, 367, 373, 378, 425 Pythagorean theorem, 411, 423 Python, 391 Q quadratic curve, 292 quadraticCurveTo method, 292, 420 query string, 314, 374, 380 querySelector method, 240, 417 querySelectorAll method, 239, 324 question mark, 18, 148, 157, 314 queue, 198 quotation mark, 14, 165 quoting in JSON, 77 of object properties, 63 quoting style (exercise), 165, 413 R rabbit example, 98, 100–102 radians, 242, 293, 298 radio buttons, 318, 323 radius, 350, 423 radix, 11 raising (exceptions), 135 random numbers, 75, 271 random-item package, 414 randomPick function, 122 randomRobot function, 122 range, 88, 147, 148 range function, 5, 78, 409 Range header, 316 ray tracer, 306 readability, 4, 5, 35, 50, 54, 135, 167, 208, 276, 307 readable stream, 361, 362, 364, 378 readAsDataURL method, 345 readAsText method, 326 readdir function, 359, 366, 425 readdirSync function, 425 read-eval-print loop, 354 readFile function, 172, 358, 425 readFileSync function, 359, 424 reading code, 6, 117 readStorage function, 184 readStream function, 378, 379 real-time events, 247 reasoning, 17 recipe analogy, 84 record, 62 rect (SVG tag), 288 rectangle, 266, 278, 289, 307, 342 rectangle function, 342, 423 recursion, 47, 50, 56, 80, 189, 195, 205, 206, 208, 231, 243, 300, 394, 408, 410, 413, 416, 418 reduce method, 89, 91, 94, 95, 340, 411 redundancy, 397 ReferenceError type, 215 RegExp class, 146, 157, 424 regexp golf (exercise), 164 regular expressions, 145–165, 206, 368, 375, 376, 417, 424 alternatives, 152 backtracking, 153 boundary, 151 creation, 146, 157 escaping, 146, 158, 414 flags, 149, 155, 157, 414 global, 155, 158, 159 grouping, 149, 155 internationalization, 162 matching, 152, 158 methods, 146, 150, 158 repetition, 148 rejecting (a promise), 187, 189, 198 relative path, 172, 224, 355, 363, 425 relative positioning, 240, 241 relative URL, 315 remainder (modulo) operator, 14, 33, 297, 407, 408, 418, 420 remote access, 363 remote procedure call, 316 removeChild method, 232 removeEventListener method, 248, 419 removeItem method, 326 rename function, 359 rendering, 289 renderTalk function, 384 renderTalkForm function, 385 renderUserField function, 383 repeat method, 73, 257 repeating key, 251 repetition, 52, 148, 154, 157, 260 replace method, 155, 165, 413 replaceChild method, 233, 418 replaceSelection function, 322 reportError function, 383 repulsion, 393, 395 request, 185, 189, 220, 312, 313, 321, 360, 361, 367, 372 request function, 189, 361, 362 request type, 185 requestAnimationFrame function, 241, 258, 260, 283, 308, 418 requestType function, 190 require function, 171, 172, 178, 355, 356, 365, 375 reserved words, 26 resolution, 172, 355 resolve function, 364 resolving (a promise), 186, 187, 189, 198 resource, 220, 221, 312, 313, 317, 363, 377 response, 185, 189, 312, 313, 316, 360, 364, 366 Response class, 315 responsiveness, 247, 353, rest parameters, 74 restore method, 299, 300 result property, 326 retry, 189 return keyword, 42, 47, 101, 196, 408, 411 return value, 27, 42, 134, 185, 410 reuse, 54, 112, 167–169, 356 reverse method, 79 reversing (exercise), 79, 409 rgb (CSS), 274 right-aligning, 243 rmdir function, 366, 368 roadGraph object, 118 roads array, 117 roads module (exercise), 177, 415 robot, 117, 119, 121, 123, 125, 177 robot efficiency (exercise), 125, 412 robustness, 373 root, 229 rotate method, 298, 300 rotation, 307, 420 rounding, 76, 134, 278, 279, 302, 424 router, 372, 375 Router class, 375, 376 routeRequest function, 194 routeRobot function, 123 routing, 192 rows, in tables, 243 Ruby, 391 rules (CSS), 238, 239 run function, 211 runAnimation function, 283, 285 runGame function, 284, 285 runLayout function, 396 runLevel function, 283, 285 running code, 7 runRobot function, 121, 412 run-time error, 132–134, 140, 417 Rust (programming language), 391 S Safari, 225 sandbox, 7, 59, 224, 227, 316 save method, 299, 300 SaveButton class, 344 scalar replacement of aggregates, 400, 402 scale constant, 337–339 scale method, 297, 299 scaling, 273, 296, 297, 303, 421 scalpel (exercise), 200, 416 scheduling, 197, 354 scientific notation, 13, 165 scope, 43, 44, 48, 168, 170–173, 208, 210, 214, 215, 417 script (HTML tag), 223, 224, 258 SCRIPTS data set, 87, 89, 92, 93, 95 scroll event, 256, 260 scrolling, 251, 256–257, 275–276, 282, 301 search method, 158 search problem, 124, 152, 154, 232, 368, 405 search tool (exercise), 368, 424 section, 161 Secure HTTP, 221, 317, 361 security, 224, 225, 316, 317, 325, 327, 364, 375 select (HTML tag), 319, 324, 327, 334, 340, 425 selected attribute, 324 selection, 322 selectionEnd property, 322 selectionStart property, 322 selector, 239 self-closing tag, 222 semantic versioning, 357 semicolon, 23, 24, 33, 237 send method, 185, 188 sendGossip function, 191 sep binding, 364–365 sequence, 148 serialization, 77 server, 220, 221, 311–313, 315, 316, 353, 360, 362, 363, 372, 375 session, 328 sessionStorage object, 328 set, 146, 147, 229 Set (data structure), 113, 126 Set class, 113, 126, 413 set method, 105 setAttribute method, 235, 337 setInterval function, 260, 296 setItem method, 326 setter, 110 setTimeout function, 184, 197, 259, 260, 380, 386 shape, 287, 290, 291, 293, 295, 307 shapes (exercise), 307, 420 shared property, 100, 103 SHIFT key, 252, 423 shift method, 71 shiftKey property, 252 short-circuit evaluation, 20, 51, 209, 411 SICP, 202 side effect, 24, 27, 34, 42, 54, 65, 79, 88, 159, 175, 199, 230, 232, 233, 236, 290, 299, 314, 334, 335 sign, 12, 165, 414 sign bit, 12 signal, 11 simplicity, 213 simulation, 119, 121, 265, 270, 330, 393, 418 sine, 75, 241, 271, 281 single-quote character, 14, 165, 224 singleton, 126 skill, 333 SkillShareApp class, 386 skill-sharing project, 371–373, 375, 381 skipSpace function, 206, 214 slash character, 13, 35–36, 146, 156, 315, 364, 425 slice method, 72, 73, 88, 233, 409, 416 slope, 424 sloppy programming, 261 smooth animation, 241 SMTP, 220 social factors, 349 socket, 372–373 some method, 92, 95, 191, 376, 426 sorting, 229 source property, 158 special form, 203, 208 special return value, 134, 135 specialForms object, 208 specificity, 239 speed, 1, 2, 308, 421 SpiderMonkey, 400 spiral, 307, 420 split method, 118, 268 spread, 74, 336 spread operator, 274 spring, 393, 395 sprite, 296, 303–304 spy, 256 square, 28 square brackets, 60, 61, 74, 76, 107, 147, 324, 328, 409 square example, 41–42, 45, 46 square root, 68, 75, 411 src attribute, 222, 224 stack, see call stack stack overflow, 47, 50, 56, 408 stack trace, 136 staged compilation, 392 standard, 5, 26, 35, 88, 136, 162, 349, 354, 355 standard environment, 26 standard output, 354, 362–363 standards, 219, 225 star, 307, 420 Star Trek insignia, 292 startPixelEditor function, 347 startState constant, 347 startsWith method, 364 stat function, 359, 365, 366, 425 state of application, 275, 334, 342, 346, 347, 388 in binding, 24, 31, 32, 34, 400 of canvas, 289, 299 in iterator, 197 in objects, 119, 268, 301 transitions, 198, 336, 337 statement, 23, 24, 28, 31, 32, 42, 63 static (reserved word), 26 static file, 373, 376 static method, 110, 113, 268, 413 static typing, 403 Stats type, 366 statSync function, 425 status code, 312, 354–355 status property, 315, 383 stdout property, 362–363 stopPropagation method, 250 storage function, 187 stream, 220, 361–363, 364, 367, 378 strict mode, 130 string, 14, 60, 62, 65, 92 indexing, 56, 72, 74, 92, 149 length, 37, 92 methods, 73, 149 notation, 14 properties, 72 representation, 15 searching, 73 String function, 28, 105 stroke method, 290–292 strokeRect method, 289, 421 strokeStyle property, 290 strokeText method, 295 stroking, 289, 290, 295, 306 strong (HTML tag), 235, 237 structure, 168, 222, 227, 334 Structure and Interpretation of Computer Programs, 202 structure sharing, 79 style, 237 style (HTML tag), 238, 239 style attribute, 237–239, 273 style sheet, see CSS subclass, 111 submit, 318, 320, 321 submit event, 321, 384, 425 substitution, 54 subtraction, 13, 113 sum function, 5, 78 summing (exercise), 78, 409 summing example, 4, 83, 89, 211 superclass, 111 survey, 294 Sussman, Gerald, 202 SVG, 287–289, 305, 306 swapping bindings, 424 swipe, 342 switch keyword, 34 symbiotic relationship, 183 symbol, 106 Symbol function, 106 Symbol.iterator symbol, 107 SymmetricMatrix class, 111 synchronization, 387, 426 synchronous programming, 182, 195, 359, 368 syncState method, 335, 338, 340, 341, 349, 426 syntax of Egg, 203, 204 error, 26, 129, 130 expression, 23 function, 42, 45 identifier, 26 number, 12, 165 object, 63 operator, 13 statement, 24, 26, 28–34, 135 string, 14 syntax tree, 204–205, 207, 228–229 SyntaxError type, 206 T tab character, 14, 32 TAB key, 320 tabbed interface (exercise), 262, 419 tabindex attribute, 252, 320, 349 table (HTML tag), 243, 266, 274, 422 table example, 417 tableFor function, 68 tables, 67, 68, 274 tags, 221–222, 227, 239, see also names of specific tags talk, 371, 372, 377–379 talkResponse method, 380 talksAbout function, 231 talkURL function, 383 Tamil, 87 tampering, 317 tangent, 75 target property, 250 task management example, 71 TCP, 220, 221, 311, 373 td (HTML tag), 243, 274 Tef, 166 temperature example, 110 template, 171, 388, 426 template literals, 15 tentacle (analogy), 25, 63, 65 terminal, 354 termite, 183 ternary operator, 18, 20, 209 test method, 146 test runners, 132 test suites, 132 testing, 125, 132 text, 14, 221, 222, 227, 229, 295, 305–307, 322, 324, 358, 422 text field, 257, 318, 319, 322 text method, 315 text node, 229, 231, 233, 419 text wrapping, 305 text-align (CSS), 243 textAlign property, 295, 420 textarea (HTML tag), 260, 318, 322, 327, 330, 425 textBaseline property, 295, 420 textContent property, 418, 422 TEXT_NODE code, 229, 419 textScripts function, 94, 411 th (HTML tag), 243 then method, 186–188, 191, 416 theory, 133 this binding, 62, 98–99, 101, 130 thread, 182, 183, 198, 259 throw keyword, 135, 136, 139, 141, 413 tile, 303 time, 147, 148, 150, 184, 241, 261, 277, 278, 280, 283, 303, 346 time zone, 150 timeline, 182, 197, 223, 241, 247, 258 timeout, 188, 259, 373, 374, 380 Timeout class, 189 times method, 269 timing, 396 title, 382 title (HTML tag), 222, 223 toDataURL method, 344 toLowerCase method, 62, 243 tool, 145, 164, 175, 334, 339, 340, 342–344, 347, 350, 357 tool property, 335 ToolSelect class, 340 top (CSS), 240–242, 244 top-level scope, see global scope toString method, 99, 100, 103–105, 346, 362 touch, 255, 334 touchend event, 255 touches method, 278 touches property, 255, 339 touchmove event, 255, 339, 350 touchstart event, 255, 337, 339 toUpperCase method, 62, 132, 243, 362 tr (HTML tag), 243, 274 trackKeys function, 282, 285 transform (CSS), 287 transformation, 297–299, 308, 420 translate method, 298, 299 Transmission Control Protocol, 220, 221, 311, 373 transparency, 289, 296, 346 transpilation, 213 trapezoid, 307, 420 traversal, 152 tree, 100, 204, 229 treeGraph function, 394 trial and error, 133, 282, 293 triangle (exercise), 37, 407 trigonometry, 75, 241 trim method, 73, 268 true, 16 trust, 224 try keyword, 136, 137, 190, 413, 422 type, 12, 16, 112 type attribute, 318, 321 type checking, 131, 174 type coercion, 18, 19, 28 type observation, 392, 401, 403 type property, 204, 249 type variable, 131 typeof operator, 16, 80, 410 TypeScript, 131–132 typing, 260 typo, 129 U Ullman, Ellen, xx unary operator, 16, 23 uncaught exception, 138, 188 undefined, 18, 19, 25, 42, 47, 61, 63, 77, 129, 130, 134 underline, 237 underscore character, 26, 35, 98, 151, 157 undo history, 346, 347 UndoButton class, 347 Unicode, 15, 17, 87, 92, 147, 162, 163 unicycling, 371 Uniform Resource Locator, see URL uniformity, 204 uniqueness, 239 unit (CSS), 242, 257 Unix, 366–368 Unix time, 150 unlink function, 359, 366 unshift method, 71 unwinding the stack, 135 upcasing server example, 362 updated method, 378, 381, 425 updateState function, 336 upgrading, 169 upload, 325 URL, 221, 224, 288, 313, 315, 317, 360, 373, 383 URL encoding, 314 url package, 364, 380 urlToPath function, 364 usability, 251 use strict, 130 user experience, 247, 320, 372, 383 user interface, 138, 334 users’ group, 371 UTF-8, 358, 359 UTF-16, 15, 92 V V8, 398 validation, 134, 140, 203, 277, 321, 378, 379 value, 12, 186 value attribute, 318, 322, 324 var keyword, 25, 43, 76 variables, see also binding Vec class, 113, 268, 269, 280, 394, 396, 421 vector, 394, 400 vector (exercise), 113, 411 vector graphics, 295 verbosity, 46, 182 version, 169, 222, 312, 357, 398 viewport, 275–277, 301, 302, 305 VillageState class, 119 virtual keyboard, 252 virtual world, 117, 119, 121 virus, 224 vocabulary, 41, 84 void operator, 26 volatile data storage, 12 W waitForChanges method, 380 waiting, 184 walking, 303 warning, 357 wave, 271, 280, 281 web, see World Wide Web web application, 5, 326, 333 web browser, see browser web page, 174 web worker, 259 WebDAV, 369 webgl (canvas context), 289 website, 224, 225, 313, 353, 369, 371 WebSockets, 373 weekDay module, 169–170 weekend project, 369 weresquirrel example, 60, 62, 64, 66, 69, 71 while loop, 4, 30, 32, 53, 160 whitespace in HTML, 231, 340, 419 indentation, 32 matching, 147, 162 syntax, 204, 206, 214, 417 trimming, 73, 268 in URLs, 373–374 Why’s (Poignant) Guide to Ruby, 22 width property, 350, 423 window, 250, 255, 258 window object, 248 with statement, 131 word boundary, 151 word character, 147, 151, 162 work list, 124, 343 workbench (exercise), 330, 422 world, of a game, 265 World Wide Web, 5, 77, 219, 221, 224, 225, 311 writable stream, 360–363, 364 write method, 360, 361 writeFile function, 359, 361, 425 writeHead method, 360 writing code, 6, 117 writing system, 87 WWW, see World Wide Web X XML, 230, 288 XML namespace, 288 xmlns attribute, 288 Y yield (reserved word), 26 yield keyword, 197 your own loop (example), 95 Yuan-Ma, 10, 352 Z Zawinski, Jamie, 144 zero-based counting, 56, 61, 150 zeroPad function, 54 zigzag shape, 420 zooming, 305 Eloquent JavaScript, 3rd Edition is set in New Baskerville, Futura, Dogma, and TheSansMono Condensed.


pages: 511 words: 139,108

The Fabric of Reality by David Deutsch

Any sufficiently advanced technology is indistinguishable from magic, Arthur Eddington, butterfly effect, coherent worldview, complexity theory, conceptual framework, cosmological principle, different worldview, Donald Knuth, Douglas Hofstadter, Georg Cantor, Gödel, Escher, Bach, Johannes Kepler, Occam's razor, phenotype, Richard Feynman, scientific worldview, Stephen Hawking, the scientific method, Thomas Kuhn: the structure of scientific revolutions, Turing machine

The largest number that has been factorized 'in anger', as it were - a number whose factors were secretly chosen by mathematicians in order to present a challenge to other mathematicians - had 129 digits. The factorization was achieved, after an appeal on the Internet, by a global cooperative effort involving thousands of computers. The computer scientist Donald Knuth has estimated that the factorization of a 250-digit number, using the most efficient known methods, would take over a million years on a network of a million computers. Such things are difficult to estimate, but even if Knuth is being too pessimistic one need only consider numbers with a few more digits and the task will be made many times harder.

Lakatos and Musgrave) 324 crucial experimental tests see under experimental tests crypto�inductivists 143�65, 166, 341, 346 cryptography 221 ������public�key 215, 217, 219 ������quantum 217�19, 220 Darwin, Charles 169, 176, 315, 325, 331, 334, 337, 340, 366 Darwinism 333 Dawkins, Richard v, 171, 172, 176, 334, 335. 336, 340, 346, 366 {374} decoherence 213, 214, 216, 220 deduction 59, 165 ������laws of 163 ������logical 225 depth 13, 15, 16, 17, 60, 69, 70, 168, 344�5, 366 Descartes, Rene 81, 89, 112, 346 design ������and aesthetics 363 ������and living organisms 337 ������of spaceship 4 ������of structures 14 ������of universal computer 111 ������see also adaptation determinism 270, 273 ������and chaos 202 ������and free will 338 ������of multiverse 277, 285 ������in quantum theory 203�6, 281 ������in time travel 313 Deutsch, David ������'cannot consistently judge this statement to be true' 237 ������as a child 1, 29, 169�70, 366 ������experience of scientific debate 325, 327 ������multiple versions of 53 ������and universal quantum computer 210 DeWitt, Bryce 278, 328, 329, 335 diagonal argument 126, 139, 140, 234, 236 Dialogue of the Two Chief World Systems (Galileo) 74�5 diamond 42, 180 discrete variables 35, 36, 211 ������see also quantization DNA 10, 68, 171, 175, 187�93, 190, 197 ������junk DNA sequences 173, 174, 188�91 ������see also genes Dr Johnson's criterion see under Johnson, Dr Samuel 'dream�people' 82 Dummett, Michael 314 Earth ������age of 27, 80 ������as apparently stationary 78, 136, 328�9� ������biosphere 169, 177, 186 ������and geocentric theory 9, 18, 55, 96 ������and heliocentric theory 9, 56, 73, 89, 96 ������as an impurity 177 ������and the 'Inquisition's theory' 77 ������and Jupiter 95 ������life on 177, 184 earthquake prediction 201 ecological niche see niches economics 20, 184 Eddington, Arthur 56, 57, 58 education 1, 15, 169�70, 185,198, 228, 247,253,291, 315, 325�7, 328, 332 effect see cause Einstein, Albert 2, 3, 17, 23, 56, 85, 157, 247, 266, 290, 311, 325, 327 Einstein's equations 311�12 electrochemistry 344 electromagnetism 9, 18, 23, 265, 271�3, 274 Elements (Euclid) 247 emergence 20, 30, 362 ������predictive and explanatory 96, 362�4 emergent phenomena 20�21, 23, 27, 30, 68, 84,137,176,191, 235, 337, 345 energy 46, 160, 177, 182, 186, 286 ������conservation of 317, 345, 353�4 ������needed to power computers and virtual�reality generators 91, no, 114, 348�9 Enlightenment, the 74 environment ������Cantgotu 128, 129, 130, 132, 133, 139, 140, 222, 231, 257, 356 ������of genes 178 {375} ������logically possible 123, 126, 128, 129, 140 ������and niche 172 ������past 291�2, 293, 305 ������physically impossible 105, 118�20 ������physically possible 105, 118, 119, 120, 122, 134�6, 140, 181, 231, 292, 293, 330�31, 348 ������quantum 209 ������rendering an 113�21, 123, 124, 125, 132, 134, 139, 179, 194, 208, 209�10, 214�15, 221, 292, 294, 295, 357 ������simulated in, 127, 298 ������specifying 113 ������unpredictable 115�16 ������see also experience epistemology 49, 55�72, 73�97, 141�66, 222�57, 315, 316, 321�43, 344�66 ������evolutionary 68 ������nature of 94, 341, 347 ������as one of the four main strands of explanation 28, 30�31, 54, 62, 320, 344 ������Popperian 61�5, 143�51, 156, 331, 332, 334, 336, 341, 346, 351, 354, 356, 366 ������as underlying all other knowledge 346 ������and time travel 315 equations of motion 25�7 ethics 29, 357, 359�63, 365�6 Euclid/Euclidean geometry 227, 241�5, 247, 254 Everett, Hugh v, 50, 328, 329, 330, 332, 335, 339 'Everett�Wheeler' theory 328 evolution 139, 196, 316, 317, 333, 346, 357 ������and adaptation 69 347 ������compared with scientific discovery 68, 71 ������and increasing complexity 346 ������as a computation 197 Dawkins and 334 punctuated equilibrium theory 334�5 stellar 182�3 theory of 20, 27, 167�93, 315, 321�43, 344�66; as one of the four main strands of explanation 28, 30�31, 140, 166 ������as a world�view 345�6 evolutionary epistemology 68 excluded middle, law of the 232, 233 existence see reality experience(s) ������a classification of 105 ������external 103, 104, 121, 136 ������and inductivism 61 ������internal 103�4, 105, 121 ������logically impossible 104�5 ������logically possible 104, 105, 121 ������and virtual reality 120�21, 122, 130, 136 ������see also environment experimental tests 65, 71, 239, 321, 323, 332 ������and criticism 65, 66, 71 ������crucial 6�7, 30, 65, 147 ������and explanations 7, 141�2 ������Galileo and 73, 74 ������and proof 224 ������and refuting rival theories 65, 147, 149 explanation(s) 11, 13, 29, 48, 84, 139, 159, 239, 241, 342 ������argument and 75, 164�5 ������bad 7, 62�3, 65, 80, 142, 150, 156, 161 ������by causes 24 ������and complexity 21, 78�9, 90�92 ������and criticism 66 ������crypto�inductivists and 143 ������emergent 362�4 ������and experiments 7, 141�2 ������is unlike food 9 {376} ������four main strands of see four main strands of explanation ������and fundamental phenomena 168 ������and the initial state 24, 27 ������justification of 69, 84, 85, 146, 165 ������mathematical 253 ������and Occam's razor 78 ������practical value of 4�6 ������and prediction 5, 6, 8, 30, 56�7, 62, 64�5, 66, 76 ������proof and 236 ������in pure mathematics 236 ������as the purpose of science 4, 7, 51, 236 ������reductive 21, 24, 30 ������renouncing 231, 316 ������and simplicity 11, 21, 24, 78�9, 90�92, 137, 142 ������solipsism as an 97, 142, 233 ������theories and 2�3, 4, 7, 60, 66, 70, 71, 76, 80�81, 117, 118, 157, 332 ������and the theory of everything 19 ������and truth 142 ������ultimate 85, 169 ������and understanding 11, 224 ������and universality 29 explanatory gaps (in four strands) 336�7, 340, 342, 343 exponential computation see under computation external experience see under experience extrapolation 59�62, 71, 350 extraterrestrial intelligence 4, 116, 185, 314, 353 factorization 104, 199�200, 215�16, 221, 251 ������quantum factorization engine 215�16, 217 fallibility 71�2, 76, 102�3, 146, 163, 225, 326, 332, 365 faith 74, 143, 169, 357 Faraday, Michael 9, 32, 265, 325, 344 ������'death in 1830' premise 274�6, 288 'feelies' (movies for all the senses) 109, 111 Feynman, Richard 200, 201, 208�10, 252 fibre optics 219 final state 25�6, 202 flight simulators 5, 98�9, 101�4, 106�8, 118�19 Floater 144 flow of time see under time Forms 226, 227, 238, 242, 243, 254 Foucault pendulum 89 four main strands of explanation 321�43, 366 ������apparently narrow, inhuman and pessimistic 336, 342, 343 ������explanatory gaps 336�7, 340, 342, 343 ������and the first real Theory of Everything 28�9, 345 ������and time travel 288, 318, 319 ������see also computation theory; epistemology; evolution, theory of; quantum theory 'four�colour conjecture' 249 free fall 106�8 free will 269, 270, 288, 294, 307, 331, 338�9, 339, 361, 366 Freedom and Rationality: Essays in Honour of John Watkins 144n Frege, Gottlob 230, 254 frogs 34�5, 35, 42, 47, 52 fundamental phenomena/theory 28, 168, 176, 177 future, changing the 309 Galileo Galilei 83, 86, 87, 93, 95, 193, 214, 222, 224�5, 324, 325, 335 ������'Book of Nature' 74, 222 ������concept of a law of nature 337 ������concept of reality 74, 94 {377} ������develops the method of systematic experimental testing 73 ������and the heliocentric theory 73, 74, 75, 76, 78, 89 ������and the Inquisition 73, 75�9, 328 ������insists on the precedence of scientific reasoning 74 ������and quantum theory 327, 328�9 ������recants 73 ������theory of inertia 78, 329 gap ������explanatory 336�7, 340�42, 343 ������God�shaped 143 ������induction�shaped 143 Gauss, Carl Friedrich 247 genes 171�2, 192 ������as computer programs 171 ������diamond�encoded 180 ������embodying knowledge 180�81, 196 ������niches 175, 179, 181, 187, 188 ������non�replicating 180�81 ������in parallel universes 190 ������and memes 360 ������replication 171, 172, 175, 181, 187, 188, 346 ������selfish 334 ������as theories 315 ������variations in 188, 315, 334 genetic code 171 genetic theories 361 geocentric theory 9, 18, 55, 74, 75, 96 geometry ������Euclidean 227, 241, 242�3, 244, 245; 247, 254 ������and the general theory of relativity 2�3, 4, 17�18, 161, 247, 344 ������mis�classified 247 ������three dimensions of space in 267�8 God 75, 143, 315, 333, 356, 366�7 Gödel, Kurt 126, 128, 234, 235, 236, 245, 248�51, 325 ������incompleteness theorem 126, 234, 237, 240, 256 gold 34�5, 38 Goodman, Nelson 152 grandfather paradox 293, 319 grass�cure theory 7, 66, 79 Gravitation and Cosmology (Weinberg) 4 gravity 13, 18, 151, 154�7, 159, 168 ������best theory of 145 ������Einstein and 3, 23, 56, 85 ������and free fall 106 ������Newton's theory of 2, 17, 56, 85, 93 ������quantum theory of 24, 277, 278, 312, 349, 351 ������and starlight passing close to the Sun 56 Great Bear constellation 167, 191�2 Haken, Wolfgang 249 Hawking, Stephen 177, 313, 346 ������insignificance of life 177�8 heliocentric theory 9, 56, 73�9, 86, 89, 95, 96 hierarchy ������academic 325�7 ������of forms of reasoning 59, 84�5 ������of flows of time 264 ������of knowledge 20�21, 23, 84�5, 169�70 ������within mathematics 235, 255 Hilbert, David 228, 233�4, 235, 237, 240, 250 ������problems (published 1900) 234 ������tenth problem 234�5, 256 holism 11, 30 Hoyle, Fred 333 Hubble, Edwin 311 human rights 362�3 Hume, David 145, 359 Huxley, Aldous 99, 109 IBM Research 214, 218 image generators 99, 100, 105�16, 121, 123, 296�9 ������universal 109�11,121, 129, 134, 300 {378} images 122 ������artificial 106, 110 ������manipulation of 108 ������rendered 110, 113, 116 imaginary numbers 227�8 imagination ������and 'Faraday's death in 1830' premise 275 ������and reality 49, 86, 263, 285 ������and virtual reality 98, 120, 121, 122, 244 immortality 357, 359, 366 induction 59, 70, 71, 141�6, 155, 156, 166, 225, 332, 334, 340 ������'principle of induction' 142�5, 157�8, 159, 162 inductive extrapolation 60 inductivism 148, 157, 165, 166, 231, 332, 333, 350 ������as false 59�60, 61, 64, 69, 71, 84, 94, 141, 144�5, 241 ������and justification 60, 69 ������and observations 59, 60, 61, 69, 149 ������and a 'principle of induction' see under induction ������and Russell's chicken story 60�61 ������scheme of 59, 62 infinite numbers 126, 228 infinity 126, 224, 250 ������of universes 279 information 10, 19, 58, 69, 72, 160, 180, 195, 214, 215, 218, 316�18, 340, 349�50 ������complexity of 92�3 ������lost in random processes 281�2 ������processing 195, 213, 215, 318, 349�50, 354; ������see also computation ������and virtual�reality generators 100, 111, 293, 297 initial state 18, 19, 20, 24�7, 105, 201, 202, 209, 220, 357 Inquisition 73, 75�80, 86, 89, 101, 233, 240, 328, 329 'Inquisition's theory' 77, 78�80 instrumentalism 3, 29, 48, 75 ������and the Copenhagen interpretation 328 ������and an oracle 4, 6 ������positivism as an extreme form of 6 ������pragmatic 329 insulin 171 interference 41, 42, 48, 54, 89, 168, 205, 207�9, 213, 218, 252, 277�8, 318, 329 ������in Bohm's theory 93 ������as hard to detect 49, 213 ������with matter 46 ������multi�particle 46, 207 ������non�random interference phenomena 204, 206, 209 ������observation and 49�50, 213 ������and parallel universes 45, 51 ������patterns 39, 40, 41, 44, 204 ������photons deflected by 43, 89 ������quantum computers and 195 ������single�particle 46, 47, 51 ������with the real by the possible 48 interferometer 204�5, 205, 206, 209 internal experience see experience, internal intractability 203, 207, 208; see tractability intuitionism 163, 231�3, 256 intuition(s) ������about computation 131 ������about proof 249, 250�51 ������about time 263, 266�7 ������as applied to novel situations 14�15, 350 ������and geometry 147 ������and Gödel's theorem 148�9 ������inborn 254 ������logical 232 ������mathematical 227�8, 231�2, 236�7, 239, 240, 247, 252�3, 254, 256 ������physical 253, 254 ������and relativity 311 {379} ������'self�evident' 231�2 ������as theories 14 jigsaw puzzle 273, 285 Johnson, Dr Samuel 170, 292, 294, 302 ������Dr Johnson's criterion 86�93, 96, 97, 101�2, 207, 223, 224, 300 joke 81, 171 junk DNA sequences 173, 174, 188, 189, 190, 191 Jupiter 95, 177 justification 59, 60, 69, 84, 85, 141�66, 225, 248�9, 341 ������ultimate 80, 85, 94, 225 Kant, Immanuel 254 Keats, John 364 Kepler, Johannes 56, 95, 337 'kicking back' 87�90, 97, 100, 101�2, 113, 223, 224 knowledge ������comprehensibility 17, 344 ������epistemology as underlying all other 346 ������of everything that is known 1�18, 28�30 ������and explanations 30, 75, 160�61 ������as a physical quantity 187�90, 347 ������the future of 181, 184�6, 351 ������genes embodying 180�81, 196 ������growth of 7, 8, 9, 16, 17, 29, 61, 68, 313, 315, 324, 331, 338, 346�7, 351�2, 359, 365 ������hierarchy of see under hierarchy ������life and 181, 187, 191 ������mathematical 221, 226, 236, 247, 248, 257 ������multiverse view of 191, 317�18, 345 ������non�replicating 181 ������objective 69 ������perfect see certainty ������reliable 142 ������scientific 7, 21, 23�4, 30, 59, 62, 75, 117, 143, 315, 324, 331, 346 ������and self�similarity 96 ������'second�class' scientific 225�7; see also hierarchy of knowledge ������as significant 182�7 ������survival of 181 ������theory of see epistemology knowledge paradox 314, 315, 316, 319 Knuth, Donald 200 Kuhn, Thomas/Kuhnian 321�5, 327, 328, 329, 332, 334, 342 Lamarckism 333 Landauer, Rolf 214 language 152�5, 258, 259�60, 278 law of the excluded middle 232, 233 laws of physics 22�3, 105, 131, 164, 214, 221, 249, 275, 337, 356 ������and a Cantgotu environment 129 ������as capable of being approximated 197 ������as capable of being rendered 136 ������comprehensibility of 135, 197 ������and computation 98 ������and computational universality 196 ������as deterministic 270; ������see also determinism ������false 102, 119, 136, 137, 222, 224 ������and finiteness 249�50 ������and free fall 107 ������Galileo's v.


pages: 828 words: 205,338

Write Great Code, Volume 2 by Randall Hyde

complexity theory, Donald Knuth, G4S, locality of reference, NP-complete, premature optimization

But unfortunately, if no thought is put into the performance of the application until the optimization phase, it’s unlikely that optimization will prove practical. The time to ensure that an application has reasonable performance characteristics is at the beginning, during the design and implementation phases. Optimization can fine-tune the performance of a system, but it can rarely deliver a miracle. Although the quote is often attributed to Donald Knuth, who popularized it, it was Tony Hoare who originally said, “Premature optimization is the root of all evil.” This statement has long been the rallying cry of software engineers who avoid any thought of application performance until the very end of the software-development cycle—at which point the optimization phase is typically ignored for economic or time-to-market reasons.

Higher-level data structure information is available in just about any decent college textbook on data structures and algorithm design. There are, literally, hundreds of these books available covering a wide range of subjects. For those interested in a combination of low-level and high-level concepts, a good choice is Donald Knuth’s The Art of Computer Programming, Volume 1 (Third Edition, Addison-Wesley Professional, 1997) This text is available in almost every bookstore that carries technical books. As noted in the previous chapter, textbooks on programming language design and compiler design and implementation are good sources of information about the low-level implementation of data types, including composite data types.

Higher-level data structure information is available in just about any decent college textbook on data structures and algorithm design. There are, literally, hundreds of these books available covering a wide range of subjects. If you are interested in a combination of low-level and high-level concepts, Donald Knuth’s The Art of Computer Programming, Volume I (Addison-Wesley Professional, 1997) is a good choice. This text is available in nearly every bookstore that carries technical books. As noted in the previous chapter, textbooks on programming language design and compiler design and implementation are another good source of information about the low-level implementation of data types, including composite data types such as records, unions, and classes.


pages: 792 words: 48,468

Tcl/Tk, Second Edition: A Developer's Guide by Clif Flynt

Donald Knuth, hypertext link, revision control, web application

After reporting an order, it should be ready to start assembling a new order for that table. 301. Write a script that will accept multiple lines in the form “author, title, and so on.” Clif Flynt, Tcl/Tk: A Developer’s Guide Richard Stevens, TCP/IP Illustrated Donald Knuth, The Art of Computer Programming: Vol 1 Donald Knuth, The Art of Computer Programming: Vol 2 Donald Knuth, The Art of Computer Programming: Vol 3 John Ousterhout, Tcl and the Tk Toolkit Richard Stevens, Unix Network Programming Place this data in an associative array that would allow you to get lists of books by an author. 177 178 Chapter 6 Building Complex Data Structures with Lists and Arrays 302.


pages: 489 words: 117,470

Programming in Lua, Fourth Edition by Roberto Ierusalimschy

combinatorial explosion, domain-specific language, Donald Knuth, functional programming, Internet of things

If our data file is in a predefined format, such as CSV (Comma-Separated Values) or XML, we have little choice. However, if we are going to create the file for our own use, we can use Lua constructors as our format. In this format, we represent each data record as a Lua constructor. Instead of writing in our data file something like Donald E. Knuth,Literate Programming,CSLI,1992 Jon Bentley,More Programming Pearls,Addison-Wesley,1990 we write this: Entry{"Donald E. Knuth", "Literate Programming", "CSLI", 1992} Entry{"Jon Bentley", "More Programming Pearls", "Addison-Wesley", 1990} Remember that Entry{code} is the same as Entry({code}), that is, a call to some function Entry with a table as its single argument.

For instance, the following program counts the number of entries in a data file: local count = 0 function Entry () count = count + 1 end dofile("data") print("number of entries: " .. count) The next program collects in a set the names of all authors found in the file, and then prints them: local authors = {} -- a set to collect authors function Entry (b) authors[b[1]] = true end dofile("data") for name in pairs(authors) do print(name) end Note the event-driven approach in these program fragments: the function Entry acts as a callback function, which is called during the dofile for each entry in the data file. When file size is not a big concern, we can use name-value pairs for our representation:[15] Entry{ author = "Donald E. Knuth", title = "Literate Programming", publisher = "CSLI", year = 1992 } Entry{ author = "Jon Bentley", title = "More Programming Pearls", year = 1990, publisher = "Addison-Wesley", } This format is what we call a self-describing data format, because each piece of data has attached to it a short description of its meaning.


pages: 1,387 words: 202,295

Structure and Interpretation of Computer Programs, Second Edition by Harold Abelson, Gerald Jay Sussman, Julie Sussman

Andrew Wiles, conceptual framework, Donald Knuth, Douglas Hofstadter, Eratosthenes, functional programming, Gödel, Escher, Bach, industrial robot, information retrieval, iterative process, Johannes Kepler, loose coupling, probability theory / Blaise Pascal / Pierre de Fermat, Richard Stallman, Turing machine, wikimedia commons

THUNKS: A way of compiling procedure statements, with some comments on procedure declarations. Unpublished manuscript. (Also, private communication from Wallace Feurzeig.) Kaldewaij, Anne. 1990. Programming: The Derivation of Algorithms. New York: Prentice-Hall. Knuth, Donald E. 1973. Fundamental Algorithms. Volume 1 of The Art of Computer Programming. 2nd edition. Reading, MA: Addison-Wesley. Knuth, Donald E. 1981. Seminumerical Algorithms. Volume 2 of The Art of Computer Programming. 2nd edition. Reading, MA: Addison-Wesley. Kohlbecker, Eugene Edmund, Jr. 1986. Syntactic extensions in the programming language Lisp. Ph.D. thesis, Indiana University. –› Konopasek, Milos, and Sundaresan Jayaraman. 1984.

Next: Exercises, Prev: 5.5, Up: Top [Contents] Next: Figures, Prev: References, Up: Top [Contents] List of Exercises Chapter 1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.10 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.20 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.30 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.40 1.41 1.42 1.43 1.44 1.45 1.46 Chapter 2 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10 2.11 2.12 2.13 2.14 2.15 2.16 2.17 2.18 2.19 2.20 2.21 2.22 2.23 2.24 2.25 2.26 2.27 2.28 2.29 2.30 2.31 2.32 2.33 2.34 2.35 2.36 2.37 2.38 2.39 2.40 2.41 2.42 2.43 2.44 2.45 2.46 2.47 2.48 2.49 2.50 2.51 2.52 2.53 2.54 2.55 2.56 2.57 2.58 2.59 2.60 2.61 2.62 2.63 2.64 2.65 2.66 2.67 2.68 2.69 2.70 2.71 2.72 2.73 2.74 2.75 2.76 2.77 2.78 2.79 2.80 2.81 2.82 2.83 2.84 2.85 2.86 2.87 2.88 2.89 2.90 2.91 2.92 2.93 2.94 2.95 2.96 2.97 Chapter 3 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13 3.14 3.15 3.16 3.17 3.18 3.19 3.20 3.21 3.22 3.23 3.24 3.25 3.26 3.27 3.28 3.29 3.30 3.31 3.32 3.33 3.34 3.35 3.36 3.37 3.38 3.39 3.40 3.41 3.42 3.43 3.44 3.45 3.46 3.47 3.48 3.49 3.50 3.51 3.52 3.53 3.54 3.55 3.56 3.57 3.58 3.59 3.60 3.61 3.62 3.63 3.64 3.65 3.66 3.67 3.68 3.69 3.70 3.71 3.72 3.73 3.74 3.75 3.76 3.77 3.78 3.79 3.80 3.81 3.82 Chapter 4 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10 4.11 4.12 4.13 4.14 4.15 4.16 4.17 4.18 4.19 4.20 4.21 4.22 4.23 4.24 4.25 4.26 4.27 4.28 4.29 4.30 4.31 4.32 4.33 4.34 4.35 4.36 4.37 4.38 4.39 4.40 4.41 4.42 4.43 4.44 4.45 4.46 4.47 4.48 4.49 4.50 4.51 4.52 4.53 4.54 4.55 4.56 4.57 4.58 4.59 4.60 4.61 4.62 4.63 4.64 4.65 4.66 4.67 4.68 4.69 4.70 4.71 4.72 4.73 4.74 4.75 4.76 4.77 4.78 4.79 Chapter 5 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 5.10 5.11 5.12 5.13 5.14 5.15 5.16 5.17 5.18 5.19 5.20 5.21 5.22 5.23 5.24 5.25 5.26 5.27 5.28 5.29 5.30 5.31 5.32 5.33 5.34 5.35 5.36 5.37 5.38 5.39 5.40 5.41 5.42 5.43 5.44 5.45 5.46 5.47 5.48 5.49 5.50 5.51 5.52 Next: Figures, Prev: References, Up: Top [Contents] Next: Term Index, Prev: Exercises, Up: Top [Contents] List of Figures Chapter 1 1.1 1.2 1.3 1.4 1.5 Chapter 2 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10 2.11 2.12 2.13 2.14 2.15 2.16 2.17 2.18 2.19 2.20 2.21 2.22 2.23 2.24 2.25 2.26 Chapter 3 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13 3.14 3.15 3.16 3.17 3.18 3.19 3.20 3.21 3.22 3.23 3.24 3.25 3.26 3.27 3.28 3.29 3.30 3.31 3.32 3.33 3.34 3.35 3.36 3.37 3.38 Chapter 4 4.1 4.2 4.3 4.4 4.5 4.6 Chapter 5 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 5.10 5.11 5.12 5.13 5.14 5.15 5.16 5.17 5.18 Next: Term Index, Prev: Exercises, Up: Top [Contents] Next: Colophon, Prev: Figures, Up: Top [Contents] Term Index Any inaccuracies in this index may be explained by the fact that it has been prepared with the help of a computer. —Donald E. Knuth, Fundamental Algorithms (Volume 1 of The Art of Computer Programming) Jump to: A B C D E F G H I K L M N O P Q R S T U V W Z Index Entry Section A abstract models: 2.1.3 abstract syntax: 4.1.1 abstraction barriers: Chapter 2 abstraction barriers: 2.1.2 accumulator: 2.2.3 accumulator: 3.1.1 acquired: 3.4.2 action: 5.1.1 additive: 2.4.3 additively: Chapter 2 additively: 2.4 address: 5.3.1 address arithmetic: 5.3.1 agenda: 3.3.4 algebraic specification: 2.1.3 aliasing: 3.1.3 and-gate: 3.3.4 applicative-order: 4.2.1 applicative-order evaluation: 1.1.5 arbiter: 3.4.2 arguments: 1.1.1 assembler: 5.2.1 assertions: 4.4.1 assignment operator: 3.1 atomically: 3.4.2 automatic storage allocation: 5.3 average damping: 1.3.3 B B-trees: 2.3.3 backbone: 3.3.3 backquote: 5.5.2 backtracks: 4.3.1 balanced: 2.2.2 barrier synchronization: 3.4.2 base address: 5.3.1 Bertrand’s hypothesis: 3.5.2 bignum: 5.3.1 bindings: 3.2 binds: 1.1.8 binomial coefficients: 1.2.2 block structure: 1.1.8 bound variable: 1.1.8 box-and-pointer notation: 2.2 breakpoint: 5.2.4 broken heart: 5.3.2 bugs: Chapter 1 C cache-coherence: 3.4.1 call-by-name: 3.5.1 call-by-name: 4.2.2 call-by-name thunks: 3.5.1 call-by-need: 3.5.1 call-by-need: 4.2.2 call-by-need thunks: 3.5.1 capturing: 1.1.8 Carmichael numbers: 1.2.6 case analysis: 1.1.6 cell: 3.4.2 chronological backtracking: 4.3.1 Church numerals: 2.1.3 Church-Turing thesis: 4.1.5 clauses: 1.1.6 closed world assumption: 4.4.3 closure: Chapter 2 closure property: 2.2 code generator: 5.5.1 coerce: 2.5.2 coercion: 2.5.2 combinations: 1.1.1 comments: 2.2.3 compacting: 5.3.2 compilation: 5.5 compile-time environment: 5.5.6 composition: 1.3.4 compound data: Chapter 2 compound data object: Chapter 2 compound procedure: 1.1.4 computability: 4.1.5 computational process: Chapter 1 concurrently: 3.4 congruent modulo: 1.2.6 connectors: 3.3.5 consequent expression: 1.1.6 constraint networks: 3.3.5 constructors: 2.1 continuation procedures: 4.3.3 continued fraction: 1.3.3 control structure: 4.4.3 controller: 5.1 conventional interfaces: Chapter 2 conventional interfaces: 2.2.3 current time: 3.3.4 D data: Chapter 1 data: 2.1.3 data abstraction: Chapter 2 data abstraction: 2.1 data paths: 5.1 data-directed: 2.4 data-directed programming: Chapter 2 data-directed programming: 2.4.3 deadlock: 3.4.2 deadlock-recovery: 3.4.2 debug: Chapter 1 deep binding: 4.1.3 deferred operations: 1.2.1 delayed argument: 3.5.4 delayed evaluation: Chapter 3 delayed evaluation: 3.5 delayed object: 3.5.1 dense: 2.5.3 dependency-directed backtracking: 4.3.1 depth-first search: 4.3.1 deque: 3.3.2 derived expressions: 4.1.2 digital signals: 3.3.4 dispatching on type: 2.4.3 displacement number: 5.5.6 dotted-tail notation: 2.2.1 driver loop: 4.1.4 E empty list: 2.2.1 encapsulated: 3.1.1 enclosing environment: 3.2 entry points: 5.1.1 enumerator: 2.2.3 environment: 1.1.2 environment model: Chapter 3 environments: 3.2 Euclid’s Algorithm: 1.2.5 Euclidean ring: 2.5.3 evaluating: 1.1.1 evaluator: Chapter 4 event-driven simulation: 3.3.4 evlis tail recursion: 5.4.1 execution procedure: 4.1.7 explicit-control evaluator: 5.4 expression: 1.1.1 F failure continuation: 4.3.3 FIFO: 3.3.2 filter: 1.3.1 filter: 2.2.3 first-class: 1.3.4 fixed point: 1.3.3 fixed-length: 2.3.4 forcing: 4.2.2 forwarding address: 5.3.2 frame: 4.4.2 frame coordinate map: 2.2.4 frame number: 5.5.6 framed-stack: 5.4.1 frames: 3.2 free: 1.1.8 free list: 5.3.1 front: 3.3.2 full-adder: 3.3.4 function boxes: 3.3.4 functional programming: 3.1.3 functional programming languages: 3.5.5 G garbage: 5.3.2 garbage collection: 5.3 garbage collection: 5.3.2 garbage collector: 3.3.1 garbage-collected: 4.2.2 generic operations: Chapter 2 generic procedures: 2.3.4 generic procedures: 2.4 glitches: Chapter 1 global: 1.2 global: 3.2 global environment: 1.1.2 golden ratio: 1.2.2 grammar: 4.3.2 H half-adder: 3.3.4 half-interval method: 1.3.3 Halting Theorem: 4.1.5 headed list: 3.3.3 hiding principle: 3.1.1 hierarchical: 2.2 hierarchy of types: 2.5.2 higher-order procedures: 1.3 Horner’s rule: 2.2.3 I imperative programming: 3.1.3 indeterminates: 2.5.3 index: 5.3.1 indexing: 4.4.2 instantiated with: 4.4.1 instruction counting: 5.2.4 instruction execution procedure: 5.2.1 instruction sequence: 5.5.1 instruction tracing: 5.2.4 instructions: Chapter 5 instructions: 5.1.1 integerizing factor: 2.5.3 integers: 1.1 integrator: 3.5.3 interning: 5.3.1 interpreter: Chapter 1 interpreter: Chapter 4 invariant quantity: 1.2.4 inverter: 3.3.4 iterative improvement: 1.3.4 iterative process: 1.2.1 K k-term: 1.3.3 key: 2.3.3 L labels: 5.1.1 lazy evaluation: 4.2.1 lexical address: 5.5.6 lexical addressing: 4.1.3 lexical scoping: 1.1.8 linear iterative process: 1.2.1 linear recursive process: 1.2.1 linkage descriptor: 5.5.1 list: 2.2.1 list: 2.2.1 list: 2.2.1 list structure: 2.2.1 list-structured: 2.1.1 list-structured memory: 5.3 local evolution: 1.2 local state variables: 3.1 location: 5.3.1 logic-programming: Chapter 4 logical and: 3.3.4 logical deductions: 4.4.1 logical or: 3.3.4 M machine language: 5.5 macro: 4.1.2 map: 2.2.3 mark-sweep: 5.3.2 memoization: 1.2.2 Memoization: 3.3.3 memoize: 4.2.2 merge: 3.5.5 message passing: 2.1.3 message passing: 2.4.3 message-passing: 3.1.1 metacircular: 4.1 Metalinguistic abstraction: Chapter 4 Miller-Rabin test: 1.2.6 modular: Chapter 3 modulo: 1.2.6 modulo: 1.2.6 modus ponens: 4.4.3 moments in time: 3.4 Monte Carlo integration: 3.1.2 Monte Carlo simulation: 3.1.2 mutable data objects: 3.3 mutators: 3.3 mutex: 3.4.2 mutual exclusion: 3.4.2 N n-fold smoothed function: 1.3.4 native language: 5.5 needed: 5.5.1 networks: Chapter 4 Newton’s method: 1.3.4 nil: 2.2.1 non-computable: 4.1.5 non-strict: 4.2.1 nondeterministic: 3.4.1 nondeterministic choice point: 4.3.1 nondeterministic computing: Chapter 4 nondeterministic computing: 4.3 normal-order: 4.2.1 normal-order evaluation: 1.1.5 normal-order evaluation: Chapter 4 O obarray: 5.3.1 object program: 5.5 objects: Chapter 3 open-code: 5.5.5 operands: 1.1.1 operator: 1.1.1 operator: 4.1.6 or-gate: 3.3.4 order of growth: 1.2.3 ordinary: 2.5.1 output prompt: 4.1.4 P package: 2.4.3 painter: 2.2.4 pair: 2.1.1 pair: 2.1.1 parse: 4.3.2 Pascal’s triangle: 1.2.2 pattern: 4.4.1 pattern matcher: 4.4.2 pattern matching: 4.4.2 pattern variable: 4.4.1 pipelining: 3.4 pointer: 2.2 poly: 2.5.3 power series: 3.5.2 predicate: 1.1.6 predicate: 1.1.6 prefix: 2.3.4 prefix code: 2.3.4 prefix notation: 1.1.1 pretty-printing: 1.1.1 primitive constraints: 3.3.5 probabilistic algorithms: 1.2.6 procedural abstraction: 1.1.8 procedural epistemology: Preface 1e procedure: 1.2.1 procedure definitions: 1.1.4 procedures: Chapter 1 process: 1.2.1 program: Chapter 1 programming languages: Chapter 1 prompt: 4.1.4 pseudo-random: 3.1.2 pseudodivision: 2.5.3 pseudoremainder: 2.5.3 Q quasiquote: 5.5.2 queries: 4.4 query language: 4.4 queue: 3.3.2 quote: 2.3.1 R Ramanujan numbers: 3.5.3 rational functions: 2.5.3 RC circuit: 3.5.3 read-eval-print loop: 1.1.1 reader macro characters: 4.4.4.7 real numbers: 1.1 rear: 3.3.2 recursion equations: Chapter 1 Recursion theory: 4.1.5 recursive: 1.1.3 recursive: 1.1.8 recursive process: 1.2.1 red-black trees: 2.3.3 referentially transparent: 3.1.3 register machine: Chapter 5 register table: 5.2.1 registers: Chapter 5 released: 3.4.2 remainder of: 1.2.6 resolution principle: 4.4 ripple-carry adder: 3.3.4 robust: 2.2.4 RSA algorithm: 1.2.6 rules: 4.4 rules: 4.4.1 S satisfy: 4.4.1 scope: 1.1.8 selectors: 2.1 semaphore: 3.4.2 separator code: 2.3.4 sequence: 2.2.1 sequence accelerator: 3.5.3 sequences: 1.3.1 serializer: 3.4.2 serializers: 3.4.2 series RLC circuit: 3.5.4 shadow: 3.2 shared: 3.3.1 side-effect bugs: 3.1.3 sieve of Eratosthenes: 3.5.2 smoothing: 1.3.4 source language: 5.5 source program: 5.5 sparse: 2.5.3 special forms: 1.1.3 stack: 1.2.1 stack: 5.1.4 state variables: 1.2.1 state variables: 3.1 statements: 5.5.1 stop-and-copy: 5.3.2 stratified design: 2.2.4 stream processing: 1.1.5 streams: Chapter 3 streams: 3.5 streams: 3.5 strict: 4.2.1 subroutine: 5.1.3 substitution: 1.1.5 substitution model: 1.1.5 subtype: 2.5.2 success continuation: 4.3.3 summation of a series: 1.3.1 summer: 3.5.3 supertype: 2.5.2 symbolic expressions: Chapter 2 syntactic sugar: 1.1.3 syntax: 4.1 systematically search: 4.3.1 systems: Chapter 4 T tableau: 3.5.3 tabulation: 1.2.2 tabulation: 3.3.3 tagged architectures: 5.3.1 tail-recursive: 1.2.1 tail-recursive: 5.4.2 target: 5.5.1 thrashing: UTF thunk: 4.2.2 thunks: 4.2.2 time: 3.4 time segments: 3.3.4 tower: 2.5.2 tree accumulation: 1.1.3 tree recursion: 1.2.2 trees: 2.2.2 truth maintenance: 4.3.1 Turing machine: 4.1.5 type field: 5.3.1 type tag: 2.4.2 type tags: 2.4 type-inferencing: 3.5.4 typed pointers: 5.3.1 U unbound: 3.2 unification: 4.4 unification: 4.4.2 unification: 4.4.2 unification algorithm: 4.4 univariate polynomials: 2.5.3 universal machine: 4.1.5 upward-compatible extension: 4.2.2 V value: 1.1.2 value of a variable: 3.2 values: 2.3.1 variable: 1.1.2 variable-length: 2.3.4 vector: 5.3.1 W width: 2.1.4 wires: 3.3.4 wishful thinking: 2.1.1 Z zero crossings: 3.5.3 Jump to: A B C D E F G H I K L M N O P Q R S T U V W Z Next: Colophon, Prev: Figures, Up: Top [Contents] Prev: Term Index, Up: Top [Contents] Colophon On the cover page is Agostino Ramelli’s bookwheel mechanism from 1588.


Producing Open Source Software: How to Run a Successful Free Software Project by Karl Fogel

active measures, AGPL, barriers to entry, Benjamin Mako Hill, collaborative editing, continuous integration, corporate governance, Debian, Donald Knuth, en.wikipedia.org, experimental subject, Firefox, GnuPG, Hacker Ethic, Internet Archive, iterative process, Kickstarter, natural language processing, patent troll, peer-to-peer, pull request, revision control, Richard Stallman, selection bias, slashdot, software as a service, software patent, SpamAssassin, web application, zero-sum game

Far from opposing proprietary software, the X license deliberately allowed proprietary extensions on top of the free core—each member of the consortium wanted the chance to enhance the default X distribution, and thereby gain a competitive advantage over the other members. X Windows[7] itself was free software, but mainly as a way to level the playing field between competing business interests and increase standardization, not out of some desire to end the dominance of proprietary software. Yet another example, predating the GNU project by a few years, was TeX, Donald Knuth's free, publishing-quality typesetting system. He released it under terms that allowed anyone to modify and distribute the code, but not to call the result "TeX" unless it passed a very strict set of compatibility tests (this is an example of the "trademark-protecting" class of free licenses, discussed more in Chapter 9, Legal Matters: Licenses, Copyrights, Trademarks and Patents).

Then they go further: if someone using software under the license initiates patent litigation against another party, claiming that the covered work infringes, the initiator automatically loses all the patent grants otherwise provided for that work by the license, and in the case of the GPL-3.0 loses their right to distribute under the license altogether. protection of "artistic integrity" Some licenses (the Artistic License, used for the most popular implementation of the Perl programming language, and Donald Knuth's TeX license, for example) require that modification and redistribution be done in a manner that distinguishes clearly between the pristine original version of the code and any modifications. They permit essentially the same freedoms as other free licenses, but impose certain requirements that make the integrity of the original code easy to verify.


pages: 504 words: 89,238

Natural language processing with Python by Steven Bird, Ewan Klein, Edward Loper

bioinformatics, business intelligence, conceptual framework, Donald Knuth, elephant in my pajamas, en.wikipedia.org, finite state, Firefox, functional programming, Guido van Rossum, information retrieval, Menlo Park, natural language processing, P = NP, search inside the book, speech recognition, statistical model, text mining, Turing test

Computational Linguistics, 32: 485–525, 2006. [Kiusalaas, 2005] Jaan Kiusalaas. Numerical Methods in Engineering with Python. Cambridge University Press, 2005. [Klein and Manning, 2003] Dan Klein and Christopher D. Manning. A* parsing: Fast exact viterbi parse selection. In Proceedings of HLT-NAACL 03, 2003. [Knuth, 2006] Donald E. Knuth. The Art of Computer Programming, Volume 4: Generating All Trees. Addison Wesley, 2006. [Lappin, 1996] Shalom Lappin, editor. The Handbook of Contemporary Semantic Theory. Blackwell Publishers, Oxford, 1996. [Larson and Segal, 1995] Richard Larson and Gabriel Segal. Knowledge of Meaning: An Introduction to Semantic Theory.

Since the calling function simply has to find the maximum value—the word that comes latest in lexicographic sort order—it can process the stream of data without having to store anything more than the maximum value seen so far. 4.3 Questions of Style Programming is as much an art as a science. The undisputed “bible” of programming, a 2,500 page multivolume work by Donald Knuth, is called The Art of Computer Programming. Many books have been written on Literate Programming, recognizing that humans, not just computers, must read and understand programs. Here we pick up on some issues of programming style that have important ramifications for the readability of your code, including code layout, procedural versus declarative style, and the use of loop variables.


pages: 574 words: 164,509

Superintelligence: Paths, Dangers, Strategies by Nick Bostrom

agricultural Revolution, AI winter, Albert Einstein, algorithmic trading, anthropic principle, anti-communist, artificial general intelligence, autonomous vehicles, backpropagation, barriers to entry, Bayesian statistics, bioinformatics, brain emulation, cloud computing, combinatorial explosion, computer vision, cosmological constant, dark matter, DARPA: Urban Challenge, data acquisition, delayed gratification, demographic transition, different worldview, Donald Knuth, Douglas Hofstadter, Drosophila, Elon Musk, en.wikipedia.org, endogenous growth, epigenetics, fear of failure, Flash crash, Flynn Effect, friendly AI, Gödel, Escher, Bach, income inequality, industrial robot, informal economy, information retrieval, interchangeable parts, iterative process, job automation, John Markoff, John von Neumann, knowledge worker, longitudinal study, Menlo Park, meta-analysis, mutually assured destruction, Nash equilibrium, Netflix Prize, new economy, Norbert Wiener, NP-complete, nuclear winter, optical character recognition, pattern recognition, performance metric, phenotype, prediction markets, price stability, principal–agent problem, race to the bottom, random walk, Ray Kurzweil, recommendation engine, reversible computing, social graph, speech recognition, Stanislav Petrov, statistical model, stem cell, Stephen Hawking, strong AI, superintelligent machines, supervolcano, technological singularity, technoutopianism, The Coming Technological Singularity, The Nature of the Firm, Thomas Kuhn: the structure of scientific revolutions, Tragedy of the Commons, transaction costs, Turing machine, Vernor Vinge, Watson beat the top human players on Jeopardy!, World Values Survey, zero-sum game

It turned out to be possible to build a perfectly fine chess engine around a special-purpose algorithm.58 When implemented on the fast processors that became available towards the end of the twentieth century, it produces very strong play. But an AI built like that is narrow. It plays chess; it can do no other.59 In other domains, solutions have turned out to be more complicated than initially expected, and progress slower. The computer scientist Donald Knuth was struck that “AI has by now succeeded in doing essentially everything that requires ‘thinking’ but has failed to do most of what people and animals do ‘without thinking’—that, somehow, is much harder!”60 Analyzing visual scenes, recognizing objects, or controlling a robot’s behavior as it interacts with a natural environment has proved challenging.

J. 4 Gorbachev, Mikhail 86 graceful degradation 7 graphical models 11 growth 1–7, 48–55, 69–75, 83, 163, 261, 281 H Hail Mary approach 198–200, 207, 293, 294 Hanson, Robin 2, 160, 261, 270, 271, 287 hardware overhang 73, 240–243, 274, 289, 301, 302 hedonism 140, 210 hedonium 140, 219 Helsinki Declaration 188 heuristic search 6 Hill, Benny 105 hippocampus 47 HLMI, see machine intelligence, human-level Hodgkin–Huxley model 25 human baseline 62–77, 82 human extinction, see existential risk Human Genome Project 86, 253, 276 human intelligence 5–14, 24–58, 98–99, 159–184, 242–254, 255–257 human–machine interface, see cyborg I impersonal perspective 228–246 in vitro fertilization, see embryo selection incentive methods 131–143 cryptographic reward tokens 133 social integration 131–132, 156–158, 159, 202, 283 indirect normativity 141–150, 209–227, 262, 298 indirect reach 58 inductive bias 9–10 Industrial Revolution 2, 80, 161–163 infrastructure profusion 123–125, 153, 187, 226, 282 institution design 202–208 instrumental convergence thesis 105–116 intelligence explosion 2–5, 22–51, 62–77, 78–90, 95–104, 108, 115–126, 127–128, 136, 151, 160, 165, 178, 198, 205, 227, 228–254, 256–260, 274, 276, 282, 284, 289, 300, 301–302 Internet 16, 45–49, 67–77, 85, 94–98, 130, 146, 241, 271 inventory control systems 16 IVF, see embryo selection J Jeopardy!13 K Kasparov, Garry 12 Kepler, Johannes 14 Knuth, Donald 14, 264 Kurzweil, Ray 2, 261, 269 L Lenat, Douglas 12, 263 Logic Theorist (system) 6 logicist paradigm, see Good Old-Fashioned Artificial Intelligence (GOFAI) Logistello 12 M machine intelligence; see also artificial intelligence human-level (HLMI) 4, 19–21, 27–35, 73–74, 207, 243, 264, 267 revolution, see intelligence explosion machine learning 8–18, 28, 121, 152, 188, 274, 290 machine translation 15 macro-structural development accelerator 233–235 malignant failure 123–126, 149, 196 Malthusian condition 163–165, 252 Manhattan Project 75, 80–87, 276 McCarthy, John 5–18 McCulloch–Pitts neuron 237 MegaEarth 56 memory capacity 7–9, 60, 71 memory sharing 61 Mill, John Stuart 210 mind crime 125–126, 153, 201–208, 213, 226, 297 Minsky, Marvin 18, 261, 262, 282 Monte Carlo method 9–13 Moore’s law 24–25, 73–77, 274, 286; see also computing power moral growth 214 moral permissibility (MP)218–220, 297 moral rightness (MR)217–220.296, 297 moral status 125–126, 166–169, 173, 202–205, 268, 288, 296 Moravec, Hans 24, 265, 288 motivation selection 29, 127–129, 138–144, 147, 158, 168, 180–191, 222 definition 138 motivational scaffolding 191, 207 multipolar scenarios 90, 132, 159–184, 243–254, 301 mutational load 41 N nanotechnology 53, 94–98, 103, 113, 177, 231, 239, 276, 277, 299, 300 natural language 14 neural networks 5–9, 28, 46, 173, 237, 262, 274 neurocomputational modeling 25–30, 35, 61, 301; see also whole brain emulation (WBE) and neuromorphic AI neuromorphic AI 28, 34, 47, 237–245, 267, 300, 301 Newton, Isaac 56 Nilsson, Nils 18–20, 264 nootropics 36–44, 66–67, 201, 267 Norvig, Peter 19, 264, 282 O observation selection theory, see anthropics Oliphant, Mark 85 O’Neill, Gerard 101 ontological crisis 146, 197 optimality notions 10, 186, 194, 291–293 Bayesian agent 9–11 value learner (AI-VL) 194 observation-utility-maximizer (AI-OUM) 194 reinforcement learner (AI-RL) 194 optimization power 24, 62–75, 83, 92–96, 227, 274 definition 65 oracle AI 141–158, 222–226, 285, 286 definition 146 orthogonality thesis 105–109, 115, 279, 280 P paperclip AI 107–108, 123–125, 132–135, 153, 212, 243 Parfit, Derek 279 Pascal’s mugging 223, 298 Pascal’s wager 223 person-affecting perspective 228, 245–246, 301 perverse instantiation 120–124, 153, 190–196 poker 13 principal–agent problem 127–128, 184 Principle of Epistemic Deference 211, 221 Proverb (program) 12 Q qualia, see consciousness quality superintelligence 51–58, 72, 243, 272 definition 56 R race dynamic, see technology race rate of growth, see growth ratification 222–225 Rawls, John 150 Reagan, Ronald 86–87 reasons-based goal 220 recalcitrance 62–77, 92, 241, 274 definition 65 recursive self-improvement 29, 75, 96, 142, 259; see also seed AI reinforcement learning 12, 28, 188–189, 194–196, 207, 237, 277, 282, 290 resource acquisition 113–116, 123, 193 reward signal 71, 121–122, 188, 194, 207 Riemann hypothesis catastrophe 123, 141 robotics 9–19, 94–97, 117–118, 139, 238, 276, 290 Roosevelt, Franklin D.85 RSA encryption scheme 80 Russell, Bertrand 6, 87, 139, 277 S Samuel, Arthur 12 Sandberg, Anders 265, 267, 272, 274 scanning, see whole brain emulation (WBE) Schaeffer, Jonathan 12 scheduling 15 Schelling point 147, 183, 296 Scrabble 13 second transition 176–178, 238, 243–245, 252 second-guessing (arguments) 238–239 seed AI 23–29, 36, 75, 83, 92–96, 107, 116–120, 142, 151, 189–198, 201–217, 224–225, 240–241, 266, 274, 275, 282 self-limiting goal 123 Shakey (robot) 6 SHRDLU (program) 6 Shulman, Carl 178–180, 265, 287, 300, 302, 304 simulation hypothesis 134–135, 143, 278, 288, 292 singleton 78–90, 95–104, 112–114, 115–126, 136, 159, 176–184, 242, 275, 276, 279, 281, 287, 299, 301, 303 definition 78, 100 singularity 1, 2, 49, 75, 261, 274; see also intelligence explosion social signaling 110 somatic gene therapy 42 sovereign AI 148–158, 187, 226, 285 speech recognition 15–16, 46 speed superintelligence 52–58, 75, 270, 271 definition 53 Strategic Defense Initiative (“Star Wars”) 86 strong AI 18 stunting 135–137, 143 sub-symbolic processing, see connectionism superintelligence; see also collective superintelligence, quality superintelligence and speed superintelligence definition 22, 52 forms 52, 59 paths to 22, 50 predicting the behavior of 108, 155, 302 superorganisms 178–180 superpowers 52–56, 80, 86–87, 91–104, 119, 133, 148, 277, 279, 296 types 94 surveillance 15, 49, 64, 82–85, 94, 117, 132, 181, 232, 253, 276, 294, 299 Szilárd, Leó 85 T TD-Gammon 12 Technological Completion Conjecture 112–113, 229 technology race 80–82, 86–90 203–205, 231, 246–252, 302 teleological threads 110 Tesauro, Gerry 12 TextRunner (system) 71 theorem prover 15, 266 three laws of robotics 139, 284 Thrun, Sebastian 19 tool-AI 151–158 definition 151 treacherous turn 116–119, 128 Tribolium castaneum 154 tripwires 137–143 Truman, Harry 85 Turing, Alan 4, 23, 29, 44, 225, 265, 271, 272 U unemployment 65, 159–180, 287 United Nations 87–89, 252–253 universal accelerator 233 unmanned vehicle, see drone uploading, see whole brain emulation (WBE) utility function 10–11, 88, 100, 110, 119, 124–125, 133–134, 172, 185–187, 192–208, 290, 292, 293, 303 V value learning 191–198, 208, 293 value-accretion 189–190, 207 value-loading 185–208, 293, 294 veil of ignorance 150, 156, 253, 285 Vinge, Vernor 2, 49, 270 virtual reality 30, 31, 53, 113, 166, 171, 198, 204, 300 von Neumann probe 100–101, 113 von Neumann, John 44, 87, 114, 261, 277, 281 W wages 65, 69, 160–169 Watson (IBM) 13, 71 WBE, see whole brain emulation (WBE) Whitehead, Alfred N.6 whole brain emulation (WBE) 28–36, 50, 60, 68–73, 77, 84–85, 108, 172, 198, 201–202, 236–245, 252, 266, 267, 274, 299, 300, 301 Wigner, Eugene 85 windfall clause 254, 303 Winston, Patrick 18 wire-heading 122–123, 133, 189, 194, 207, 282, 291 wise-singleton sustainability threshold 100–104, 279 world economy 2–3, 63, 74, 83, 159–184, 274, 277, 285 Y Yudkowsky, Eliezer 70, 92, 98, 106, 197, 211–216, 266, 273, 282, 286, 291, 299


pages: 923 words: 516,602

The C++ Programming Language by Bjarne Stroustrup

combinatorial explosion, conceptual framework, database schema, distributed generation, Donald Knuth, fault tolerance, functional programming, general-purpose programming language, index card, iterative process, job-hopping, locality of reference, Menlo Park, Parkinson's law, premature optimization, sorting algorithm

Englewood Cliffs, New Jersey. 1988. ISBN 0-13-110362-8. Andrew Koenig and Bjarne Stroustrup: C++: As close to C as possible – but no closer. The C++ Report. Vol. 1 No. 7. July 1989. Andrew Koenig and Barbara Moo: Ruminations on C++. Addison Wesley Longman. Reading, Mass. 1997. ISBN 1-201-42339-1. Donald Knuth: The Art of Computer Programming. Addison-Wesley. Reading, Mass. Barbara Liskov et al.: Clu Reference Manual. MIT/LCS/TR-225. MIT Cambridge. Mass. 1979. Robert C. Martin: Designing Object-Oriented C++ Applications Using the Booch Method. Prentice-Hall. Englewood Cliffs, New Jersey. 1995. ISBN 0-13-203837-4.

If a ‘‘maintenance crew’’ is left guessing about the architecture of the system or must deduce the purpose of system components from their implementation, the structure of a system can deteriorate rapidly under the impact of local patches. Documentation is typically much better at conveying details than in helping new people to understand key ideas and principles. 23.4.7 Efficiency [design.efficiency] Donald Knuth observed that ‘‘premature optimization is the root of all evil.’’ Some people have learned that lesson all too well and consider all concern for efficiency evil. On the contrary, efficiency must be kept in mind throughout the design and implementation effort. However, that does not mean the designer should be concerned with micro-efficiencies, but that first-order efficiency issues must be considered.

– D– #, preprocessing 813 template instantiation 866 discrimination of exception 188 disguised pointer 844 dispatch, double 326 distance() and - 551, 554 distribution exponential 685 uniform 685 div() 661 divide and conquer, complexity 693 divides / 517 div_t 661 do statement 114, 137 documentation 714– 715 do_it() example 777 domain error 661 dominance 401 Donald Knuth 713 dot product 684 double dispatch 326 quote 830 double 74 output 626 double-ended queue deque 474 doubly-linked list 470 down cast 408 draw_all() example 520 Duff’s device 141 dynamic memory 127, 576, 843 store 34 type checking 727 type checking, mis-use of 439 dynamic_cast 407– 408 and ambiguity 412 and polymorphism 409 and static_cast 413 bad_cast and 384 implementation of 409 to reference 410 use of 774 E eatwhite() 620 eback() 645 EDOM 661 efficiency 8, 713 and coupling 768 and generality 431 of operation 464 egptr() 645 element access 445 Index access, list 472 access, map 482 address of 454 constructor for array 250 first 445 from sequence, delete 529, 534 last 445 object, array 244 requirements for 466 to sequence, add 529 eliminate_duplicates() example 534 eliminating programmers 730 elimination of copying 675 of temporary 675 ellipse, circle and 703 ellipsis ... 154 else 134 emphasis, examples and 5 Employee example 302 empty string 585 empty() 455, 489 string 598 encapsulation 754 complete 283 end, seekdir and end() 54, 481 basicstring 584 iterator 444 #endif 162 endl 634 ends 634 engineering, viewgraph 704 enum 76 and integer 77 bitset and 492 conversion, undefined 77 difference from C 817 member 249 sizeof 78 user-defined operator and 265 enumeration 76 switch on 77 enumerator 76 EOF 620, 653 eof() 616 char_traits 581 eofbit 617 epptr() 645 epsilon() 659 eq(), char_traits 581 eq_int_type(), char_traits 581 equal() 527 equality and comparison 457 hash_map 497 The C++ Programming Language, Third Edition by Bjarne Stroustrup.


Software Design for Flexibility by Chris Hanson, Gerald Sussman

Alan Turing: On Computable Numbers, with an Application to the Entscheidungsproblem, connected car, domain-specific language, Donald Knuth, en.wikipedia.org, functional programming, Guido van Rossum, interchangeable parts, loose coupling, Magellanic Cloud, phenotype, premature optimization, Richard Stallman, stem cell, the scientific method, Turing machine, type inference

Oxford: Oxford University Press, 2001. [132]Ramin Zabih, David McAllester, and David Chapman; “Non-deterministic Lisp with dependency-directed backtracking,” in AAAI-87. (1987): 59–64. Index Any inaccuracies in this index may be explained by the fact that it has been prepared with the help of a computer. Donald E. Knuth, Fundamental Algorithms (Volume 1 of The Art of Computer Programming) Page numbers for Scheme procedure definitions are in italics. Page numbers followed by n indicate footnotes. % naming convention, 152 ! naming convention, 393 n λ (lambda) calculus, 1 n λ expression. See lambda λ notation, 380 n π (pi), 381 +->interval, 333 ’ (quote in Scheme), 390 ‘ (backquote in Scheme), 391 , (comma) in backquote, 391 - (negation or subtraction), 390 pattern-directed, 168 . in formal parameters, 267 (ex. 5.12), 389 . in printed representation of pair, 387 / in rational constant, 47 ;.

, 72 Integrated Development Environment (IDE), 321 (ex. 6.4) Integrating differential equations, 68–70, 256 (ex. 5.8) Internal definitions in Scheme, 24, 383, 385 Interpreter, 233–254 Intervals in measurements, 332–336 merging, 352 invert-address, 219 iota, 112 n Iteration in Scheme, 385 Java, 1 n, 6, 22 n chaining, 146 combinators, 65 interfaces, 6 n Jonge, Joost Kiewiet de, 334 n Justification, annotation of, 322 Kahn, Louis Isadore, 5 Kanizsa, Gaetano, 328 Kanizsa's triangle illusion, 328, 328 (fig. 7.1) Kirschner, Marc W., 9 n, 14 n Knuth, Donald E., 409 Kowalski, Robert M., 271 Kutsia, Temur, 203 n lambda ’.’ or symbol for rest parameters, 248 n, 267 (ex. 5.12), 389 in evaluator, 239 in Scheme, 380 lambda (λ) calculus, 1 n lambda?, 239 lambda-body, 239 lambda-parameters, 239 layer-accessor, 305 layered-datum, 303 layered-extender, 310 Layered arithmetic, 309–310 Layered data, 302–305 Layered procedure, 301, 305–309, 352 Layering, 4, 299.


pages: 230

Purely Functional Data Structures by Chris Okasaki

Donald Knuth, functional programming, reversible computing, Turing machine, type inference

In Glasgow Workshop on Functional Programming, pages 141-150, September 1994. (pp. 29, 82) Chan Meng Khoong and Hon Wai Leong. Double-ended binomial queues. In International Symposium on Algorithms and Computation, volume 762 of LNCS, pages 128-137. SpringerVerlag, December 1993. (p. 169) Donald E. Knuth. Searching and Sorting, volume 3 of The Art of Computer Programming. Addison-Wesley, 1973. (pp. 18, 29) Donald E. Knuth. Seminumerical Algorithms, volume 2 of The Art of Computer Programming. Addison-Wesley, 1973. (p. 116) Haim Kaplan and Robert E. Tarjan. Persistent lists with catenation via recursive slow-down. In ACM Symposium on Theory of 212 Bibliography Computing, pages 93-102, May 1995.


The Art of Computer Programming: Fundamental Algorithms by Donald E. Knuth

discrete time, distributed generation, Donald Knuth, fear of failure, Fermat's Last Theorem, G4S, Gerard Salton, Isaac Newton, Jacquard loom, Johannes Kepler, John von Neumann, linear programming, linked data, Menlo Park, probability theory / Blaise Pascal / Pierre de Fermat, sorting algorithm, stochastic process, Turing machine

DONALD E. KNUTH Stanford University :']¦ ADDISON-WESLEY An Imprint of Addison Wesley Longman, Inc. Volume 1 / Fundamental Algorithms THE ART OF COMPUTER PROGRAMMING THIRD EDITION Reading, Massachusetts • Harlow, England • Menlo Park, California Berkeley, California • Don Mills, Ontario • Sydney Bonn • Amsterdam • Tokyo • Mexico City is a trademark of the American Mathematical Society METflFONT is a trademark of Addison-Wesley Library of Congress Cataloging-in-Publication Data Knuth, Donald Ervin, 1938- The art of computer programming : fundamental algorithms / Donald Ervin Knuth. — 3rd ed. xx,650 p. 24 cm.

Kirchhoff, Gustav Robert, 406, 583. law of conservation of flow, 97, 170-171, 268, 278, 364-370, 380. Kirkman, Thomas Penyngton, 408. Kirschenhofer, Peter, 506. Klarner, David Anthony, 86. Kleitman, Daniel J (Isaiah Solomon), 547, 596. Knopp, Konrad Hermann Theodor, 48, 498. Knotted lists, 459. Knowlton, Kenneth Charles, 462. Knuth, Donald Ervin (]^^^), ii, iv, xi, 11, 33, 66, 120, 193, 201, 202, 296, 297, 395, 457, 461, 471, 484, 499, 504, 523, 525, 565, 579, 580, 584, 592, 596, 631, 650. Knuth, Nancy Jill Carter (Tti^jf B Kolmogorov, Andrei Nikolaevich (KojiMoropoB, AHflpe 104, 105, 464. Konig, Denes, 382, 406, 588. Koster, Cornelis (= Kees) Hermanus Antonius, 461.


The Art of Computer Programming: Sorting and Searching by Donald Ervin Knuth

card file, Claude Shannon: information theory, complexity theory, correlation coefficient, Donald Knuth, double entry bookkeeping, Eratosthenes, Fermat's Last Theorem, G4S, information retrieval, iterative process, John von Neumann, linked data, locality of reference, Menlo Park, Norbert Wiener, NP-complete, p-value, Paul Erdős, RAND corporation, refrigerator car, sorting algorithm, Vilfredo Pareto, Yogi Berra, Zipf's Law

DONALD E. KNUTH Stanford University TT ADDISON-WESLEY An Imprint of Addison Wesley Longman, Inc. Volume 3 / Sorting and Searching THE ART OF COMPUTER PROGRAMMING SECOND EDITION Reading, Massachusetts • Harlow, England • Menlo Park, California Berkeley, California • Don Mills, Ontario • Sydney Bonn • Amsterdam • Tokyo • Mexico City is a trademark of the American Mathematical Society METRFONT is a trademark of Addison-Wesley Library of Congress Cataloging-in-Publication Data Knuth, Donald Ervin, 1938- The art of computer programming / Donald Ervin Knuth. — 2nd ed. xiv,780 p. 24 cm. Includes bibliographical references and index.

Wijngaarden, Adriaan van, 1916- Remarks Initials are like one-letter words Ignore initial article Ignore punctuation in titles Ignore initial "al-" in Arabic names Respell it "Labor" Cross-reference card Ignore apostrophe in English Me = Mac Treat hyphen as space Ignore designation of rank "Mrs." = "Mistress" Don't ignore British royalty "St." = "Saint", even in German Treat hyphen as space Sainte (a book by Donald Ervin Knuth) (a book by Harriet Beecher Stowe) "U. S." = "United States" Ignore space after prefix in surnames Ignore initial article Ignore apostrophe in English Surname begins with upper case letter (Most of these rules are subject to certain exceptions, and there are many other rules not illustrated here.)

Kislitsyn, Sergei Sergeevich (KncjiimbiH, Cepreii CepreeBHn), 197, 209, 210, 212, 217, 661. Klarner, David Anthony, 585. Klein, Christian Felix, 745. Klein, Rolf, 714. Kleitman, Daniel J (Isaiah Solomon), 452, 454, 669, 744. Klerer, Melvin, 297, 388. Knockout tournament, 141-142, 207, 210, 212. Knott, Gary Don, 21, 434, 519, 529, 709, 710. _^ Knuth, Donald Ervin (i§)@^), ii, iv, vii, 8, 58, 152, 226, 297, 385, 389, 395, 398, 420, 422, 454, 478, 536, 585, 594, 600, 604, 627, 634, 658, 670, 696, 702, 713, 722, 734, 736, 741, 742, 760, 780. Koch, Gary Grove, 578. Koester, Charles Edward, 390. Kohler, Peter, 669. Kollar, Lubor, 656, 660. Komlos, Janos, 228, 549, 673, 740.


pages: 666 words: 181,495

In the Plex: How Google Thinks, Works, and Shapes Our Lives by Steven Levy

23andMe, AltaVista, Anne Wojcicki, Apple's 1984 Super Bowl advert, autonomous vehicles, Bill Atkinson, book scanning, Brewster Kahle, Burning Man, business process, clean water, cloud computing, crowdsourcing, Dean Kamen, discounted cash flows, don't be evil, Donald Knuth, Douglas Engelbart, Douglas Engelbart, El Camino Real, fault tolerance, Firefox, Gerard Salton, Gerard Salton, Google bus, Google Chrome, Google Earth, Googley, HyperCard, hypertext link, IBM and the Holocaust, informal economy, information retrieval, Internet Archive, Jeff Bezos, John Markoff, Kevin Kelly, Kickstarter, Mark Zuckerberg, Menlo Park, one-China policy, optical character recognition, PageRank, Paul Buchheit, Potemkin village, prediction markets, recommendation engine, risk tolerance, Rubik’s Cube, Sand Hill Road, Saturday Night Live, search inside the book, second-price auction, selection bias, Silicon Valley, skunkworks, Skype, slashdot, social graph, social software, social web, spectrum auction, speech recognition, statistical model, Steve Ballmer, Steve Jobs, Steven Levy, Ted Nelson, telemarketer, The future is already here, trade route, traveling salesman, turn-by-turn navigation, undersea cable, Vannevar Bush, web application, WikiLeaks, Y Combinator

Soon after arriving at Stanford, he knocked off all the required tests for a doctorate and was free to sample the courses until he found a suitable entree for a thesis. He supplemented his academics with swimming, gymnastics, and sailing. (When his father asked him in frustration whether he planned to take advanced courses, he said that he might take advanced swimming.) Donald Knuth, a Stanford professor whose magisterial series of books on the art of computer programming made him the Proust of computer code, recalls driving down the Pacific coast to a conference with Sergey one afternoon and being impressed at his grasp of complicated issues. His adviser, Hector Garcia-Molina, had seen a lot of bright kids go through Stanford, but Brin stood out.

., 236, 331, 344–47, 364, 365–66 Kahle, Brewster, 362, 365 Kamangar, Salar, 71–72, 74, 233, 235 and advertising, 86, 89, 91–92, 109, 113 and business plan, 72, 75, 201 and Google motto, 143–44 and YouTube, 248, 260–65 Karen, Alana, 97–98 Karim, Jawed, 243, 247, 250 Kay, Erik, 207 Keyhole, 239–40, 340 Keyword Pricing Index, 118 Khosla, Vinod, 28, 29 Kim, Jini, 166 Klau, Rick, 312, 318 Kleinberg, Jon, 24–26, 34, 38, 292 Knol, 240 Knuth, Donald, 14 Kohl, Herb, 332 Koogle, Timothy, 44 Kordestani, Omid, 75–76, 78, 81, 96, 97, 130, 155, 242 Krane, David, 69–70, 143, 144–45, 150, 156 Kraus, Joe, 28, 136, 201, 374–75 Kundra, Vivek, 322, 326 Kurzweil, Raymond, 66 language, translations, 55, 62–65 Lantos, Tom, 285–87 Larson, Mark, 208 Leach, Jim, 286 Lee, Kai-Fu: and China office, 4, 281–83, 289–90, 291, 292, 293, 294, 296, 298, 302, 303, 305, 307–8, 313 departure of, 307–8, 312 Lee, Steve, 338–39 Lenat, Douglas, 47 Leonard, Herman, 117 Lessig, Lawrence, 359, 360, 363 Levick, Jeff, 96, 110–11, 112–13 Levinson, Arthur, 218, 237 Li, Mark, 293, 298–99 Li, Robin (Yanhong), 26–27, 278, 292, 293, 298 Library of Congress, 352, 361 Liebman, Jason, 103–5 LinkAds, 102–3 Linux, 78, 182, 210 Litvack, Sanford “Sandy,” 345, 347 Liu, John, 296 Liu, Jun, 294, 303–4 long-tail businesses, 85, 105, 107, 118, 243, 334 Lu, Qi, 380 Lucovsky, Mark, 283 Luk, Ben, 290, 302 Maarek, Yoelle, 272 MacDonald, Brian, 380 Macgillivray, Alex “AMac,” 353–55 machine learning, 64–66, 100–101, 385 Malone, Kim (Scott), 107–8, 135 Manber, Udi, 44, 45, 57–58, 68, 240, 355, 380 MapReduce, 199–200 Marconi International Fellowship Award, 278 Markoff, John, 193 Matias, Yossi, 272 Mayer, Marissa, 36, 41, 381 and advertising, 78–79 and APM program, 1, 4, 5, 161–62, 259 and books, 348–50, 358, 365 and Gmail, 170–71 and Google culture, 121, 122, 126–27, 141, 142, 163, 164, 365 and Google motto, 143–44 and Google’s look, 206–7 and management structure, 160, 235 and social networking, 371–73, 375 and stock price, 155, 156–57 McCaffrey, Cindy, 3, 76, 77, 145, 150, 153, 164 McCarthy, John, 127 McLaughlin, Andrew: and China, 276–79, 283–84, 303, 304 and Obama administration, 316, 321, 322–23, 325–26, 327 and privacy, 176–78, 379 memex, 15, 44 Merrill, Douglas, 183 Mi, James, 276 Microsoft: and antitrust issues, 331–32, 344–45 and aQuantive, 331 Bing search engine, 186, 380–81 and books, 361, 363 and browser wars, 206, 283 and China, 281, 282, 283, 284, 285, 304 and competition, 70, 191, 197, 200–212, 218, 220, 266, 282–83, 331, 344–47, 363, 380–81 and Danger, 214 data centers of, 190 and disclosure, 108 and email, 168, 169, 179–80 Excel, 200 and Facebook, 370 Hotmail, 30, 168, 172, 180, 209 IE 7, 209 Internet Explorer, 204–7 and mapping, 342 monopolies of, 200, 331–32, 364 Office, 200, 202, 203 Outlook, 169 PowerPoint, 200, 203 and user data, 335 and values, 144 WebTV, 217 Windows, 200, 210, 212, 219, 331 Windows Mobile, 220 Word, 200 and Yahoo, 343–44, 346, 380 of yesterday, 369 MIDAS (Mining Data at Stanford), 16 Milgrom, Paul, 90 Miner, Rich, 215, 216 Mobile Accord, 325 mobile phones, 214–17, 219–22, 251 Moderator, 323–24 Mohan, Neal, 332, 336 Monier, Louis, 19, 20, 37 Montessori, Maria, 121, 124, 166 Montessori schools, 121–25, 129, 138, 149 Moonves, Leslie, 246 Moore’s Law, 169, 180, 261 Morgan Stanley, 149, 157 Moritz, Mike, 32, 73–74, 80, 147, 247–48, 249 Morozov, Evgeny, 379 Morris, Doug, 261 Mossberg, Walt, 94 Mowani, Rajeev, 38 Mozilla Firefox, 204, 206, 207–8, 209 Murdoch, Rupert, 249, 370 MySpace, 243, 375 name detection system, 50–52 Napier’s constant, 149 National Federation of the Blind, 365–66 National Institute of Standards and Technology (NIST), 65 National Science Digital Library, 347 National Security Agency (NSA), 310 Native Client, 212 navigation, 229, 232, 338 Nelson, Ted, 15 net neutrality, 222, 326–27, 330, 383–84 Netscape, 30, 75, 78, 147, 204, 206 Nevill-Manning, Craig, 129 Newsweek, 2, 3, 20, 179 New York Public Library, 354, 357 Nexus One, 230, 231–32 95th Percentile Rule, 187 Nokia, 341, 374 Norman, Donald, 12, 106 Norvig, Peter, 47, 62, 63, 138, 142, 316 Novell, 70 Obama, Barack, 315–21, 322, 323–24, 329, 346 Obama administration, 320–28 Ocean, 350–55 Och, Franz, 63–65 Oh, Sunny, 283, 297, 298 OKR (Objectives and Key Results), 163–64, 165, 186, 209, 325 Open Book Alliance, 362 Open Handset Alliance, 221–22 OpenSocial, 375–76 operating systems, 210–12 optical character recognition (OCR), 53, 349–50 Oracle, 220 Orkut, 371–73, 375 Otellini, Paul, 218 Overture, 89, 90, 91, 95, 96, 98–99, 103, 150 Oxford University Press, 354, 357 Page, Larry, 3, 5 achievements of, 53, 383 and advertising, 84, 86–87, 90, 92, 94, 95–97, 114, 334, 336–37 ambition of, 12, 39, 73, 127–28, 139, 198, 215, 238, 362, 386–87 and applications, 205, 206, 207, 208, 210, 240–42, 340 and artificial intelligence, 62, 100, 246, 385–86 and BackRub/PageRank, 17, 18, 21–24, 26 and birth of Google, 31–34 and Book Search, 11, 347–52, 355, 357, 359, 361, 362, 364 on capturing all the web, 22–24, 52, 58, 63 on changing the world, 6, 13, 33, 39, 97, 120, 125, 146, 173, 232, 279, 316, 327, 361, 384–85 childhood and early years of, 11–13 and China, 267, 276, 277–78, 279–80, 283, 284, 305, 311 and data centers, 182–83 and eco-activism, 241 and email, 169–72, 174, 179 and Excite, 28–29 and funding, 32, 33–34, 73–75 and hiring practices, 139–40, 142, 182, 271, 386 imagination of, 14, 271 and IPO, 146–47, 149–54, 157 and machine learning, 66, 67 and management, 74, 75–77, 79–82, 110, 143, 158–60, 162–66, 228, 231, 235, 252–53, 254, 255, 260, 272, 273, 386–87 marriage of, 254 as Montessori kid, 121–25, 127–28, 149, 331, 387 and Obama, 315–16 and philanthropy, 257–58 and privacy, 174, 176–77, 337 and robots, 246, 385 and secrecy, 31–32, 70, 72–73, 106, 218 and smart phones, 214–16, 224, 225, 226–30, 234 and social networking, 372 and speed, 184–85, 207 and Stanford, 12–13, 14, 16–17, 28, 29, 34 and trust, 221, 237 values of, 127–28, 130, 132, 135, 139–40, 146, 196, 361, 364 and wealth, 157 and web links, 51 and YouTube, 248 PageRank, 3, 17, 18, 21–24, 27, 34, 38, 48–49, 53, 55, 56, 294 Palm, 216, 221 Park, Lori, 235, 258 Pashupathy, Kannan, 270–72, 277, 282 Passion Device, 230 Patel, Amit, 45–46, 82 and Google motto, 143–44, 146 patents, 27, 39, 89, 102, 221, 235, 237, 350 PayPal, 242, 243 peer-to-peer protocols, 234–35 Peters, Marybeth, 352 Phil, 99–103 Philip, Prince, 122 Picasa, 185–86, 187, 239 Pichai, Sundar, 205–6, 207–8, 209–12 Pichette, Patrick, 120, 150, 254–56 Pike, Rob, 241 Pittman, R.


pages: 728 words: 182,850

Cooking for Geeks by Jeff Potter

3D printing, A Pattern Language, carbon footprint, centre right, Community Supported Agriculture, Computer Numeric Control, crowdsourcing, Donald Knuth, double helix, en.wikipedia.org, European colonialism, fear of failure, food miles, functional fixedness, hacker house, haute cuisine, helicopter parent, Internet Archive, iterative process, Kickstarter, Parkinson's law, placebo effect, random walk, Rubik’s Cube, slashdot, stochastic process, the scientific method

Have fun! I was talking with a friend of mine, a fellow geek who was just starting to learn to cook, when he said: I was never that curious about cooking, so I thought that buying The Joy of Cooking and going through it would be the right approach. That’s probably like sitting down with Donald Knuth’s The Art of Computer Programming in order to learn to program, when really all you should be doing at first is trying to make something you like. He’s right: make something you like, give yourself enough time to enjoy the process, and have fun doing it. Slaving through the Joy or Knuth will work, but it’s not the way most people learn to cook or write code.

kneading (mechanical agitation), Gluten, Mozzarella spheres knives, Kitchen Equipment "failure mode", Knives alloyed steels, Knives bacteria and, Knives basic skills, Knives forged blades, Kitchen Equipment heat treatment, Knives holding, Knives Raper on, Knives repurposing, Knives sharpening, Knives stamped blades, Kitchen Equipment types of, Kitchen Equipment Knuth, Donald, Tips for Newbies Kurti, Nicholas, Sugar L lactic acid, Salty, Yeast in breads lactisole, Combinations of Tastes and Smells, Anti-Sugar: Lactisole Lahey, Jim, Yeast in breads Laiskonis, Michael, 356°F / 180°C: Sugar Begins to Caramelize Visibly Latin American cuisine, Regional/Traditional Method Le Creuset, Pots and pans leaveners, Biological Leaveners biological, Biological Leaveners chemical, Kitchen Pruning, Chemical Leaveners mechanical, Mechanical Leaveners multiple, Egg Yolks Lebovitz, David, Whipped Cream lecithin, Playing with Chemicals, Making Foams: Lecithin Lego ice cream maker, Smell (Olfactory Sense) Lemon Lentil Soup, Reading Between the Lines Lemon Meringue Pie, Making gels: Starches Lemony Quinoa and Asparagus with Shrimp Scampi, Kitchen Pruning Lersch, Martin, Gluten, Yeast in breads Leucippus, Smell + Taste = Flavor Lime Marmalade, Sugar limonin, Sugar lipase (enzyme), Acids and Bases liquid nitrogen "cooking" with, Fun with Hardware, "Cooking" with Cold: Liquid Nitrogen and Dry Ice experimenting with, 158°F / 70°C: Vegetable Starches Break Down parasites and, How to Prevent Foodborne Illness Caused by Parasites liquid smoke, Liquid Smoke: Distilled Smoke Vapor listeria, How to Prevent Foodborne Illness Caused by Parasites, Foodborne Illness and Sous Vide Cooking Listeria monocytogenes, How to Prevent Foodborne Illness Caused by Bacteria listeriosis, How to Prevent Foodborne Illness Caused by Bacteria locus coeruleus, Taste == Feedback lye (sodium hydroxide), Acids and Bases lysine, Meat Glue: Transglutaminase M Mac ‘n Cheese, Adapt and Experiment Method macronutrients, A Few Words on Nutrition Maillard reaction defined, Time and Temperature: Cooking’s Primary Variables grilled meat and, Heat Transfer and Doneness temperature for, Reading Between the Lines, Pots and pans, Cooked = Time * Temperature, 310°F / 154°C: Maillard Reactions Become Noticeable Maillard, Louis Camille, 310°F / 154°C: Maillard Reactions Become Noticeable main dishes Bacon-Wrapped Scallops, Meat Glue: Transglutaminase Beef Steak Tips, Beef and other red meats Beef Stew, Unitaskers Brisket, 48-Hour, Beef and other red meats Cheeseburger, How to Prevent Foodborne Illness Caused by Bacteria Chicken, Broiled and Roasted, 310°F / 154°C: Maillard Reactions Become Noticeable Crepes, Unitaskers Duck Confit, 154°F / 68°C: Collagen (Type I) Denatures Duck Confit Sugo, Reading Between the Lines Grilled Fish with Bayou Sauce or Mustard Sauce, Adapt and Experiment Method Hot Dog, Electrocuted, Making ice cream Lemony Quinoa and Asparagus with Shrimp Scampi, Kitchen Pruning Mac ‘n Cheese, Adapt and Experiment Method Oven-Cooked Barbeque Ribs, Liquid Smoke: Distilled Smoke Vapor Pork Chops Stuffed with Cheddar Cheese and Poblano Peppers, Wet brining Salmon Poached in Olive Oil, 104°F / 40°C and 122°F / 50°C: Proteins in Fish and Meat Begin to Denature Salt-Roasted Fish, Wet brining Scallop Ceviche, Acids and Bases Seared Scallops, 310°F / 154°C: Maillard Reactions Become Noticeable Seared Steak, Temperature gradients Seared Tuna with Cumin and Salt, 104°F / 40°C and 122°F / 50°C: Proteins in Fish and Meat Begin to Denature Seitan, Gluten Shrimp Roll-up, Liquid Smoke: Distilled Smoke Vapor Slow-Cooked Short Ribs, 154°F / 68°C: Collagen (Type I) Denatures Squid Bruschetta, 154°F / 68°C: Collagen (Type I) Denatures maltodextrin, "Melts" in your mouth: Maltodextrin mandolins, Mixers & co.


pages: 203 words: 14,242

Ship It!: A Practical Guide to Successful Software Projects by Jared R. Richardson, William A. Gwaltney

continuous integration, David Heinemeier Hansson, Donald Knuth, index card, MVC pattern, place-making, Ruby on Rails, web application

Regular expressions are the most powerful way to process text we’ve ever come across, but the “Here Be Dragons” factor is extremely high. This book handily slays the little beasties. The Mythical Man-Month by Frederick Brooks. Will realized after reading this book (the first edition, in college no less!) how much more there is to software development than simply coding up a program. The Art of Computer Programming by Donald Knuth. There are multiple volumes in this set. They are a comprehensive introduction to classical computer science. Death March: The Complete Software Developer’s Guide to Surviving “Mission Impossible” Projects by Edward Youdon. Death March projects are famous in the software industry. Understand them so you don’t get swept along by them.


pages: 303 words: 57,177

Hands-On Functional Programming in RUST by Andrew Johnson

anti-pattern, Debian, domain-specific language, don't repeat yourself, Donald Knuth, functional programming, premature optimization

In this chapter, we will learn the following: Recognizing and applying good performant code practices Diagnosing and improving performance bottlenecks Recognizing and applying good defensive coding practices Diagnosing and resolving software bugs Recognizing and applying metaprogramming techniques Technical requirements A recent version of Rust is necessary to run the examples provided: https://www.rust-lang.org/en-US/install.html This chapter's code is available on GitHub: https://github.com/PacktPublishing/Hands-On-Functional-Programming-in-RUST Specific installation and build instructions are also included in each chapter's README.md file. Writing faster code Premature optimization is the root of all evil – Donald Knuth A good software design tends to create faster programs, while a bad software design tends to create slower programs. If you find yourself asking, "Why is my program slow?, then first ask yourself, Is my program disorderly?" In this section, we describe some performance tips. These are generally good habits when programming in Rust that will coincidentally lead to improved performance.


pages: 292 words: 62,575

97 Things Every Programmer Should Know by Kevlin Henney

A Pattern Language, active measures, business intelligence, commoditize, continuous integration, crowdsourcing, database schema, deliberate practice, domain-specific language, don't repeat yourself, Donald Knuth, fixed income, functional programming, general-purpose programming language, Grace Hopper, index card, inventory management, job satisfaction, loose coupling, Silicon Valley, sorting algorithm, The Wisdom of Crowds

For example, if the problem domain dictates that there can never be more than five items (like the number of dice in a Yahtzee game), you know that you always have to sort at most five items. In that case, bubble sort might actually be the most efficient way to sort the items. Every dog has its day. So, read some good books—and make sure you understand them. And if you really read Donald Knuth's The Art of Computer Programming (Addison-Wesley Professional), well, you might even be lucky: find a mistake by the author, and you'll earn one of Don Knuth's hexadecimal dollar ($2.56) checks. Chapter 90. Verbose Logging Will Disturb Your Sleep Johannes Brodwall WHEN I ENCOUNTER A SYSTEM that has already been in development or production for a while, the first sign of real trouble is always a dirty log.


pages: 262 words: 65,959

The Simpsons and Their Mathematical Secrets by Simon Singh

Albert Einstein, Andrew Wiles, Benoit Mandelbrot, cognitive dissonance, Donald Knuth, Erdős number, Georg Cantor, Grace Hopper, Isaac Newton, John Nash: game theory, Kickstarter, mandelbrot fractal, Menlo Park, Norbert Wiener, Norman Mailer, P = NP, Paul Erdős, probability theory / Blaise Pascal / Pierre de Fermat, Richard Feynman, Rubik’s Cube, Schrödinger's Cat, Simon Singh, Stephen Hawking, Wolfskehl Prize, women in the workforce

However, on average, the number of random numbers required to exceed 1 is 2.71828..., which, of course, is e. There are numerous other examples demonstrating that e plays a diverse and fundamental role in several areas of mathematics. This explains why so many number lovers have a particularly emotional attachment to it. For example, Donald Knuth, professor emeritus at Stanford University and a godlike figure in the world of computing, is an e enthusiast. After authoring Metafont, his font-creation software, he decided to release updates with version numbers that relate to e. This means that the first version was Metafont 2, then Metafont 2.7, then Metafont 2.71, and so on up to the current Metafont 2.718281.


pages: 525 words: 149,886

Higher-Order Perl: A Guide to Program Transformation by Mark Jason Dominus

always be closing, Defenestration of Prague, Donald Knuth, functional programming, Isaac Newton, Larry Wall, P = NP, Paul Graham, Perl 6, slashdot, SpamAssassin

One string commonly used when a zero-but-true value is desired is "0 but true". Perl’s warning system has a special case in it that suppresses the usual “isn’t numeric” warning for this string. (back) Chapter 4 1 The Perl Journal, Vol 1, #2 (Summer 1996) pp. 5–9. (back) 2 The Art of Computer Programming, Volume II: Seminumerical Algorithms, Donald E. Knuth, Addison–Wesley. (back) 3 There are, unfortunately, very few good robots. (back) Chapter 5 1 Stay away from the windows if you’re ever in Prague; the city is famous for its defenestrations. Probably the most important was on 23 March, 1618, when Bohemian nobles flung two imperial governors out the window into a ditch, touching off the Thirty Years’ War.

Joseph Raphson discovered the technique independently and published it in 1671. (back) 6 Actually they’re alternating between 1.414213562373094923430016933708 and 1.414213562373095145474621858739, but who’s counting? (back) 7 It may not be obvious that the hare will necessarily catch the tortoise, but it is true. For details, see Donald Knuth, The Art of Computer Programming: Volume 2, Seminumerical Algorithms, exercise 3.1.6. (back) 8 It also requires a bit of a trick. Say S = 1 + k + k2 + ··· + kn − 1. Multiplying both sides by k gives Sk = k + k2 + ··· + kn − 1 + kn. These two equations are almost the same, and if we subtract one from the other almost everything cancels out, leaving only Sk − S = kn − 1 and so S = (kn − 1) / (k − 1).


pages: 598 words: 183,531

Hackers: Heroes of the Computer Revolution - 25th Anniversary Edition by Steven Levy

air freight, Apple II, Bill Gates: Altair 8800, Buckminster Fuller, Byte Shop, computer age, computer vision, corporate governance, Donald Knuth, El Camino Real, game design, Hacker Ethic, hacker house, Haight Ashbury, John Conway, John Markoff, Mark Zuckerberg, Menlo Park, Mondo 2000, non-fiction novel, Norman Mailer, Paul Graham, popular electronics, RAND corporation, reversible computing, Richard Stallman, Silicon Valley, software patent, speech recognition, Steve Jobs, Steve Wozniak, Steven Levy, Stewart Brand, Ted Nelson, The Hackers Conference, Whole Earth Catalog, Y Combinator

They didn’t make it in time, and Woods remembered what that misty dawn looked like and wrote it into the description of that scene in the game, which he conceived of over breakfast that morning. It was at Stanford that gurus were as likely to be faculty people as systems hackers (among Stanford professors was the noted computer scientist Donald Knuth, author of the multivolume classic The Art of Computer Programming). It was at Stanford that, before the Adventure craze, the casual pleasures of Spacewar were honed to a high art (Slug Russell had come out with McCarthy, but it was younger hackers who developed five-player versions and options for reincarnation, and ran extensive all-night tournaments).

Greenblatt was still hacking away, as was Knight, and a few newer hackers were proving themselves masters at systems work . . . but others were leaving, or gone. Now, Bill Gosper headed West. He arranged to stay on the AI lab payroll, hacking on the ninth-floor PDP-6 via the ARPAnet, but he moved to California to study the art of computer programming with Professor Donald Knuth at Stanford. He became a fixture at Louie’s, the best Chinese restaurant in Palo Alto, but was missing in action at Tech Square. He was a mercurial presence on computer terminals there but no longer a physical center of attention, draped over a chair, whispering, “Look at that,” while the 340 terminal pulsed insanely with new forms of LIFE.


pages: 931 words: 79,142

Concepts, Techniques, and Models of Computer Programming by Peter Van-Roy, Seif Haridi

computer age, Debian, discrete time, Donald Knuth, Eratosthenes, fault tolerance, functional programming, G4S, general-purpose programming language, George Santayana, John von Neumann, Lao Tzu, Menlo Park, natural language processing, NP-complete, Paul Graham, premature optimization, sorting algorithm, Therac-25, Turing complete, Turing machine, type inference

Prentice Hall, Englewood Cliffs, NJ, 1988. [113] Gregor Kiczales, Jim des Rivières, and Daniel G. Bobrow. The Art of the Metaobject Protocol. MIT Press, Cambridge, MA, 1991. Donald E. Knuth. The Art of Computer Programming: Seminumerical Algorithms, volume 2. Addison-Wesley, Reading, MA. [114] [115] Donald E. Knuth. The Art of Computer Programming: Fundamental Algorithms, volume 1. Addison-Wesley, Reading, MA, 1973. [116] Donald E. Knuth. Structured programming with go to statements. Computing Surveys, 6(4):261–301, December 1974. Leif Kornstaedt. Gump–a front-end generator for Oz. Technical report, Mozart Consortium, 2003.

., 441, 621 fold operation, 185 FoldL, 187, 465, 829 FoldR, 187 stream objects, 258 for statement, 188 for loop, 447 ForAll operation, 829 formal language, 33 forward chaining, 674 forwarding, 512 foundational calculus, xvii framework computation model, 844 software reuse, 492 France, 411 free identifier occurrence, 58, 64, 633 free memory, 75 freeze/2 operation (in Prolog), 662 French, Michael, 569 fresh name, 203 variable, 787 full adder, 268 fun statement, 84 function, 84 generating, 170 incremental, 296 introduction, 2 lazy, 797 monolithic, 296 monotonic, 849 partially applied, 194 876 Index state transition, 351 functional decomposition, 135, 542 functional look, 196 functor, 221, 454 distributed resource, 709, 730 interactive use, 816 main, 222 Oz 3, 809 functor statement, 223 future, 336 future operation (in Multilisp), 336 Gamma, Erich, 534 garbage collection, 74, 75 copying dual-space, 78 distributed, 734 external references, 480 finalization, 481 generational, 78 lease-based, 734, 738 program pause, 76, 308 real-time, 76 root set, 76 weighted reference counting, 734 Gardner, Martin, 774 gate statement, 272 gate (digital logic), 267 Gaussian distribution, 476, 477 Gelernter, David, 586 generalization, 568 generate-and-test, 629, 758 generating function, 170 genericity, 180–182 object-oriented programming, 524 static and dynamic, 526 global condition ordered binary tree, 154 producer/consumer throughput, 261 reachability, 75 GlobalStore, 743 glue (in GUI), 687 Glynn, Kevin, 308 Gödel’s completeness theorem, 634 Gödel’s incompleteness theorem, 634 Gödel, Kurt, 634 Goodman, Nathan, 600 Gosling, James, 537 grammar, 31–36 ambiguous, 34, 166 context-free, 33 context-sensitive, 33 definite clause (DCG), 140, 650 disambiguation, 34 EBNF (Extended Backus-Naur Form), 32, 671 left-recursive, 644 natural language, 643 nonterminal symbol, 32, 163 terminal symbol, 32, 163 unification, 649–650 graph bushy, 461 component, 461 distribution model, 735 Haskell expression, 310 hierarchical, 461 implementation, 464 inheritance, 502 nonlocal, 461 path, 463, 658 small world, 461 Gray, Jim, 582, 600 green cut (in Prolog), 669 Gregorian calendar, 693 Grolaux, Donatien, 689, 691 grue cut (in Prolog), 669 guard ask operation, 782 concurrent logic programming, 397 CSP, 619 Erlang, 388 Haskell, 309 list comprehension, 302 monitor, 595 Prolog, 669 quiet (in Prolog), 669 Index 877 receive expression (in Erlang), 391, 402 guarded method, 595 guardian, 481 GUI (Graphical User Interface) AWT (Abstract Window Toolkit) package, 679 component-based programming, 461 design, 679 Haskell fudgets, 679 model-based, 695 Prototyper tool, 689 QTk, 213, 680, 729 interactive use, 214, 684 use in application, 225 read-only view, 695 Swing components, xxi, 679 text input/output, 213 Visual Studio, 679 Hadzilacos, Vassos, 600 halting problem, 209, 681 Hamming problem, 293, 342 Hamming, Richard, 293 handler event, 563 exception, 90, 91 finalization, 481 GUI design, 213, 683, 682–688 HasFeature operation, 826 hash table, 438, 439 Haskell, 308–313 Helm, Richard, 534 Herbert, Frank, 749 heuristic best first, 672 distribution strategy, 755, 766 Hewitt, Carl, 345 hexadecimal integer, 820 higher-order programming, 113, 177– 194 introduction, 13 iteration abstraction, 123 library operations, 830 relation to OOP, 538 history ADT language, 420 computer technology, 176 concurrent constraint programming, 663, 808 dangers of concurrency, 21 declarative concurrency, 337 functional programming, 96 incremental development, 451 object-oriented programming, 489 Oz, xxiv, 809 programming languages, 406 Prolog, 661 remote invocation, 709 Hoare, Charles Antony Richard, 232, 441, 592 Horn clause, xxi, 635, 640, 650, 663 hot spot, 177 HTML (Hypertext Markup Language), 115, 679 Hudak, Paul, 96, 314 IBM Corporation, 41 IDE (Interactive Development Environment), xxix IDE (interactive development environment), 815 identifier, 2, 44 bound occurrence, 64 escaped, 509 free occurrence, 58, 64, 633 IEEE floating point standard, 544, 820 if statement, 66, 790 IID (Iterative and Incremental) software development, 451 ILOG Solver, 663 impedance matching, 324 concurrency, 576 event manager example, 567 imperative, 406 implementation, 410 878 Index import clause (in functor), 221 inactive memory, 75 incompleteness, 634 inconsistency, 787 incremental function, 295 incremental software development, 451 independence components, 363, 455 compositional design, 461 concepts, xvii concurrency, 14, 20, 89, 233 declarative loop, 189 declarative programming, 111 Erlang processes, 386 garbage collection, 76 message passing, 387 modularity, 319 multiple inheritance, 533 open programming, 105, 326, 714 polymorphism, 429 principle, 457 put and get (in queue), 381 reasoning with invariant assertions, 441 search and distribution strategies, 761 software deployment, 221 India, xiii infinite precision arithmetic, 3 infinity (floating point), 822 informatics, xxi curriculum, xxii success of object-oriented programming, 489 usefulness of computation models, xiv Information Cities project, 412 information systems, xxi inheritance, 19, 413, 420, 491 avoiding method conflicts, 511 cautionary tale, 521 design patterns, 534 directed and acyclic, 503 event manager, 564 factoring, 492 generalization, 568 graph, 502 implementation, 550 implementation-sharing problem, 533 Java, 551 multiple, 503, 527 rules of thumb, 533 simple, 503 single, 503, 531 software reuse, 492 static and dynamic binding, 504 structure view, 519 thread priority, 253 type view, 518 upward, 568 inherited argument, 161 Inject operation, 772 instantiation, 182–183, 411 integer arbitrary precision, 3, 821 arithmetic, 821 number, 819 tilde ˜ as minus sign, 820 interactive interface, 87 interactive system GUI design, 213 Mozart IDE, 815 pedagogical use, xix reaction time guarantees, 174 interface, 419 general concept, 221 inheritance, 492 Java, 551 Runnable (in Java), 616 interface builder, 679 interleaving semantics, 237, 780 Internet, 207, 345, 353, 707, 711, 717 simulation of Web use, 476 interoperability, 106 interpreter, 42 approach to define semantics, 41 Index 879 generic parser, 650 GUI description, 703 meta, 654, 676 metacircular, 42 original Erlang, 388 Prolog arithmetic, 664 QTk module, 703 intractable problems, 176 IntToFloat operation, 822 invariant, 134, 382, 412, 441 IP (Internet Protocol), 206 IsAtom operation, 824 IsChar operation, 823 IsDet operation, 319, 321, 333, 394, 660, 803, 849 IsFailed operation, 803 IsLock operation, 583 ISO 8859-1 character code, 820, 824 isolation, 600 IsProcedure function, 55 IsRecord operation, 826 I-structure, 336, 469, 811 IsTuple operation, 827 iterative software development, 451 Janson, Sverker, xxvi, 663 Japan, 397 Java, 551–556, 615–617 monitor semantics, 592 JavaBeans, 462 Jefferson, Thomas, 9 Johnson, Ralph, 534 journaling, 532 Kahn, Gilles, 337 kernel language, see computation model kernel language approach, xvi, 36–42 choice of formalism, xix keywords (table of), 839 Knuth, Donald Ervin, 170, 472 Kowalski, Robert A., 406 Kurzweil, Raymond, 176 KWIC (keyword in context) index, 666 Label operation, 54, 826 label (record identification), 19, 52 λ calculus, xvii, 41, 97, 331, 344, 792, 805, 811, 846 LAN (local area network), 353, 717, 739 language AKL, xxvi, 661, 809 Absys, 406, 621 Ada, 432, 619 Algol, 406, 432, 489 declarative concurrent, 337 nondeterministic, 622 Alice, 106 C++, 43, 48, 75, 180, 334, 445, 486, 489, 504, 508–510, 535, 540, 545, 551, 663, 761 C-Linda, 586 CLOS (Common Lisp Object System), 516 CLU, 420 CSP (Communicating Sequential Processes), 619 Clean, 313 Cobol, 544 Common Lisp, 59, 190 Concurrent Haskell, xx Concurrent ML, xx, 851 Concurrent Prolog, 397 C, 75, 179, 661 Eiffel, 519, 521, 850 Erlang, 75, 98, 326, 345, 386–394, 429, 456, 545, 563, 582, 807, 851 E, 208 FCP (Flat Concurrent Prolog), 397, 807 FP, 329 Flat GHC, 397 Fortran, 406, 642 parsing problem, 642 GHC (Guarded Horn Clauses), 397 Haskell, xiv, xvi, 43, 75, 98, 116, 880 Index 137, 194, 272, 279, 286, 308– 313, 329, 331, 334, 337, 342, 457, 545, 679, 807 IC-Prolog, 397 Id, 337, 811 Java, xiv, xvi, 41, 43, 48, 75, 180, 334, 356, 428, 430, 445, 462, 486, 489, 504, 508–510, 535, 540, 543–545, 551–556, 567, 581, 592, 615–617, 679, 807, 850 monitor, 592 Leda, xvii Linda extension, 586, 619, 808 Lisp, xiv, 5, 39, 59, 75, 76, 129, 406, 544, 650, 664, 828 ML, see Standard ML, Concurrent ML, Objective Caml Mercury, xiv, 116, 313, 663, 807 Miranda, 279, 342 Multilisp, 336, 811 Objective Caml, 543 Obliq, 722 Oz 1, Oz 2, Oz 3, 809 Oz, xix, xxvi, 313, 507, 545, 663, 807, 844, 851 PL/I, 642 parsing problem, 642 Parlog, 397 Pascal, 161, 179, 430, 807 Prolog, xiv, xvi, xxi, 5, 29, 48, 75, 116, 140, 142, 272, 287, 329, 334, 388, 397, 406, 545, 621– 623, 635, 640, 642, 649, 654, 656–660, 660–671, 807, 851 pure, 640 SICStus, 190, 663 Scheme, xiv, xvi, xvii, xx, 29, 43, 59, 97, 98, 286, 545, 807 Simula, 406, 489 Smalltalk, xiv, 43, 75, 334, 489, 507, 509, 510, 516, 540, 543, 544, 850 Standard ML, xiv, xx, 29, 43, 97, 98, 116, 137, 194, 286, 313, 330, 807 Visual Basic, 461 pH (parallel Haskell), 337, 811 tcl/tk, 679, 680, 703 assembly, 209, 313, 406, 551, 622 coordination, 586 first-order, 177 formal, 33 higher-order, 177 multiparadigm, xvii natural, xiii, 31, 38, 641 nonstrict, 331 popular computation models, 807 practical, 31 secure, 208 specification, 116 symbolic, 53, 545 language design abstraction life cycle, 40 declarative, 329 golden age, 406 layered, 850 lazy execution, 329 object properties, 543 trade-offs, 811 Lao-tzu, 278 last call optimization, 72 latch (digital logic), 270 late error detection (at run time), 503 latency, 263 tolerance, 335 LATEX 2ε typesetting system, 459 Latin-1, 458 law Clarke’s second, 104 Clarke’s third, 314 contrapositive, 632 De Morgan’s, 632 Moore’s, 176, 622 stack ADT, 195 layered language design, 850 lazy evaluation, 98 coroutining, 574 Index 881 explicit, 183 Haskell, 310 relation to call by need, 433, 485 relation to nonstrict evaluation, 331 schedule, 343 strictness analysis, 289, 310, 342 lazy execution, 278 bounded buffer, 263 flow control, 261 Hamming problem, 293 higher-order programming, 193 incremental, 295 introduction, 11 monolithic, 296, 342 needs finalization, 481 relation to synchronization, 334 lazy failure detection, 739 Lea, Doug, 581 legal program, 31 Length operation, 829 lex/yacc parsing, 642 lexical analyzer, 32 lexical scope, see scope, lexical lexical syntax (of Oz), 839 lexically scoped closure, see procedure value lexicographic order (of atoms), 55, 824 Ley, Willy, 621 library, 229 MOGUL (Mozart Global User Library), 222 Mozart Base and System modules, 229 Mozart Standard Library, 214, 225, 685, 690 universal, 621 life cycle abstraction, 40 memory block, 75 LIFO (last-in, first-out), 491 lift control system, 365 lifting booleans to streams, 271 serializability, 600 synchronization, 358 lightweight transaction, 601 Linda (tuple space), 586 linguistic abstraction, 38–39, 124 case (pattern matching), 790 class, 548 conc (concurrent composition), 278 delegation, 514 for loop, 188, 447 fun (function), 84 functor (software component), 223 gate (logic gate), 271 local vs. global translation, 844 macro (in Lisp), 39 monitor, 593 parameter passing, 434 protected scope (Java), 567 while loop, 447 linking, 211, 222, 224, 229, 455, 817 component, 223, 459 dynamic, 284 failure detection in Erlang, 387 Linux operating system, xxvi, 201, 471, 499 Liskov, Barbara, 420 list, 52, 128, 828 circular, 829 complete, 53, 829 difference, 141 advantage, 145 flattening, 143 incomplete, 440 introduction, 4 nested, 135 partial, 440, 829 usage trade-offs, 439 list comprehension, 301 list pair, 52, 828 literal, 824 liveness, 602 882 Index local statement, 56, 63, 786 lock, 579, 582–583 distributed, 721 get-release, 598 implementation, 590 introduction, 21 Java, 616 read, 620 simple, 591 thread-reentrant, 591 transaction, 602 write, 620 lock statement, 22, 583 locus of control, 274 logic combinational, 267 gate, 267 predicate calculus, 633 propositional, 632 sequential, 269 temporal, 603 logic program, 634 logic programming, 44, 406, 632 difference list, 142 process model, 395, 807 unification, 101 logical equivalence, 243, 785 configuration, 805 logical formula, 633 logical semantics, 38, 631–641 logical sentence, 633 assertion, 441 invariant, 441 Louis XIV, 405, 410 Loyd, Sam, 774 Lully, Raymond (Llull, Ramón), 621 Lynch, Nancy, 353 Mac OS X operating system, xxiv, xxvi, 254 Macintosh computer, xxvi MacQueen, David, 337 macro alias (in QTk), 680 Lisp, 39, 544 loop (in Common Lisp), 190 Maher, Michael, 662, 808 mailbox, 456 Erlang, 386 implementation, 391 maintainability, 458 inheritance, 492 polymorphism, 425 MakeRecord operation, 165, 549, 695, 826 MakeTuple operation, 373, 827 Manchester Mark I, 36 Manna, Zohar, 441 many-to-one communication, 351 Map operation, 190, 466, 829 Mariner I (software error), 643 marshaling, 709 master-slave, 732 mathematical induction, 9 matrix graph representation, 464 list of lists implementation, 232 Max operation, 194 McCloud, Scott, 482 Member operation, 829 memoization, 417, 457 calendar example, 694 call by need, 434 declarative programming, 315 explicit state, 25, 694 unification, 102 memory address in abstract machine, 56 consumption, 172 content-addressable, 587 leak, 75 choice point, 668 Prolog, 668 life cycle, 75 memory management, 72–78, 480– 482 C, 180 garbage collection, 75 Index 883 Pascal, 180 Merge operation, 771 message, 499 message-passing concurrency, see object, active, see object, port meta-interpreter, 654, 676 meta-object protocol, see protocol, meta-object method object, 19, 497 wrapping, 516 methodology, see software development Meyer, Bertrand, 450, 491, 521, 527 Microsoft Corporation, 462, 679 middle-out software development, 451 mind of programmer capabilities (atoms vs. names), 510 difference list, 145 enforcing encapsulation, 420 language design trade-offs, 811 order-determining concurrency, 273 state (implicit vs. explicit), 408 use of constraints, 274 minus sign (use of tilde ˜), 820 Mnesia (Erlang database), 387 mod (integer modulo) operation, 54, 821 model computation, 29, see computation model dialog (in GUI), 695 domain (in GUI), 695 GUI formalism, 695 logical semantics, 633 presentation (in GUI), 695 programming, 29 model-based GUI design, 695 modularity, xxi, 315, 409, 458 encapsulated search, 625 inadequacy of declarative model, 315 reengineering, 522 relation to concurrency, 239, 252, 319 relation to explicit state, 315 relational model, 660 system decomposition, 457 module, 183, 220, 454 Array, 436 Atom, 824 Browser, 224 Char, 821, 823 Compiler, 690, 815 Connection, 715, 732 Dictionary, 437 Distribution (supplement), 718 FD, 775 Fault, 739, 743 File (supplement), 211, 292, 564 Finalize, 481 Float, 821 Int, 821 List, 258, 385, 829 Module, 224, 413, 455, 730, 817 MyList (example), 222 Number, 14, 54, 182, 821 OS, 371, 609, 692, 699, 730 ObjectSupport, 517 Open, 564, 729 Pickle, 216, 223, 717 Port, 673 Property, 93, 253, 255 QTk, 213, 680, 729 interactive use, 214, 684 use in application, 225 Record, 826 Remote, 255, 732 Search, 776 Space, 654, 763 String, 824 Thread, 255, 276 Time, 304 Tk, 703 Tuple, 827 Value, 328, 830 884 Index Base, 222, 229, 729 compilation unit, 454 dynamic linking, 285 failure, 329 dynamic typing, 105 Erlang, 389 importing, 224 interface, 455 library, 229 resource, 729, 746 specification, 221 System, 222, 229, 729 MOGUL (Mozart Global User Library), 222 monad, xxi, 309, 332 monitor, 579, 592–600 condition variable, 598 guarded method, 595 implementation, 597 Java language, 616 Java semantics, 592 monolithic function, 296 stateful programming, 471 monotonicity, 849 constraint programming, 766 dataflow variable, 336, 570 need(x) predicate, 796 need property, 283 store, 781 thread reduction, 239, 781, 782 Moore’s law, 176, 622 Moore, Gordon, 176 Morrison, J.


pages: 462 words: 172,671

Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin

continuous integration, database schema, disinformation, domain-specific language, don't repeat yourself, Donald Knuth, en.wikipedia.org, Eratosthenes, finite state, G4S, Ignaz Semmelweis: hand washing, iterative process, place-making, Rubik’s Cube, web application

He stopped an old man on the corner and asked him how to get to Carnegie Hall. The old man looked at the violinist and the violin tucked under his arm, and said: “Practice, son. Practice!” Bibliography [Beck07]: Implementation Patterns, Kent Beck, Addison-Wesley, 2007. [Knuth92]: Literate Programming, Donald E. Knuth, Center for the Study of Language and Information, Leland Stanford Junior University, 1992. 2 Meaningful Names by Tim Ottinger Introduction Names are everywhere in software. We name our variables, our functions, our arguments, classes, and packages. We name our source files and the directories that contain them.

This abstraction isolates all of the specific details of obtaining such a price, including from where that price is obtained. Bibliography [RDD]: Object Design: Roles, Responsibilities, and Collaborations, Rebecca Wirfs-Brock et al., Addison-Wesley, 2002. [PPP]: Agile Software Development: Principles, Patterns, and Practices, Robert C. Martin, Prentice Hall, 2002. [Knuth92]: Literate Programming, Donald E. Knuth, Center for the Study of language and Information, Leland Stanford Junior University, 1992. 11 Systems by Dr. Kevin Dean Wampler “Complexity kills. It sucks the life out of developers, it makes products difficult to plan, build, and test.” —Ray Ozzie, CTO, Microsoft Corporation How Would You Build a City?


The Art of Computer Programming by Donald Ervin Knuth

Brownian motion, complexity theory, correlation coefficient, Donald Knuth, Eratosthenes, G4S, Georg Cantor, information retrieval, Isaac Newton, iterative process, John von Neumann, Louis Pasteur, mandelbrot fractal, Menlo Park, NP-complete, P = NP, Paul Erdős, probability theory / Blaise Pascal / Pierre de Fermat, RAND corporation, random walk, sorting algorithm, Turing machine, Y2K

DONALD E. KNUTH Stanford University TT ADDISON-WESLEY An Imprint of Addison Wesley Longman, Inc. Volume 2 / Seminumerical Algorithms THE ART OF COMPUTER PROGRAMMING THIRD EDITION Reading, Massachusetts • Harlow, England • Menlo Park, California Berkeley, California ¦ Don Mills, Ontario • Sydney Bonn • Amsterdam • Tokyo ¦ Mexico City is a trademark of the American Mathematical Society METRFONT is a trademark of Addison-Wesley The quotation on page 61 is reprinted by permission of Grove Press, Inc. Library of Congress Cataloging-in-Publication Data Knuth, Donald Ervin, 1938- The art of computer programming / Donald Ervin Knuth. — 3rd ed. xiv,762 p. 24 cm.

Library of Congress Cataloging-in-Publication Data Knuth, Donald Ervin, 1938- The art of computer programming / Donald Ervin Knuth. — 3rd ed. xiv,762 p. 24 cm. Includes bibliographical references and index. Contents: v. 1. Fundamental algorithms. — v. 2. Seminumerical algorithms. ISBN 0-201-89683-4 (v. 1) ISBN 0-201-89684-2 (v. 2) 1. Electronic digital computers—Programming. 2. Computer algorithms. I. Title. QA76.6.K64 1997 005.1—DC21 97-2147 CIP Internet page http://www-cs-faculty.stanford.edu/~knuth/taocp.html contains current information about this book and related books. Copyright © 1998 by Addison Wesley Longman All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form, or by any means, electronic, mechanical, photo- photocopying, recording, or otherwise, without the prior consent of the publisher.

Khinchin, Alexander Yakovlevich (Xhhhhh, AjieKcaH^p ^KOBJieBHH), 356, 652. Kinderman, Albert John, 130-131, 135. Klarner, David Anthony, 213. Klem, Laura, 27. Knop, Robert Edward, 136. Knopfmacher, Arnold, 345, 686. Knopfmacher, John Peter Louis, 345. Knopp, Konrad Hermann Theodor, 364. Knorr, Wilbur Richard, 335. Knott, Cargill Gilston, 627. Knuth, Donald Ervin (ifi) fi^}), ii, iv, vii, 2, 4, 30, 89, 138, 145, 159, 196, 205, 226, 242, 316, 335, 372, 378, 384, 435, 491, 584, 595, 599, 606, 636, 659, 661, 686, 694, 697, 722, 739, 762. Knuth, Jennifer Sierra (M'h^), xiy- Knuth, John Martin tS Kohavi, Zvi (viTQ >33), 498. Koksma, Jurjen Ferdinand, 161.


pages: 680 words: 157,865

Beautiful Architecture: Leading Thinkers Reveal the Hidden Beauty in Software Design by Diomidis Spinellis, Georgios Gousios

Albert Einstein, barriers to entry, business intelligence, business process, call centre, continuous integration, corporate governance, database schema, Debian, domain-specific language, don't repeat yourself, Donald Knuth, en.wikipedia.org, fault tolerance, Firefox, functional programming, general-purpose programming language, iterative process, linked data, locality of reference, loose coupling, meta-analysis, MVC pattern, peer-to-peer, premature optimization, recommendation engine, Richard Stallman, Ruby on Rails, semantic web, smart cities, social graph, social web, SPARQL, Steve Jobs, Stewart Brand, traveling salesman, Turing complete, type inference, web application, zero-coupon bond

A number of critically important software design decisions, based purely on how the JVM behaves, are also outlined where they had a significant performance benefit. * * * [46] This apocryphal rule of thumb was actually verified using JPC during the boot sequence of DOS and when playing numerous DOS games. With the total control of an emulator, it is easy to compile such statistics on program execution. See also Donald E. Knuth’s “An empirical study of FORTRAN programs.” (Software Practice and Experience, 1: 105-133. Wiley, 1971.) The PC Architecture The modern PC is a very complicated beast. Its hardware has been optimized and iterated over many times to produce a highly effective and generalized computing platform.

There we see that Wright, Le Corbusier, and Mies van der Rohe are all criticized because they were unyielding; they were criticized for being adamant, for their lack of compromise. Their strident views gave us beautiful buildings, but not buildings that would provide us with material comfort. Being adamant is not necessarily a flaw. In an interview in Doctor Dobb’s Journal in April 1996, Donald Knuth was asked his opinion on Edsger Dijkstra. “His great strength,” he replied, “is that he is uncompromising. It would make him physically ill to think of programming in C++.” Uncompromising to the point of not touching a computer for years, and writing “his really terrific essay on the Humble Programmer discussing this.”


pages: 834 words: 180,700

The Architecture of Open Source Applications by Amy Brown, Greg Wilson

8-hour work day, anti-pattern, bioinformatics, c2.com, cloud computing, collaborative editing, combinatorial explosion, computer vision, continuous integration, create, read, update, delete, David Heinemeier Hansson, Debian, domain-specific language, Donald Knuth, en.wikipedia.org, fault tolerance, finite state, Firefox, friendly fire, functional programming, Guido van Rossum, linked data, load shedding, locality of reference, loose coupling, Mars Rover, MITM: man-in-the-middle, MVC pattern, peer-to-peer, Perl 6, premature optimization, recommendation engine, revision control, Ruby on Rails, side project, Skype, slashdot, social web, speech recognition, the scientific method, The Wisdom of Crowds, web application, WebSocket

[Hor05] Cay Horstmann: Object-Oriented Design and Patterns. Wiley, 2 edition, 2005. [HR83] Theo Haerder and Andreas Reuter: "Principles of Transaction-Oriented Database Recovery". ACM Computing Surveys, 15, December 1983. [Kit10] Kitware: VTK User's Guide. Kitware, Inc., 11th edition, 2010. [Knu74] Donald E. Knuth: "Structured Programming with Go To Statements". ACM Computing Surveys, 6(4), 1974. [LA04] Chris Lattner and Vikram Adve: "LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation". Proc. 2004 International Symposium on Code Generation and Optimization (CGO'04), Mar 2004.

I have run into many bottlenecks along the way but each time I look for improvements in design rather than speed-ups in performance. I have been asked many times why I wrote Graphite in Python rather than Java or C++, and my response is always that I have yet to come across a true need for the performance that another language could offer. In [Knu74], Donald Knuth famously said that premature optimization is the root of all evil. As long as we assume that our code will continue to evolve in non-trivial ways then all optimization6 is in some sense premature. One of Graphite's greatest strengths and greatest weaknesses is the fact that very little of it was actually "designed" in the traditional sense.


pages: 317 words: 101,074

The Road Ahead by Bill Gates, Nathan Myhrvold, Peter Rinearson

Albert Einstein, Apple's 1984 Super Bowl advert, Berlin Wall, Bill Gates: Altair 8800, Bob Noyce, Bonfire of the Vanities, business process, California gold rush, Claude Shannon: information theory, computer age, Donald Knuth, first square of the chessboard, first square of the chessboard / second half of the chessboard, glass ceiling, global village, informal economy, invention of movable type, invention of the printing press, invention of writing, John von Neumann, knowledge worker, medical malpractice, Mitch Kapor, new economy, packet switching, popular electronics, Richard Feynman, Ronald Reagan, speech recognition, Steve Ballmer, Steve Jobs, Steven Pinker, Ted Nelson, telemarketer, the scientific method, The Wealth of Nations by Adam Smith, transaction costs, Turing machine, Turing test, Von Neumann architecture

Why would you want to create such a profile? I certainly don't want to reveal everything about myself, but it would be helpful if an agent knew I wanted to see any safety features the new model Lexus might have added. Or, it could alert me to the publication of a new book by Philip Roth, John Irving, Ernest J. Gaines, Donald Knuth, David Halberstam, or any of my other longtime favorite writers. I would also like to have it signal me when a new book appears on some topic that interests me: economics and technology, learning theories, Franklin Delano Roosevelt, and biotechnology, to name a few. I was quite stimulated by a book called The Language Instinct, written by Steven Pinker, a professor at MIT, and I'd like to know about new books or articles on its ideas.


Possiplex by Ted Nelson

Any sufficiently advanced technology is indistinguishable from magic, Bill Duvall, Brewster Kahle, Buckminster Fuller, cuban missile crisis, Donald Knuth, Douglas Engelbart, Douglas Engelbart, HyperCard, Jaron Lanier, John Markoff, Kevin Kelly, Marc Andreessen, Marshall McLuhan, Murray Gell-Mann, nonsequential writing, pattern recognition, post-work, RAND corporation, semantic web, Silicon Valley, Steve Jobs, Stewart Brand, Ted Nelson, Thomas Kuhn: the structure of scientific revolutions, Vannevar Bush, Zimmermann PGP

I have shown him XanaduSpace and ZigZag several times. He is always wonderfully appreciative and his reactions are clever. ‘What are you doing to publicize this?’ he recently asked. 'Only everything in my whole life,' I said. ‘We should hold a big meeting,’ said Doug. That is Doug’s way. The last thing I want is a big meeting. What would Donald Knuth have said? 1957-current “I saw nothing flaky.” After the Wired attack I asked Don Knuth, the world authority on algorithms, if he would please go through the Xanadu algorithms with me and state, as an objective observer, whether they were based on ‘ignorance’ or otherwise deficient, as alleged by Gory Jackal in that foul piece.


pages: 313 words: 101,403

My Life as a Quant: Reflections on Physics and Finance by Emanuel Derman

Bear Stearns, Berlin Wall, bioinformatics, Black-Scholes formula, Brownian motion, buy and hold, capital asset pricing model, Claude Shannon: information theory, Donald Knuth, Emanuel Derman, fixed income, Gödel, Escher, Bach, haute couture, hiring and firing, implied volatility, interest rate derivative, Jeff Bezos, John Meriwether, John von Neumann, law of one price, linked data, Long Term Capital Management, moral hazard, Murray Gell-Mann, Myron Scholes, Paul Samuelson, pre–internet, publish or perish, quantitative trading / quantitative finance, Sharpe ratio, statistical arbitrage, statistical model, Stephen Hawking, Steve Jobs, stochastic volatility, technology bubble, the new new thing, transaction costs, volatility smile, Y2K, yield curve, zero-coupon bond, zero-sum game

I was naively proud to be doing real math. There were helpful resources wherever I turned. I found that Chris Van Wyk, an MTS in Computer Science in Area 10, had written a set of UNIX tools for solving simultaneous equations. He had started this project while working on his PhD thesis at Stanford under Donald Knuth, the famous author of the four-volume The Art of Computer Programming and the inventor of TeX, a widely used language for mathematical typesetting and word processing that has become standard among scientists. Steve Blaha, my particle-physicist friend at the Labs, told me that Knuth had been his college roommate.


The Art of Readable Code by Dustin Boswell, Trevor Foucher

Albert Einstein, don't repeat yourself, Donald Knuth, web application

Smalltalk Best Practice Patterns, by Kent Beck (Prentice Hall, 1996) Although the examples are in Smalltalk, the book has many good programming principles. The Elements of Programming Style, by Brian Kernighan and P.J. Plauger (Computing McGraw-Hill, 1978) One of the oldest books dealing with the issue of “the clearest way to write things.” Most of the examples are in Fortran and PL1. Literate Programming, by Donald E. Knuth (Center for the Study of Language and Information, 1992) We agree wholeheartedly with Knuth’s statement, “Instead of imagining that our main task is to instruct a computer what to do, let us concentrate rather on explaining to human beings what we want a computer to do” (p. 99). But be warned: the bulk of the book is about Knuth’s WEB programming environment for documentation.


pages: 377 words: 110,427

The Boy Who Could Change the World: The Writings of Aaron Swartz by Aaron Swartz, Lawrence Lessig

affirmative action, Alfred Russel Wallace, American Legislative Exchange Council, Benjamin Mako Hill, bitcoin, Bonfire of the Vanities, Brewster Kahle, Cass Sunstein, deliberate practice, Donald Knuth, Donald Trump, failed state, fear of failure, Firefox, full employment, functional programming, Howard Zinn, index card, invisible hand, Joan Didion, John Gruber, Lean Startup, More Guns, Less Crime, peer-to-peer, post scarcity, Richard Feynman, Richard Stallman, Ronald Reagan, school vouchers, semantic web, single-payer health, SpamAssassin, SPARQL, telemarketer, The Bell Curve by Richard Herrnstein and Charles Murray, the scientific method, Toyota Production System, unbiased observer, wage slave, Washington Consensus, web application, WikiLeaks, working poor, zero-sum game

And they both run pretty much exactly as Bernstein first wrote them. One bug—one bug!—was found in qmail. A second bug was recently found in djbdns, but you can get a sense of how important it is by the fact that it took people nearly a decade to find it. No other programmer has this kind of track record. Donald Knuth probably comes closest, but his diary about writing TeX (printed in Literate Programming) shows how he kept finding bugs for years and never expected to be finished, only to get closer and closer (thus the odd version numbering scheme). Not only does no one else have djb’s track record, no one else even comes close.


pages: 423 words: 21,637

On Lisp: Advanced Techniques for Common Lisp by Paul Graham

Donald Knuth, functional programming, G4S, Paul Graham, sorting algorithm, Turing machine

Thanks also to Mona Pompili, Shirley Michaels, and Shirley McGuire for their organization and good humor. The incomparable Gino Lee of the Bow and Arrow Press, Cambridge, did the cover. The tree on the cover alludes specifically to the point made on page 27. This book was typeset using LaTeX, a language written by Leslie Lamport atop Donald Knuth's TeX, with additional macros by L. A. Carr, Van Jacobson, and Guy Steele. The diagrams were done with Idraw, by John Vlissides and Scott Stanton. The whole was previewed with Ghostview, by Tim Theisen, which is built on Ghostscript, by L. Peter Deutsch. Gary Bisbee of Chiron Inc. produced the camera-ready copy.


pages: 404 words: 43,442

The Art of R Programming by Norman Matloff

Debian, discrete time, Donald Knuth, functional programming, general-purpose programming language, linked data, sorting algorithm, statistical model

Graphics 283 13 D EBUGGING Programmers often find that they spend more time debugging a program than actually writing it. Good debugging skills are invaluable. In this chapter, we’ll discuss debugging in R. 13.1 Fundamental Principles of Debugging Beware of bugs in the above code; I have only proved it correct, not tried it. —Donald Knuth, pioneer of computer science Though debugging is an art rather than a science, it involves some fundamental principles. Here, we’ll look at some debugging best practices. 13.1.1 The Essence of Debugging: The Principle of Confirmation As Pete Salzman and I said in our book on debugging, The Art of Debugging, with GDB, DDD, and Eclipse (No Starch Press, 2008), the principle of confirmation is the essence of debugging.


pages: 566 words: 122,184

Code: The Hidden Language of Computer Hardware and Software by Charles Petzold

Bill Gates: Altair 8800, Claude Shannon: information theory, computer age, Donald Knuth, Douglas Engelbart, Douglas Engelbart, Dynabook, Eratosthenes, Grace Hopper, invention of the telegraph, Isaac Newton, Jacquard loom, James Watt: steam engine, John von Neumann, Joseph-Marie Jacquard, Louis Daguerre, millennium bug, Norbert Wiener, optical character recognition, popular electronics, Richard Feynman, Richard Stallman, Silicon Valley, Steve Jobs, Turing machine, Turing test, Vannevar Bush, Von Neumann architecture

Those numbers aren't prime. The final for loop prints out all the prime numbers, which are the values of i where a[i] is true. Sometimes people squabble over whether programming is an art or a science. On the one hand, you have college curricula in Computer Science, and on the other hand, you have books such as Donald Knuth's famous The Art of Computer Programming series. "Rather," wrote physicist Richard Feynman, "computer science is like engineering—it is all about getting something to do something." If you ask 100 different people to write a program that prints out prime numbers, you'll get 100 different solutions.


pages: 706 words: 120,784

The Joy of Clojure by Michael Fogus, Chris Houser

cloud computing, domain-specific language, Donald Knuth, Douglas Hofstadter, en.wikipedia.org, finite state, functional programming, Gödel, Escher, Bach, haute couture, Larry Wall, Paul Graham, rolodex, traveling salesman

Presented at the ACM Workshop on Java for High-Performance Network Computing. This paper provides more information on the cyclopian nightmares awaiting you in Java floating point. Keene, Sonya. 1989. Object-Oriented Programming in Common Lisp: A Programmer’s Guide to CLOS. Boston: Addison-Wesley. The best book on CLOS ever written. Knuth, Donald. 1997. The Art of Computer Programming: Volume 1 - Fundamental Algorithms. Reading, MA: Addison-Wesley. This book goes into exquisite detail about the primary characteristics of FIFO queues and is highly recommended reading. _____. 1998. The Art of Computer Programming, Vol. 3: Sorting and Searching.


pages: 624 words: 127,987

The Personal MBA: A World-Class Business Education in a Single Volume by Josh Kaufman

Albert Einstein, Atul Gawande, Black Swan, business cycle, business process, buy low sell high, capital asset pricing model, Checklist Manifesto, cognitive bias, correlation does not imply causation, Credit Default Swap, Daniel Kahneman / Amos Tversky, David Heinemeier Hansson, David Ricardo: comparative advantage, Dean Kamen, delayed gratification, discounted cash flows, Donald Knuth, double entry bookkeeping, Douglas Hofstadter, en.wikipedia.org, Frederick Winslow Taylor, George Santayana, Gödel, Escher, Bach, high net worth, hindsight bias, index card, inventory management, iterative process, job satisfaction, Johann Wolfgang von Goethe, Kevin Kelly, Kickstarter, Lao Tzu, lateral thinking, loose coupling, loss aversion, Marc Andreessen, market bubble, Network effects, Parkinson's law, Paul Buchheit, Paul Graham, place-making, premature optimization, Ralph Waldo Emerson, rent control, side project, statistical model, stealth mode startup, Steve Jobs, Steve Wozniak, subscription business, telemarketer, the scientific method, time value of money, Toyota Production System, tulip mania, Upton Sinclair, Vilfredo Pareto, Walter Mischel, Y Combinator, Yogi Berra

In this chapter, you’ll learn the secrets of Optimization, how to remove unnecessary Friction from critical processes, and how to build Systems that can handle Uncertainty and Change. SHARE THIS CONCEPT: http://book.personalmba.com/improving-systems/ Optimization Premature optimization is the root of all evil. —DONALD KNUTH, COMPUTER SCIENTIST AND FORMER PROFESSOR AT STANFORD UNIVERSITY Optimization is the process of maximizing the output of a System or minimizing a specific input the system requires to operate. Optimization typically revolves around the systems and processes behind your Key Performance Indicators , which measure the critical elements of the system as a whole.


How I Became a Quant: Insights From 25 of Wall Street's Elite by Richard R. Lindsey, Barry Schachter

Albert Einstein, algorithmic trading, Andrew Wiles, Antoine Gombaud: Chevalier de Méré, asset allocation, asset-backed security, backtesting, bank run, banking crisis, Bear Stearns, Black-Scholes formula, Bonfire of the Vanities, Bretton Woods, Brownian motion, business cycle, business process, butter production in bangladesh, buy and hold, buy low sell high, capital asset pricing model, centre right, collateralized debt obligation, commoditize, computerized markets, corporate governance, correlation coefficient, creative destruction, Credit Default Swap, credit default swaps / collateralized debt obligations, currency manipulation / currency intervention, discounted cash flows, disintermediation, diversification, Donald Knuth, Edward Thorp, Emanuel Derman, en.wikipedia.org, Eugene Fama: efficient market hypothesis, financial innovation, fixed income, full employment, George Akerlof, Gordon Gekko, hiring and firing, implied volatility, index fund, interest rate derivative, interest rate swap, John von Neumann, linear programming, Loma Prieta earthquake, Long Term Capital Management, margin call, market friction, market microstructure, martingale, merger arbitrage, Myron Scholes, Nick Leeson, P = NP, pattern recognition, Paul Samuelson, pensions crisis, performance metric, prediction markets, profit maximization, purchasing power parity, quantitative trading / quantitative finance, QWERTY keyboard, RAND corporation, random walk, Ray Kurzweil, Richard Feynman, Richard Stallman, risk free rate, risk-adjusted returns, risk/return, shareholder value, Sharpe ratio, short selling, Silicon Valley, six sigma, sorting algorithm, statistical arbitrage, statistical model, stem cell, Steven Levy, stochastic process, systematic trading, technology bubble, The Great Moderation, the scientific method, too big to fail, trade route, transaction costs, transfer pricing, value at risk, volatility smile, Wiener process, yield curve, young professional

., 29–47, 308 Kalman filter, usage, 188, 239 Kani, Iraj, 123–124 Kapner, Ken, 333 Katz, Gary, 336–337 Kazhdan, David, 119–120 Kazhdan-Lusztig result, 120 Kealhofer, Stephen, 211–225 Kelvin, Lord, 67 Kennecott Copper-Carborundum merger, 290 reporting system, design (foresight), 72–73 risk-controlled stock/bond funds, offering, 71 Kieschnick, Michael, 213 P1: OTE/PGN JWPR007-Lindsey P2: OTE January 1, 1904 6:33 384 KMV Corporation, 218 Knuth, Donald, 171 Kohn, Robert, 132 Kottwitz, Robert, 120 Krail, Bob, 202 Krell, David, 336–337 Kritzman, Mark, 251–261 Kurzweil, Ray, 27–28 Kusuda, Yasuo, 168, 170 Kyle, Peter, 214 Landlands, Robert, 119 Landlands Program, 119–120 Lang, Serge, 287 Lanstein, Ron, 307 Large-cap securities, comparison, 267 Large-scale data analysis, 218 Large-scale matrix inversion, 257 Lattice Trading, 75–76 sale, 79–81 “Law of One Alpha, The,” 274 Lawrence, Colin, 232 LECG, litigation counseling, 218 LeClair, Ray, 82 Leeson, Nick, 194 Lefevre, Edwin, 321 Leinweber, David, 9–28 Leinweber & Co., 9 Leland, Hayne, 158 Leland O’Brien Rubinstein Associates, 278 Leptokurtosis, 193–194 Levy, Kenneth N., 263–283 Levy processes, 169 Lewis, Harry, 13 Lexis database, 146–148 Li, David, 240 Liability Driven Investment (LDI), 148 Liew, John, 201, 202 Lindsey, Rich, 157, 162 Lintner, John, 34 Linux, 18 LISP-based trading systems, flaw, 20 LISP Machines, Inc.


pages: 1,331 words: 183,137

Programming Rust: Fast, Safe Systems Development by Jim Blandy, Jason Orendorff

bioinformatics, bitcoin, Donald Knuth, Elon Musk, Firefox, functional programming, mandelbrot fractal, MVC pattern, natural language processing, side project, sorting algorithm, speech recognition, Turing test, type inference, WebSocket

For those situations, Rust has traits, the topic of our next chapter. Chapter 11. Traits and Generics [A] computer scientist tends to be able to deal with nonuniform structures—case 1, case 2, case 3—while a mathematician will tend to want one unifying axiom that governs an entire system. Donald Knuth One of the great discoveries in programming is that it’s possible to write code that operates on values of many different types, even types that haven’t been invented yet. Here are two examples: Vec<T> is generic: you can create a vector of any type of value, including types defined in your program that the authors of Vec never anticipated.


pages: 968 words: 224,513

The Art of Assembly Language by Randall Hyde

Donald Knuth, P = NP, p-value, sorting algorithm, Von Neumann architecture, Y2K

You'll also want to check out the source code for several of the HLA Standard Library routines to see how to do various extended-precision operations (that properly set the flags once the computation is complete). The HLA Standard Library source code also covers the extended-precision I/O operations that do not appear in this chapter. Donald Knuth's The Art of Computer Programming, Volume Two: Seminumerical Algorithms contains a lot of useful information about decimal arithmetic and extended-precision arithmetic, though that text is generic and doesn't describe how to do this in x86 assembly language. Chapter 9. MACROS AND THE HLA COMPILE-TIME LANGUAGE This chapter discusses the HLA compile-time language.


Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems by Martin Kleppmann

active measures, Amazon Web Services, bitcoin, blockchain, business intelligence, business process, c2.com, cloud computing, collaborative editing, commoditize, conceptual framework, cryptocurrency, database schema, DevOps, distributed ledger, Donald Knuth, Edward Snowden, Ethereum, ethereum blockchain, fault tolerance, finite state, Flash crash, full text search, functional programming, general-purpose programming language, informal economy, information retrieval, Internet of things, iterative process, John von Neumann, Kubernetes, loose coupling, Marc Andreessen, microservices, natural language processing, Network effects, packet switching, peer-to-peer, performance metric, place-making, premature optimization, recommendation engine, Richard Feynman, self-driving car, semantic web, Shoshana Zuboff, social graph, social web, software as a service, software is eating the world, sorting algorithm, source of truth, SPARQL, speech recognition, statistical model, surveillance capitalism, Tragedy of the Commons, undersea cable, web application, WebSocket, wikimedia commons

Chapter 12 concludes the book by exploring ideas about how we might use these tools to build reliable, scalable, and maintainable applications in the future. CHAPTER 10 Batch Processing A system cannot be successful if it is too strongly influenced by a single person. Once the initial design is complete and fairly robust, the real test begins as people with many different viewpoints undertake their own experiments. —Donald Knuth In the first two parts of this book we talked a lot about requests and queries, and the corresponding responses or results. This style of data processing is assumed in many modern data systems: you ask for something, or you send an instruction, and some time later the system (hopefully) gives you an answer.


pages: 1,237 words: 227,370

Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems by Martin Kleppmann

active measures, Amazon Web Services, bitcoin, blockchain, business intelligence, business process, c2.com, cloud computing, collaborative editing, commoditize, conceptual framework, cryptocurrency, database schema, DevOps, distributed ledger, Donald Knuth, Edward Snowden, Ethereum, ethereum blockchain, fault tolerance, finite state, Flash crash, full text search, functional programming, general-purpose programming language, informal economy, information retrieval, Infrastructure as a Service, Internet of things, iterative process, John von Neumann, Kubernetes, loose coupling, Marc Andreessen, microservices, natural language processing, Network effects, packet switching, peer-to-peer, performance metric, place-making, premature optimization, recommendation engine, Richard Feynman, self-driving car, semantic web, Shoshana Zuboff, social graph, social web, software as a service, software is eating the world, sorting algorithm, source of truth, SPARQL, speech recognition, statistical model, surveillance capitalism, Tragedy of the Commons, undersea cable, web application, WebSocket, wikimedia commons

Chapter 12 concludes the book by exploring ideas about how we might use these tools to build reliable, scalable, and maintainable applications in the future. Chapter 10. Batch Processing A system cannot be successful if it is too strongly influenced by a single person. Once the initial design is complete and fairly robust, the real test begins as people with many different viewpoints undertake their own experiments. Donald Knuth In the first two parts of this book we talked a lot about requests and queries, and the corresponding responses or results. This style of data processing is assumed in many modern data systems: you ask for something, or you send an instruction, and some time later the system (hopefully) gives you an answer.


Why Things Bite Back: Technology and the Revenge of Unintended Consequences by Edward Tenner

air freight, Alfred Russel Wallace, animal electricity, blue-collar work, clean water, collective bargaining, computer age, dematerialisation, Donald Knuth, Exxon Valdez, germ theory of disease, informal economy, job automation, John Harrison: Longitude, John von Neumann, Loma Prieta earthquake, loose coupling, Louis Pasteur, mass immigration, Menlo Park, nuclear winter, oil shock, placebo effect, Productivity paradox, Ralph Waldo Emerson, rising living standards, Robert X Cringely, Shoshana Zuboff, Silicon Valley, technoutopianism, The Wealth of Nations by Adam Smith, Thomas Malthus, Thorstein Veblen

Computerization turns this manifesto on its ancient head. Software can devour highly complex tasks with ease if they fit well into its existing categories. But even a simple change illustrates the revenge effect of recomplicating. The scientific typesetting program TEX, developed by the computer scientist Donald S. Knuth and now the standard in many branches of physics and mathematics, makes short work of the most fearsomely complex equations that once cost publishers up to $6o per page to typeset. An author proficient in TEX—and I have had the good fortune to work with several of them—can prepare camera-ready copy that stands up to most commercially available systems.


From Airline Reservations to Sonic the Hedgehog: A History of the Software Industry by Martin Campbell-Kelly

Apple II, Apple's 1984 Super Bowl advert, barriers to entry, Bill Gates: Altair 8800, business process, card file, computer age, computer vision, continuous integration, deskilling, Donald Knuth, Grace Hopper, hockey-stick growth, independent contractor, information asymmetry, inventory management, John Markoff, John von Neumann, linear programming, longitudinal study, Menlo Park, Mitch Kapor, Network effects, popular electronics, RAND corporation, Robert X Cringely, Ronald Reagan, Silicon Valley, software patent, Steve Jobs, Steve Wozniak, Steven Levy, Thomas Kuhn: the structure of scientific revolutions

Blair Smith, “The IBM 701—Marketing and Customer Relations,” Annals of the History of Computing 5 (1983): 170–172. 13. Ibid. Notes to pp. 33–39 317 14. Armer, “SHARE—A Eulogy to Cooperative Effort,” p. 122. 15. Akera, “The IBM User Group, Share,” p. 725. 16. The best general account of early programming systems is Paul E. Ceruzzi, A History of Modern Computing (MIT Press), especially chapter 3. 17. Donald E. Knuth and Luis Trabb Pardo, “The Early Development of Programming Languages,” in A History of Computing in the Twentieth Century, ed. N. Metropolis, J. Howlett, and G.-C. Rota (Academic Press, 1980). 18. The best historical account of FORTRAN is Annals of the History of Computing 6 (1984), no. 1 (25th-anniversary special issue). 19.


Applied Cryptography: Protocols, Algorithms, and Source Code in C by Bruce Schneier

active measures, cellular automata, Claude Shannon: information theory, complexity theory, dark matter, Donald Davies, Donald Knuth, dumpster diving, Exxon Valdez, fault tolerance, finite state, invisible hand, John von Neumann, knapsack problem, MITM: man-in-the-middle, NP-complete, P = NP, packet switching, RAND corporation, RFC: Request For Comment, software patent, telemarketer, traveling salesman, Turing machine, web of trust, Zimmermann PGP

If you are depending on your random-number generator for security, weird correlations and strange results are the last things you want. The problem is that a random-number generator doesn’t produce a random sequence. It probably doesn’t produce anything that looks even remotely like a random sequence. Of course, it is impossible to produce something truly random on a computer. Donald Knuth quotes John von Neumann as saying: “Anyone who considers arithmetical methods of producing random digits is, of course, in a state of sin” [863]. Computers are deterministic beasts: Stuff goes in one end, completely predictable operations occur inside, and different stuff comes out the other end.


Engineering Security by Peter Gutmann

active measures, algorithmic trading, Amazon Web Services, Asperger Syndrome, bank run, barriers to entry, bitcoin, Brian Krebs, business process, call centre, card file, cloud computing, cognitive bias, cognitive dissonance, combinatorial explosion, Credit Default Swap, crowdsourcing, cryptocurrency, Daniel Kahneman / Amos Tversky, Debian, domain-specific language, Donald Davies, Donald Knuth, double helix, en.wikipedia.org, endowment effect, fault tolerance, Firefox, fundamental attribution error, George Akerlof, glass ceiling, GnuPG, Google Chrome, iterative process, Jacob Appelbaum, Jane Jacobs, Jeff Bezos, John Conway, John Markoff, John von Neumann, Kickstarter, lake wobegon effect, Laplace demon, linear programming, litecoin, load shedding, MITM: man-in-the-middle, Network effects, Parkinson's law, pattern recognition, peer-to-peer, Pierre-Simon Laplace, place-making, post-materialism, QR code, race to the bottom, random walk, recommendation engine, RFID, risk tolerance, Robert Metcalfe, Ruby on Rails, Sapir-Whorf hypothesis, Satoshi Nakamoto, security theater, semantic web, Skype, slashdot, smart meter, social intelligence, speech recognition, statistical model, Steve Jobs, Steven Pinker, Stuxnet, sunk-cost fallacy, telemarketer, text mining, the built environment, The Death and Life of Great American Cities, The Market for Lemons, the payments system, Therac-25, too big to fail, Tragedy of the Commons, Turing complete, Turing machine, Turing test, web application, web of trust, x509 certificate, Y2K, zero day, Zimmermann PGP

“A Killer Adversary for Quicksort” Douglas McIlroy, Software — Practice and Experience, Vol.29, No.4 (April 1999), p.341. “Quicksort killer”, Igor Ostrovsky, 4 May 2008, http://igoro.com/archive/quicksort-killer/. “Data Structures and Efficient Algorithms, Volume 1: Sorting and Searching”, Kurt Mehlhorn Springer Verlag, 1984. “The Art of Computer Programming, Volume 3: Sorting and Searching (2 nd ed)”, Donald Knuth, Addison-Wesley, 1997. “Algorithms in C: Fundamentals, Data Structures, Sorting, Searching (3rd ed)”, Robert Sedgewick, Addison-Wesley, 1998. “Introduction to Algorithms (2nd ed)”, Thomas Cormen, Charles Leiserson, Ronald Rivest and Clifford Stein, MIT Press, 2001. “Designing and Attacking Port Scan Detection Tools”, Solar Designer, Phrack Magazine, Vol.8, No.53 (8 July 1998), Article 13.