# Donald Knuth

54 results back to index

pages: 1,758 words: 342,766

Code Complete (Developer Best Practices) by Steve McConnell

Amazon: amazon.comamazon.co.ukamazon.deamazon.fr

New York, NY: Yourdon Press. Knuth, Donald. 1971. "An Empirical Study of FORTRAN programs," SoftwarePractice and Experience 1:10533. Knuth, Donald. 1974. "Structured Programming with go to Statements." In Classics in Software Engineering, edited by Edward Yourdon. Englewood Cliffs, NJ: Yourdon Press, 1979. Knuth, Donald. 1986. Computers and Typesetting, Volume B, TEX: The Program. Reading, MA: Addison-Wesley. Knuth, Donald. 1997a. The Art of Computer Programming, vol. 1, Fundamental Algorithms, 3d ed. Reading, MA: Addison-Wesley. Knuth, Donald. 1997b. The Art of Computer Programming, vol. 2, Seminumerical Algorithms, 3d ed. Reading, MA: Addison-Wesley. Knuth, Donald. 1998. The Art of Computer Programming, vol. 3, Sorting and Searching, 2d ed. Reading, MA: Addison-Wesley. Knuth, Donald. 2001. Literate Programming.

"Optimization: Your Worst Enemy." May 2000, http://www.flounder.com/optimization.htm. 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. They can be somewhat intimidating. In addition to the English description of the algorithms, they're described in mathematical notation or MIX, an assembly language for the imaginary MIX computer.

Unix Review 9, no. 10 (10): 3943. Beck, Leland L. , and Thomas E. Perkins . 1983. "A Survey of Software Engineering Practice: Tools, Methods, and Results." IEEE Transactions on Software Engineering SE-9, no. 5 (5): 54161. Beizer, Boris. 1990. Software Testing Techniques, 2d ed. New York, NY: Van Nostrand Reinhold. Bentley, Jon , and Donald Knuth. 1986. "Literate Programming." Communications of the ACM 29, no. 5 (5): 36469. Bentley, Jon , Donald Knuth, and Doug McIlroy. 1986. "A Literate Program." Communications of the ACM 29, no. 5 (5): 47183. Bentley, Jon. 1982. Writing Efficient Programs. Englewood Cliffs, NJ: Prentice Hall. Bentley, Jon. 1988. More Programming Pearls: Confessions of a Coder. Reading, MA: Addison-Wesley. Bentley, Jon. 1991. "Software Exploratorium: Writing Efficient C Programs."

pages: 236 words: 50,763

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

Amazon: amazon.comamazon.co.ukamazon.deamazon.fr

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. In 1973, Knuth ran a poll via postal mail. He famously doesn’t use email today, but back in 1973 neither did anyone else.

Knuth was not entirely happy with this choice but was willing to live with it. 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. But terminology gets embedded in the culture over the decades, and at this point it would be difficult to change, even if we had great alternatives.

The third (interior point) works well both in theory and practice. Not bad for a problem still considered unresolved into the late 1970s. * 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. But Knuth and others in America couldn’t so easily look toward Russia.

pages: 429 words: 114,726

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

Amazon: amazon.comamazon.co.ukamazon.deamazon.fr

John Backus, “Programming in America in the 1950s: Some Personal Impressions,” in A History of Computing in the Twentieth Century: A Collection of Essays, ed. 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.

“Cybernetics, Management Science, and Technology Policy: The Emergence of ‘Information Technology’ as a Keyword, 1948–1985.” 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. New York: Springer-Verlag, 1977.

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: 523 words: 143,139

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

Amazon: amazon.comamazon.co.ukamazon.deamazon.fr

In academia, holding office hours is a way of coalescing interruptions from students. 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. His report ends with the cheery sign-off “Stay tuned for The TeX Tuneup of 2021!”

a quarter of the computing resources of the world: Knuth, The Art of Computer Programming, p. 3. “unit cost of sorting, instead of falling, rises”: Hosken, “Evaluation of Sorting Methods.” 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. This is a Radix Sort, and is related to the Bucket Sort algorithm we discuss later in the chapter.

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

Amazon: amazon.comamazon.co.ukamazon.deamazon.fr

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. Some of my subjects scoffed at the notion that formal proofs could be useful in improving the quality of software, but Guy Steele gave a very nice illustration of both their power and their limitations.

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.

Guide to LaTeX by Helmut Kopka, Patrick W. Daly

