Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

What is programming?

  • Science

    Votes: 30 69.8%
  • Art

    Votes: 34 79.1%
  • Normal job

    Votes: 12 27.9%
  • None of the above

    Votes: 4 9.3%

  • Total voters
    43

liptonlover

macrumors 6502a
Original poster
Mar 13, 2008
989
0
I've always wondered about this... I can see it both ways. On one hand, art generally doesn't deal with math and numbers like programming does. Yet programming isn't a day-to-day job either, nor is it generally a groundbreaking area of life where programmers are making revelations. I don't think there's anyone that programs to discover new things, or just because they need a daily job. Programmers are passionate about their work, and love it. So what do you think?
 

TEG

macrumors 604
Jan 21, 2002
6,625
173
Langley, Washington
Programing is everything. It is science (the principles behind it), art (getting everything to work just so), job (as evidenced by Windows), and total crap (as even though everything is written correctly, it still doesn't do what it is supposed to do).

TEG
 

lee1210

macrumors 68040
Jan 10, 2005
3,182
3
Dallas, TX
I checked both, but the question was either/or so the answer is "No, it is both".

Computer science is a science.
Programming is the application of the science.

Is casting a mold and using it to form a plastic sculpture art or science? It seems to be an art, but requires the application of chemistry, thermodynamics, etc. In this case the science is applied more casually, whereas most programming requires a more rigorous application of Computer science.

I guess it really depends on what sort of programming. You can program without any knowledge of computer science, but I would be unlikely to want to use the result.

-Lee
 

lazydog

macrumors 6502a
Sep 3, 2005
709
6
Cramlington, UK
Right now I'm battling with getting a project into Eclipse and have come to the conclusion it would be easier to start a fire by rubbing two sticks together at the bottom of a swimming pool. So, art or science? ... more like frustrating or soul destroying!

b e n
 

Xander562

macrumors 68000
Apr 2, 2006
1,625
0
Making a program carry out a specific function is a science. Making a program that simultaneously is functional and easy to use/elegant is an art.
 

liptonlover

macrumors 6502a
Original poster
Mar 13, 2008
989
0
If you want to take it far enough, everything is a science. But we need to decide if we're talking about an abstract or solid thing. Programming requires a lot of science. There's no question about that. But the programmer ideally is striving to create a beautiful, unique app. I think it's close, but for me art wins.
 

lazydog

macrumors 6502a
Sep 3, 2005
709
6
Cramlington, UK
I guess programming isn't an art because all programs can be auto generated by a really dumb program. The very large phase space makes it appear to us that when we write a program we are creating something new, when in fact we're only discovering what's already there.

b e n
 

dejo

Moderator emeritus
Sep 2, 2004
15,982
452
The Centennial State
Update the poll to have a "Both" choice and I can answer!

I had a university professor tell us that the best programmers use both the left (scientific) and right (artistic) sides of their brains equally. I still think he was on to something.

I guess programming isn't an art because all programs can be auto generated by a really dumb program
Something like "a thousand monkeys sitting at typewriters"? I don't think so!
 

FireArse

macrumors 6502a
Oct 29, 2004
900
110
Can it be art?

I think it can be art. At university, lecturers have described some approaches as 'elegant'.

What was the Space transporter that auto-tagged itself to the ISS? I think the software controlling all that was art. Pure Genius.

There are some Computer Science principles that I think are art - DeMorgans or Karnaugh maps - they looked 'arty' to me when I first saw them :)

F
 

Lari

macrumors newbie
Aug 12, 2008
2
0
US
I've always thought of it as both. When I was interviewing back in the early 90's, I met lots of programmers that were of the science type. Extremely dull, lacking imagination, 9-5 mostly for the money programmers that fit in at big businesses.

Then there are the artists. They are the one that work for endless hours programming for the pure joy of being able to make the machine do new things (at least to them). They are the ones that go in in the middle of the night to test something, not because their employer called and forced them to come in. And yes, their code can be quite elegant.

I guess I think it's more in attitude than it is in how the code actually looks. I'd throw most hackers (true hackers not the media spin on hackers) into the artist group.
 

liptonlover

