This is an awful lot like the arguments that mathemeticians have with physicists- you probably side with the mathemeticians, saying that we live in a mathematical universe because we can model it mathematically, and I side with the physicists who say that math is useful for looking at the universe, but when the math and the universe don't line up, it isn't the universe that's wrong.
That's a completely orthogonal discussion, unrelated to what I'm saying (and imo it's the theory which says what math to use which is wrong). It has nothing to do with being able to break down everything into the universe into math. People keep saying "well everything is math, so by that logic nothing should be patentable". But that's not what I'm saying. I'm not saying everything is math. I'm saying only those things that are, by design, explicitly symbolic representations of math, are math.
Similarly, mathematics is a *model* for computation. It isn't the computation itself.
Yes, and software is a *model* for computation, it isn't the computation itself. The computation itself is done by a computer, a physical device. That physical device is intentionally abstracted into a mathematical representation, and software is a series of manipulations of that representation. The programmer can be aware of the underlying hardware, but it isn't necessary, and the whole reason there is an abstraction is so the hardware can change more or less freely. Turing's machine was never even a real machine, it was always a mathematical model. And software for it? Pure math.
Look. "x = a + b" is math. I could write that in English as "Let x be the sum of a and b" and it's math. If I translate that into French, it's still math. If I translate it into ASCII or UUCODE, and it gets sent to your computer, and it gets rendered as a font as the letters that you see, it's math. But if I translate it into MIPS, then suddenly it's not math? No, it's math, the same abstract concept as "x = a + b". It doesn't become computation until a machine or a person actually does what the math says. But the instructions are purely math. The software doesn't know or care what it is modeling, or whether it is doing it correctly. It's just a language for expressing math.
It will always be a useful tool in many areas of programming, but nontrivial code has mostly grown past the point where math is a useful model for its analysis. Like any other model, you use it when appropriate, and abandon it when it isn't.
You're still talking about "modelling" a non-trivial program with math, seemingly implying that the math model should be simpler than the program itself. I say what does that have to do with anything. You can't model the Mandelbrot set with anything less complex than repeated iterations of the formula for every specific point of space you want to know is in the set or not, because it is a chaotic system and thus the only way to arrive at the answer is to fully calculate it. So the Mandelbrot set isn't math, even though repeated iterations of x=x^2 + c is clearly math? Just because you can't "model" the outcome of a series of computer instructions with anything less than the program itself doesn't make a series of adds, subtracts, loads, and stores into something other than math either. Nowhere, ever, has math required that it be able to be simplified in order to be math.
No, all you've done is state that because you can't predict the outcome in advance, it isn't math. So what, this is common even in 'pure' math systems, it's still math. Show me a single instruction anywhere in any piece of code that isn't math. A collection of math operations expressed in symbolic form is math, regardless of its complexity or the ability to predict the outcome in advance using simpler math.
I've worked in telemarketing. About half of them are just regular schmoes, but the other half, well, let's just say that if they were suicidal, you wouldn't expect them to stick a gun in their mouth at home, they'd more likely bring it in to work first and "share".
You were happy when I brought in donuts for everybody. Now I bring in bullets to share and you're upset? Geeze, people are so flighty and fickle, such hypocrites, sometimes it just makes me want to snap!
What makes the machine any different from the software?
A machine is a physical device whose operations can be described by math.
Software is a symbolic representation of abstract mathematical operations. It is literally a language for describing math. Not a device with properties that follow certain math equations. It is math. A machine is metal and silicon and tiny electrical switches. Software is literally a series of words that say "add this, subtract that, multiply by seven, store the result in this matrix, if the result is negative then add the first value to that same matrix location".
Can you see that the words I just wrote are math? Can you see the difference between those words and a physical device that might, perchance, have behavior that is described by that math? That's the difference. Software is a language for describing symbolic math. Just because it's a language designed to be read by a machine doesn't change that.
I think that people should have the right to protect their creations software or otherwise via patent law.
Be glad nobody believed that back when the Quick Sort algorithm (algorithm! It's math!) was invented, along with countless other things that are the foundation of computer science. Because we wouldn't be having this conversation if they did.
Lets get some semantics out of the way: I would say that programming is mathematical if a function or set of functions can be defined in advance that will accurately model the behaviour of any program.
There is. The functions defined by the program itself. Alan Turing already figured this out many years ago, using a purely mathematical model (because that's what software is, a series of math operations written to a mathematical model that represents a physical machine, but doesn't require one, which is good because he didn't have one). He showed that the only way to determine if an arbitrary program will reach the "stop" instruction is to actually run it. Practically, what this means is that the only way to determine the outcome of any arbitrary series of mathematical operations is to actually do them. Which is pretty common in math, really. NP-complete problems are ones for which there is no (known) polynomial complexity solution; the only model for the problem is an exponential one. Chaotic systems are ones in which the only way to know the outcome is by actually doing every calculation. Chaos theory isn't math? No, of course it is.
I don't really understand what you're getting at with this term "mathematical", but it sounds like what you're saying is that something is only "mathematical" if it there is an equivalent mathematical model that is sufficiently simple to predict the outcome 'in advance'. Well, sounds pretty arbitrary to me, I mean complex math is still math, just because you can't predict the outcome in advance doesn't change that what you're doing is math. But fine. Software isn't "mathematical". It is math.
An excuse that could be applied to anything. But I am talking about the design and development of a complex system.
That's an excuse to not defend the ridiculous idea that at a certain level of complexity, math becomes not-math. Math can be ridiculously complex, where the only way to predict the output is to perform the math itself. Software is math, because at the simplest level every single instruction in a piece of software is a simple mathematical statement (literally, as in it is a representation of symbolic mathematics as surely as an equation written on paper). Complexity simply doesn't enter into it.
The truth of the matter is IBM made every PC maker do micro-payments of each patent filed in relation to the PC. So every PC built IBM got a slice of the pie.
But don't mistake that thinking that IBM doesn't see value in software patents. They award bonus money to employees for creating them.
That was IBM back then; they were evil to be sure, but times have changed. And how did them only using patents defensively become them not seeing any value at all?
At this point, you're stretching to show that it's math. What about reading bits that are coming over the network, and putting them into a buffer. Surely math has no "network cord".
It's not a stretch at all. Show me the instructions executed to read bits from the network card, and tell me which one isn't math. You can't, because every single one is math. Just because the math is being done in pursuit of a high-level purpose doesn't make it not math. Math has no concept of "alternative minimum tax" or even "The IRS", yet doing your taxes is still math, because every step of it is math. Same with your network card. Your software doesn't even know the network exists. It's just a sequence of simple math operations.
Obviously, software is rooted heavily in math, but saying that it IS math is an oversimplification. You can make a model in math, where you would pretend that matrixes are memory, and that no ops are statements like 1=1, but you could also make a model where spaghetti is memory, and adding tomato sauce is placing bits.
You say "you can make a model in math", but that's exactly what an ISA is -- an abstract mathematical model to which the software is written. From the standpoint of the software, memory is a matrix, as that's how the ISA defines it. Nowhere is "memory" defined to necessarily be DRAM. It could be an SRAM, it could be a network card accessing a network, it could be a dude with a pen and paper writing down values or sending them via semaphore "network" to another location, and yes it could be a plate of spaghetti if you created a way to accurately do the math using it.
You could execute software by hand. It wouldn't be fast enough to be useful; but so what? Just because doing the math to calculate the necessary corrections for a cruise missile by hand would mean you miss your target doesn't make that calculation not math. Math is an abstract concept; math doesn't require being fixed to a particular implementation.
Just because math can model it doesn't mean that it IS math.
Software is the model, and it is math. Just because the syntax is different (NOP instead of "let x=x") makes no difference. One of the most basic concepts in math is that if two things are logically equivalent, then they are equivalent. A NOP is math, it's logically the same as 1=1, the difference in syntax is irrelevant. Loads and stores are math. Every single operation in software is math.
Hardware is something that can be modeled by math but isn't math. The software it runs is, by definition, a mathematical model itself. Software is math.
It's not all mathematical instructions. The instruction to load a value from memory into some registers isn't math
Of course it is.
"let M be a one dimensional matrix of size 2^30" "let x = M[4096]" "let y = x + 17" "let M[4097] = y"
M is memory, x and y are registers. It's all math. Every single statement in a program is a symbolic description of the manipulation of state through mathematical operations (including the identity operation). That's math.
Even I/O instructions, because all that is doing is calculating a value and placing it in a specified variable. The fact that the variable has a hardware-generated side effect doesn't make the instruction not math, any more than filling in the "amount owed" field on your taxes with a positive value causing you to have to write a check to the IRS makes calculating your taxes not math.
and the order in which those values are loaded from memory can have a strong effect on the performance of the machine.
True but irrelevant as to whether it's math or not. You can reformulate an equation or algorithm so that it's faster to calculate by hand. The calculations are still math.
Not all software is maths. Some of it is complex systems, just as complex as any machine.
Complex math is still math.
There is so much revenue generated for companies and the government that if ever someone got close to a position to kill software patents they would be out on their ear faster then you can say lobbyists.
Actually quite a few of the most powerful companies (MS, IBM) are quite upset at being targeted by patent trolls. Their own software patents serve almost no function except a defensive one.
Actually, the parent post contained a simile that compared software to math, not a metaphor.
I was using metaphor in the broader sense of non-literal comparisons (because it's irrelevant to my point what kind of figurative comparison is used), and in this sense a simile is a type of metaphor.
No, it isn't. There's more to metaphor than simple grammar. "Spain is a country" is not a metaphor, and neither is "Software is math", at least as I said it. I was being literal, which is the opposite of metaphorical.
I think it might apply more to manual-transmission Insights rather than Priuses, though: they say the way to drive an Insight is to floor it in 1st and 2nd, then shift straight to 5th once you're up to speed.
Well then maybe that means the Insight is the hybrid for me, since that's how I drive my gas-powered car today. =D
"Jonas Venture": I took the form of your dad because I figured it would be easier to accept. I didn't want to stress you out--end of the world, life on other planets, blah blah blah.
Dr. Venture: Why...you SON-OF-A-BITCH! Do you know what you just put me through?! What the fuck were you thinking?! What kind of fucked-up planet are you from, where you think showing up as my dead fucking father is supposed to make me feel any better?!
"Jonas Venture": Okay, take it easy...
Dr. Venture: You prick!
"Jonas Venture": Look, I just saved your entire planet...
Dr. Venture: Prick!
"Jonas Venture": Alright, fine, you wanna see? Here! (Peels off his face, revealing his true self, which is shown offscreen, but horrifies everyone else) There! Are you happy now? Would that be better? That I came out looking like that out of nowhere? Look at you! You practically crapped your pants! Except for him, he crapped his pants! (points to Ned)
Ned: Boom boom.
Personally, I find it a bit hard to believe that a civilization is smart enough to travel interstellar distances but too stupid to use basic camouflage.
Uh, things that use "basic camouflage" can still be seen, it is just more difficult in some circumstances. UFOs are only seen occasionally, so if they exist and are aliens, perhaps they very much do use camouflage. I mean, FTL travel would require some pretty amazing advances in physics, but that's no reason to assume that if you can travel faster than light, you can also be invisible when flying around a planet at sub light speeds.
Who proved that computer programs are equivalent to Turing machines, which can be actual mechanical devices.
No, Turing proved that any computer program has an equivalent program that can be run on a Turing Machine. He proved that anything you can compute can be computed on the Universal Turing Machine, and thus all computers are subsets of a Turing Machine, and all software is a subset of a Turing Machine program.
He didn't prove that software is equivalent to a machine itself. That makes no sense; software can't do anything by itself. It needs someone or something to interpret it and take actions based upon that.
but there are innumerable behaviors in software that simply have no clean mathematical representation.
Every single statement in software can be cleanly described by the math that the statement itself represents.
If you're talking about the "emergent" properties of the software, that's true, but the same is true of any complex series of mathematical statements which do not lend themselves to a simpler description. There is no "clean mathematical representation" for the border of the Mandelbrot Set -- except for the series of mathematical operations used to produce it. Just because there is no clean, simple description of a piece of software does not change the fact that every single step in the software is itself a simple mathematical statement.
You can use math to describe ALL software, because all software is a description of math!
Every single statement in every piece of code ever written is nothing more than a description of how to manipulate a piece of state based on a mathematical operation. That state itself is described in an abstracted purely mathematical way, separate from any actual hardware implementation (more or less the same abstract model used in the 8088 and the Core 2 Duo). It's a finite state machine. A mathematical model, with mathematical operations performed on it. It's all math. And it's purely math, nothing more than a description, until you invent an actual machine capable of acting on that description.
The essential difference is this: software is an engineering discipline, while mathematics is a science. Therefore they cannot possibly be the same thing. And until I see a proper software science, I will not buy into the "software is math" fallacy, and neither should anyone else.
You're talking about fields of study. That's completely irrelevant. A grocery store clerk is not a mathematician in any way shape or form. Yet when they add up your bill, that's math.
Software is math. Whether computer science or computer programming or what have you is a scientific discipline or an engineering discipline is an interesting question, with practical ramifications as to how we teach software development. It makes no difference as to whether or not the software itself is math. I learned about the Normal Distribution and Conditional Probability in an engineering class. Probability is still math.
But being as this is a .44 aurora, the most powerful light show in the world, and would blow your head clean off
Surely you meant "blow your mind"!
This is an awful lot like the arguments that mathemeticians have with physicists- you probably side with the mathemeticians, saying that we live in a mathematical universe because we can model it mathematically, and I side with the physicists who say that math is useful for looking at the universe, but when the math and the universe don't line up, it isn't the universe that's wrong.
That's a completely orthogonal discussion, unrelated to what I'm saying (and imo it's the theory which says what math to use which is wrong). It has nothing to do with being able to break down everything into the universe into math. People keep saying "well everything is math, so by that logic nothing should be patentable". But that's not what I'm saying. I'm not saying everything is math. I'm saying only those things that are, by design, explicitly symbolic representations of math, are math.
Similarly, mathematics is a *model* for computation. It isn't the computation itself.
Yes, and software is a *model* for computation, it isn't the computation itself. The computation itself is done by a computer, a physical device. That physical device is intentionally abstracted into a mathematical representation, and software is a series of manipulations of that representation. The programmer can be aware of the underlying hardware, but it isn't necessary, and the whole reason there is an abstraction is so the hardware can change more or less freely. Turing's machine was never even a real machine, it was always a mathematical model. And software for it? Pure math.
Look. "x = a + b" is math. I could write that in English as "Let x be the sum of a and b" and it's math. If I translate that into French, it's still math. If I translate it into ASCII or UUCODE, and it gets sent to your computer, and it gets rendered as a font as the letters that you see, it's math. But if I translate it into MIPS, then suddenly it's not math? No, it's math, the same abstract concept as "x = a + b". It doesn't become computation until a machine or a person actually does what the math says. But the instructions are purely math. The software doesn't know or care what it is modeling, or whether it is doing it correctly. It's just a language for expressing math.
It will always be a useful tool in many areas of programming, but nontrivial code has mostly grown past the point where math is a useful model for its analysis. Like any other model, you use it when appropriate, and abandon it when it isn't.
You're still talking about "modelling" a non-trivial program with math, seemingly implying that the math model should be simpler than the program itself. I say what does that have to do with anything. You can't model the Mandelbrot set with anything less complex than repeated iterations of the formula for every specific point of space you want to know is in the set or not, because it is a chaotic system and thus the only way to arrive at the answer is to fully calculate it. So the Mandelbrot set isn't math, even though repeated iterations of x=x^2 + c is clearly math? Just because you can't "model" the outcome of a series of computer instructions with anything less than the program itself doesn't make a series of adds, subtracts, loads, and stores into something other than math either. Nowhere, ever, has math required that it be able to be simplified in order to be math.
Does acknowledging cultural differences I've observed with my own eyes make me a racist?
Yes. You must be completely color(culture/religion/etc) blind.
"Wow, Locke, I have to say your wife is really nice. How long has she been living in America?"
"Huh?"
"Well I mean she's black and has that African accent... I think she said she's from Sierra Leone? When did she leave?"
"I have no idea what you're talking about."
See then you wouldn't be racist.
No, all you've done is state that because you can't predict the outcome in advance, it isn't math. So what, this is common even in 'pure' math systems, it's still math. Show me a single instruction anywhere in any piece of code that isn't math. A collection of math operations expressed in symbolic form is math, regardless of its complexity or the ability to predict the outcome in advance using simpler math.
Spoken like someone who will never have "crotch fruit" themselves. At least I hope so.
And the Invisible Pink Unicorn is too cute to be taken seriously when it comes to damning, so that one's out of the question too.
Oh yeah, you'll think that right up to the moment you get impaled on his invisible pink horn!
It's the best kind of curse -- the kind that has your enemy laughing right up to the moment of their comeuppance!
I've worked in telemarketing. About half of them are just regular schmoes, but the other half, well, let's just say that if they were suicidal, you wouldn't expect them to stick a gun in their mouth at home, they'd more likely bring it in to work first and "share".
You were happy when I brought in donuts for everybody. Now I bring in bullets to share and you're upset? Geeze, people are so flighty and fickle, such hypocrites, sometimes it just makes me want to snap!
What is more concerning is the actual implementation of avian packets.
According to the wiki page for it, some LUG actually did it and sent nine "ping" packets and received responses. Pretty hilarious.
What makes the machine any different from the software?
A machine is a physical device whose operations can be described by math.
Software is a symbolic representation of abstract mathematical operations. It is literally a language for describing math. Not a device with properties that follow certain math equations. It is math. A machine is metal and silicon and tiny electrical switches. Software is literally a series of words that say "add this, subtract that, multiply by seven, store the result in this matrix, if the result is negative then add the first value to that same matrix location".
Can you see that the words I just wrote are math? Can you see the difference between those words and a physical device that might, perchance, have behavior that is described by that math? That's the difference. Software is a language for describing symbolic math. Just because it's a language designed to be read by a machine doesn't change that.
I think that people should have the right to protect their creations software or otherwise via patent law.
Be glad nobody believed that back when the Quick Sort algorithm (algorithm! It's math!) was invented, along with countless other things that are the foundation of computer science. Because we wouldn't be having this conversation if they did.
Lets get some semantics out of the way: I would say that programming is mathematical if a function or set of functions can be defined in advance that will accurately model the behaviour of any program.
There is. The functions defined by the program itself. Alan Turing already figured this out many years ago, using a purely mathematical model (because that's what software is, a series of math operations written to a mathematical model that represents a physical machine, but doesn't require one, which is good because he didn't have one). He showed that the only way to determine if an arbitrary program will reach the "stop" instruction is to actually run it. Practically, what this means is that the only way to determine the outcome of any arbitrary series of mathematical operations is to actually do them. Which is pretty common in math, really. NP-complete problems are ones for which there is no (known) polynomial complexity solution; the only model for the problem is an exponential one. Chaotic systems are ones in which the only way to know the outcome is by actually doing every calculation. Chaos theory isn't math? No, of course it is.
I don't really understand what you're getting at with this term "mathematical", but it sounds like what you're saying is that something is only "mathematical" if it there is an equivalent mathematical model that is sufficiently simple to predict the outcome 'in advance'. Well, sounds pretty arbitrary to me, I mean complex math is still math, just because you can't predict the outcome in advance doesn't change that what you're doing is math. But fine. Software isn't "mathematical". It is math.
An excuse that could be applied to anything. But I am talking about the design and development of a complex system.
That's an excuse to not defend the ridiculous idea that at a certain level of complexity, math becomes not-math. Math can be ridiculously complex, where the only way to predict the output is to perform the math itself. Software is math, because at the simplest level every single instruction in a piece of software is a simple mathematical statement (literally, as in it is a representation of symbolic mathematics as surely as an equation written on paper). Complexity simply doesn't enter into it.
The truth of the matter is IBM made every PC maker do micro-payments of each patent filed in relation to the PC. So every PC built IBM got a slice of the pie.
But don't mistake that thinking that IBM doesn't see value in software patents. They award bonus money to employees for creating them.
That was IBM back then; they were evil to be sure, but times have changed. And how did them only using patents defensively become them not seeing any value at all?
At this point, you're stretching to show that it's math. What about reading bits that are coming over the network, and putting them into a buffer. Surely math has no "network cord".
It's not a stretch at all. Show me the instructions executed to read bits from the network card, and tell me which one isn't math. You can't, because every single one is math. Just because the math is being done in pursuit of a high-level purpose doesn't make it not math. Math has no concept of "alternative minimum tax" or even "The IRS", yet doing your taxes is still math, because every step of it is math. Same with your network card. Your software doesn't even know the network exists. It's just a sequence of simple math operations.
Obviously, software is rooted heavily in math, but saying that it IS math is an oversimplification. You can make a model in math, where you would pretend that matrixes are memory, and that no ops are statements like 1=1, but you could also make a model where spaghetti is memory, and adding tomato sauce is placing bits.
You say "you can make a model in math", but that's exactly what an ISA is -- an abstract mathematical model to which the software is written. From the standpoint of the software, memory is a matrix, as that's how the ISA defines it. Nowhere is "memory" defined to necessarily be DRAM. It could be an SRAM, it could be a network card accessing a network, it could be a dude with a pen and paper writing down values or sending them via semaphore "network" to another location, and yes it could be a plate of spaghetti if you created a way to accurately do the math using it.
You could execute software by hand. It wouldn't be fast enough to be useful; but so what? Just because doing the math to calculate the necessary corrections for a cruise missile by hand would mean you miss your target doesn't make that calculation not math. Math is an abstract concept; math doesn't require being fixed to a particular implementation.
Just because math can model it doesn't mean that it IS math.
Software is the model, and it is math. Just because the syntax is different (NOP instead of "let x=x") makes no difference. One of the most basic concepts in math is that if two things are logically equivalent, then they are equivalent. A NOP is math, it's logically the same as 1=1, the difference in syntax is irrelevant. Loads and stores are math. Every single operation in software is math.
Hardware is something that can be modeled by math but isn't math. The software it runs is, by definition, a mathematical model itself. Software is math.
It's not all mathematical instructions. The instruction to load a value from memory into some registers isn't math
Of course it is.
"let M be a one dimensional matrix of size 2^30"
"let x = M[4096]"
"let y = x + 17"
"let M[4097] = y"
M is memory, x and y are registers. It's all math. Every single statement in a program is a symbolic description of the manipulation of state through mathematical operations (including the identity operation). That's math.
Even I/O instructions, because all that is doing is calculating a value and placing it in a specified variable. The fact that the variable has a hardware-generated side effect doesn't make the instruction not math, any more than filling in the "amount owed" field on your taxes with a positive value causing you to have to write a check to the IRS makes calculating your taxes not math.
and the order in which those values are loaded from memory can have a strong effect on the performance of the machine.
True but irrelevant as to whether it's math or not. You can reformulate an equation or algorithm so that it's faster to calculate by hand. The calculations are still math.
Not all software is maths. Some of it is complex systems, just as complex as any machine.
Complex math is still math.
There is so much revenue generated for companies and the government that if ever someone got close to a position to kill software patents they would be out on their ear faster then you can say lobbyists.
Actually quite a few of the most powerful companies (MS, IBM) are quite upset at being targeted by patent trolls. Their own software patents serve almost no function except a defensive one.
Actually, the parent post contained a simile that compared software to math, not a metaphor.
I was using metaphor in the broader sense of non-literal comparisons (because it's irrelevant to my point what kind of figurative comparison is used), and in this sense a simile is a type of metaphor.
"Software is math" is a metaphor
No, it isn't. There's more to metaphor than simple grammar. "Spain is a country" is not a metaphor, and neither is "Software is math", at least as I said it. I was being literal, which is the opposite of metaphorical.
The first rule about the Weird Stuff is we don't talk about the Weird Stuff.
We do the weird stuff!
I assume then that at some point someone will have to write up a new RFC on "IP Over Space-Avian Carrier"?
I think it might apply more to manual-transmission Insights rather than Priuses, though: they say the way to drive an Insight is to floor it in 1st and 2nd, then shift straight to 5th once you're up to speed.
Well then maybe that means the Insight is the hybrid for me, since that's how I drive my gas-powered car today. =D
Needs more ellipses.
"Jonas Venture": I took the form of your dad because I figured it would be easier to accept. I didn't want to stress you out--end of the world, life on other planets, blah blah blah.
Dr. Venture: Why...you SON-OF-A-BITCH! Do you know what you just put me through?! What the fuck were you thinking?! What kind of fucked-up planet are you from, where you think showing up as my dead fucking father is supposed to make me feel any better?!
"Jonas Venture": Okay, take it easy...
Dr. Venture: You prick!
"Jonas Venture": Look, I just saved your entire planet...
Dr. Venture: Prick!
"Jonas Venture": Alright, fine, you wanna see? Here! (Peels off his face, revealing his true self, which is shown offscreen, but horrifies everyone else) There! Are you happy now? Would that be better? That I came out looking like that out of nowhere? Look at you! You practically crapped your pants! Except for him, he crapped his pants! (points to Ned)
Ned: Boom boom.
Personally, I find it a bit hard to believe that a civilization is smart enough to travel interstellar distances but too stupid to use basic camouflage.
Uh, things that use "basic camouflage" can still be seen, it is just more difficult in some circumstances. UFOs are only seen occasionally, so if they exist and are aliens, perhaps they very much do use camouflage. I mean, FTL travel would require some pretty amazing advances in physics, but that's no reason to assume that if you can travel faster than light, you can also be invisible when flying around a planet at sub light speeds.
Who proved that computer programs are equivalent to Turing machines, which can be actual mechanical devices.
No, Turing proved that any computer program has an equivalent program that can be run on a Turing Machine. He proved that anything you can compute can be computed on the Universal Turing Machine, and thus all computers are subsets of a Turing Machine, and all software is a subset of a Turing Machine program.
He didn't prove that software is equivalent to a machine itself. That makes no sense; software can't do anything by itself. It needs someone or something to interpret it and take actions based upon that.
but there are innumerable behaviors in software that simply have no clean mathematical representation.
Every single statement in software can be cleanly described by the math that the statement itself represents.
If you're talking about the "emergent" properties of the software, that's true, but the same is true of any complex series of mathematical statements which do not lend themselves to a simpler description. There is no "clean mathematical representation" for the border of the Mandelbrot Set -- except for the series of mathematical operations used to produce it. Just because there is no clean, simple description of a piece of software does not change the fact that every single step in the software is itself a simple mathematical statement.
And you can use math to describe (some) software.
You can use math to describe ALL software, because all software is a description of math!
Every single statement in every piece of code ever written is nothing more than a description of how to manipulate a piece of state based on a mathematical operation. That state itself is described in an abstracted purely mathematical way, separate from any actual hardware implementation (more or less the same abstract model used in the 8088 and the Core 2 Duo). It's a finite state machine. A mathematical model, with mathematical operations performed on it. It's all math. And it's purely math, nothing more than a description, until you invent an actual machine capable of acting on that description.
The essential difference is this: software is an engineering discipline, while mathematics is a science. Therefore they cannot possibly be the same thing. And until I see a proper software science, I will not buy into the "software is math" fallacy, and neither should anyone else.
You're talking about fields of study. That's completely irrelevant. A grocery store clerk is not a mathematician in any way shape or form. Yet when they add up your bill, that's math.
Software is math. Whether computer science or computer programming or what have you is a scientific discipline or an engineering discipline is an interesting question, with practical ramifications as to how we teach software development. It makes no difference as to whether or not the software itself is math. I learned about the Normal Distribution and Conditional Probability in an engineering class. Probability is still math.