Amazon: amazon.comamazon.co.ukamazon.deamazon.fr

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. The sample label is given as 99 since a two-digit number produces sufficient indentation for the standard form of \bibitem.

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 { }. The very first entry is the key 312 Chapter 14. Bibliographic Databases and BIBTEX for the whole reference by which it is referred to in the \cite command.

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.

pages: 450 words: 569

ANSI Common LISP by Paul Graham

Amazon: amazon.comamazon.co.ukamazon.deamazon.fr

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. Debunking the "Expensive Procedure Call" Myth or, Procedural Call Implementations Considered Harmful or, LAMBDA: The Ultimate GOTO.

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. A program has to live up to mathematical truth in the same way that a building has to live up to the laws of physics. But the architect's aim is not simply to make a building that doesn't fall down. Almost always the real aim is to make something beautiful. Many programmers feel, like Donald Knuth, that this is also the real aim of programming. Almost all Lisp hackers do. The spirit of Lisp hacking can be expressed in two sentences.

Thanks also to the staff at Aiken Lab, including Tony Hartman, Dave Mazieres, Janusz Juda, Harry Bochner, and Joanne Klys. 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.

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

Amazon: amazon.comamazon.co.ukamazon.deamazon.fr

Some of these strategies will deploy simple heuristics to hijack your brain’s motivation center while others are designed to recharge your willpower reserves at the fastest possible rate. You could just try to make deep work a priority. 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. Chappell told me that his first encounter with the idea of deep work was “an emotional moment.”

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.

He would then meditate and walk in the woods to clarify his thinking in preparation for the next day’s writing. 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: 239 words: 64,812

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

Amazon: amazon.comamazon.co.ukamazon.deamazon.fr

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. More than anyone else, he understands the paradox that programmers write code for other humans, not for machines: “Let us change our traditional attitude to the construction of programs: 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.”7 In 1984, therefore, he famously formalized the notion of “literate programming”: The practitioner of literate programming can be regarded as an essayist, whose main concern is with exposition and excellence of style.

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. Even a simple software requirement for a small company that, say, provides secretarial services for the medical insurance industry—“We need an application that makes it easier for our scribes to write up reports from doctors’ examinations of insurance claimants”—will always reveal a swirling hodgepodge of exceptions and special cases.

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

Amazon: amazon.comamazon.co.ukamazon.deamazon.fr

“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. “A longer attention span is needed”: Ibid., p. 145. The information about the Piet Hein poem over Knuth’s entrance is from Ditlea, “Rewriting the Bible,” in Technology Review.

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.

To shape it so that people can learn it easily, and to render it flexible so people can bend it to their needs? Is it just a matter of time and experience? 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. The full explanation for this habit lies in the esoteric realm of the design of the registers inside a computer’s central processing unit and the structure of data arrays.

pages: 509 words: 92,141

The Pragmatic Programmer by Andrew Hunt, Dave Thomas

Amazon: amazon.comamazon.co.ukamazon.deamazon.fr

[KLM+97] Gregor Kiczales, John Lamping, Anurag Mendhekar, Chris Maeda, Cristina Videira Lopes, Jean-Marc Loingtier, and John Irwin. 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. Kernighan and Rob Pike. The Practice of Programming. Addison Wesley Longman, Reading, MA, 1999.

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? Exercises 34.

At best it is an unfortunate necessity; at worst it is treated as a low-priority task in the hope that management will forget about it at the end of the project. 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. Tip 67 Treat English as Just Another Programming Language There are basically two kinds of documentation produced for a project: internal and external.

pages: 351 words: 123,876

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

Amazon: amazon.comamazon.co.ukamazon.deamazon.fr

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. In that case, if the uniform RNG is trustworthy, then the nonuniform generator is trustworthy. Of course it is possible that a bug could still slip through the process, but this is unlikely. If the K-S test fails, examining the values of x that determine K+ and K− could help developers locate the bug in the RNG. † Knuth, Donald E. The Art of Computer Programming, Vol. 2: Seminumerical Algorithms, Third Edition.

How do you know when χ2 is too large or too small? First we consider the number of buckets. 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. The empirical distribution is defined as: and the theoretical distribution function F(x) is the theoretical probability of the RNG returning a value no greater than x.

pages: 394 words: 108,215

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

Amazon: amazon.comamazon.co.ukamazon.deamazon.fr

Moreover, other important companies such as Digital, Lucasfilm, and Intel received important technological boosts from SAIL innovations. 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.

