Mr Davis 97 said:
Essentially, my question is, is the notion of computation wholly related to functions? Are the two terms somehow synonymously related?
It seems a lot of the answers have gone rogue on the recent hype revival of functional programming . But I would like to get back to your question.
First I think there is the same tension between Math and Physics then there is between Math and Computing/er. Each of those field trying to pretend ownership of the other.
I don't think that is the case. There is intersection between them, but some parts are clearly more distinct.
I think the reason is simple, both physics on computer have to handle "practical" rules and facts, that mathematics could probably describe, but to no ends.
In computing there is indeed "pure" function that would probably match pretty closely the math notion. Hence the same word is used. But where the math function is a
mapping between input and output, a computer function is an instance of such a process that
transform input into output.
I like to see the math as pure symbolism, and the computer function as a realization that would have to consume "energy". Its not pure, its not abstract, they could fail.
Even in its symbolic form, the computer function is deeply related with the fact that your CPU has a CALL / RET in its instruction set (that's why GPU are quite different to program).
So
at one range of the spectrum, there is more pure function, like Add. Really, the pure functional language paradigm has a great deal of advantages, but they are often limited to handle the parts of the logic that is factually more close to pure math. SelectFirstElementOf(sequence) would be another example. But those function are not going anywhere. The purest math method I know of is the Mandelbrot set function. And really, it only gets its real beauty when computers take care of it. I really do think math an computing is the very same for all mathematics
of iteration. I hope this will someday bring some new insight into the chaotics/fractal non-linear mathematics, that really need a revolution.
At the
other end of the spectrum, there is the notion of process. There is a bunch of things (lets call them data), and those things will be peeked, poked, deleted, created, following a long range of procedure/recipe, producing along the way a lot of intermediate data. I don't think math could care less about [if then else]. But in every sense a computer only
compute to compare and feed an "if" decision (lets be honest, its 99.9% of the time). I mean by that that computer are more like state machine, (which can also be describe/abstract by math) but is not linked to function/mapping. A browser is not a function. Its does not map the internet to page with url, even if some mathematician will pretend it is just what it does. What it does is follow a program, a procedure, it is only a bunch of: if then else and loop and or branch.
Instead of speaking of random() the paramount example of a function is open(). It is not math, it does does map close file to open file. But that method open a file. Call it twice, and your are dead meat (even one may fail). At this end of the spectrum I very much consider computing to be biology. Function are just strands of DNA proceed in semi chaotic orders putting some "life" into your machine.
Right in the
middle of the spectrum, the is the notion of algorithm. Take
quick sort for example. Is it a function that map a unsorted set to a sorted set ? Is it a slowly growing state change ? It is both, and it is at this interface of math and computing that I personally find the input of pure math the more important (I hope that mathematician do fell a symmetric feeling). I could also mention information theory and the ranking algorithm that everybody is so found of nowadays. Cryptography / compression is also at this middle range, in my views.
Well, back to work ;-)