I think of the non-hardware parts of computer science as applied philosophy.
Art seems wrong to me as a descriptor because it would imply that I'm writing code for a sort of aesthetic beauty. The aesthetic beauty should be in the end result.
Which also means it probably isn't science, because really what I worry about when I'm programming is that the end result will be correct.
To some extent I am concerned about scientific process, having a program that is repeatably verifiable as doing what I expect, but in terms of actually using scientific methods to write software, I can't really say I do that very much. As with the beauty, the science is in the end result and not really the process.
Which brings me to why I think it is applied philosophy:
What am I doing when I write code? I am taking a problem and deconstructing it into different pieces, finding ways to represent the different pieces, and reasoning about how everything should interact. I think this basically holds true for functional, object oriented, and imperative programming.
I think that from this perspective, writing code is closest to some sort of philosophical inquery. You are using a computer to build abstractions, and through enough abstractions (or abstractions written by someone else, imported in libraries), you are able to create something.
> Art seems wrong to me as a descriptor because it would imply that I'm writing code for a sort of aesthetic beauty.
I think code can hold the same kind of beauty that math has when someone says that a proof is elegant, or a theory is beautiful. It's not a visual aesthetic, but appealing nonetheless.
Anyway, I think that the idea of programming as philosophy is interesting. I'll have to think about that more.
Art seems wrong to me as a descriptor because it would imply that I'm writing code for a sort of aesthetic beauty. The aesthetic beauty should be in the end result.
Which also means it probably isn't science, because really what I worry about when I'm programming is that the end result will be correct. To some extent I am concerned about scientific process, having a program that is repeatably verifiable as doing what I expect, but in terms of actually using scientific methods to write software, I can't really say I do that very much. As with the beauty, the science is in the end result and not really the process.
Which brings me to why I think it is applied philosophy:
What am I doing when I write code? I am taking a problem and deconstructing it into different pieces, finding ways to represent the different pieces, and reasoning about how everything should interact. I think this basically holds true for functional, object oriented, and imperative programming.
I think that from this perspective, writing code is closest to some sort of philosophical inquery. You are using a computer to build abstractions, and through enough abstractions (or abstractions written by someone else, imported in libraries), you are able to create something.