He was able to visit the Menlo Park laboratory and had a good conversation with a number of the members of the Augment team. He liked them, and they liked him. 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. The doors of Augment were opened not only to a small technical elite of software designers like Duvall and Lehtman.

In his senior year, he began experimenting with electronic devices and built several electronic slide rules, assembling them from components that he dredged out of scavenging expeditions to a electronic-surplus shop in Cambridge. 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. The Knuth course also led to Ingalls’s first entrepreneurial venture and his first business failure when he launched a one-man consulting firm that sought to speed up programs written in Fortran.

pages: 400 words: 94,847

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

Amazon: amazon.comamazon.co.ukamazon.deamazon.fr

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. [Artificial intelligence pioneer and Stanford Professor John] McCarthy used to make up the problems.

p 56 The issue tracker isn’t just for fixing bugs, it’s also used to propose and implement new features: In fact, the issue tracker is just one of several ways in which Firefox developers can propose new features. 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.” I haven’t been able to find a verifiable source for the Picasso quote, but compare T.

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: 398 words: 107,788

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

Amazon: amazon.comamazon.co.ukamazon.deamazon.fr

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. Perhaps most significantly, what have come to be known as the “encryption wars” in the mid-1990s were waged over the right to freely publish and use software cryptography in the face of governmental restrictions that classified strong forms of encryption as munitions.

Mother Jones, July 20. http://motherjones.com/politics/2001/07/peace-love-and-marketing (accessed August 24, 2011). Kidder, Tracy. 1981. The Soul of a New Machine. 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. Lancashire, David. 2001. Code, Culture, and Cash: The Fading Altruism of Open Source Development.

., 200–203; definition of, 9, 84, 118; expansion of, 84–86; history of, 9–10, 62–64; and international treaties, 71, 72, 84; relationship of to free speech, 9, 10, 183, 200 International Intellectual Property Alliance (IIPA), 71, 87 Internet, 26, 30, 32–33, 39, 46, 58, 73, 75, 83, 88, 169, 189, 207 Internet Relay Chat (IRC), 6, 23, 33, 51, 107, 128, 140, 194, 213n9 Jackson, Michael, 27 Jaffe, Adam, 66, 67 jazz poetics. 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.

Algorithms Unlocked by Thomas H. Cormen

Amazon: amazon.comamazon.co.ukamazon.deamazon.fr

Freeman, 1979. [Gri81] David Gries. The Science of Programming. Springer, 1981. [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. [Mac12] John MacCormick. Nine Algorithms That Changed the Future: The Ingenious Ideas That Drive Today’s Computers.

John MacCormick’s book Nine Algorithms That Changed the Future [Mac12] describes several algorithms and related aspects of computing that affect our everyday lives. 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. Be warned, however: the material in TAOCP is intense. By the way, if you’re wondering where the word “algorithm” comes from, Knuth says that it derives from the name “al-Khowârizmı̂,” a ninth-century Persian mathematician.

pages: 749 words: 92,104

Hacker's Delight by Henry S. Warren

Amazon: amazon.comamazon.co.ukamazon.deamazon.fr

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. The earliest reference given by Knuth is to Vittorio Grünwald in 1885. Knuth himself submitted a paper on the subject in 1955 to a "science talent search" for high-school seniors.

[GGS] Gregoire, Dennis G., Groves, Randall D., and Schmookler, Martin S. 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. [GM] Granlund, Torbjörn and Montgomery, Peter L.

pages: 315 words: 70,044

Learning SPARQL by Bob DuCharme

Amazon: amazon.comamazon.co.ukamazon.deamazon.fr

p "two"^^mt:potrzebies . } It’s an interesting case, because it has the ^^ in it to indicate that the value is of a specific type, but it’s not an xsd type. 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.

pages: 525 words: 142,027

CIOs at Work by Ed Yourdon

Amazon: amazon.comamazon.co.ukamazon.deamazon.fr

