3 ms·
> we actually use discrete math, where we deal exclusively with non-continuous numbers. This includes things like graph theory, logic, and combinatorics. You mi
by MaxBarraclough 5y ago
> we actually use discrete math, where we deal exclusively with non-continuous numbers. This includes things like graph theory, logic, and combinatorics. You might not realize that you are using these, but you do. They’re just so internalized in software that we don’t see them as math!
I strongly disagree with this level of charity. That's like saying every cyclist is a physicist.
Someone who takes a short programming course might not even have heard the term discrete mathematics, and almost certainly won't be qualified to develop a proof of correctness for an algorithm, i.e. to actually do discrete mathematics in a serious sense.
> most of computer science is viewable as a branch of mathematics
And yet there's a world of difference between a computer scientists and the average software developer.
> Every time you simplify a conditional or work through the performance complexity of an algorithm, you are using math. Just because there are no integrals doesn’t mean we are mathless.
But the absence of doing math surely does make someone (or some line of work) mathless. Most software developers go their whole careers doing no serious math.
> Just because we use a different branch of math doesn’t mean we’re not doing engineering.
Perhaps the argument can be made that engineering doesn't necessarily have to include math, but this isn't the way to make it.
Again, the average developer does not know any mathematical field in any real depth. This is in sharp contrast to, say, aeronautical engineers.
> Whether or not we are engineers is irrelevant to whether or not we are good engineers.
Disagree. If the term engineer has any meaning, it has to indicate some level of competence. The bar has to be set somewhere.
We all agree that changing a car tyre does not qualify someone as any sort of engineer. Is it controversial to suggest that something analogous should hold for software work?
The later Craft vs Engineering section makes far more sense to me.
edit:
> We are separated from engineering by circumstance, not by essence, and we can choose to bridge that gap at will.
I think this is a matter of market forces rather than a community-wide failure.
There's high demand for software developers, including for inexperienced software developers with little formal training. This is, at least in principle, a fine thing (ignoring things like major security issues arising from incompetence). Someone who completes a brief course on programming may be called a software developer, and a professor specialising in critical software systems might be called the same.
It's not like nuclear engineering where there's a formal system of gatekeeping. Provided we don't ignore the spectrum of expertise, I don't see a reason to worry about software work being intellectually disreputable by nature.
- JamesBarney 5y ago> And yet there's a world of difference between a computer scientists and the average software developer. The world would be served by realizing how different these too skill sets are. I had professors who couldn't code their way out of a paper bag, and known successful devs who wouldn't know a proof if it walked up and bit them on the nose.
- strulovich 5y ago>> we actually use discrete math, where we deal exclusively with non-continuous numbers. This includes things like graph theory, logic, and combinatorics. You might not realize that you are using these, but you do. They’re just so internalized in software that we don’t see them as math! > I strongly disagree with this level of charity. That's like saying every cyclist is a physicist. Boolean logic, and while loops are proper examples of discrete math. They’re practiced by virtually every developer. An equivalent example from the world of continuous math could be integrating over some range.
- MaxBarraclough 5y agoUnderstanding the control-flow constructs of an imperative programming language is not equivalent to understanding the discrete maths of imperative programming (Hoare logic, Z notation, B-method, etc). As I said, the average developer is incapable of doing serious discrete mathematics such as formally proving the correctness of an algorithm. For that matter, I doubt the average developer would know what it means for a language to have a formal semantics. To anticipate the path of a frisbee is to, in mathematical terms, solve a differential equation. Dogs can catch frisbees. We still don't say that dogs understand the mathematics of differential equations. [0][1] In the software world, formal methods are a niche, as are the associated mathematics. Being costly, they are not used in mainstream software work. [0] (PDF) http://www.math.pitt.edu/~bard/bardware/classes/0220/dkc.pdf http://www.math.pitt.edu/~bard/bardware/classes/0220/dkc.pdf [1] https://www.wired.com/1993/05/dogs/ https://www.wired.com/1993/05/dogs/
- CSSer 5y agoFirst I want to let you know that I didn't take it personally (all in jest), but I've never been so artfully called a dog in my life. Thanks for that :)