As a software engineer, Software is not math! its a clever arrangement of mechanisms to adapt a problem to a set already existing very generic physical processes (CPU/GPU/etc). sure at the end of day as Max tegmark argues everything in universe is math but its a really wrong level of abstraction. its like saying all biology is just complex physics.
> Software is not math! [...] its like saying all biology is just complex physics.
I hear you, and I agree with your points. But this general idea isn't exactly what I was talking about, and I don't draw such a hard line, personally. I did say that software was both method and apparatus, and I feel like you might have overlooked the apparatus part. Math has been normally viewed as only method and no apparatus. But this all really depends on what software and what math we're talking about.
I'm claiming that for the purposes of evaluating patent criteria, it's becoming more difficult over time to draw a line between math and software, not less, and I stand by that. It's possible to use math for what should be patentable inventions, and it's possible to use software to represent mathematical statements that should not be patentable.
Software to evaluate PDEs by numerical method, or to integrate expressions symbolically, is hard to say it's not math. Software to send email is harder to say it's math, except that unlike biology, we know the mathematical details of every step along the way, whether it's character encodings or network routing or spam detection or UI.
The distance between software and pure math in my mind is a lot shorter than the distance between biology and physics. But I agree that there is distance in both cases. The argument that software is math is (I think) easier to make, due to Turing and to the fact that we turn our code explicitly into binary math and CPUs only consist of arithmetic operations on numbers. The abstraction doesn't yet seem big enough to separate them.
As a computer scientist, software absolutely is math. Software is not bound to CPUs/etc.; you can evaluate algorithms by hand with a pen and paper if you want to, and you will get the same answers (maybe more slowly, but likewise if you use a slower CPU or a non-optimizing compiler). Lambda calculus is without any doubt a field of math; any code can be represented by equivalent lambda expressions and you can convert to lambda expressions automatically (a common compiler strategy for functional languages).
Yes, C and Python do not look like the expressions in a typical algebra textbook -- but algebra does not look like calculus or geometry either. Representation of your algorithm is irrelevant; as you say, it is the wrong level of abstraction.
Oh, also, in case you were thinking that there is some important difference between software and math, here is something to think about: