News for hackers. Stuff that matters.
Re:Why Don't Computer Scientists Learn Math? (2016) by excalibur on Friday March 24, 2017 @03:32PM (#13951568)
It's not the mathematical concepts they're struggling with in this example, it's the notation. As someone who majored in math while an undergrad, even I would have difficulty deciphering it were it not for an elective course in Symbolic Logic.
Re:Why Don't Computer Scientists Learn Math? (2016) by ordu on Saturday March 25, 2017 @01:05PM (#13956544)
> It's not the mathematical concepts they're struggling with in this example, it's the notation.

Being a mathematician, programmer and psychologist, I can hardly believe that you can rip math notation apart from math itself. To be fluent with math one needs three "languages" which her mind can use in parallel to think about math problem. Its math notation, English (or any other natural language) and visual mental image. If any of such a mental languages is not available to a person, or if he is unable to translate from one to other, then he would struggle with math.

Re:Why Don't Computer Scientists Learn Math? (2016) by majkinetor on Friday March 24, 2017 @04:15PM (#13951903)
Meh, its like saying that somebody who doesn't know to read doesn't struggle with concepts, but with understanding letters...

That is basic, I didn't touch math 15 years and still now that.

Re:Why Don't Computer Scientists Learn Math? (2016) by krmboya on Friday March 24, 2017 @04:55PM (#13952152)
Meh, any competent programmer can understand sets..

I got the meaning presented in the article because I've practiced the notation presented, but wouldn'nt have figured it out instantly otherwise.

We have different programming language syntaxes for a reason.

Re:Why Don't Computer Scientists Learn Math? (2016) by olgeorge on Friday March 24, 2017 @07:15PM (#13953010)
These are not programmers though, but rather computer scientists, a big difference
Re:Why Don't Computer Scientists Learn Math? (2016) by matchagaucho on Friday March 24, 2017 @03:51PM (#13951727)
Exactly. This is basically just a for loop in a symbolic notation.

Math would be an entirely more enjoyable subject if it were communicated in more practical terms that can be executed on a CPU.

Re:Why Don't Computer Scientists Learn Math? (2016) by gmfawcett on Friday March 24, 2017 @03:59PM (#13951802)
Well, not really a for-loop, it's the definition of a set.

There are so many interesting objects in math that cannot be executed on a computer. You could define the set of permutations of the naturals, for example, which is an infinitely large set; there's no algorithm you can execute which could produce such a set on your computer. Math would be severely limited if it could only deal with things that were computable on your workstation.

Re:Why Don't Computer Scientists Learn Math? (2016) by khedoros1 on Friday March 24, 2017 @04:32PM (#13952014)
You could define the function to generate arbitrary sections of the set. It's not like you're limited to actually generating the entire set, in order to work with it in a practical sense.
Re:Why Don't Computer Scientists Learn Math? (2016) by matchagaucho on Friday March 24, 2017 @05:40PM (#13952458)
True... in my haste I mistook set for sigma (my other pet peeve where symbols make CS translation unnecessarily difficult).
Re:Why Don't Computer Scientists Learn Math? (2016) by pron on Friday March 24, 2017 @07:05PM (#13952957)
Sigma isn't a for loop, either. You can sum over infinite sequences. A for loop -- or any computation for that matter -- implies a certain dynamic process, with a certain computational complexity. A mathematical expression has no dynamics; it just describes an object. So Σ 1/(2^n) doesn't mean "sum up all 2^-n" -- i.e., it is not a process -- but simply, "the number equal to the sum of all 2^-n". Of course, summation of infinite sequences requires its own definition using limits.

You can have math that is entirely computational -- it's called constructive math -- but the result is a very different math. For example, in constructive math, all functions over the reals are continuous, and not all subsets of finite sets are finite.

