Rant: "Knuth, The art of computer programming" is overhyped
from kSPvhmTOlwvMd7Y7E@programming.dev to programming@programming.dev on 23 Oct 2024 10:19
https://programming.dev/post/20881021

The title. I have read many technical books (mostly compilation, programming languages & automata) , blogs and whatnot, and recently borrowed the above mentioned book Volume4 (combinatorial problems) from a local library. Just to give a try since Knuth is such a respected person in computer science.

It is by far the most frustrating and maddening book i ever laid my eyes upon. The author doesn’t make the slightest effort to explain why something is useful, changes examples before explaining why previous example is interesting or how it shows why X is useful. On page 8, he says that “Graeco Latin squares allowed to François Cretté de Palluel to do with 16 sheeps, what otherwise would require 64 sheeps”. How & why ?? No fucking clue. I know i am not the smartest person on earth, but i would love a little hand holding here, you know to explain a concept he introduced 2 pages previously, and gave 3 random anecdotes about.

The writing style is a complete opposite of what I (and I believe, what are most people ) am expecting. If you know something, it won’t be useful, and you don’t know something : don’t count on the book for explanation. I had the physical urge to slap Knuth. It’s absolutely maddening.

He then goes on his little hobby to gather 5 letter-English-words, and gives some fancy looking graphs with fancy names (3 cubes, Petterson graph, Chvatal graph). For all what i know, it could be graphs called 42 and graph Blabla. Again no clue how it’s useful, nor why it’s interesting. He introduces some definitions and theorems.

I am on page 26 (thr book is thicker than a bible) i think i am done. This book will not make you a better programmer, i have no idea who and for what reason could possibly find it useful?

If you think i am overreacting and should continue reading, please tell me so, but i don’t expect it to get better

#programming

threaded - newest

dragontamer@lemmy.world on 23 Oct 2024 10:37 next collapse

Why didn’t you start with the fundamentals book Volume 1?

You just jumped directly into complex combinatorics and then complained that the material was too difficult.

kSPvhmTOlwvMd7Y7E@programming.dev on 23 Oct 2024 10:39 collapse

Because volume 1 is not available in the library

Edit: but also the volumes aren’t not dependent on each other. They treat very different topics, i doubt reading Volume 1 will help with Volume 4.

dragontamer@lemmy.world on 23 Oct 2024 10:50 next collapse

Well maybe if you started on book 1 chapter 1, you’d know how to read these books.

<img alt="" src="https://lemmy.world/pictrs/image/9fb6aeee-2e18-4623-9f38-bdad5bcf4549.jpeg">

GetOffMyLan@programming.dev on 23 Oct 2024 12:41 next collapse

Holy crap lol this response made OPs edit the most incorrect thing I’ve ever seen.

kSPvhmTOlwvMd7Y7E@programming.dev on 23 Oct 2024 13:41 next collapse

Again, Knuth himself said in a preface that Volumes 2 through 5 are independent.

dragontamer@lemmy.world on 23 Oct 2024 15:12 next collapse

Chapter 1 and Chapter 2 (which make up Volume 1) is repeatedly mentioned to be special and fundamental to the rest of the book series.

superb@lemmy.blahaj.zone on 23 Oct 2024 15:47 collapse

Right, volumes 2-3 are independent. Volume 1 isn’t.

I don’t think your opinion is necessarily wrong, but you should give the books another try starting from 1.

kSPvhmTOlwvMd7Y7E@programming.dev on 23 Oct 2024 17:08 collapse

I wouldn’t bet my eye on it, but who knows!.. Maybe he was a better teacher before!

superb@lemmy.blahaj.zone on 23 Oct 2024 18:14 collapse

I don’t understand what you’re getting at? Clearly book one is meant to give a foundation to every the other books in the series. Now you’re getting all huffy because you don’t understand this book without that foundation.

I’m not saying that you’re wrong or stupid. I’m saying if you read the first book then you might actually get something out of the rest. You also might not! It’s equally possible that this series just isn’t helpful for you.

kSPvhmTOlwvMd7Y7E@programming.dev on 23 Oct 2024 18:39 collapse

I am mostly complaining about his writing style. Obviously the subject itself is interesting (to some people)

bane_killgrind@slrpnk.net on 23 Oct 2024 17:29 collapse

I like step 18

nulluser@programming.dev on 23 Oct 2024 15:44 next collapse

aren’t not dependent on each other

So, they are dependent on each other.

bane_killgrind@slrpnk.net on 23 Oct 2024 18:32 collapse

🏴‍☠️

hades@lemm.ee on 23 Oct 2024 11:13 next collapse

I don’t think it’s overhyped, at least I’ve never heard anyone hyping it up so much. I would be happy to recommend you other books if you want :)

I also don’t think it’s a big deal if you didn’t like the book. I don’t think even Knuth himself would be upset, really.

zerofk@lemm.ee on 23 Oct 2024 11:20 next collapse

It is important to know that these are books for computer scientists more than for software engineers. They are basically mathematics textbooks, about the mathematics of algorithms. They focus on proving theorems rather than implementing useful algorithms.

There is a book called concrete mathematics that is sort of an introduction to TAOCP. If you’re interested in the basics that may be a good place to start. It has a better title than TAOCP in that it explicitly mentions mathematics, but also an equally bad one because it’s very much theoretical rather than concrete.

kSPvhmTOlwvMd7Y7E@programming.dev on 23 Oct 2024 13:40 next collapse

That sounds interesting, will take a look. I am not against theoretical computer science, i just think Knuth doesn’t reads like a good teacher…

thesmokingman@programming.dev on 23 Oct 2024 19:57 collapse

He reads like an academic. This is a really interesting perspective; I’ve never thought anything of his writing because it’s what I’m used to from normal journals. There is a style, good or bad, that comes from this stuff.

magic_lobster_party@fedia.io on 23 Oct 2024 20:35 collapse

TAOCP is a misleading title. It shouldn’t be computer programming. It should be computer science.

For most people, programming is the engineering discipline. I think that’s a very different art form. Software engineers are rarely dealing with the type of problems TAOCP is concerned about.

actually@lemmy.world on 23 Oct 2024 15:08 next collapse

I find this validating 30 years after I spent weeks banging my head on these volumes. I meekly gave up and was not brave like you who called it what it was: horribly written

FizzyOrange@programming.dev on 23 Oct 2024 19:29 next collapse

Yeah I mean it’s definitely a reference volume of last resort, rather than a tutorial you would read cover to cover. Clearly a genius but he explains things as if you already understand them, and can also read his mind.

That said, for a lot of the content the only alternative is research papers and they are even less accessible. I definitely would only use it if I couldn’t find answers anywhere else though.

thesmokingman@programming.dev on 23 Oct 2024 19:55 next collapse

My degree is in combinatorics. All of the fancy words you’re not a fan of are core ideas (the Petersen graph is really neat). I view The Art… as an academic work for academics who aren’t necessarily excited about the real world (which is my approach to combinatorics). If you’re not one of those people, you’re not interested in becoming one of those people, or you don’t work/research something that needs incredible optimization, you can safely skip it. Once you go into heavy proofs, the utility is very debatable.

CodeMonkey@programming.dev on 23 Oct 2024 20:24 collapse

TAOCS has a reputation for being very deep and thorough, not for being a good introductory text. One of my professors said that in his (very long) industrial career, he only met one person who actually read the books beginning to end but everyone looks something up in them once or twice.

That has been my experience. I once needed to find out how to solve a very specific problem (I think it was calculating statistical values on an infinite stream). I found the single copy of TAOCS in the office reference library, read the relevant section, and implemented the suggested algorithm.