• Welcome to Valhalla Legends Archive.
 

Programming: Art or Science?

Started by Grok, May 15, 2004, 03:20 PM

Previous topic - Next topic

Grok

Quote from: Tuberload on May 14, 2004, 09:30 PMProgramming is an art, and a language is a tool.

I disagree that programming is an art.  The more you learn about programming, the more you will realize it is science.

Moonshine

Programming is definitely a science.  However, like any science, it may also involve a certain level of creativity, and artistry.

Arta

I agree. It's most certainly a science, but it can have artistic aspects - like a particularly creative solution to a problem. I don't think that's very significant though, people can see art in just about everything. It's just a matter of perspective. That said, I do enjoy the creativity of it. The satisfaction of creating something that works is a big part of the appeal.

Adron

Is programming really a science?

Science:
Quote
Main Entry: sci·ence
Pronunciation: 'sI-&n(t)s
Function: noun
Etymology: Middle English, from Middle French, from Latin scientia, from scient-, sciens having knowledge, from present participle of scire to know; probably akin to Sanskrit chyati he cuts off, Latin scindere to split -- more at SHED
1 : the state of knowing : knowledge as distinguished from ignorance or misunderstanding
2 a : a department of systematized knowledge as an object of study <the science of theology> b : something (as a sport or technique) that may be studied or learned like systematized knowledge <have it down to a science>
3 a : knowledge or a system of knowledge covering general truths or the operation of general laws especially as obtained and tested through scientific method b : such knowledge or such a system of knowledge concerned with the physical world and its phenomena : NATURAL SCIENCE
4 : a system or method reconciling practical ends with scientific laws <culinary science>
5 capitalized : CHRISTIAN SCIENCE

Art:
Quote
Main Entry: 2art
Pronunciation: 'ärt
Function: noun
Etymology: Middle English, from Old French, from Latin art-, ars -- more at ARM
1 : skill acquired by experience, study, or observation <the art of making friends>
2 a : a branch of learning: (1) : one of the humanities (2) plural : LIBERAL ARTS b archaic : LEARNING, SCHOLARSHIP
3 : an occupation requiring knowledge or skill <the art of organ building>
4 a : the conscious use of skill and creative imagination especially in the production of aesthetic objects; also : works so produced b (1) : FINE ARTS (2) : one of the fine arts (3) : a graphic art
5 a archaic : a skillful plan b : the quality or state of being artful
6 : decorative or illustrative elements in printed matter
synonyms ART, SKILL, CUNNING, ARTIFICE, CRAFT mean the faculty of executing well what one has devised. ART implies a personal, unanalyzable creative power <the art of choosing the right word>. SKILL stresses technical knowledge and proficiency <the skill of a glassblower>. CUNNING suggests ingenuity and subtlety in devising, inventing, or executing <a mystery plotted with great cunning>. ARTIFICE suggests technical skill especially in imitating things in nature <believed realism in film could be achieved only by artifice>. CRAFT may imply expertness in workmanship <the craft of a master goldsmith>.

Summarized: Science is about research, ordering of facts and knowledge. Art is about using your knowledge for skilled work.

Seems to me like programming is actually art...


j0k3r

Quote from: Adron on May 15, 2004, 04:16 PM
1 : the state of knowing : knowledge as distinguished from ignorance or misunderstanding
2 a : a department of systematized knowledge as an object of study <the science of theology> b : something (as a sport or technique) that may be studied or learned like systematized knowledge <have it down to a science>
3 a : knowledge or a system of knowledge covering general truths or the operation of general laws especially as obtained and tested through scientific method b : such knowledge or such a system of knowledge concerned with the physical world and its phenomena : NATURAL SCIENCE
4 : a system or method reconciling practical ends with scientific laws <culinary science>
It seems to fit that just fine, especially the bold parts. You are right that it pertains alot to an art, but there is a reason it's called computer science.
QuoteAnyone attempting to generate random numbers by deterministic means is, of course, living in a state of sin
John Vo

Spht

#5
Quote from: j0k3r on May 15, 2004, 04:32 PM
but there is a reason it's called computer science.

Because you're learning programming?  I think programming is an art, and training is science.

Adron

