Poll: Computer Programming - Art or science?
-
-
It's math.
-
-
It's math.
Yeppers, but my guess is that @Nagesh didn't actually mean Comp Sci the academic category but rather what people do with it (software development).
-
I'd say it's a mix of art and science. There are rules that make programming work. But how you code within those rules and guides can be very artistic. And the end results of you efforts can also be beautiful.
Of course, much like art, there are many cases where a programmer should be shot to spare the world of more of their work.
Edit: Response revised here.
-
I'd say it's a mix of art and science
So like working for a gold smith. melting gold is science, but crafting it to beautiful piece of jewelry is art that can only be gleaned from apprentice-ship
Fixed Spelling
-
gland from apprentice
I'm not sure what you are trying to say here. "Apprentice" is too far from "experience" for "gland" to be a bad auto correct of "gained".
-
I'm not sure what you are trying to say here. "Apprentice" is too far from "experience" for "gland" to be a bad auto correct of "gained".
It's Nagesh. What did you expect?
-
It's a craft.
-
I think strong parallels can be drawn between my programming and the surrealist movement.
-
I agree unexpectedly.
-
Post some code quickly.
-
I was about to argue with you about calling computer science a craft, but I just noticed that the topic was changed to 'Computer Programming'. Changing the name on a topic is useful, but can lead to confusion if it is done after commenting has been happening.
-
Case in surreal point:
http://what.thedailywtf.com/t/the-bad-ideas-thread/254/99?u=dhromed
-
It's useful, so it's not art.
-
It's useful, so it's not art.
Are you sure that all programming is useful? I'm not.
-
It's useful, so it's not art.
Are you saying that art can't have a use? I'm trying to make sure that my urge to stab you in the face is justified.
-
It's useful, so it's not art.
Are you sure that all programming is useful? I'm not.
Are you saying that art can't have a use? I'm trying to make sure that my urge to stab you in the face is justified.
@chubertdev: It seems that your argument is worth less than .
-
Testing something.
Edit: specifically relating to - http://what.thedailywtf.com/t/most-posts-when-latest-poster-on-topic-list/638
-
Principally engineering, but with a very unusual set of cost parameters. (Engineering isn't an art or a science, much to the irritation of both artists and scientists.)
-
Principally engineering, but with a very unusual set of cost parameters. (Engineering isn't an art or a science, much to the irritation of both artists and scientists.)
You make a good point. I wish to revise my earlier response and say that programming is primarily engineering, with an optional component of art.True, there are times when you have to involve science to get the job done, but what engineer doesn't. On the other hand, when you must choose between several methods of completing a task, sometimes you just pick the option that seems the most elegant, the most beautiful, you can't help but call it art.
And then there are "programmers" that just leave everywhere they code.
-
And now, I shall be the most frequent poster. Bwahahaha!
Edit: Of course due to the bug that @locallunatic pointed out (http://what.thedailywtf.com/t/most-posts-when-latest-poster-on-topic-list/638), it isn't working right.
-
It's math.
No, it's definitely not math.It's a craft and requires craftsmanship, maybe even apprenticeships.
-
Are you saying that art can't have a use? I'm trying to make sure that my urge to stab you in the face is justified.
It evidently helps a lot of people gain employment at Starbucks.
-
It evidently helps a lot of people gain employment at Starbucks.
Art's principal purpose is the creation of advertising copy. Always has been. Those big portraits of famous people? Ads, even if most people don't know how to read them any more. Shakespeare's plays? Mostly ads that emphasised how right the current regime was (Macbeth is just the most obvious one, a blatant propaganda piece if ever there was one, up there with Leni Riefenstahl's greatest works).
-
It's math.
@codinghorror said:No, it's definitely not math.
When the poll was originally posted the poll was about Computer Science not Computer Programming (which is what ben was responding to). Allowing the topic of the poll to be changed after there are posts on it leads to misreading of early comments like you did.
-
When the poll was originally posted the poll was about Computer Science not Computer Programming (which is what ben was responding to). Allowing the topic of the poll to be changed after there are posts on it leads to misreading of early comments like you did.
Some parts of true CS are rather math-like (theoretical CS). Others are much more like psychology and physiology (UI research). The hardware side of CS is distinctly towards a traditional engineering discipline. I deal with quite a few informatics people right now, and they're definitely not mathematicians.Unless someone manages to do mathematical informatics. But that's hardly likely.
-
Some parts of true CS are rather math-like (theoretical CS). Others are much more like psychology and physiology (UI research). The hardware side of CS is distinctly towards a traditional engineering discipline. I deal with quite a few informatics people right now, and they're definitely not mathematicians.
Unless someone manages to do mathematical informatics. But that's hardly likely.
CS often includes, but is not limited to mathematics. It's almost always improved by it.
-
Some of the arguments you are making seem like they could be interesting discussion, but @codinghorror's response to @ben_lubar was going on about programming being a craft which is a different thing (and your category of theoretical CS is the academic version of things that get shoved under that heading, things like UI design are not CS in that sense, but are something that should be studied if you are planning to work as a dev).
-
-
It's a craft.
I generally think about it this way. There's a lot of science and a lot of art.
That said, I think of coding as applied math. People who think math is numbers won't understand that.
-
It sounds like you don't understand your craft. It is entirely applied mathematics, with a smattering of abstract algebra and category theory. Unfortunately, the bottom 80% don't understand their craft.
-
Mostly it's logic, from my perspective. Since you didn't seem to read the post I cited at all, I'll quote it directly for you:
When I was growing up, I remember hearing people say things like, "If you like computer programming, then you'll love math." I always thought that these people were absolutely nuts. While there is something intrinsically similar about certain types of math and computer programming, the two are different in many more ways than they are similar.
With math, and I'm not talking about the crazy number-theory math philosophy "Do numbers really exist?" side of things, but with the applied stuff, there are correct answers. You're either correct or you're incorrect.
With coding, the best you can hope for is to do something well. With so many different ways to effect a single outcome, it's up to some very right-brained sensibilities to determine if you've met your goal, as there isn't anybody (except [another more experienced developer]) who can tell you if you're right or not.
If you ignore your right brain, and I'm talking generally about abstraction and aesthetics, then you can slap some code together that might work, but it also might be one hell of a maintenance nightmare. If you focus only on the right brain, you might have something that works, but is so utterly inefficient and personalized that you're the only person on Earth who could make sense of the code and maintain it.
-
It is entirely applied mathematics
However, there is an art / craft aspect to creating code that's easy to read or maintain or extend. And that's a very slippery concept as like with beauty, it's often based on the eye of the beholder.
-
If you ignore your right brain, and I'm talking generally about abstraction and aesthetics, then you can slap some code together that might work, but it also might be one hell of a maintenance nightmare.
If you're not using your left brain for abstraction, you're definitely doing it wrong.
-
Art's principal purpose is the creation of advertising copy. Always has been. Those big portraits of famous people? Ads, even if most people don't know how to read them any more. Shakespeare's plays? Mostly ads that emphasised how right the current regime was (Macbeth is just the most obvious one, a blatant propaganda piece if ever there was one, up there with Leni Riefenstahl's greatest works).
Art and advertising create their own demand. There's no problem, the work itself is meant to create a problem, if anything.
Computer programming is meant to solve problems that already exist.
-
Computer programming is meant to solve problems that already exist.
However, as we've all seen many times on TDWTF, it is often a solution in search of a problem.
-
However, as we've all seen many times on TDWTF, it is often a solution in search of a problem.
I'd say that those examples are really solutions that create more problems. Self-manifesting hydras.
-
It is entirely applied mathematics, with a smattering of abstract algebra and category theory.
You've not seen the majority of mathematicians try to code either. There are some who are good, but that's also true of scientists; some can code, but most can't really. (But they can cut-n-paste from a recipe book.)Programming is principally engineering; the programmer is seeking to create an artefact that works and persists until it is no longer wanted. A knowledge of other things such as mathematics and psychology can help a lot, but without at least something of an engineering attitude, the “programmer” is just the most menial of code monkeys.
Theoretical CS is very close to math, but a good TCS person is also aware that logic is not the pure domain of mathematicians; the philosophers are still pissed off at that attempted land grab. A good TCS person is also better at rigour than most mathematicians; a mathematician can hand-wave things (including embarrassing facts) as being “trivial” but someone dealing with a computer cannot.
-
Captain said:
It is entirely applied mathematics
However, there is an art / craft aspect to creating code that's easy to read or maintain or extend. And that's a very slippery concept as like with beauty, it's often based on the eye of the beholder.I get where you're coming from, but I have to disagree. The choices are easy. You design a data type to represent values, functors to represent contexts, functions to represent transformations, and a monad to represent an interpreter. You use the monad. You're done.
-
You've not seen the majority of mathematicians try to code either. There are some who are good, but that's also true of scientists; some can code, but most can't really. (But they can cut-n-paste from a recipe book.)
But this is rather a red-herring. Most programming languages don't have the tools to approximate mathematical notation, let alone libraries to allow designing code with the kinds of modularity mathematicians use on a daily basis. Most mathematicians are not inclined to coerce a language like C into looking pretty.
On the other hand, even the n00biest of Haskell n00bs writes beautiful code. And has access to the kinds of modularity mathematicians use on a daily basis.
-
@codinghorror said:
@ben_lubar said:
It's math.
No, it's definitely not math.
When the poll was originally posted the poll was about Computer Science not Computer Programming (which is what ben was responding to). Allowing the topic of the poll to be changed after there are posts on it leads to misreading of early comments like you did.
One thingGoogleApache Wave did really well was displaying edits in context. Anyone in a Wave could edit anything in that Wave, and the entire thing was a single unit as far as edit history, so a change to the first post would come after a subsequent post that was made before the edit.
-
The particular technology that drives a lot of that was called operational transformations.
You can see a lot of it in action at: http://sharejs.org/ which was written by one of the members of the original authors.
I agree the tech is cool.
-
If you hate math, you will never be a good programmer.
If you hate programming, you can still be a good mathematician.
-
It's a craft.
dhromed beat me to it. (and only by 13 hours too!)I'd go as far as saying that to the eyes of some it's witchcraft.
-
I'd go as far as saying that to the eyes of some it's witchcraft.
That can't be right; I weigh more than a duck.
-
-
Most programming languages don't have the tools to approximate mathematical notation
Most of them do, but don't use it because we still tend to not use editors that support fancy notation reliably. Instead, programmers use multi-glyph tokens much more extensively.Mathematics tends to suffer from being totally impenetrable to someone not in that exact part of the discipline because of the use of symbols to mean exactly what a small community wants at that time. It's the Humpty Dumpty effect. Case in point, what does Kq mean? You've no real way to guess without a lot of context. Computers are fundamentally machines that need you to be explicit about context, and that makes them mix rather badly with how many mathematicians work.
But you talk like a mathematician, not a software engineer.
-
Always brings tears to my eyes
-
So you're saying magic is a craft as well.
No, I'm abusing the language to say some people look at programmers as magicians.But, stage magic is a craft, sure, insomuch as it a profession requiring a specific skill set.