Although a lot of coders (as opposed to software engineers) don't need anything more day-to-day than basic arithmetic.
Do software engineers need mathematics? (2000)
31–40 of 41 posts
Re: Do software engineers need mathematics? (2000)
#32Earlier quoted context omitted.
These ideas are named to honor the person who did much of the grunt work to get them proven/accepted, but we continue to use the name as a convenience. If you're working with educated people, it's a lot easier to say, "apply DeMorgan," than to say, "why don't you negate the clause, remembering to negate each of the internal clauses, and switching the and's to or's and vice versa." There exist people who use the names…
In this case you could come up with a short name for it that doesn't refer to a person -- you could call it "logical duality", since, after all, it is both logical and a duality. But people know it as "DeMorgan", and in this context I think the most important thing is being understood. Those who don't know the law probably wouldn't recognize it if you called it "logical duality" either.
http://jasomill.at/DeMorgan.pdf
In the design of programming languages one can let oneself be guided primarily by considering "what the machine can do". Considering, however, that the programming language is the bridge between the user and the machine --- that it can, in fact, be regarded as his tool --- it seems just as important to take into consideration "what Man can think". (Dijkstra [1])
And this is why mathematics is useful to software engineering.
Re: Do software engineers need mathematics? (2000)
#33Back when I was developing web apps, I was surprised to hear that programming was supposed to require any math. But I've found that, as I've built more interesting and sophisticated things, I needed more math. I took about 15 math courses in school, and I can't think of any I haven't found useful. Lately I've been looking at using model checking in my work, which touches on much of the math I know. Advanced logic to…
Model checking is a pretty cool idea, except you really need to have it built into the language rather than as an annotation or seperate system. Maintaining a seperate model just gives you two places to make typos.
def has_holes(s):
for c in all_loops(s):
try:
contract(c)
except:
return True
return False
isn't an effective algorithm (e.g., "all loops" is an infinite set). But algebraic topology shows how one might instead reduce the problem to computationally tractable linear algebra. Suppose, then, that you've implemented an (presumably nontrivial and therefore error-prone) algorithm to carry out this reduction. Then your patently correct constraint on all loops might be a useful source of tests.(disclaimer: I know nothing at all about computational algebraic topology, except that it's fascinating. So please take my example with an unbounded grain of salt.)
Re: Do software engineers need mathematics? (2000)
#34This isn't meant to disparage programmers; I am merely saying we should take note when we have our "programmer" hat on, vs. when we're wearing our software engineer fedora.
Re: Do software engineers need mathematics? (2000)
#35Depends on what you're doing. I've used calculus for physics simulations in games. I had to do a bunch of performance analysis, and a little bit of knowing what distributions actually meant helped a lot. I regret not having taken more statistics in college. I was talking with a philosophy prof once, and somehow we got to DeMorgan's theorem. "I use that nearly every day," I told him, and it kind of floored him -- appa…
I used DeMorgan's laws when refactoring Boolean expressions for clarity long before I learned that the laws had a name - they're entirely obvious and self-evident. I think the relative pointlessness of specifically classifying and naming them makes knowing of them by name obscure.
Re: Do software engineers need mathematics? (2000)
#36Depends on what you're doing. I've used calculus for physics simulations in games. I had to do a bunch of performance analysis, and a little bit of knowing what distributions actually meant helped a lot. I regret not having taken more statistics in college. I was talking with a philosophy prof once, and somehow we got to DeMorgan's theorem. "I use that nearly every day," I told him, and it kind of floored him -- appa…
I can't imagine in what context that would be considered "advanced" logic. Getting a working knowledge of classical[0] logic is very simple; the only thing that tends to surprise people is the notion of a vacuously true conditional. [0]By which I mean, Boolean, true/false, the sort you can use truth tables for. I.e., classical logic as opposed to, say, constructive logic. I don't mean, like, ancient Greek logic or wh…
Re: Do software engineers need mathematics? (2000)
#37Interesting. Ultimately just one person's opinion. I don't use any college math (since I didn't take any) and dont't find a need for it in most programming. In fact, programming is a lot more like writing. Maybe that's why they call it a programming language. Too bad when I was doing programming using more interesting math, more interesting math was not taught in school (US 7th grade and on)
Re: Do software engineers need mathematics? (2000)
#38Re: Do software engineers need mathematics? (2000)
#39Re: Do software engineers need mathematics? (2000)
#40In Devlin's article, doing math is conflated with a formal education in it. He should know better as he has previously endorsed heavy criticism of the latter: http://www.maa.org/devlin/devlin_03_08.html
"...our present system of mathematics education is precisely this kind of nightmare. In fact, if I had to design a mechanism for the express purpose of destroying a child’s natural curiosity and love of pattern-making, I couldn’t possibly do as good a job as is currently being done— I simply wouldn’t have the imagination to come up with the kind of senseless, soul-crushing ideas that constitute contemporary mathematics education." (pg. 2 of Lockhart's article)