macrumors 6502a
Original poster
Mar 13, 2008
989
0
In the early '90s people thought science was what computers should be for. Computers were geared at business and scientists back then, so business men and scientists were the ones using them, manipulating them, programming them. Like I said, I don't think very many people program purely as a job and means of making money any more.
 

Aea

macrumors 6502a
May 23, 2007
838
208
Denver, Colorado
I'd say both. It's a very creative job, but still requires very strict principles and a very concrete understanding of the language and media you're working on.
 

Eric5h5

macrumors 68020
Dec 9, 2004
2,494
604
I guess programming isn't an art because all programs can be auto generated by a really dumb program. The very large phase space makes it appear to us that when we write a program we are creating something new, when in fact we're only discovering what's already there.

In that case nothing is art, since that argument could apply to everything. All writing could be autogenerated, all paintings, everything. The odds of a functional program being autogenerated are about the same as Hamlet being autogenerated, I'd say.

--Eric
 

Tosser

macrumors 68030
Jan 15, 2008
2,677
1
I'd hope more people would consider it a craft and took pride in the craftmanship. Hopefully that way we'd get less bloatware, less bugs and less security holes.
 

HiRez

macrumors 603
Jan 6, 2004
6,265
2,630
Western US
Clearly it is both, but you can decide to focus almost entirely on one aspect or the other if you want. Personally I don't think you can really be a great programmer without a good dose of both. You can go to school for Computer Science, but can also study to be a Software Designer, which implies some artistry. You could say you don't need to be a programmer to be a software designer, but I don't know any who aren't.
 

savar

macrumors 68000
Jun 6, 2003
1,950
0
District of Columbia
I've always wondered about this... I can see it both ways. On one hand, art generally doesn't deal with math and numbers like programming does. Yet programming isn't a day-to-day job either, nor is it generally a groundbreaking area of life where programmers are making revelations. I don't think there's anyone that programs to discover new things, or just because they need a daily job. Programmers are passionate about their work, and love it. So what do you think?

I think the answer is, "programming is engineering". Engineering involves some art to it, because rarely is there a formula which you can plug in to optimize all parameters. You have to experiment a bit to see what works, and tweak... those things require human intuition.

(If it didn't require human intuition, then somebody would have written a program already which is capable of writing all other programs.)

But I resent those who say that programming is an "art". This viewpoint is used to justify defects existing in software, or suboptimal design.

Programming is like building a bridge. It is possible to design it all up front, then construct it, and it will operate perfectly for decades within its specified parameters of operation -- bridges rarely fail unless some external catastrohpic event occurs.

On the other hand, modern software fails ALL THE TIME.

The biggest reasons for this are:
1) It's still a young field,
2) Way more demand than supply right now -- so idiots get into the field who wouldn't normally make the cut in a real engineering field (Also, the bar to entry in software is lower than, say, bridge building. You can mess around constructing software at very little cost. Buildling large scale bridges on your own is preposterous.)
3) No strong standards organizations like other engineering disciplines have
4) Wrong business mentality -- most people hiring developers are looking to do the job as cheaply as possible, so they hire incompetent developers. If you RFP'd the construction of a new building, you'd be DAMN sure that the developers were top notch before you let anybody set foot in the building, but if you RFP'd a new information system you'd probably toss it to the cheapest bidder.
 

savar

macrumors 68000
Jun 6, 2003
1,950
0
District of Columbia
Making a program carry out a specific function is a science. Making a program that simultaneously is functional and easy to use/elegant is an art.

I agree with you that "Elegant" may be an artful measure, but "easy to use" or "accessible" is much more quantifiable, and thus it becomes an engineer's optimization problem.
 

savar

macrumors 68000
Jun 6, 2003
1,950
0
District of Columbia
I'd hope more people would consider it a craft and took pride in the craftmanship. Hopefully that way we'd get less bloatware, less bugs and less security holes.

Interesting... see that viewpoint is the one I usually associate with bad software. If it were approached as a rigorous discipline, with standards defined and compliance measured, we would have much better software than we do.

"Pride" makes it sound like its a one-of-a-kind product, which is silly for software. Software's single greatest appeal is it's extremely low marginal cost and the symmetry of identical software performing identical tasks.

I suppose that there is a distinction between business apps and otherwise.

