5 ms·
That's true to a certain extent, but math and programming share the property of being built up from logical building blocks that are combined in strict logical
by dkarl 7y ago
That's true to a certain extent, but math and programming share the property of being built up from logical building blocks that are combined in strict logical ways. Law and philosophy are built on language and culture; physics is closer but is empirical. Math and programs are built from logic, and this gives them more of a common aesthetic sense.
For example, in law or philosophy, repeating the same argument multiple times, adapted for different circumstances, can give it weight. In math and programming, the weight of repetition is dead weight that people strive to eliminate. In law and philosophy, arguments are built out of words and shared assumptions that change over time; in math, new definitions can be added, and terms can be confusingly overloaded, but old definitions remain accessible in a way that old cultural assumptions are not accessible to someone writing a legal argument.
In physics, the real world is a given, and we approximate it as best we can. In math and software, reality is chosen from the systems we are able to construct. Think of all the things in our society that would be different if they were not constrained by our ability to construct software. Traffic, for one — there would be no human drivers and almost zero traffic deaths.
Where programming differs from math is that math is limited only by human constraints. Running programs on real hardware imposes additional constraints that interact with the human ones.
- oeoeo00 7y agoIt’s possible I am misunderstanding you, but think I agree with this. There’s kind of two ideas going on here (in this thread in general), I think. One seems to be of a mindset I’d describe as thinking in math means glomming onto knowing linear algebra. The other seems to be thinking in interconnections, minimalist definitions, and those abstract concepts that exist in math (and all kinds of things) for connecting discrete ideas into composite ideas. One thing that bugs me is code with overly specific semantics, where it reads like that’s the only problem the code could solve. When if it’s broken into concepts and abstraction in the PLANNING stage the code ends up being less verbose and descriptive of the human problem and more useful for a variety of problems. So instead of code to balance a checkbook, I’d write code to add/subtract numbers and input numbers from my checking account. I see a whole lot of code with too much specific semantic meaning. And it ends in practice that we think code in one system is highly specific to that system and minimizes effort to reuse. At least that’s been my experience at work. Ymmv
- lonelappde 7y agoModern computing is empirical. That's why MIT switched their intro to CS class from Scheme theory of computation to Python robot controllers.