Quote from: j0k3r on May 15, 2004, 04:32 PM
It seems to fit that just fine, especially the bold parts. You are right that it pertains alot to an art, but there is a reason it's called computer science.

You're talking about something different now. Computer science may be a science. Programming is still an art. Computer science is much larger than programming.

Banana fanna fo fanna

Programming in general is a science. Your syntactic structure, however, can be art.

Adron

#8
Quote from: St0rm.iD on May 15, 2004, 06:06 PM
Programming in general is a science. Your syntactic structure, however, can be art.

I don't agree. Computer science is a science, you research things that can be useful when programming. The actual programming is not a form of organizing knowledge or researching. Programming is making a program.

Compare it to construction - researching good methods for building bridges and houses, formulas for stress and tensions, that's science. The actual building is not. Construction workers don't do science, they have a craft (synonym, see art).


Tuberload

Quote from: Grok on May 15, 2004, 03:20 PM
Quote from: Tuberload on May 14, 2004, 09:30 PMProgramming is an art, and a language is a tool.

I disagree that programming is an art.  The more you learn about programming, the more you will realize it is science.

The more I program, the more I am able to visualize in my head what I am making. In a sense I create object definitions in my brain, and then start piecing them together to form a single entity. Once I learn a programming technique I don't have to research it anymore, I just have to use it in whatever projects that apply.

I think science may have created the tools for programming, but I just believe they are tools used to make something bigger.

For the same reasons Adron has posted, I think it is more of an art.
Quote"Pray not for lighter burdens, but for stronger backs." -- Teddy Roosevelt
"Your forefathers have given you freedom, so good luck, see you around, hope you make it" -- Unknown

iago

Science is a lot more strict, whereas programming is very open.  Generally when you're doing science, you do very specific steps for an experiment, but when you're programming you are trying to find an elegant solution to your problem.

Plus, when you program, you are creating something, not researching or anything boring like that.  

That's all I have to say on this :)
This'll make an interesting test for broken AV:
QuoteX5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*


Grok

Quote from: iago on May 16, 2004, 04:40 PMScience is a lot more strict, whereas programming is very open.  Generally when you're doing science, you do very specific steps for an experiment, but when you're programming you are trying to find an elegant solution to your problem.

Plus, when you program, you are creating something, not researching or anything boring like that.  

Ah, when I program, I do very specific steps.  The steps vary depending on the problem, but the approach is by formula.  The refinement of process is by formula.  The coding is by pattern.  The testing is by formula.  Programming is all of that, unless your definition of programming is limited to coding.  Some may wish to define other programming lifecycle steps as design & analysis, as debugging and testing, implementation, installation, but they are all part of the programming software lifecycle.

When I am presented with problems, I gather requirements from users in a non-artful way.  The questions I ask and feedback I give them are non-artful, and even scientific.  Questions are created to harvest answers which can clarify and extend the verbal model of the design, and translate into written language.  Once on paper to the satisfaction of design/architecture engineer and customer, we move on to the next stage.

At every level of programming, I am doing science, but due to the loose definition of "arts", I am practicing my art.  But that art is science, whereas art which the question references is not science.

Tuberload

#12
Quote from: Grok on May 16, 2004, 05:25 PM
Quote from: iago on May 16, 2004, 04:40 PMScience is a lot more strict, whereas programming is very open.  Generally when you're doing science, you do very specific steps for an experiment, but when you're programming you are trying to find an elegant solution to your problem.

Plus, when you program, you are creating something, not researching or anything boring like that.  

Ah, when I program, I do very specific steps.  The steps vary depending on the problem, but the approach is by formula.  The refinement of process is by formula.  The coding is by pattern.  The testing is by formula.  Programming is all of that, unless your definition of programming is limited to coding.  Some may wish to define other programming lifecycle steps as design & analysis, as debugging and testing, implementation, installation, but they are all part of the programming software lifecycle.

When I am presented with problems, I gather requirements from users in a non-artful way.  The questions I ask and feedback I give them are non-artful, and even scientific.  Questions are created to harvest answers which can clarify and extend the verbal model of the design, and translate into written language.  Once on paper to the satisfaction of design/architecture engineer and customer, we move on to the next stage.