If you've worked on business apps before, you quickly realize that there is very little originality in it. It's all just tweaking the parameters based on what's important to that client. The real genius for that type of development is putting in place the policies and tools that allow you to build something that is cost-effective (it generates more value than it costs).

The guys who developed Delicious Library on the other hand... well I admit that is a kind of "craft", where pride matters. They were working on something highly original where being defect-free doesn't matter quite as much as producing something novel and intriguing.
 

zmttoxics

macrumors 65816
May 20, 2008
1,020
1
It's a trade / skill. No different to welding. There is science behind it, it can be considered an art, but really its a skill set.
 

ChrisA

macrumors G5
Jan 5, 2006
12,918
2,170
Redondo Beach, California
What is it you are writing? I spent quite a few months working on a self diagnostic system for a radar system. The "user interface" was an LED that would, under the right conditions light up or blink. Is this "art".

I also wrote a device driver for a custom one-off camera. Are device drivers "art"?

Right now I'm working on a system to automatically generate the programming that gets loaded into a device that procees rocket telemetry. It's something like a compiler but very specialized to just one purpose. "art"? I doubt it.

What about the programs inside your microwave oven controller or the ones in your car?

Most people, I think of "software" as something that runs on a desktop computer. Most of it does not.

None of this is "science" either. Science tell us about the natural observable world. Programming is engineering. Much of it is not even that, it's done just "seat of the pants" and ad-hoc.
 

Tosser

macrumors 68030
Jan 15, 2008
2,677
1
Interesting... see that viewpoint is the one I usually associate with bad software.
Really? Why does considering it a craft equal bad software?

If it were approached as a rigorous discipline, with standards defined and compliance measured, we would have much better software than we do.
Hmm, when I speak of pride in good craftsmanship, I think of, say, fine carpentry with knowledge of woods, knowledge in general about what he does, know how and experience. I, for one, think that you (or me, for that matter) is misinterpreting the words "craft" and "pride" I wrote earlier.


"Pride" makes it sound like its a one-of-a-kind product, which is silly for software.
No it doesn't, and no it isn't (because the first is not true). To be able to take pride in a "job well done", all the way through the day matters much to how well something is done. If you take pride in what you do, you're less likely to cut corners, be sloppy and so on.

Software's single greatest appeal is it's extremely low marginal cost and the symmetry of identical software performing identical tasks.
This is entirely based on the flawed premise that "pride"=One-off products. And because of the premise is flawed, this is utterly irrelevant.

I suppose that there is a distinction between business apps and otherwise.

If you've worked on business apps before, you quickly realize that there is very little originality in it. It's all just tweaking the parameters based on what's important to that client. The real genius for that type of development is putting in place the policies and tools that allow you to build something that is cost-effective (it generates more value than it costs).
See above.

The guys who developed Delicious Library on the other hand... well I admit that is a kind of "craft", where pride matters. They were working on something highly original where being defect-free doesn't matter quite as much as producing something novel and intriguing.

And again …
 

dejo

Moderator emeritus
Sep 2, 2004
15,982
452
The Centennial State
None of this is "science" either. Science tell us about the natural observable world. Programming is engineering. Much of it is not even that, it's done just "seat of the pants" and ad-hoc.
Part of programming should be engineering, a discipline that involves scientific methods. Hence, the connection to science. But if you are a really good programmer, you cannot rely solely on the engineering part but should also incorporate an artistic part. As for being done "seat of the pants" and ad-hoc, that is not restricted to programming alone. Many skills can be applied in this manner too. And that says more about the person than what they are doing.

I studied Computing Science in university. We took one class that was attended by Computer Engineering students as well. We found their approach much more ad-hoc than ours.
 

jzuena

macrumors 65816
Feb 21, 2007
1,126
150
In that case nothing is art, since that argument could apply to everything. All writing could be autogenerated, all paintings, everything. The odds of a functional program being autogenerated are about the same as Hamlet being autogenerated, I'd say.

--Eric

To code, or not to code -- that is the question...

Computer Science -- the study of algorithms, is as its name implies a science. As others above have said programming is the application of Computer Science, which is the definition of engineering. I suppose a particular program could be seen as a work of art, but programming itself is more of an engineering discipline.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.