News for hackers. Stuff that matters.
Re:Why Don't Computer Scientists Learn Math? by jjoonathan on Friday November 18, 2016 @10:03PM (#12991837)
∀+∃+{|} are the epitome of clarity over compression. Mathematicians like them for the same reason why many programmers like sophisticated static typing. They might not always improve the clarity of toy examples to beginners, but they certainly help improve the clarity of untamed, wart-ridden, real life problems to initiates.

I think the first time I truly appreciated the power of ∀ and ∃ was during functional analysis when I found myself juggling an overwhelming number of different notions of continuity, convergence, smoothness and the like. ∀ and ∃ drew out the subtle distinctions that the blurry, imprecise words of the English language conspired to hide. They let me break down logic hairballs completely indigestible to my mammalian intuition into small chunks that I could individually process. Same idea as algebra.

That's their purpose, and they're very good at it. Nothing I've encountered in the world of programming languages really comes close to doing their job. Don't fall in to the trap of assuming they're pointless just because they don't apply to your problems.

Re:Why Don't Computer Scientists Learn Math? by kabdib on Saturday November 19, 2016 @10:48AM (#12993949)
I use ∀ and ∃ and so forth, mostly in private notes. It's great shorthand.

On the other hand, in MathLand we have conventions like saying "2x" when you want to multiply x by 2, but if you write "dx" you'd better know if you're doing calculus or not, because it means something totally different depending on context.

Mathematical notation is pretty squishy. There are probably thousands of uses of every greek letter and their italic, bold and variously curlicue'd isomorphs. And it's mostly culture, with a lot of history, personalities and land-grabs thrown in. You can't necessarily crack open a paper without a lot of baggage-level context ("Oh yeah, this community uses brackets for things that community uses subscripts for, okay...")

On the other hand, C++ is complicated and messy and also mostly a train wreck, but at least there's a standard you can go read.

[I once thought it would be worthwhile to learn denotational semantics. The "at least one new hijacked hieroglyph must appear on every page" nature of the reading put me off it in short order. I had no idea where to start interpreting the notation other than maybe attending a class to get the proper starter culture. It was frustrating to see notation go in the "squishy" direction when I thought it should have been using something you could parse and run tools against. Oh well.]

Re:Why Don't Computer Scientists Learn Math? by tsilva on Monday November 21, 2016 @04:34AM (#13004197)
> I had no idea where to start interpreting the notation other than maybe attending a class to get the proper starter culture.

More than anything, I think this is the main reason why studying many subfield of mathematics is so difficult, when we spend more time and effort in things like parsing instead of in the actual subject matter.

Even popular subjects may show similar problems. For example, in Sedgewick's Analysis of Algorithms, he gives the following common definition:

> O(f(N)) denotes the set of all g(N)....

In the next page, he presents an exercise:

> Show that f(N) = N lg N + O(N) implies f(N) = ϴ(N log N)

Reader looks at that "N lg N + O(N)" and tries to make sense of the addition of a number to a set of functions. Note, this is in page 5, so many readers unfamiliar with the culture of the area are likely to just abandon the book (and perhaps the study of the subject) as they could not translate to themselves the very first formula presented by the author.

The only clue to anything that could help the newbie to get some answers lies in a couple of references that point to the historical uses of these greek symbols for computational complexity. Within that reference [1], by no other than Knuth, one can find the explanation for such syntax:

> "1+O(n^-1) " can be taken to mean the set of all functions of the form 1+g(n), where |g(n)| < Cn^-1 for some C and all large n.

And then he goes on about the problem of that syntax in respect to one-way equality:

> we write 1+O(n^-1) = O(1) but not O(1) = 1+O(n^-1). The equal sign here really means ⊆ "set inclusion", and this has bothered many people who propose that we not be allowed to use the = sign in this context. My feeling is that we should continue to use one-way equality together with O-notations since it has been common practice of thousands of mathematicians for so many years now, and since we understand the meaning of our existing notation sufficiently well.

The above is not only a reason for logicians to laugh at the pretense that mathematical language is formal, but also an example of things that are likely not to be in books but in an unwritten culture of a field.

--

[1] - Knuth, Big Omicron and big Omega and big Theta

Re:Why Don't Computer Scientists Learn Math? by codethief on Saturday November 19, 2016 @11:54AM (#12994252)
> Mathematicians like them for the same reason why many programmers like sophisticated static typing.

This is a great comparison!