
The Yoda of Silicon Valley - sohkamyung
https://www.nytimes.com/2018/12/17/science/donald-knuth-computers-algorithms-programming.html
======
maxtollenaar
My favorite Knuth quote: "Email is a wonderful thing for people whose role in
life is to be on top of things. But not for me; my role is to be on the bottom
of things. What I do takes long hours of studying and uninterruptible
concentration. I try to learn certain areas of computer science exhaustively;
then I try to digest that knowledge into a form that is accessible to people
who don't have time for such study."

source: [https://www-cs-faculty.stanford.edu/~knuth/email.html](https://www-
cs-faculty.stanford.edu/~knuth/email.html)

~~~
JimboOmega
I feel completely the opposite.

Not that email or any of the million other apps don't produce constant
interruptions - but in terms of what I want my role to be and what I find
pleasure in.

A world of high stimulation and constant social interaction? A million things
shouting at me and I have to sort through them and grab the most important one
and hop from thing to thing fast? That's what I like.

Focusing on one topic for hours, days, even weeks to really understanding
every facet of it? I think it'd kill me. I know people theoretically need
these big blocks of uninterrupted time to get work done, but I'd much rather
have a bunch of meetings where we can figure out the path forward.

I have mad respect for him... but I never could have been an academic.

I like to take in all those digested kernels of knowledge, I like to digest as
many of them as I can; I know I lose the details, but integrating them all
into something bigger has always been my dream; it's just how I live my life.

~~~
nambit
It's only after you've developed a deep understanding that any efforts at
integration would be successful. If you just like orchestrating, that's fine
but I've met too many managers/product managers who think up lofty ideas on
how to integrate various pieces without a deeper understanding of the
underlying technology.

~~~
sharadov
Yup, been around a lot of them, they are the ones who love to sling words
around and are a prime definition of _tech bros_ always looking to debate not
on the basis of firm knowledge but as a cover-up for their inadequacies.

~~~
godzillabrennus
I have seen the other side of this where the developers trying to implement
business requirements in code are making bad assumptions and end up in
confrontations with middle management because their technically "pure" vision
for how something should work doesn't solve the business goal.

~~~
nambit
Yeah. Seen this happen too. That usually points to a lack of (good) senior
leadership in the dev team (senior developers not product/managers).

------
pjmorris
My favorite Knuth story, attributed to Alan Kay (if you're around, would love
confirmation):

When I was at Stanford with the AI project [in the late 1960s] one of the
things we used to do every Thanksgiving is have a computer programming contest
with people on research projects in the Bay area. The prize I think was a
turkey.

[John] McCarthy used to make up the problems. The one year that Knuth entered
this, he won both the fastest time getting the program running and he also won
the fastest execution of the algorithm. He did it on the worst system with
remote batch called the Wilbur system. And he basically beat the shit out of
everyone.

And they asked him, "How could you possibly do this?" And he answered, "When I
learned to program, you were lucky if you got five minutes with the machine a
day. If you wanted to get the program going, it just had to be written right.
So people just learned to program like it was carving stone. You sort of have
to sidle up to it. That's how I learned to program."

