Why do Roman numerals persist? How do we know that some infinities are larger than others? And how can we know for certain a program will ever finish? In this fast-paced tour of modern and not-so-modern math, computer scientist Mark Chu-Carroll explores some of the greatest breakthroughs and disappointments of more than two thousand years of mathematical thought. There is joy and beauty in mathematics, and in more than two dozen essays drawn from his popular “Good Math” blog, you’ll find concepts, proofs, and examples that are often surprising, counterintuitive, or just plain weird.
Mark begins his journey with the basics of numbers, with an entertaining trip through the integers and the natural, rational, irrational, and transcendental numbers. The voyage continues with a look at some of the oddest numbers in mathematics, including zero, the golden ratio, imaginary numbers, Roman numerals, and Egyptian and continuing fractions. After a deep dive into modern logic, including an introduction to linear logic and the logic-savvy Prolog language, the trip concludes with a tour of modern set theory and the advances and paradoxes of modern mechanical computing.
If your high school or college math courses left you grasping for the inner meaning behind the numbers, Mark’s book will both entertain and enlighten you.
This book had its pleasures, but was not fully baked.
The author's writing style is approachable--most of the time--and his selection of topics is outstanding for anyone who thinks of mathematics as comprising only the topics they were exposed to in high school.
However, to two of the topics in particular--the Prolog language and lambda calculus--Chu-Carroll simply did not allot enough space, nor enough attention from his editors. For instance, on p. 106, in the first code example, the "two lines that define what a parent is in terms of logic" are not actually present, despite being described in the text. More broadly, there is not enough explication of Prolog's syntax to make the chapter satisfying to a computer programmer. Since the symbols will require demystification even more emphatically for non-programmer readers, I find this defect to be a serious one.
In the chapter on lambda calculus, the author explains that lambda functions only require one parameter, because functions can return other functions. This fact may take a bit of pondering for non-programmers or non-mathematicians, or even programmers unused to functions as "first-class" objects in a language, but Chu-Carroll undermines this rule by providing an example of a multi-parameter lambda function definition at the top of page 224 anyway. More importantly, the author did not afford himself sufficient space to explain alpha and beta reduction to my taste.
My impression is that the author wanted to impart more information than his page budget would allow--for his intended audience.
There are other problems that betray the lack of editorial attention.
p. 34: "[Zero is] neither positive nor negative; it's neither prime nor compound."
"Compound"? Sophisticated readers will understand that Chu-Carroll means "composite" here; but his authorial mission is outreach to the mathematically unsophisticated, so this is a painful error to make.
A similar terminological gaffe strikes on p. 51, in a discussion of complex numbers as good models for alternating currents in electricity: "The vector representing the power being transmitted is a fixed-size vector. It's rotating through the complex number plane [...]. When it's rotated entirely in the imaginary plane, the energy is expressed completely as a magnetic field. When it's rotated entirely into the real plane, the energy is expressed completely as an electric field, which we measure as the voltage."
Leaving aside the author's encouragement of confusion by using "power" and "energy" interchangeably, when these are distinct phenomena expressed in different physical units, we have the much worse interchange of "plane" with "axis". When the current vector lies completely upon the real axis, it has only an electrical component, and when the current vector lies completely upon the imaginary axis, it has only a magnetic component.
What's good about the book? His choice of topics is excellent. He covers much of the ground that students taking their first "discrete" or "finite" math course will see (elementary graph theory and difference equations excepted), in a way that emphasizes the concepts so that a student will be less at sea when formally exposed to the same material (and having been in such a course at the university level, I can attest that the material was mostly unfamiliar to its undergraduate audience). He spends a fair amount of time on mathematical induction, which many folks have to bend their minds around for a while on the first exposure. More than that, he digs deeper than such courses typically do, introducing topics from the theory of computation, such as Turing-completeness and the Halting Problem.
I also must compliment the author for his concise and accessible presentations of Peano arithmetic and Zermelo-Fränkel ("axiomatic") set theory. In my view, both of these topics are deferred much too far into the training of a mathematician or computer scientist, and neither requires much in the way of background to grasp. Indeed, both may seem ridiculously simple and obvious, with their utility obscured until one is exposed to the consequences of trying to do without them.
Finally, I must praise Mr. Chu-Carroll for his comprehensive takedown of the frustrating misuse of the adjective "logical" in common speech, much of which we can lay at the door of a certain Gene Roddenberry and multiple generations of Mr. Spock fanboys (and -girls). Any statement can be logical, since the number of logical systems is unbounded. A "logic" is simply a set of axioms and inference rules.
I wish Mr. Chu-Carroll a second edition, that he may correct the defects I have identified above, and continue spreading the good news of good math.
The most interesting was the first part about numbers. The second part about the predicate logic wasn't good — it was more involving at my university studies.
The last part about the Turing machine and lambda calculus was, let's say, so-so — interesting (but nothing new according the school) and a little bit boring and I just skimmed several sections.
At the end, just another mathematics stuff that didn't touch me much, where I didn't buy the author's excitement about the beauty of maths.
Leggo da molto tempo il blog di Mark Chu-Carroll, Good Math, Bad Math e lo apprezzo, così quando è uscito il suo libro (Mark C. Chu-Carroll, Good Math, Pragmatic Bookshelf 2013, pag. 262, $34, ISBN 9781937785338) l'ho subito comprato... e poi lasciato da parte come al solito in mezzo al mio scaffale di cose da leggere, fino ad ora. Devo dire di essere rimasto piuttosto deluso, alla fine della fiera. Innanzitutto il libro non è sulla matematica, ma più generalmente su matematica e informatica, il che non sarebbe poi la fine del mondo: in fin dei conti anch'io sono uno di quelli che non fa grandi differenze tra i due campi. Però, mentre la parte più matematica mi sembra interessante come approccio, concordo con altri commentatori che c'è un problema di base: il libro è scritto per chi quelle cose le conosce già. So bene come sia difficile mettersi nei panni di chi non sa nulla, però il risultato è quello... e lo si vede perfettamente nella parte più legata ai linguaggi di programmazione, dove evidentemente non possono bastare venti pagine per spiegare qual è la struttura di uno di essi, soprattutto se non è imperativo. Aggiungiamo che ci sono parecchi refusi (una lista è qui, ma per esempio c'è un simbolo "minore e non uguale" che presumibilmente è una doppia implicazione: carino, vero?) che rendono ancora più difficile la lettura. Insomma, diciamo che non lo consiglio.
This book was valuable in its own way, but was also very frustrating. The good thing about this book is that it gives a general overview of mathematics, with an emphasis on computery things, especially near the end. All of the covered topics are interesting, and the explanations are simple (though not always easy to follow). Sometimes the explanations are of the big picture, but where possible the explanations include equations and worked-out problems. I especially enjoyed the last few chapters, which explained Lambda Calculus, Typed Lambda Calculus, their relation to Turing machines, and the halting problem, among other things. Unfortunately, the explanations often left me lost (and checking Wikipedia instead). There were several places where typographical mistakes made the text difficult to understand. But most annoyingly, the text is clearly in blog style. By this I mean that many subjects are mentioned off-hand or given no depth of explanation, leaving me unsatisfied, and many times the reader is referred to the author's blog or Wikipedia pages. This is a pet-peeve of mine; I expect much more from a book than I do from a blog. I think that the author's writing could have been more polished; however, if the author wrote a sequel, I would grab it in a heartbeat.
Good introduction to a lot of math topics applicable to computer programming / computer science. Can get a little technical at times, but that is the nature of the material, and the author does a good job of explaining things.
* A refresher on the basic classifications of numbers was interesting: - Natural: 0, 1, 2, 3, ... - Integer: ..., -2, -1, 0, 1, 2, ... - Real (rational): 1/2, 3.5 - Irrational: not integers or ratios, the decimal form is infinite (square root of 2) - Transcendental: irrational but also can't be described by algebra (e) The funny thing is that Georg Cantor proved there are more transcendental numbers than algebraic ones. Most numbers can't be used in precise computations.
* Of all the real numbers, zero was one of the hardest for humanity to conceptualize. The first zero wasn't knowing used in the world until a seventh century Indian mathematician introduced it. It didn't catch on in Europe until the 13th century when Fibonacci translated some Persian works, which is why our number system is called Arabic.
* The golden ratio (about ~1.6) is generally rounded in order to fit it to what lots of people claim are beautiful things. It's overly misused and abused. However, in the real instances the golden ratio occurs, it is deeply connected to the Fibonacci sequence. One example is in Western music, which is built on the Fib sequence; there are many examples of the golden ratio between the tones of chords.
* My favorite part of the book was the section on mechanical math. The author explains finite state machines, defines the Turing machine, and clearly describes how lazy evaluation works in lambda calculus. There is an example of how to interpret the BF language (https://www.muppetlabs.com/~breadbox/bf/) and why it is Turing complete. Godel's incompleteness theorem and Turing's halting problem are also discussed; "The fact that we can't know whether a program will ever stop means that there are problems in computing that we can't ever solve, and, more crucially, that mathematics itself can't ever solve." Very interesting thinking!
Nothing is delved into very deeply; there is a lot of hand waving on things I'd hope would be explained (like what exactly e and i are). The historical accounts were entertaining. I'd recommend it to any math/numbers/computation geeks who want to brush up on some interesting trivia.
The definition of 'good' or 'beauty' is subjective. This work is heavier on set theory and predicate logic, and not on what I was expecting from the name, e.g. geometry or graphics. Even though that's something that can be gleaned from an overview, the content is not very self-contained or exciting to read. It varies between dense and incomprehensible to lucid and interesting. I liked some sections more than others, e.g. the discussion of symmetry (which felt unnecessarily padded with sad life stories of two mathematicians which could very well have been a link / reference). The lambda calculus and the finite state machine/regular expression chapters were okay, but I powered through the book, wanting to read math stuff regularly. Hopefully some demographic finds it more interesting overall than I did. I think the book would benefit from setting a goal in the beginning and then following through with it - as it stands, it feels ... disconnected. The author is a math geek but him finding things 'bizarrely brilliant and delightful and amazing and absolute genius' didn't convince me to feel the same way :) But still, these kinds of books are great because they can be a gateway to deeper study in a particular topic if you find it interesting.
What if you were curious about some higher level math but didn't have the will nor intention to study it just out of curiosity? What if you could ask a skilled mathematician to break down the concepts for you and explain in an approachable, clear way? That's exactly what this book is.
From the get-go, we are exposed to Peano Arithmetic, and new concepts get introduced bit by bit based on that resulting in explanations about natural, real and irrational numbers, not in terms of their nature, but how one may build them from axioms and use them.
The second half of the book talks about logic, sets, group theory and finally the approaches to computation: finite state machines, the Turing machine and lambda calculus.
For a programmer, it's a relatively shallow but enticing introduction to the topics he or she might learn in greater detail to understand how computers work and the math behind it.
This book can't be compared to actual math books, but reading it and having the gist and a modicum of understanding of what's out there – and motivation to learn it one day – is, I think, exactly what the author's intended.
Když téma kapitoly znáte a připadá vám lehké, divíte se, jak komplikovaně autor postupuje a jak je výklad nepřehledný. Když téma neznáte, pochybuju, že z autorova vysvětlení zmoudříte. Tedy další kniha, u které netuším, pro koho je určena. Asi pro pitomce jako já, kteří se nechají zlákat názvem knihy a vstřícnými recenzemi. A kapitoly v poslední části knihy, kde se mluví o lambda kalkulu nebo halting problému jsou nejen zbytečně komplikované a přitom povrchní, ale i zavádějící. Ty nepřesné zmínky o Gödelově incompleteness teorému v poslední kapitole jsou takovou nepěknou tečkou za celou povrchní knihou. Na Kindlu jsou navíc špatně čitelné vzorce. A v samotné knize je spousta dalších chyb a nedokonalostí - např. kapitola o Prologu obsahuje věty, které odkazují na neexistující predikáty/proměnné. Autor příklady upravil, ale nezměnil popis příkladů? A vůbec jsou příklady pro Prolog (hlavně rodinné vztahy, append listu) převzaty z volně dostupných tutorialů univerzit/z úvodních kapitol učebnic Prologu. A v jiných učebnicích a tutorialech jsou příklady popsány a vysvětleny lépe.
The last time I seriously studied math was back in university. And this book was a nice reintroduction into some math topics for me: history, number theory, sets, logic etc. Almost half of the book is dedicated to computational math, which I really related to as a software developer. All in all, it was a very nice and motivational read.
I hesitated between 3 and 4 but finally rated as 4. The choice of topics is very good and the author’s ability to explain things is very approachable. It’s not 5 because I would like a bit more content and sometimes proofs and examples were difficult to follow.
It is hard to see who would benefit from this book. It's too difficult for a beginner, has nothing new for the expert, and the "serious student" would be confused by the many errors.
This is a collection of the author's blog posts. There's a lot to like about this book if it's your first time encountering the subjects. The range is wide, and the topics are interesting.
That being said, if you're interested in maths and computer science you've probably encountered most of the subjects before. The treatment of each of them is somewhat superficial. On the flip side, each of the chapters can act as a launchpad for your own in-depth research on the topic. Just don't expect the autor to always point you in the right direction. Or any direction for that matter, the references are quite sparse.
The copy editing is very poor, and there are plenty of typos and other mistakes that make it distracting to follow the text at times.
I found the first part of the book more enjoyable. The author clearly has a soft spot for lambda calculus and functional programming. That's OK, but take the statements about those subjects with a grain of salt.
All in all an OK read, but there are richer resources out there on most of the topics covered by this book.
Very concise book, which doesn't happen that often. The content of the first few chapters is then useful throughout the book until the last chapter. I consider it a good reading for people with interest in Math-Programming trivia. Sadly, I don't think that reading it will boost my chances of getting a pay rise, though I really enjoyed it.
Good Math is excellent book for software programmers who do not have formal education in Mathematics. Book covers variety of topics.
Part 1 of book starts with Pop Sci style (discussion on very light topics like Natural Numbers, Integers, etc). In Part 2, book strengthens Pop Sci style while discussing Zero, Golden Ratio, etc. In Part 3, book is at its epitome for Pop Sci style while discussing about Roman Numerals, Egyptian Fraction, and Continued Fraction.
Part 4 diverges from Pop Sci and ventures into realm of Logic and Programming. Discussion about Logic (with reference to Mr. Spock of Star Trek is superb). Part 5 prepares readers to take a dive into Set Theory which is fantastic. Lastly, Part 6 enters into kingdom of Lambda Calculus.
Though book has some flaws (like In Chapter 13, mathematical notation is used but basic introduction in provided in chapter 16) but no one is perfect.
I would like to see some talk around Prime numbers, infinity, and infinitesimal in Pop Sci part.
Good Math inspired me to extend my ninth grader/sophomore blog post to include Lambda calculus apart from other software topics (http://architecture-soa-bpm-eai.blogs...).
Good Math is certainly going to live long on my bookshelf.
It contains a number of interesting stories about math that are worth reading. It also does a good job of explaining some of its subjects - for example the important constants in math and the different numbers. But that's it. The more advances section feel like hand-waving, instead of real math. There is no way you can understand the set theory chapter or the Turing machine chapter without knowing that material in advance. There is not much to learn if you already know it. Even a simple subject like basic group theory is presented in a very non-mathematical way, making it hard to understand.
I did learn a couple of things and I enjoyed reading parts of it, but it left me wanting.
Good Math is a nice discussion on what numbers and math are all about. If you are interested in the big picture and want to know how different things fit together, then this book is a good read for you. However, if you want to learn something specific you should not buy this book. Ist’s not a study guide and therefore doesn’t explain the calculations behind and how you get there.
I liked the explanation of the Turning machine and some thoughts on the numeric systems and how they are adapted in a computer. But for all the things I didn’t know before I read that book I still don’t know.
A lovely tour of lots of concepts, from numbers, through sets, logic, lambda calculus, types and the Curry-Howard isomorphism. I read it cover-to-cover, but you can just dip into any of the six parts to pick a topic you're interested in.
The only downside is there's quite a big list of errata not marked as fixed (http://pragprog.com/titles/mcmath/errata), so maybe you want to wait for a revised edition.
So far it's ok but it's not as deep as I would like it to be. It's a short book ... The last part of the book "Mechanical Math" is much better than the rest of the book, it's still short but useful and fun.
If you're expecting to really learn/understand the topics it covers this is not your book at least you have a background on them.
This book did a nice job of introducing several areas of Mathematics. I don't think that after going through the book, you could be expected to be conversant in them, but they do serve as a nice jumping off point, particularly for some of the Maths related to Computer Science (Logic, Sets, Turing Machines, Lambda Calculus).
This is a nice book to get yourself familiar with some mathematics-related topics that one missed in the school or university. It also quite nicely shows the interconnections between different branches of math and computer science. My only critique would be that for the book with mathematical proofs it contains too much typos and other small errors.
I guess I was expecting something a bit more popular. Reading this book was too much of an effort for me with unclear benefits. I may get back to it at some point, but at any rate this is more a text book than just "fun read".
Comienza bien, explicando los diferentes tipos de números. Pero luego se enreda completamente en la parte en la que habla de lógica (y eso que es uno de mis temas favoritos). Me cansó, lo dejaré para otra ocasión.