Re:Why Don't Computer Scientists Learn Math? (2016) by MarkMMullin on Monday March 27, 2017 @01:32PM (#13969857)
Sigma and power aren't for loops, but they do represent the melding of iteration and operation - the key is your definition of the sigma above - silly computers are always trying to 'do' things, and often math can simplify problems too big to 'do' by fiddling with representation - so I do agree with you, I just think you're being cruel to the for loop example :-)
Re:Why Don't Computer Scientists Learn Math? (2016) by pron on Tuesday March 28, 2017 @03:35AM (#13974787)
Perhaps I am being a bit cruel, but that's just to point out the fundamental difference between what an "operation" means in computer science and what it means in classical math (constructive math is a different story).

Classical math is concerned with relations between "preexisting" objects. The statement 4 + 5 = 9 does not mean that the numbers 4 and 5 are added by some algorithm to construct the number 9, but that the three numbers are related via a ternary relation. The statement 9 - 5 = 4 is an equivalent statement in classical math, expressing the very same relation, but means something radically different in computer programs. I think it's important for computer scientists to understand this difference.

Jean-Yves Girard, the inventor of system F in functional programming discusses this difference in Proofs and Types[1], in the very first section, called "Sense, Denotation and Semantics".

[1]: http://www.paultaylor.eu/stable/prot.pdf

Re:Why Don't Computer Scientists Learn Math? (2016) by matchagaucho on Saturday March 25, 2017 @04:10PM (#13957332)
But... come on. Sigma is basically a for-loop if you're translating Math symbolism into code.

The edge case of summing infinite sequences has no practical application in CS.

Re:Why Don't Computer Scientists Learn Math? (2016) by pron on Sunday March 26, 2017 @01:56AM (#13959438)
> The edge case of summing infinite sequences has no practical application in CS.

The number 2 is \Sigma_{n=0}^{\infty}1/2^n. So you're "using" sigma every time you use the number 2, which may be practical in some programs.

The fact that you can't write a program that sums an infinite sequence using an infinite number of computational steps doesn't mean uncomputable objects have no practical application. In fact, the formalism Lamport talked about in his lecture makes common use of them, and you do, too, every time you use floating point arithmetics. When you use floating point numbers, it's very convenient to think of them not as the very complicated objects that they are, but as a real number (an uncomputable object) with some error term; in fact, that's how floating point is thought of in the design of many numerical algorithms. In other words, objects that are directly representable on a computer, are often conveniently thought of as approximations of uncomputable objects. If you can't write what the non-computable object is in a language designed to assist in reasoning about how algorithms work -- which is the subject of Lamport's talk -- you're making life much harder for yourself.

Another problem of thinking of summation as a for-loop is that it makes you think of the definition as an algorithm, which it isn't. For example 4 * 5 = \Sigma_{i=1}^{5}4, but both of them are just different representations of the number 20. In a program it may make a big difference if you're writing 20, 4 * 5, or `for(i in 0..4) sum+=4`. In mathematical notation, all three are the same. It's not like one uses a cheap multiplication operation and the other an expensive for-loop.

Re:Why Don't Computer Scientists Learn Math? (2016) by rectangletangle on Friday March 24, 2017 @03:49PM (#13951712)
This, it's clearly just the notation that's the issue. I believe that CS has notation better figured out than the math world in general. Since there's way more emphasis on good abstractions, and overall language design (due to the different use case). While mathematicians seem to be much more focused on the underlying concepts, the notation being an afterthought.
Re:Why Don't Computer Scientists Learn Math? (2016) by xelxebar on Saturday March 25, 2017 @12:34AM (#13954124)
While there indeed is some ugly notation out there, I usually find that most of it is pretty straightforward once you understand the underlying concepts.

It usually only seems like bad notation if I am misunderstanding things.

Re:Why Don't Computer Scientists Learn Math? (2016) by LeanderK on Friday March 24, 2017 @03:53PM (#13951746)
really? it's not that different from the notation i am used to.

  {f ∈ [1..N ⟶ 1..N]| ∀ y ∈ 1..N: ∃ x ∈ 1..N: f(x)=y}
would be the notation i am used to. I believe it's called set comprehension in english.