I think I’ve been lucky in that in every job I’ve been in, there’s been one or more people I’ve been able to look up to and learn from. Yourdon: Hmm. Fried: Kind of different depending on the situation. 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. Fried: Really? Yourdon: And I said, “Is it free?” And [Plauger] said, “Of course not, it’s 10,000.” Of course, you have access to whatever you want on the Internet, but it’s something I’ve noticed having written a whole bunch of books: nobody wants to read a book anymore. 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: 855 words: 178,507 The Information: A History, a Theory, a Flood by James Gleick Amazon: amazon.comamazon.co.ukamazon.deamazon.fr ♦ “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. T. Clanchy, From Memory to Written Record, England, 1066-1307 (Cambridge, Mass.: Harvard University Press, 1979), 202 To demonstrate this, Otto Neugebauer, the leading twentieth-century historian of ancient mathematics, had to reassemble tablets whose fragments had made their way to opposite sides of the Atlantic Ocean. 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. The height is 3,20, and a volume of 27,46,40 has been excavated. The length exceeds the width by 50. Out of Control: The Rise of Neo-Biological Civilization. Reading, Mass.: Addison-Wesley, 1994. Kendall, David G. “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. N. Kolmogorov. Vol. 3, Information Theory and the Theory of Algorithms. Translated by A. pages: 894 words: 190,485 Write Great Code, Volume 1 by Randall Hyde Amazon: amazon.comamazon.co.ukamazon.deamazon.fr In theory, arithmetic is quite easy; you use the same algorithms to add, subtract, multiply, and divide fractional values that you learned in grade school when dealing with fractions. 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. For example, “a..z” denotes all the lowercase alphabetic characters between a and z 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 thatFFC000FF 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. [7] Actually, they could count down to zero as well, but usually they count up

. // 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 Amazon: amazon.comamazon.co.ukamazon.deamazon.fr New York: Prentice-Hall. Kohlbecker, Eugene Edmund, Jr. 1986. 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. Kowalski, Robert. 1979. 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. with dotted-tail notation lambda expression as operator of combination value of lambda-body lambda-parameters lambda? pages: 574 words: 164,509 Superintelligence: Paths, Dangers, Strategies by Nick Bostrom Amazon: amazon.comamazon.co.ukamazon.deamazon.fr 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. Nevertheless, a fair amount of progress has been made and continues to be made, aided by steady improvements in hardware. 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: 511 words: 111,423 Learning SPARQL by Bob Ducharme Amazon: amazon.comamazon.co.ukamazon.deamazon.fr p "two"^^mt:potrzebies . } It’s an interesting case because it has the ^^ in it to indicate that the value has a specific type, but it’s not an xsd type. 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: 792 words: 48,468 Tcl/Tk, Second Edition: A Developer's Guide by Clif Flynt Amazon: amazon.comamazon.co.ukamazon.deamazon.fr The kitchen in an automated restaurant might receive orders as patrons select items from a menu via a format such as the following: {{Table 2} {{Table {{Table {{Table {{Table {{Table {{Table {burger} {ketchup mustard}} 3} {drink} {medium}} 2} {fries} {large}} 1} {BLT} {no mayo}} 3} {Complete} {} } 1} {drink} {small}} 1} {Complete} {} } Write a script that will accept data in a format such as this, collecting the items ordered at a table and reporting a table’s order when the Complete message is received. 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. A tree data structure can be implemented as nested lists. pages: 828 words: 205,338 Write Great Code, Volume 2 by Randall Hyde Amazon: amazon.comamazon.co.ukamazon.deamazon.fr 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. However, Hoare did not say, “Concern about application performance during the early stages of an application’s development is the root of all evil.” The Art of Assembly Language (No Starch Press, 2003) is a good place to begin that journey. 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. The Art of Assembly Language (No Starch Press, 2003) is a good place to begin that journey. If you want to learn high-level implementations, you can find a wealth of information. 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: 230 Purely Functional Data Structures by Chris Okasaki Amazon: amazon.comamazon.co.ukamazon.deamazon.fr (p. 118) David J. King. Functional binomial queues. 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. (pp. 5,130,169,170,171, 184,212) [KT96a] Haim Kaplan and Robert E. pages: 203 words: 14,242 Ship It!: A Practical Guide to Successful Software Projects by Jared R. Richardson, William A. Gwaltney Amazon: amazon.comamazon.co.ukamazon.deamazon.fr 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 ﬁrst 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. A PPENDIX G. S UGGESTED R EADING L IST Refactoring: Improving the Design of Existing Code by Martin Fowler. pages: 292 words: 62,575 97 Things Every Programmer Should Know by Kevlin Henney Amazon: amazon.comamazon.co.ukamazon.deamazon.fr A good programmer should also know when to use an abominable algorithm. 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: 1,387 words: 202,295

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

Amazon: amazon.comamazon.co.ukamazon.deamazon.fr

