4 ms·
>every time you are coding formalized programmatic logic, you are using math Almost no one (outside of those who were friends with math majors) are actually fa
by superuser2 10y ago
>every time you are coding formalized programmatic logic, you are using math
Almost no one (outside of those who were friends with math majors) are actually familiar with the nature of proof-based mathematics. When you hold out "programming is math" the general public, policymakers, admissions offices, kids who might want to be programmers, etc. don't make the association to Analysis and Abstract Algebra, they make it to high school Algebra, Geometry, Algebra II/Trig, Precalculus, and (maybe, for the better kids at richer high schools) Calculus.
This has the effect of selecting programmers for their skill, patience, and diligence in executing the algorithms they're given. This is exactly backwards!
In my opinion, if you're looking for an analogy to a high school class, programming is chemistry. You're given a reasonable number of facts about the world, some lab and algorithmic procedures, and a problem. How to string together your intuitions, information, and procedures to arrive at an answer is entirely up to you.
- _asummers 10y agoWhat you speak of is a failure of mathematics education, frankly. I meet too many people with this viewpoint, and regularly have to explain that there's all sorts of math out there that would align with one of their skills. People are not taught mathematics from a problem solving interactive puzzle perspective, they're taught it from a rote computational perspective, removing all the sense of wonder and pleasure from doing things within a system of axioms. I see the argument about chemistry, but I do think there's a very strong crossover of doing math and building software (in the large). In math, you begin with a set of base known statements. Whether starting from the axioms, or working within some system, you begin to build a vocabulary of the system, a feel of the way objects within the system interact, and an understanding of the limitations of the system you're currently in. Through the course of needing to get things done, you combine these various abstractions together to create more useful ones, constantly making your system a little bit more powerful. Often, taking steps back from your system and combining things into elegant ways gives insight into other patterns present in the system, and recasts solutions in slightly different lights with hints as to what they could have been, had you known what you know now. Then over the course of time, you begin to bring in new foreign systems, which you might not understand fully, and you use inelegantly. But again, working through issues, you build up that vocabulary and intuition to solve problems in your space, constantly putting tools and tricks into your belt on how things could fit together. Occasionally something will be insufficient in your tool belt, or a concept you weren't quite clear on will come up in your problems, causing you to go back, learn a thing, and come back armed ready to keep making progress. To me, that all sounds like what I do when I'm building software.
- mattmcknight 10y ago>Almost no one (outside of those who were friends with math majors) are actually familiar with the nature of proof-based mathematics Hmm...when I was a CS major, a discrete math course was required, and it was all proofs. I believe that is still common. I don't find the proof aspect that relevant to programming, but the concepts of discrete math, such as sets, graphs, definitely are. As far as things that aren't programming go in relation to programming, contest math, with its focus on efficient and creative problem solving, is probably more similar to the daily experience of writing software than any course I took. The exception would be Math Modeling and other courses that actually required programming.
- wolfgke 10y ago> I don't find the proof aspect that relevant to programming By Curry-Howard isomorphism proofs in some particular proof system are equivalent to computer programs.
- tree_of_item 10y agoTo a subclass of computer programs; computation is more general than logic. There are lots of programs that can't be typed but still do useful work.
- aianus 10y ago> This has the effect of selecting programmers for their skill, patience, and diligence in executing the algorithms they're given. Our high school experiences couldn't have been more different. In math class we were given the definition of a limit and derived all of the rest of high-school calculus collaboratively from there. Similarly for high-school linear algebra: couple of quick axioms and then all further theorems and algorithms derived from there. Meanwhile in Chemistry class they'd give me a failing grade because I failed to memorize the exact charges of the various polyatomic ions and solving the rest of the problem using variables in place of the charges wasn't good enough.