At every level of programming, I am doing science, but due to the loose definition of "arts", I am practicing my art.  But that art is science, whereas art which the question references is not science.

Hmmm, that is very true. You program on a professional level where as I program for fun. IMO what I am doing is more of an art, but what you said makes sense.

Addition:
QuoteProgramming is all of that, unless your definition of programming is limited to coding.

I consider the actual programming to just be the coding. Doesn't the rest fall more under the definition of "Software Development"?
Quote"Pray not for lighter burdens, but for stronger backs." -- Teddy Roosevelt
"Your forefathers have given you freedom, so good luck, see you around, hope you make it" -- Unknown

Adron

Quote from: Grok on May 16, 2004, 05:25 PM
Ah, when I program, I do very specific steps.  The steps vary depending on the problem, but the approach is by formula.  The refinement of process is by formula.  The coding is by pattern.  The testing is by formula.  Programming is all of that, unless your definition of programming is limited to coding.  Some may wish to define other programming lifecycle steps as design & analysis, as debugging and testing, implementation, installation, but they are all part of the programming software lifecycle.

I'd limit my definition of programming to coding, debugging and similars. Pre-studies, customer surveys and that kind of thing doesn't count as programming in my opinion. Those are the things you do before you start the actual programming. Neither do installation or support count, since those are typically done after the programming is complete (not counting that the customer might request additional programming).


Quote from: Grok on May 16, 2004, 05:25 PM
When I am presented with problems, I gather requirements from users in a non-artful way.  The questions I ask and feedback I give them are non-artful, and even scientific.  Questions are created to harvest answers which can clarify and extend the verbal model of the design, and translate into written language.  Once on paper to the satisfaction of design/architecture engineer and customer, we move on to the next stage.

That would be the planning you do before you start programming. Another example would be interrogating a secret agent before you start programming a tool to decipher their communications. Torturing prisoners isn't "programming", even if it might be a necessary precondition. What you are speaking of there, I'd call research, planning, software design and architecting.

Quote from: Grok on May 16, 2004, 05:25 PM
At every level of programming, I am doing science, but due to the loose definition of "arts", I am practicing my art.  But that art is science, whereas art which the question references is not science.

After seeing your definition of programming, I suppose it being science makes sense to you. You are doing research at that stage. I just don't call that part programming. To me programming starts after the research and architecture is complete.

Mephisto

Quote from: Adron on May 18, 2004, 03:07 PM
Quote from: Grok on May 16, 2004, 05:25 PM
Ah, when I program, I do very specific steps.  The steps vary depending on the problem, but the approach is by formula.  The refinement of process is by formula.  The coding is by pattern.  The testing is by formula.  Programming is all of that, unless your definition of programming is limited to coding.  Some may wish to define other programming lifecycle steps as design & analysis, as debugging and testing, implementation, installation, but they are all part of the programming software lifecycle.

I'd limit my definition of programming to coding, debugging and similars. Pre-studies, customer surveys and that kind of thing doesn't count as programming in my opinion. Those are the things you do before you start the actual programming. Neither do installation or support count, since those are typically done after the programming is complete (not counting that the customer might request additional programming).


Quote from: Grok on May 16, 2004, 05:25 PM
When I am presented with problems, I gather requirements from users in a non-artful way.  The questions I ask and feedback I give them are non-artful, and even scientific.  Questions are created to harvest answers which can clarify and extend the verbal model of the design, and translate into written language.  Once on paper to the satisfaction of design/architecture engineer and customer, we move on to the next stage.

That would be the planning you do before you start programming. Another example would be interrogating a secret agent before you start programming a tool to decipher their communications. Torturing prisoners isn't "programming", even if it might be a necessary precondition. What you are speaking of there, I'd call research, planning, software design and architecting.

Quote from: Grok on May 16, 2004, 05:25 PM
At every level of programming, I am doing science, but due to the loose definition of "arts", I am practicing my art.  But that art is science, whereas art which the question references is not science.

After seeing your definition of programming, I suppose it being science makes sense to you. You are doing research at that stage. I just don't call that part programming. To me programming starts after the research and architecture is complete.

But isn't art the process of planning your program that you will program?  Your ideas?  Implementation?  etc.