Is programming science?
There's no doubt computer science is indeed a science, but what about programming itself? Does it fulfill the basic requirements that make something a science? I'm not an academic, just trying to start a conversation.
In many ways, programming is like Math: a means to an end. And Math is a science. Like math, programming has several fields with vastly different ideas of what constitutes programming. Because it is applied logic, programming is also provable and disprovable. There are many disputing hypothesis and, even though absolute truth is a distant dream, it is certain that some sentences are truer than others. Again, like Math, Programming has many practical applications, such as finances and engineering.
Some people consider Math a propaedeutics: not a science in itself, but a discipline that provides fundamentals to actual sciences such as chemistry and physics. The same reasoning could be applied to programming, as nothing more than a tool for computer science. I personally think there's something unique about programming and it's problem-solving methods that can be considered a field of its own.
What you guys and girls think?
I feel that programming is most commonly used as an art rather than a science. And honestly I say that largely because there are so many open source projects that seem to be motivated by people who just want to challenge themselves to see if they can do something. I mean, that's basically how Linux started, isn't it? And look how big and important it is today.
If we were to compare programming to anything else, I would say it is most simelar to poetry. The programmer puts words together in a highly thoughtful and purposeful way, all within the strict rules of form, style, syntax, and grammar, in order to create something that is greater than the sum of it's parts. And just as there are many examples of great poetry, there are also many examples of great programming.
A relevant quote from The Mythical Man-Month that I've always liked, relating programming to both poetry and magic:
I don't have much time right this moment to write a proper response, but I just want to link to Donald Knuth's musings on Programming As An Art (Not! "the art of computer science" but "the ART of computer science"). Click on "PDF" and it'll send you to the full article (for free). It goes over his thoughts in 1970 over Computer Science As A Science as background, which I found pretty interesting just on their own.
I don't think so. It's a language. Just like English, Spanish, Russian, whatever.
It a way of communicating knowledge from one person to another. That modern programming happens to do that through converting text to media (audio/image/video), doesn't change the root purpose.
Yes, I think so. It is and art and a science. We make theories, do experiments, investigate how things work. We make models and simulations of physical reality. We have had many breakthroughs, new ideas about how to structure and write code that shake things up.
I think as time goes on we will see even more of an overlap between computer science and the other sciences. Biology is made of tiny computers like dna. Physics and chemistry are representable as a computer simulations.
Programming is similar to engineering. It's fundamentally a creative act.
I would also argue that neither computer science nor mathematics are sciences either. Science is about observing phenomena and providing theories that explain them.
I don't really have much substantive to add here at the moment, but I'm a full time programmer and my degree is actually in English composition. I found the transition into programming to be a surprisingly natural one. There are a nearly infinite number of ways to express what you're trying to express when you're writing a program, and you're drawing off the styles of an existing body of "literature" such as API documentation, others' code, and your own past work. In a way you're telling a story through code about how the user interacts with the computer, and you do so in your own somewhat unique composition style. This is especially true if you use conventions like behavior-driven development.
I would consider programming as separate from computer science as primarily engineering. It can certainly be used for art, or science - and some programs, like quines and code golf and certain other very clever programs, are art in the same way that a diagram of a Rube Goldberg machine are art, or the way that some math can aspire to art.