Knuth Previews New Math Section For 'The Art of Computer Programming' (stanford.edu)
In 1962, 24-year-old Donald Knuth began writing The Art of Computer Programming -- and 55 years later, he's still working on it. An anonymous reader quotes Knuth's web site at Stanford:
Volume 4B will begin with a special section called 'Mathematical Preliminaries Redux', which extends the 'Mathematical Preliminaries' of Section 1.2 in Volume 1 to things that I didn't know about in the 1960s. Most of this new material deals with probabilities and expectations of random events; there's also an introduction to the theory of martingales.
You can have a sneak preview by looking at the current draft of pre-fascicle 5a (52 pages), last updated 18 January 2017. As usual, rewards will be given to whoever is first to find and report errors or to make valuable suggestions. I'm particularly interested in receiving feedback about the exercises (of which there are 125) and their answers (of which there are 125).
Over the years Knuth gave out over $20,000 in rewards, though most people didn't cash his highly-coveted "hexadecimal checks", and in 2008 Knuth switched to honorary "hexadecimal certificates". In 2014 Knuth complained about the "dumbing down" of computer science history, and his standards remain high. In his most-recent update, 79-year-old Knuth reminds readers that "There's stuff in here that isn't in Wikipedia yet!"
You can have a sneak preview by looking at the current draft of pre-fascicle 5a (52 pages), last updated 18 January 2017. As usual, rewards will be given to whoever is first to find and report errors or to make valuable suggestions. I'm particularly interested in receiving feedback about the exercises (of which there are 125) and their answers (of which there are 125).
Over the years Knuth gave out over $20,000 in rewards, though most people didn't cash his highly-coveted "hexadecimal checks", and in 2008 Knuth switched to honorary "hexadecimal certificates". In 2014 Knuth complained about the "dumbing down" of computer science history, and his standards remain high. In his most-recent update, 79-year-old Knuth reminds readers that "There's stuff in here that isn't in Wikipedia yet!"
Donald Knuth is an elitist. It is not necessary to have a background in mathematics to write software. I taught myself PHP and I certainly don't have any kind of mathematics background whatsoever. It isn't dumbing down as he claims. It's about creating opportunities. If you can code and you can do it well without mathematics, so be it. The math side is for those that want to do research. I work in the real world ....
Thanks, Donald!
I was with you until "I taught myself PHP."
I'm just a girl
Donald Knuth is an elitist. It is not necessary to have a background in mathematics to write software. I taught myself PHP and I certainly don't have any kind of mathematics background whatsoever. It isn't dumbing down as he claims. It's about creating opportunities. If you can code and you can do it well without mathematics, so be it. The math side is for those that want to do research. I work in the real world ....
In the "Art of Computer Programming" context mathematics includes various things related to the performance of algorithms (code). Such things are useful, even essential, well beyond the domain of research, in many areas of the real world of software development (coding).
Trump dislikes Knuth and black people!!!!
I've never looked at PHP. I have done javascript/ecmascript. A pathetic pile of shit called a language. I've heard PHP is worse than ecmascript, but as I've never done PHP I don't really know.
So, you taught yourself PHP and can call whatsisname irrelevant?
I can only hope I can somehow track your screen name to the name on your resume and get it shitcanned before it hits my desk.
bought Knuth's 3 books in the 80s
invaluable
retired, haven't bought any of his newer books
At least PHP doesn't use the same operator for addition and concatenation like JavaScript. PHP is better. JavaScript is worse.
When I want a tiny webserver I reach for "php -S" because node.js is bloated shite and smells of hipsters.
captcha: circus
where the hipsters belong
Naturally, I looked up martingale on Wikipedia. Yes, it's there, and I learned something on a dull Saturday night.
FFS - those who want to model the real world need to be able to pick up a bit of mathematics somewhere.
That's why in my workplace we have actual engineers churning out shitty code instead of CS graduates who could produce wonderful and efficient code if they had some clue where to start. If you can't even answer the question "what's a fourier transform?" then you are doomed to attempt to solve many problems in ways that will take orders of magnitude more time than really shitty code from someone who can.
You don't have to start with it, but if you don't pick up a bit of mathematics along the way in something that is a very mathematical field you will be very limited in what you can do.
At least PHP doesn't use the same operator for addition and concatenation like JavaScript.
Um, Java and Python also support string concatenation using the + operator. So that's maybe not the most awesome argument.
Has Trump grabbed any interns by the pussy?
Ambiguous operators + dick typing = recipe for confusion.
Cast everything ((parens)) everwhere.
"There are more things in heaven and earth, Horatio, Than are dreamt of in your philosophy. your philosophy"
Yes, you are correct, you don't need much math for some types of programming. However, it saddens me that you would attack a man for wanting to expand and master the study of computer science. He has literally devoted decades of his life to writing books to help programmers such as yourself get better at their craft. If you don't want to learn more about your trade, that is fine too. But don't get upset if you get passed over for a job in favor of some other guy who cracked open Knuth and worked all the exercises.
HA! I just wasted some of your bandwidth with a frivolous sig!
I've never needed to add two strings, or concatenate two numbers.
sudden 5And
I think the real problem is partial substitutability.
In both php and javascript if you use a number where a string was expected or a string where a number was expected the program will blunder on. If you are lucky it will produce the right results, if you are unlucky it will produce wrong answers. It is relatively unlikely to produce an error message and if it does that error message is likely to be a long way from where the mistake was made.
php's separation of the addition and concatenation operators increases the chance that a program will produce the right results despite accidental using the wrong type but it's still a minefield.
Java is statically typed. A caller can only pass your method the types it was expecting.
Python is dynamically typed but forbids use of the "+" operator on mixed strings and integers and will never compare a string an an integer as equal. So using an integer where a string was expected or vice-versa is likely to fail fast.
note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
You're full of shit: Before his resume hits your desk, yet you said you're retired, bullshitter? Another lying wannabe bigshot with a fake name online talker on slashdot is you. Why am I not surprised?
The undisputed classic in this field is the final (and seminal) work of W. Richard Stevens: "The Art of Autoerotic Asphixiation".
> I taught myself PHP
That's awesome. I respect anyone who has the desire to learn, the puts in the work, and has the discipline to see it through.
PHP is of course a language, a set of vocabulary. At the back of any textbook, you'll find a glossary, the language or vocabulary used in the book. You've already learned the language, the glossary, of PHP programming. If you look, you may find there's a lot of cool stuff in the other parts of the book, systems architecture stuff, software engineering, analysis of algorithms, etc.
You need to learn a programming language or two before you learn analysis of algorithms or software engineering, because the languages are the vocabulary words of the field.
To give a concrete example, when I started my current job, the company had a software system that worked - mostly. A team programmers had worked several years on it, and all knew the language they were working in. Customers just wanted it to be faster. It was definitely too slow. Although it was my first month on the job, when I heard the complaints of slowness I said in a meeting "I'd like to take a look at that; I can probably make it 20%-30% faster easily enough for now, then do more after I understand how it all works." The team was rather skeptical, in fact they chuckled out loud at my claim, saying "I rather doubt you can do that". "How long do you think that'll take?", they asked. "Give me a week", I said, though I hadn't yet seen the code. They laughed again, hundreds of thousands of lines of code and this new guy was going to make it 20%-40% faster in a WEEK? Doubtful, they said. To put me in my place, they said "sure, go ahead and try that [wiseguy]."
As I left the meeting I realized I had just taken a big risk. When I went home I told my wife that I had just bet my reputation at the new job on a claim I only hoped I could fulfill. If I failed, it would establish that I'm an arrogant prick. If I succeeded, I'd be known as possibly the best programmer in the building.
Well a week later I had it running 30% faster. Why could I, in a week, make drastic improvements to code they'd been trying to speed up for months and years, code I'd never even seen before? They all knew the language almost as good as I did. But I had been taught to study much more than the language. They knew C, Perl, and Erlang; I knew algorithms and cache theory. So in a week I did in fact make major improvements to their years of work.
Now, I'm going to go upstairs and check the progress of my benchmark. Now six months into the job, a major customer again complained about slowness, so I've been looking at that for a few days. I hope to see that my three day's work has made the system another 20% faster. I'm a tad nervous because I need to impress the new boss, I think that by learning more than just the language (glossary terms) I'll be able to do that.
I mean, "Concrete Mathematics" is a great book more accessible than his TAoCP math sections, more encompassing and with its own approach towards notational conventions. Basically I turn to it when the TAoCP math sections get stuck in too dense and obscure descriptive and ad-hoc math.
When the math is mainly accompanying algorithms, it just cannot be stacked up in a pedagogical and accumulative manner but has to follow the ordering of the algorithms.
And make no mistake: TAoCP is obscure and quaint and with little impact on the real world in its actual code sections (which are written in the assembly language of non-existing architectures). Burying the rather mainstream relevant math alongside and structuring it alongside as a side thought is not doing it a favor. It's far too non-trivial for that, and it applies to much more than the presented algorithms.
"Concrete Mathematics" is a good go-to text series for generating functions, series manipulation, and the general uglinesses underlying algorithmic complexity analysis.
I really hope you will retire before 20 years from now on, because at that time being a self-taught PHP developer will be totally worthless on the job market. That's why the maths are important. The more the time grows, the more low cognition level skills loose their value.
So now you're doing web services in PHP for a living. I'm pretty sure in a not so distant future this will be replaced by a series of drag and drops of functionality boxes in a special designed software that a guy paid on tenth of your salary can do. What will you do when that time arrives? Develop the boxes, these require a lot more maths. Develop the software that produce the software from the boxes? That requires a tremendous amount of maths.
Yes it is not necessary to have a big background in maths to write basic software now, thanks to simpler programming models. The thing is, writing those software will be unneeded pretty soon, because the next programming models will be so simple that they will render yours obsolete. You're like the mechanic refusing to learn how electric/hybrid vehicles work. No consequence right now, but not a very safe bet on the future...
Video of some good progressive thrash music
But craftmanship.
For example, even simple things like hash tables and balanced trees are beyond what most current CS graduates can implement or do understand. Forget about things a bit more complicated like a complexity analysis, or a formally specified invariant or pre- and post-conditions. If you do not understand the basics, all higher-order constructs are meaningless because you can only memorize how they behave, but you can never understand it or verify your understanding. And your understanding will at the very least be incomplete and partially wrong.
CS continues to fail (and in fact it is getting worse) at education engineers. Yet the human race knows that for technology you need engineers as soon as you are customizing things or doing new things. Until and unless this gets finally understood and becomes the norm, software and everything built around it will continue to suck badly.
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
last one was 4a....
Last was 4a. First two were massively outdated. I still have to still admit they are about "computer science". Which should not be what graduates in computers should not have graduated in since '85. Should have been a balance between the science and the engineering. The science part being encryption. Everything else he explained in obtuse language. I'm actually sad he never wrote "the" book on making a compiler. He could have actually predicted superscaler branch prediction with which on ryzen right now includes nural networks.
Obligatory Doctor Fun reference.
-------
Warning: Slashdot may contain traces of nuts.
Is anybody aware of better alternatives that are easier to read and can still impart the necessary mathematical background knowledge?
Some people here already mentioned a couple: "Concrete Mathematics" (Ronald L. Graham and Donald E. Knuth, 1994), and "Introduction to Algorithms" (Thomas H. Cormen and Charles E. Leiserson, 2009).
Whenever someone doubts you can improve performance, remind them that there ain't no such thing as the fastest code.
PHP June 8, 1995 (fucking hipster lang, use old school like JS)
JS May 23, 1995
For several years. WTF?
an ill wind that blows no good
... "The Art of the Pussy Grab."
It little behooves the best of us to comment on the rest of us.
Read this, don't feel bad: https://eev.ee/blog/2012/04/09...
- Michael T. Babcock (Yes, I blog)
This series is epic and a book shelf must have for any serious computer scientist or engineer.
One of my earlier student jobs was to improve the running time of an algorithm creating a height raster from isoline data. The original code had already been optimized where it ran 50% faster but became unstable. Running time on the test data set about a day.
I tried getting a hang of the code and gave up after about a week of it, saying I wanted to reimplement from scratch. I knew this problem was hard, so I threw my chops in efficiency behind it: I knew that this was done, among others, by an CS PhD.
About two weeks later, I start compiling. After getting rid of compiler errors and the first segmentation faults and other runtime errors, the program runs, but only for about 2 minutes before exiting.
I spend about another day with debugging in order to find out where it falls short. No clue. In exasperation, I turn to visualizing the output in order to get a hint what may be missing. The output is fine.
Heck.
As a pure coincidence, it wasn't two days ago that I was editing Wikipedia about Knuth, TeX, etc. One thing I have wondered before and wonder now is if he has some plan for what happens to the work once he dies. Simply put, at this pace, he will not finish the book. Is anyone working with him to ensure that it is completed if he dies? Does anyone know? I'd like to ask him via snail mail but I frankly don't want to waste his time.
There's a scene in MASH where Hawkeye and Trapper are coaching Radar for a date with a a brainy gal.
They tell him If she mentions Bach, just nod your head and say knowingly - 'ah - Bach!'
That's the relationship most comp sci majors had with Knuth - they paid lip service to his books which few have even read.
This from back in an era when all programs were expected to be mathematically proven correct.
That's awesome.
No it's not.
Watching a star explode would be 'Awesome'! And anyway, PHP is fucking simple - why is it that people heap praise on people like this, and that no one can ever fucking fail or be called an idiot these days!
> why is it that ... that no one can ever fucking fail or be called an idiot these days!
Okay, you're an idiot. Your comment will be dutifully submitted to failblog.