Ingerman, Peter, Edgar Irons, Kirk Sattley, and Wallace Feurzeig; assisted by M. Lind, Herbert Kanner, and Robert Floyd. 1960. 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. The TK!Solver Book: A Guide to Problem-Solving in Science, Engineering, Business, and Education.

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

Amazon: amazon.comamazon.co.ukamazon.deamazon.fr

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. Includes bibliographical references and index. ISBN 0-201-89683-4 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.

Kepler, Johann, 80, 81. Kilmer, Alfred Joyce, 232. King, James Cornelius, 20. 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. Kozelka, Robert Marvin, 544. Kramp, Christian, 49. Krattenthaler, Christian, 39.

pages: 923 words: 516,602

The C++ Programming Language by Bjarne Stroustrup

Amazon: amazon.comamazon.co.ukamazon.deamazon.fr

Brian W. Kernighan and Dennis M. Ritchie: The C Programming Language (Second Edition). Prentice-Hall. 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. George Orwell: 1984. Secker and Warburg. London. 1949. Graham Parrington et al.: The Design and Implementation of Arjuna.

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.

ISBN 0-201-88954-4. All rights reserved. – 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.

pages: 462 words: 172,671

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

Amazon: amazon.comamazon.co.ukamazon.deamazon.fr

After that, it’s up to you. Remember the old joke about the concert violinist who got lost on his way to a performance? 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. We name our jar files and war files and ear files.

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? Could you manage all the details yourself?

pages: 262 words: 65,959

The Simpsons and Their Mathematical Secrets by Simon Singh

Amazon: amazon.comamazon.co.ukamazon.deamazon.fr

Sometimes it will require two random numbers, usually three, and occasionally four or more numbers to reach a total bigger than 1. 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. Each new version number is a closer approximation to the true value of e.

pages: 525 words: 149,886

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

Amazon: amazon.comamazon.co.ukamazon.deamazon.fr

, however, will generate an “Argument isn’t numeric” warning if warnings are enabled. 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. Other notable defenestrations have occurred in 1419 and 1948.

(back) 5 Isaac Newton discovered and wrote about the method first, but his write-up wasn’t published until 1736. 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: 504 words: 89,238

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

Amazon: amazon.comamazon.co.ukamazon.deamazon.fr

[Kiss and Strunk, 2006] Tibor Kiss and Jan Strunk. Unsupervised multilingual sentence boundary detection. 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. MIT Press, Cambridge, MA, 1995. [Levin, 1993] Beth Levin. English Verb Classes and Alternations.

In , the data is streamed to the calling function. 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. Python Coding Style When writing programs you make many subtle choices about names, spacing, comments, and so on.

pages: 728 words: 182,850

Cooking for Geeks by Jeff Potter

Amazon: amazon.comamazon.co.ukamazon.deamazon.fr

Take time to taste things, both to adjust seasoning and to learn how the taste changes during cooking. Don’t be afraid to burn dinner! 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. It’d be like picking up a dictionary to learn how to write.

pages: 666 words: 181,495

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

Amazon: amazon.comamazon.co.ukamazon.deamazon.fr

But the professors understood that behind the goofiness was a formidable mathematical mind. 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. “He was brilliant,” Garcia-Molina says.

The Art of Computer Programming by Donald Ervin Knuth

Amazon: amazon.comamazon.co.ukamazon.deamazon.fr

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. 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.

Kermack, William Ogilvy, 74. Kerr, Leslie Robert, 699. Kesner, Oliver, 226. 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. Kolmogorov, Andrei Nikolaevich (KoJiMoropoB, AH 56, 169, 178, 183. Kolmogorov-Smirnov distribution, 57-60. table, 51.

pages: 598 words: 183,531

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

Amazon: amazon.comamazon.co.ukamazon.deamazon.fr

For instance, Woods’ vision of a mist-covered toll bridge protected by a stubborn troll came during a break in hacking one night, when Woods and some other hackers decided to watch the sun rise at a mist-shrouded Mount Diablo, a substantial drive away. 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). It was at Stanford that hackers would actually leave their terminals for a daily game of volleyball.

The AI lab began to look for teachers as well as researchers, and the hackers were seldom interested in the bureaucratic hassles, social demands, and lack of hands-on machine time that came with teaching courses. 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. He was in California, and he had bought a car. With all these changes, some of the hackers sensed that an era was ending.

pages: 313 words: 101,403

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

Amazon: amazon.comamazon.co.ukamazon.deamazon.fr