[0]
[http://www.softpanorama.org/People/Knuth/index.shtml](http://www.softpanorama.org/People/Knuth/index.shtml)

~~~
mschaef
There's another interesting story about Knuth that's worth repeating here.

[http://www.leancrew.com/all-this/2011/12/more-shell-less-
egg...](http://www.leancrew.com/all-this/2011/12/more-shell-less-egg/)

The tl;dr is that Knuth wrote an elaborate implementation of a program to
solve a particular problem, and Doug McIlroy replaced it entirely with a six
step shell pipeline. (Knuth's program was written using his literate
programming tools, could be typeset in TeX, and involved some precise work
with data structures and algorithms.)

I love this story as an example both of Knuth's genius and perspective, but
also as a way to show what his level of dedication can achieve. It's an
amazing intellectual accomplishment.

I also love this story as a demonstration what those of us without that skill
and dedication can achieve using the advancements built on the work of Knuth
and others.

~~~
sobellian
I love that story, although I think the takeaway needs to be slightly updated.
It's quite possible that a sorted word count was easiest to do with bash and
unix utilities in 1992. Now, it's easier and more comprehensible in your
favorite scripting language (which I'm assuming _isn 't_ bash).

The real lesson is to program using the most powerful tools at your disposal.

~~~
flukus
There is no bash (or any scripting) involved, the complete command from the
article is:

    
    
      tr -cs A-Za-z '\n' |
      tr A-Z a-z |
      sort |
      uniq -c |
      sort -rn |
      sed ${1}q
    

The real benefit is that each is a single command that is easy to test in
isolation and it's multi-process. That's not possible in most scripting
languages.

~~~
sobellian
McIlroy literally calls it a script in his review (notice the ${1}).

Nothing prevents you from unit testing in scripting languages. Multi-process,
sure, but most people aren't looking for that.

~~~
flukus
> McIlroy literally calls it a script in his review (notice the ${1}).

Ok, there's a single shell substitution, if it was fixed would you still call
it a script? Technically the result of that is itself a sed script "3q", but
if you count either of those then there isn't a lot of wiggle room between
script and command, the arguments to tr are by far the most complex "script"
involved.

> Nothing prevents you from unit testing in scripting languages.

That is a world away from what I'm talking about. Each line of that command
can be executed on the CLI in isolation, you'd be replicating a lot more in
nearly any scripting language, except maybe perl and awk.

> Multi-process, sure, but most people aren't looking for that.

Neither am I generally, still quite nice when you get it for free though.

~~~
sobellian
You're really splitting hairs. You can execute a Python command in a REPL.
There's little material difference between scripts and commands for our
purposes. And scripting languages provide facilities to test functions in
isolation.

------
widforss
Taking the opportunity to post the video of Knuth mishearing the question
"What makes a good teacher?" as "What makes a good T-shirt?" at my uni.

[https://youtu.be/74BfHoE66rc?t=42m17s](https://youtu.be/74BfHoE66rc?t=42m17s)

~~~
martythemaniak
I wish the guy would have let him answer as to what the CompSci equivalent of
that T-Shirt is.

~~~
mindgam3
A few years ago, while doing a bit of a family history research project (Knuth
was my father's PhD advisor at Stanford), I stumbled across a rather awesome
t-shirt design. May I humbly submit "Knuth is my homeboy" as my entry to the
CompSci t-shirt contest. (not my own design, to be clear, I just came across
it on the internet)

[https://geekz.co.uk/shop/store/show/knuth-
tshirt.html](https://geekz.co.uk/shop/store/show/knuth-tshirt.html)

And here is a shot of the recursive shirt in action:
[https://laughingsquid.com/jacob-appelbaum-donald-knuth-
demon...](https://laughingsquid.com/jacob-appelbaum-donald-knuth-demonstrate-
the-recursive-homeboys-principle/)

------
enriquto
My favorite Knuth quote:

 _One of the first times I was ever asked about the title of my books was in
1966, during the last previous ACM national meeting held in Southern
California. This was before any of the books were published, and I recall
having lunch with a friend at the convention hotel. He knew how conceited I
was, already at that time, so he asked if I was going to call my books "An
Introduction to Don Knuth." I replied that, on the contrary, I was naming the
books after him. His name: Art Evans. (The Art of Computer Programming, in
person.)_

------
theonething
As mentioned in the article he is also a devoted Christian and one of the
smartest I know of.

Some of his writings on the subject:

[https://www-cs-faculty.stanford.edu/~knuth/things.html](https://www-cs-
faculty.stanford.edu/~knuth/things.html)

[https://www-cs-faculty.stanford.edu/~knuth/316.html](https://www-cs-
faculty.stanford.edu/~knuth/316.html)

------
pmoriarty
"I was sitting in Steve's office when Lynn Takahashi, Steve's assistant,
announced Knuth's arrival. Steve bounced out of his chair, bounded over to the
door and extended a welcoming hand.

"It's a pleasure to meet you, Professor Knuth," Steve said. "I've read all of
your books."

"You're full of shit," Knuth responded.

[http://www.folklore.org/StoryView.py?project=Macintosh&story...](http://www.folklore.org/StoryView.py?project=Macintosh&story=Close_Encounters_of_the_Steve_Kind.txt)

~~~
drfuchs
No way; I worked for him from 1978-1986, and never heard him say a naughty
word. Also, I tagged along when he went to Apple to meet Jobs, who wanted to
show him a late prototype of the Mac, and don’t recall hearing any such thing
at the time (and it would have shocked me).

~~~
aidenn0
I've also heard that story with several different people in the place of Jobs
(mid 90's it was almost always Bill Gates, for example), making me believe it
to be apocryphal.

~~~
Isamu
Also, it seems unlike Jobs to be reading algorithm books or to claim so - he
was not interested in writing software. Jobs would involve himself in the
user-facing functions of software.

Whereas I recall Gates claimed to have read them, or at least some of the
volumes, and found them mind-expanding. Gates wrote a fair amount of software
himself early on and later would still challenge people on very technical
points.

------
ChuckMcM
When Java was new, James Gosling and I gave a talk about it to a group that
included Don. When we gave the talk I was in the process of leaving Sun for a
startup. A couple of years later Don mentioned to me that the talk was the
first time we met and, at the time, he couldn't figure out if I was really
smart or really stupid for leaving Sun right after Java shipped. In 2010 we
both agreed that in the long term, it was the right choice for me, but neither
he nor I could have predicted that at the time.

------
cschep
“I am worried that algorithms are getting too prominent in the world,” he
added. “It started out that computer scientists were worried nobody was
listening to us. Now I’m worried that too many people are listening.”

cheers!

------
sytelus
Ok, so this journalist gets to spend WHOLE day with Knuth and all we get is
some bits of history and quotes from couple of Google guys. Massively lost
opportunity to provide window in this legends daily life, thoughts and
habits...

~~~
klenwell
> At age 19, Dr. Knuth published his first technical paper, “The Potrzebie
> System of Weights and Measures,” in Mad magazine.

I'd say she did something positive with the opportunity.

~~~
redshirtrob
I have a copy of the issue, so when I went to see one of his Christmas Tree
Lectures a few years ago I took it with me to get signed after the talk.

Instead of just signing it, he opened to his article and corrected a typo in
the Potrzebie article--I think it amounted to two numbers being transposed
somewhere around the millionths place (My copy is packed away from a recent
move so it's not too convenient to verify).

What was funny was he had a poem he used to remember the order of the numbers
after the decimal. He couldn't quite remember it, so he ssh'd into his home
machine (or University, dunno), fired up Emacs, and opened a file containing
the poem. Then he corrected the typo.

And that's how Donald Knuth "signed" my copy.

~~~
svat
+1 I was behind you in this line and can confirm this story :-) He was
surprised someone brought this and IIRC asked you how you got hold of this MAD
magazine issue. I remember him not wanting to sign without fixing the typo,
and also ssh-ing to find the correct numbers after he wasn't sure he
remembered them.

~~~
redshirtrob
Wow, that's wild. It makes me happy someone else remembers it. I kinda figured
it was just me as I think I attended the lecture alone that year--pretty sure
it was 2015.

FTR, the answer to how I got it: I made an off-hand comment to my wife about
the magazine and she tracked it down for the next gift-giving occasion.

------
sparrish
My favorite book from Knuth isn't computer-related at all.

3:16 Bible Texts Illuminated

[https://smile.amazon.com/3-16-Bible-Texts-
Illuminated/dp/089...](https://smile.amazon.com/3-16-Bible-Texts-
Illuminated/dp/0895792524)

~~~
pbiggar
The book where he discusses these is also wonderful: "Things a computer
scientist rarely talks about".

[https://www.amazon.com/Things-Computer-Scientist-Rarely-
Lect...](https://www.amazon.com/Things-Computer-Scientist-Rarely-
Lecture/dp/157586326X)

------
jordigh
Donald Knuth shaved the ultimate yak. He wanted to write a book with
mathematics in it so he implemented what for decades has been industry-
standard mathematical typesetting system: TeX.

That's remarkable. I just wish he'd finish the book.

~~~
fantispug
The details are even hairier.

He wrote TeX82 (modern TeX) in WEB, a literate programming language he
invented that could be tangled into the Pascal machine code or weaved into
literate documentation in ... TeX itself.

In fact he wrote WEB itself in WEB and by hand compiled the output of the
tangle program, which he ran on the tangle source to get the same output.

He also wrote the program METAFONT to produce the typefaces, which he used to
design the Computer Modern font.

And then he used that to write instruction books for TeX and METAFONT as well
as new editions of The Art of Computer Science and others.

TeX is still in regular use in the academic community (ported via Web2C) over
35 years later, despite the changes in technology in that time (with hacks to
deal with modern fonts, outputting PDFs instead of DVI, including images and
the like).

He taught the yak to shave itself, and it's still clean shaven 35 years later.

~~~
azag0
"In regular use" is an understatement. Virtually all manuscripts published on
Arxiv.org, which comprises a large portion of all contemporary physics
research output, is typeset in Latex.

------
gumby
Knuth has enormous patience for someone so productive.

My son used to refer to Knuth as "that amazing harpsichord player" and didn't
care about the computer science "stuff" I tried to tell him was really
important. And he had plenty of time to sit down with a kid and go through the
score of Fantasia Apocalyptica and laugh together at the musical jokes in the
score.

OTOH I either have to consciously decide not to stress about all the things I
want to get done or else...stress and push hard. Yet the things I feel driven
to accomplish are quite minor compared to Knuth's to do list!

------
dragontamer
Knuth is just ONE section away from writing about my (current) topic of study:
Constraint Programming.

His 4th volume of TAOCP is so big that its beginning for him to take decades
to write sections. Backtracking search + 3-SAT solvers is really interesting
(and very closely related to Constraint Programming), but I'm deeply curious
to know what his take on Constraint Programming will be.

Its really odd to be "waiting" for the next chapter of TAOCP. Its a serious
body of work that has spanned decades of research and writing... I really hope
he finishes the next section sooner.

Maybe I'll go and buy the fascicle for 3SAT and read it while waiting.

~~~
svat
In his recent Dancing Links talk (a couple of weeks ago), he mentioned a
generalization of exact cover that also covers constraint programming. You may
want to look into that (XCC) in the meantime, in Knuth's fascicle on Dancing
Links
([https://cs.stanford.edu/~knuth/fasc5c.ps.gz](https://cs.stanford.edu/~knuth/fasc5c.ps.gz)).

I know the feeling of waiting for new chapters of TAOCP; I'm waiting for
Chapter 8 on recursion because his idea of it is so different from everyone
else's.

~~~
taeric
What makes his idea different from everyone else's? I know he covers
coroutines, being something not really available in most languages. That said,
I thought it was an accepted term and I didn't think that was his invention.

~~~
svat
Oh sorry, to be clear, by "his idea of it" I meant "the way he thinks about it
[recursion]". What's different is that when most people learn programming,
they pick up the idea that iterative structures (loops etc) are simple, and
recursion is something more "advanced", harder to understand. Knuth thinks
that recursion is the simpler thing (what comes to humans/children naturally),
and the mark of a better programmer is being able to translate recursion into
iterative structures.

This seems to tie in with his attitude towards programming in general: while
in the zeitgeist the idea is that a good program builds better abstractions
until the structure of the program reflects human thought, Knuth seems to
think that a good programmer is one who starts with a human-level description
of the solution and carefully refines it until it translates into a good set
of instructions (in machine code). (There's no contradiction, but the point of
view seems different from the usual.)

He briefly mentions something related in his _Structured Programming with Go
To Statements_ (1974) [https://pic.plover.com/knuth-
GOTO.pdf#page=21](https://pic.plover.com/knuth-GOTO.pdf#page=21)

> I have always felt that the transformation from recursion to iteration is
> one of the most fundamental concepts of computer science, and that a student
> should learn it at about the time he is studying data structures. This topic
> is the subject of Chapter 8 in my multivolume work; but it's only by
> accident that recursion wasn't Chapter 3, since it conceptually belongs very
> early in the table of contents.

~~~
taeric
I think some of this is likely to be a product of the times. The vast majority
of early programming languages were not friendly to recursion. It wasn't at
all uncommon for functions not to be reentrant, and to rely on self
manipulation to set the return stack, if I recall.

Even today, for many "systems level" programs, you have to take extreme care
around recursion, since you are likely to blow the stack limits. (That is, you
can't just use recursion freely, but instead have to prove the maximum depth
that you will trigger it.)

That is to say, I don't see what makes this different than how most others
view recursion. If you can afford to do it, then you should do so. If you
can't, then you should be ready for a lot of his other tricks. (Threaded trees
being my personal favorite, at the moment. DFS with no stacks? Crazy talk! :)
)

~~~
svat
Definitely a product of his times (like everyone). Let me put it this way: to
my knowledge, Knuth is the only programmer from his times, still writing,
programming, and writing about programming. So you get a 1960s perspective
from someone who's seen (and programmed in) 2018; that's not very usual.

(BTW I'm not sure that Knuth would wholeheartedly agree with “If you can
afford recursion, then you should use recursion”. Perhaps he'd consider the
program half-written. That's in some sense the crux of what I think is
different.)

Let me put it another way: I thought I knew how to generate all permutations
of a set of numbers. When I saw questions about it on Stack Overflow or Quora,
I answered. When I opened Volume 4A, it disposed of what I knew in the first
half-page, and proceeded to discuss the problem for over 50 more pages. I
thought I knew about backtracking, having written backtracking programs
hundreds of times (always implemented using recursion). Knuth's section on
backtracking obliterated everything I knew (and with no recursion in sight).
So I'm looking forward to when he gets around to writing about recursion, to
see what I can (un)learn about something so fundamental.

~~~
taeric
His dlx algorithm makes heavy use of recursion. As do many of his cweb
programs. In one, he comments it as "textbook" stuff.

Your point on him being one of the main programmers from his time still
programming is fair.

~~~
svat
Ah but see, his DLX program is not written using recursion! Look at his CWEB
program dance.w from his website (or if you don't have cweave handy, download
the program from here: [https://github.com/shreevatsa/knuth-literate-
programs/blob/m...](https://github.com/shreevatsa/knuth-literate-
programs/blob/master/programs/dance.pdf) and click around on the hyperlinks) —
all the backtracking happens inside “main”; there are only two subroutines
“cover” and “uncover”, and neither of them is recursive.

Here is what he says in the (very early) draft of fasc16a (only 2.5 pages
written):

> We've already seen hundreds of examples of recursion in previous chapters.
> Early on, we encountered sequences of numbers that were de fined by relating
> each member to earlier members after getting started; these “recurrence
> relations” were sometimes simple formulas like […], sometimes more involved
> like […], and sometimes considerably more elaborate and complex. We also
> found that basic data structures for trees are inherently recursive, because
> all but the simplest trees are composed of subtrees. We discussed numerous
> instances where problems of sorting or searching or optimization could be
> solved effectively by a “divide and conquer” approach, with which a large
> problem is reduced to smaller problems of the same kind.

> Yet we didn't dwell on the recursive nature of those concepts. We
> transformed them into equivalent notions that could be dealt with directly
> and nonrecursively. Because “at bottom” a computer operates by means of the
> physical properties of electrons, which are _not_ recursive.

> For example, in Algorithm 2.3.1T we traversed the nodes of a binary tree by
> using an auxiliary stack A, not by using the recursive definition of
> symmetric order to de fine that algorithm in terms of itself.

Don't want to quote the whole thing (though there isn't much), but from the
sample I feel I'm going to learn from a new perspective (new to me, anyway).

~~~
taeric
This is near causing dissonance for me. I'm certain I had seen a version of
his where he did use recursion. Rereading, you are definitely correct that he
doesn't.

I know he has program in one of his books where he uses recursion to print the
contents of a tree. Maybe I was just confusing that. (Don't have my books
handy.)

That said, this is definitely going to make me study those programs more.
Hilarious how off I was in my memory.

(The use of goto statements like he does in the main routine cracks me up,
btw. Curious to know if these made a measured difference. With Knuth, I would
assume so.)

------
pengstrom
I had the pleasure to attend his 80th birthday conference
([http://knuth80.elfbrink.se](http://knuth80.elfbrink.se)) in Piteå, Sweden
where he also premiered his piece Fantasia Apocalyptica for church organ.

We attended the conference as students but still got to see the conference,
listen to the music and be at the birthday dinner free of charge. When I
talked to Knuth I was amazed by his humility. Every presentation was about how
grand he was, but he still was humble and friendly.

They say you shouldn't meet your heroes, but they're obviously not talking
about Knuth!

------
riemannzeta
Once met Yoda himself on the 59th street platform of the Metra next to the
University of Chicago. He needed to get to the airport within 45 minutes. I
told him he needed to call a cab. Now I get to tell people I once helped him
optimize an algorithm. ;-P

------
owenversteeg
“He’s a maximum in the community. If you had an optimization function that was
in some way a combination of warmth and depth, Don would be it.”

I love that quote.

------
melling
The Electronic Coach video of Knuth mentioned in the article:

[https://youtu.be/dhh8Ao4yweQ](https://youtu.be/dhh8Ao4yweQ)

He was ready for Moneyball and sports data science decades before everyone
else.

------
username33382
>“Here at Google, sometimes we just throw stuff together,” Dr. Norvig said,
during a meeting of the Google Trips team, in Mountain View, Calif. “But other
times, if you’re serving billions of users, it’s important to do that
efficiently. A 10-per-cent improvement in efficiency can work out to billions
of dollars, and in order to get that last level of efficiency, you have to
understand what’s going on all the way down.”

I'm interested in this low level systems opimization. What type of jobs hire
for this work? What areas in graduate school should one focus in? Is this type
of skill set still employable?

~~~
nwsm
There's a position like that in my company, open to new hires (only bachelor's
needed). The goal is to optimize algorithms and data analysis models that run
on our HPC cluster. It basically boils down to changing compiler settings and
seeing what runs the fastest.

~~~
supahfly_remix
Can you post a link (if there are no anonymity concerns)? Sounds like more fun
than my current job.

------
kieckerjan
Hmpf, considering that the author spent a whole day with Knuth there is
disappointingly little interviewing going on. Other people (e.g. Norvig) are
quoted more extensively.

~~~
gowld
At Knuth's current age-related physical state, he probably didn't say much
over the course of a day.

~~~
copperx
He still looks pretty healthy and mentally sharp.

------
dekhn
True Jeff Dean story time (this was directly related to me): when Jeff spoke
at Stanford, it was so crowded, Knuth had to sit on the floor (I think
somebody eventually noticed and offered him a seat).

------
radiusvector
My Uncle is a researcher and has one of those famous checks from Knuth for
pointing out an error in the book. Needless to say, he never intends on
cashing it in, and treats it like a little trophy.

------
li4ick
That picture with Knuth and TeX is really beautiful to me.

------
mpweiher
Funny, _The NeXT Book_ by Bruce Webster referred to Knuth as the "Obi Wan of
Computer Science".

I guess we can split the difference and agree on Jedi. :-)

~~~
benj111
Ah but who is the Han Solo of comp Sci?

~~~
azaras
Linus Torvald

~~~
josephv
He's definately chewbacca.

------
joaorico
I like these two quotes of Knuth where he lets us know how hard he worked.

\--

From this small interview [1]:

"When I'm working on a research problem I generally begin by filling dozens of
sheets of scratch paper with partial calculations. When I eventually get to a
point where I can think about the problem while swimming, then I'm often ready
to solve it."

\--

From this other interview [2]:

"So I went to Case, and the Dean of Case says to us, says, it’s a all men’s
school, says, “Men, look at, look to the person on your left, and the person
on your right. One of you isn’t going to be here next year; one of you is
going to fail.” So I get to Case, and again I’m studying all the time, working
really hard on my classes, and so for that I had to be kind of a machine.

I, the calculus book that I had, in high school we — in high school, as I
said, our math program wasn’t much, and I had never heard of calculus until I
got to college. But the calculus book that we had was great, and in the back
of the book there were supplementary problems that weren’t, you know, that
weren’t assigned by the teacher. The teacher would assign, so this was a
famous calculus text by a man named George Thomas, and I mention it especially
because it was one of the first books published by Addison-Wesley, and I loved
this calculus book so much that later I chose Addison-Wesley to be the
publisher of my own book.

But Thomas’s Calculus would have the text, then would have problems, and our
teacher would assign, say, the even numbered problems, or something like that.
I would also do the odd numbered problems. In the back of Thomas’s book he had
supplementary problems, the teacher didn’t assign the supplementary problems;
I worked the supplementary problems. I was, you know, I was scared I wouldn’t
learn calculus, so I worked hard on it, and it turned out that of course it
took me longer to solve all these problems than the kids who were only working
on what was assigned, at first. But after a year, I could do all of those
problems in the same time as my classmates were doing the assigned problems,
and after that I could just coast in mathematics, because I’d learned how to
solve problems. So it was good that I was scared, in a way that I, you know,
that made me start strong, and then I could coast afterwards, rather than
always climbing and being on a lower part of the learning curve."

[1] [http://authenticinquirymaths.blogspot.pt/2015/11/maths-in-
sc...](http://authenticinquirymaths.blogspot.pt/2015/11/maths-in-sc..).

[2] Transcript from here: [https://github.com/kragen/knuth-
interview-2006](https://github.com/kragen/knuth-interview-2006)

~~~
yread
I was also scared in the first year of college next to all these accomplished
programmers and math wizards and it definitely helps!

------
rdiddly
For some reason on this particular article I found it amusing to realize
several times that a given concept they were talking about was something I'm
familiar with, but it had been translated first from "nerd language" into
"layman." Pretty common practice for a general audience, so I'm not sure why
it stood out this time. Examples: bytecode, assembly language, frameworks,
machine learning. Counterexample: Libraries, where they used the actual word,
denying me the silly little pleasure of going "Oh you mean libraries."

~~~
Rebelgecko
I actually thought this article did a really good job (certainly better than
most) at explaining complex CS concepts.

------
gshubert17
Knuth says in the Preface to Volume 1 that "A shorter version of Volumes 1
through 5 [chapters 1-10] is planned, intended specifically to serve as a more
general reference and/or text for undergraduate computer courses; its contents
will be a subset of the material in these books, with the more specialized
information omitted."

I realize he can't shorten what he hasn't written, but I wish he had been able
to write this shorter version years ago, and then work on filling in the
details in the now-ever-expanding sequence of in-depth volumes.

------
ignoramous
One fine spring afternoon, I saw Don Knuth at the Golden Gate Park. I think he
and his partner were out bird watching or some such thing. I decided not to
approach them and let them be.

Seeing him in person is something I'd never forget and take it with me to my
grave. Such is the mastery of their craft that even a glimpse of their
presence from a distance leaves a lasting impression.

Don Knuth is simply too precious.

~~~
xendo
Partner? Jill is Donald's _wife_ since 1961!

------
reggieband
There are a few names in CS that stand out to me as legendary. Some examples
are Von Neumann and Turing. IMO, Knuth stands among them.

~~~
mayankkaizen
I always had hard time imagining how Von Neumann can be so intelligent? There
were geniuses and then there was von Neumann.

------
luord
I was unsure of what to get for christmas. Now I know, I want the full
collection of "the Art of Computer Programming".

~~~
jsymolon
It's not a novel to read through, front to back.

Even Dr. Knuth says to skip around and read relevant chapters.

~~~
derangedHorse
It can also be read through fine though. I’ve gotten the first volume and read
through the beginning without too much trouble, although the whole book is so
long and dense I don’t think I’ll be able to finish for a while...

------
gglitch
Can anyone ID this keyboard depicted in the article?

[https://static01.nyt.com/images/2018/12/18/science/18SCI-
KNU...](https://static01.nyt.com/images/2018/12/18/science/18SCI-
KNUTH3/merlin_148127301_135dcdcd-2f22-47d1-a749-1b0d997864e5-superJumbo.jpg)

~~~
alok99
Looks like a Logitech G19 to me. I wouldn't have thought Knuth would have a
gaming keyboard, let alone one with a screen.

EDIT: I think the other comment is correct, a Logitech G110

~~~
MagicPropmaker
I'm an old-school programmer (though not as old as Knuth) and I use a gaming
keyboard. I like the "click click" and full travel and the new "buckle spring"
keyboards I can get aren't as good as the cherry clicky ones.

I learned to type on a a mechanical typewriter in High School and in college
punched programs on keypunch machines. A lot of us old-timers use gaming
keyboards.

~~~
devereaux
Gaming keyboard also have extra keys, which you can map to macro or other
things you find useful.

I usually remap the control keys to act as a modifier for Unicode characters
(as Caps and Enter are my "Control" keys) but that's not much. I need more
keys.

I have 2 keys to switch to the next/previous tab, in browsers, consoles and
programming environments- the same keys can switch virtual desktop with a
modifier.

I also have a key to invert my screen (black on white vs white on black), a
key to either switch to a terminal doing a ssh to a specific server or spawn a
terminal and start that ssh, etc.

It takes some time but offer greater productivity. I dislike the ticking of
mechanical keyboard, and I really prefer "chiclets" keyboard as they generally
require less force to be applied, but I would consider a mechanical keyboard
if only for the extra keys.

------
sailfast
> "Following Dr. Knuth’s doctrine helps to ward off moronry. He is known for
> introducing the notion of “literate programming,” emphasizing the importance
> of writing code that is readable by humans as well as computers — a notion
> that nowadays seems almost twee."

I liked a lot of this profile, but this came off as kind of weird.

~~~
IfOnlyYouKnew
I seem to remember older programming languages (COBOL?) being far closer to
English-as-spoken as they are today, using, for example Do/END instead of
today’s more common c-style { and }.

~~~
Roboprog
Literate programming has next to nothing to do with “English like grammars” or
“self documenting” tongue twister symbol table names.

It has to do with writing documentation, and embedding little bits of code to
do what the documentation describes, with a special build process to create
the compiled program from the snippets within the documentation.

It’s kind of the inverse of Javadoc.

------
jcoffland
> More worrisome, perhaps, are the algorithms that are not written by humans,
> algorithms written by the machine, as it learns.

Can anyone show even one example of a computer writing an original and useful
algorithm on it's own? Total misunderstanding of deep learning and "AI" is so
common in today's PopSci.

~~~
currymj
I actually think this is a pretty literal description of automatically learned
decision trees, which are used in practice (directly or as sub parts of state-
of-the-art techniques like gradient boosting). It is basically learning a
series of complex nested if statements.

Edit: also, there is actual work done in so-called “program synthesis”,
especially employing Bayesian techniques, although it’s way more experimental
and I haven’t heard of it being used “in the wild”.

~~~
modriano
Decision tree models are trained by a machine learning algorithm that a human
implemented. DTrees don't create new algorithms, they are calculated/trained
through the application of an algorithm on data.

You can find these DTree-generating algorithms in any decent machine learning
algorithm textbook, and you can execute the steps by hand. For example, on
page 56 (or pdf page 68) of [0], you can step through the ID3 decision tree
algorithm. At no point is a new algorithm generated.

[0]: [https://www.cs.ubbcluj.ro/~gabis/ml/ml-
books/McGrawHill%20-%...](https://www.cs.ubbcluj.ro/~gabis/ml/ml-
books/McGrawHill%20-%20Machine%20Learning%20-Tom%20Mitchell.pdf)

~~~
currymj
to my understanding, a bunch of nested if-else statements is an algorithm, and
if you change all the conditions in the if statements, you get a different
algorithm.

so e.g. ID3 is an algorithm, designed by a human, that produces new
algorithms, only indirectly designed by a human. we may be talking past each
other, though. i just think it's reasonable to apply the word "algorithm" to
things that are simple/stupid enough to be generated automatically, and so
it's no big deal to talk about algorithms writing algorithms.

~~~
jcoffland
> to my understanding, a bunch of nested if-else statements is an algorithm

A bunch of nested if-else statements can be reduced to a boolean expression
and a boolean expression is hardly an algorithm. If you change the conditions
you simply get a different result not a new algorithm.

------
Roboprog
Irony: “literate programming” means pretty much the opposite of “self
documenting code” (AKA - undocumented code)

First write the documentation, then embed relevant bits of code next to the
relevant discussions, then have a special compiler / build process create the
binary / program.

------
timcederman
[https://blog.codinghorror.com/the-enduring-art-of-
computer-p...](https://blog.codinghorror.com/the-enduring-art-of-computer-
programming/) contains images from his Mad Magazine article.

------
criddell
> Dr. Knuth has gone so far as to argue that some computer programs are, like
> Elizabeth Bishop’s poems and Philip Roth’s “American Pastoral,” works of
> literature worthy of a Pulitzer.

I'd love to know which programs he's thinking of.

Any ideas?

~~~
martinhath
I think this is from the back of Physically Based Rendering[0] by Pharr,
Humphreys, and Jakob (3rd ed). The book is also available online[1].

[0]: [https://www.pbrt.org/](https://www.pbrt.org/) [1]: [http://www.pbr-
book.org/](http://www.pbr-book.org/)

------
laxd
Donald Knuth's 24th Annual Christmas Lecture: Dancing Links
[https://www.youtube.com/watch?v=_cR9zDlvP88](https://www.youtube.com/watch?v=_cR9zDlvP88)

------
bjourne
I've been at one of his Ask Me Anything-lectures. They are pretty cool, but I
feel that they are limited by the audiences questions. If he doesn't get
interesting questions then he can't provide interesting answers.

I wanted to ask if he had Autism because he looks, talks and walks as if he
had, but I didn't get the chance. I wonder if Knuth has elaborated on the
subject? Anyone knows?

~~~
svat
It's really rude to ask someone about their medical conditions, even more so
in public. Please don't do that. It is also not a good idea to attempt to
diagnose psychological issues from a distance.

(But if we're playing that game, Wikipedia defines "autism" as "a
developmental disorder characterized by troubles with social interaction and
communication, and by restricted and repetitive behavior", and Knuth is
supremely good at communication and remarkably good at social interaction for
a (self-described) "geek" \-- if you go over his life history (e.g.
[https://www.youtube.com/playlist?list=PLVV0r6CmEsFzeNLngr1Jq...](https://www.youtube.com/playlist?list=PLVV0r6CmEsFzeNLngr1JqyQki3wdoGrCn))
and consider all his activities -- being part of social clubs and
fraternities, helping with the basketball team, dating and getting married,
playing pranks on people, the affection with which he talks about his wife and
children, his humorous outlook, etc -- then there does not seem to be any
evidence of what you're thinking. Even the current article speaks of his
warmth. But really, we shouldn't be doing this.)

------
larrywright
Just out of curiousity, does anyone know what kind of notebooks and paper he’s
using in the photo captioned “A few notes”?

~~~
svat
Yes the notepaper with triangular tiling was gifted at Knuth's 80th birthday
celebration in Piteå, Sweden:
[http://knuth80.elfbrink.se/](http://knuth80.elfbrink.se/) (Sorry I don't
remember where I read/heard about this.)

~~~
svat
Ah one place I ran across this: see 16:05 of Knuth's 2017 Christmas lecture
([https://www.youtube.com/watch?v=BxQw4CdxLr8](https://www.youtube.com/watch?v=BxQw4CdxLr8)):

> I got a nice piece of paper here to work with. They had a conference in
> Poland last year [BachoTeX 2016] and they sent me this nice pad of paper and
> I like it so much that I decided at my birthday party next month I gotta
> give out notepaper that's... [audio drowned by laughter] But actually the
> notepaper at my birthday party is going to be triangle... paper. Because I
> have a feeling that all kinds of mathematics has never been invented yet
> because people haven't been given triangle... [laughter].

------
Fede_V
The world would be such a better place if there were 1000 more people like
him. What a wonderful human being.

~~~
laxd
Donald Knuth, Noam Chomsky, David Attenborough. I don't see why we need more
arguments to allow human cloning :p

------
peter303
DK still gives an annual lecture at Stanford at the end of the year.

Here is this years:

[http://scpd.stanford.edu/free-stuff/live-webinars-
lectures/d...](http://scpd.stanford.edu/free-stuff/live-webinars-
lectures/donald-knuths-annual-christmas-lecture)

------
mnemotronic
At some point, I loaned out Vols 1 & 3 of my 1981 edition to a co-worker then
forgot about it. Adios! Same thing happened to my DVD set of "The Prisoner"
series with Patrick McGoohan.

Let that be a lesson: If you loan something out, consider it a gift.

------
rampart81
I remember when I took the programming algorithm class back in college. That
was the first time I saw Dr. Knuth's book the art of programming... and I was
thinking "what the? Are we supposed to read this?"

------
40acres
I just read the outline for volume one, sounds really interesting. Has anyone
read V1? What sort of mathematical background is required to understand it? Is
it proof heavy and really terse like CLRS?

~~~
commandlinefan
I've read the first three, and attempted every single exercise (besides the
few he marks as "suggested research problems"). It took me four years to
finish, and I had a MSCS when I started. The first volume is probably the most
math-intensive, but also the easiest, since a lot of the math is review. V1 is
split into two parts: a pure math half, and then a programming half. All of
the programming examples and exercises are done in a custom assembler that he
calls MIX, but you can find emulators online to run your programs. I've read
CLRS and Knuth and I definitely enjoyed Knuth a lot more - there's just
something about his writing and exposition that makes the books compelling.
They dare as well as entice you to understand them. It's not really as proof-
heavy as CLRS IMHO, and TAOCP covers different ground that CLRS does; the only
real overlap there is that volume 3 covers sorting algorithms.

~~~
Jtsummers
If you like the math in Volume 1, or find yourself having difficulty with it,
_Concrete Mathematics_ is a good companion (though also challenging). It goes
into greater depth on some of the topics in Chapter 1 of _TAOCP_ and some
additional directions. It started as a course aimed at providing the
mathematical basis for going into _TAOCP_.

~~~
commandlinefan
Yep, that's on my (very long) to-read list.

------
orliesaurus
Good article, two things: I noticed looking at the pictures after reading the
whole thing in a go...

He looks nothing like Yoda! Wondering what made the author pick that title!

He has/had a standing desk at home!

~~~
commandlinefan
Somebody actually changed the title of the post, so now it only says Yoda and
doesn't reference Knuth at all. Seems backwards to me.

~~~
orliesaurus
yeah that's even worse: it's super click-baity now

------
johnvega
Golang comes to mind when I read this:

"He is known for introducing the notion of “literate programming,” emphasizing
the importance of writing code that is readable by humans ... "

~~~
IfOnlyYouKnew
I believe he was thinking far more of something like Jupyter Notebook.

I’m waiting for VSCode to implement a bit of API that would allow me to start
on an extension turning comments into first-class citizen, with, for example,
diagrams, links, or images.

~~~
currymj
But it's not really literate programming as Knuth envisioned it. A very
important point was that you could write things in any order, and then use
tangle to produce source code in the correct order for execution. Jupyter
notebooks don't enable this, and in practice evaluating cells in the wrong
order is a common mistake if you aren't careful (I've often just given up and
restarted the kernel).

Imagine if they did, though. You could do something like put all your imports
and preprocessing in an appendix. Or even more complicated: something like
writing the inner loop of a function first, discussing it, and only afterwards
writing the rest of the function and all the scaffolding.

This would be great, but I've yet to see a true literate programming tool that
would actually be usable for my day to day tasks.

------
purplezooey
These books are truly amazing and I refer to them often. What I like the best
is that they are so thorough that you know they are right, vs. the first
google search hit.

------
yalogin
One thing I found really fascinating in the article is, the author when trying
to provide an example of an algorithm used the "Command+F" combination to
suggest searching on a page. This is distinctly a mac thing. Not just that it
doesn't exist on Windows. Have we moved to a point where using Mac only things
is acceptable in a general article like this? I mean, even now the bulk of the
machines in the world run Windows, so is that an error in proof reading or is
that ok now? I couldn't have imagined someone doing that 10 or even 5 years
ago.

~~~
slaman
Not sure why I'm engaging this...

I think it was allowed because that knowledge of the shortcut is ubiquitous
enough that it is understood by most everyone.

I imagine the offices at the times use Macs.

I'd also argue that "the bulk of the machines in the world" run unix-like
operating systems by no small margin.

It's true though that for most of the past few decades 'Ctrl+F' would make
more sense, and it still remains an interesting editorial decision.

------
sudovancity
I love all the Knuth stories in here, shows how much of an impact this man had
on us.

------
anderspitman
Don't have time to look through the code right now, but it seems like a lot of
these effects could be implemented as cellular automata (a la Conway's Game of
Life). Obviously there are some more advanced simulations going on here
though.

------
known
He became bald by 25 :)

------
hudo
What NYT thinks devs are doing in Silicon Valley: AI and machine learning
hacking in VR 3D

What devs are really doing in Silicon Valley: debugging yet another "undefined
is not an function"

~~~
aleden
Most of programming is just moving shit around; not interesting mathematics
like knuth has done

~~~
time-domain0
\- IT: Sanitation engineers

\- Developers: Hazmat engineers

\- CS: Civil engineers

~~~
fouc
Sounds accurate to me, but I'm interested if people will downvote you because
they don't like the IT line.

~~~
delinka
Looks like it gets worse down the list, so I don't think the IT folk will
complain too much.

edit: Yes, whether you feel "Civil engineering" is worse than "Hazmat
engineering" is a subjective matter.

------
jhfdbkofdcho
Except Donald Knuth is 7’ tall.

~~~
MordodeMaru
Taller than life.

