I was initially outraged by my claim in the previous post that computer science is not real science, but when I thought about it some more, I concluded that I might have a point.
The argument rests on the following series of assertions:
1. Science is the reduction of the natural world to mathematical description.
Of course science is many others things besides, but this I claim is what the core activity of the natural sciences has turned out to be. This indeed is an understanding of things that led to some obstacles for the first two millenia or so; with a few, mostly astronomical exceptions, the world proved too complex to be immediately reducible to simple mathematical forms in the way the Pythagoreans had, in their first flush of enthusiasm, initially hoped; and at least from Plato onwards, mathematicians and philosophers were encouraged to focus their eyes on ideal forms rather than messy reality. However, once maths had developed enough, and had realised enough of the strangeness of its own material not to get too uptight about using tools like calculus before all their aspects had been formally proven; and once science too had learnt from Bacon to distrust arid, scholastic speculation in favour of hard, inductive fact, and then forgotten enough of Bacon to be prepared to make bold theoretical leaps again; once these initial challenges of a tempestuous courtship were overcome, science and maths settled down in a fruitful partnership.
2. The computational world is already mathematically described.
As computationalists, we already live in a world of ideal Platonic forms. Numbers are numbers; Boolean values are true or false; imperative statements are predictably executed. There is nothing to be reduced here. Of course, there is magic going on within the circuitry, but that does not concern us; the underlying world of electronics only breaks through into that of computation precisely when it does, indeed, break.
3. Therefore, there is no science to be done in computer science.
What then is it that computer scientists do, then? Well, lots of things; it is a diverse field. The most august parts of field, such as complexity theory, impinge back into the mathematical field. But essentially my claim is:
4. Computer science is to mathematics what engineering is to the natural sciences.
That is, computer science is mathematical engineering. This claim is liable to cause confusion, for a number of reasons. Regular engineers also use mathematics, as well as the findings of their respective scientific counterparts; but then that is hardly strange, since those scientific counterparts themselves use mathematics. Mathematics has other applied fields, such as statistics; but the essential distinction is that computer science works on problems that have a computational aspect; and in any case there are significant overlaps between computer science and other fields of applied mathematics. There is also sometimes a distinction made within computer science between computer science on the one hand, and software engineering on the other; indeed, my own department is named Computer Science and Software Engineering. However, my claim about this purported distinction is:
5. The relationship between computer science on the one hand, and software engineering on the other, is the same as the relationship between engineering research and the vocational training of engineers.
Engineers are not just practitioners; they also do research. The research they do is not, in general, pure research; rather, it is the application of the outcome of pure research to finding novel solutions to complex, applied problems. At the same time, of course, most engineers do not do research, or at least not for the majority of their careers: rather, they apply engineering discipline to everyday tasks and activities.
So too in computation. Computer scientists are not really doing pure research, although they might like to think they are; if they were doing pure research, they would be doing mathematics (as, indeed, so-called computer scientists such as complexity theorists are). What computer scientists do when they do research is to apply the tools and findings of mathematics to complex practical problems, either in the obvious form of mathematical theory (probability, linear algebra, etc.) or the more indirect form of using computational techniques, which in turn are a particular form of mathematical tool, albeit a highly articulated and specialised one. And, as with engineers, most computationists do not spend their time, or at least the majority of their careers, solving these original, complex problems; they apply the discipline of computer science (that is, mathematical engineering) to everyday tasks.
One could reduce this to another form: research engineers (computer scientists) do extraordinarily what professional engineers (software engineers and programmers) do ordinarily.
So, finally, to re-iterate my main thesis:
6. Computer science is not real science.
This is not intended to be disparaging (although it would be nice to have a different adjective than "real"). But it is intended to be a statement of reality. And computer science as a discipline will be hampered, and will fail to make its proper contribution to the fullest degree, if it is deluded about its true identity.