Stimulated by the courses on computer science I had taken at the Labs, I realized that I could represent each variable in the set of equations by a node in a directed graph, and that reordering the equations was equivalent to decomposing the graph into its strongly connected components. 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. As we worked together I was impressed by Chris's professional programming skills; I was an amateur, living by my wits, while Chris was the real thing, a researcher working in his area of expertise.

pages: 377 words: 110,427

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

Amazon: amazon.comamazon.co.ukamazon.deamazon.fr

They accomplish all sorts of complicated functions, work under incredibly high loads, and confront no end of unusual situations. 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. But far more important are the subjective factors. djb’s programs are some of the greatest works of beauty to be comprehended by the human mind.

The Art of Readable Code by Dustin Boswell, Trevor Foucher

Amazon: amazon.comamazon.co.ukamazon.deamazon.fr

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. WEB is effectively a language for writing your programs as works of literature, with code on the sidelines.

pages: 834 words: 180,700

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

Amazon: amazon.comamazon.co.ukamazon.deamazon.fr

[Gra81] Jim Gray: "The Transaction Concept: Virtues and Limitations". Proc. Seventh International Conference on Very Large Data Bases, pages 144–154, 1981. [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. [LCWB+11] H. Andrées Lagar-Cavilla, Joseph A. Whitney, Roy Bryant, Philip Patchin, Michael Brudno, Eyal de Lara, Stephen M.

Design Reflections My experience in working on Graphite has reaffirmed a belief of mine that scalability has very little to do with low-level performance but instead is a product of overall design. 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. By and large Graphite evolved gradually, hurdle by hurdle, as problems arose.

pages: 423 words: 21,637

On Lisp: Advanced Techniques for Common Lisp by Paul Graham

Amazon: amazon.comamazon.co.ukamazon.deamazon.fr

I feel fortunate to have worked with Alan Apt, a good editor and a good guy. 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. I owe thanks to many others, including Paul Becker, Phil Chapnick, Alice Hartley, Glenn Holloway, Meichun Hsu, Krzysztof Lenk, Arman Maghbouleh, Howard Mullings, NancyParmet, Robert Penny, Gary Sabot, Patrick Slaney, Steve Strassman, Dave Watkins, the Weickers, and Bill Woods.

pages: 404 words: 43,442

The Art of R Programming by Norman Matloff

Amazon: amazon.comamazon.co.ukamazon.deamazon.fr

For more information, refer to the books cited in footnote 1 at the beginning of this chapter. Graphics 283 13 D EBUGGING Programmers often ﬁnd 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 Conﬁrmation 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 conﬁrmation is the essence of debugging.

pages: 706 words: 120,784

The Joy of Clojure by Michael Fogus, Chris Houser

Amazon: amazon.comamazon.co.ukamazon.deamazon.fr

Kahan, William, and Joseph Darcy. 1998. “How Java’s Floating-Point Hurts Everyone Everywhere.” 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. Reading, MA: Addison-Wesley. Running quick-sort on a sorted sequence is an O(n2) operation, which for our implementation in chapter 6 completely defeats its laziness.

pages: 566 words: 122,184

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

Amazon: amazon.comamazon.co.ukamazon.deamazon.fr

If the number is prime, which means that a[i] is true, another for loop sets all the multiples of that number to false. 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. Even those programmers who use the Sieve of Eratosthenes won't implement it in precisely the same way that I did.

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

Amazon: amazon.comamazon.co.ukamazon.deamazon.fr

., 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: 624 words: 127,987

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

Amazon: amazon.comamazon.co.ukamazon.deamazon.fr

The purpose of understanding and analyzing systems is to improve them, which is often tricky—changing systems can often create unintended consequences. 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. Improve your KPIs, and your system will perform better.

pages: 968 words: 224,513

The Art of Assembly Language by Randall Hyde

Amazon: amazon.comamazon.co.ukamazon.deamazon.fr

See Write Great Code, Volume 1 (No Starch Press) or the electronic version of The Art of Assembly Language at http://webster.cs.ucr.edu/ or http://www.artofasm.com/ for details concerning the operation of cache memory and how you can optimize your use of cache memory. 8.5 For More Information The HLA Standard Library reference manual contains lots of information about the HLA Standard Library's extended-precision arithmetic capabilities. 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. This discussion includes what is perhaps the most important component of the HLA compile-time language, macros.

pages: 348 words: 39,850

Data Scientists at Work by Sebastian Gutierrez

Amazon: amazon.comamazon.co.ukamazon.deamazon.fr