Earlier quoted context omitted.
CS is a funny beast. It's the first time we're seriously dealing with machines executing abstract math directly. There's nothing to study via experimentation - computing is pure math, and hardware stuff is pure engineering (since computation is not tied to particular branch of physics - you can make computing run on anything, not just electrons and photons). It's best to conceptually split the two, if we want to stay…
> There's nothing to study via experimentation There isn't??
Knuth: Computer Programming as an Art (1974)
41–50 of 110 posts
Re: Knuth: Computer Programming as an Art (1974)
#42Ahh yes, the logical arrangement.
Programming Law #1: Thou shalt tab to indent.
Programming Law #2: Nested loops shall indent deeper to the right.
How about the six laws of depth in art? 1. Perspective - 2-point, 3-point...
2. Lower on canvas is closer, higher is further away
3. Atmosphere - clearer is closer, blur is further
3b. Color intensity - higher saturation is closer
4. Chiaroscuro - the next alternation is further (combination of #2 and #5)
5. Overlap - this behind that
6. Scale - bigger is closer
Art has plenty of laws, some very complex, but you won't find them in Google. You have to find the artists' artist and mix her color 5000 times, like roll-on-your-head Shaolin Temple skull-hardening. Return to the 36th Chamber and draw with charcoal attached to the end of a long stick of bamboo, then ring the bell, for another style has died.Re: Knuth: Computer Programming as an Art (1974)
#43Programming is much more of a craft than it is either an art or a science. Good craftsmanship combines beauty with utility, as does good coding. Programmers work with abstractions, rather than with wood or clay. And their craft is as cerebral and intellectually demanding as an art or a science. But it's still a craft.
I think this is a confusing essay, because in everyday speech "art" is employed to mean something very different from "an art" and we get lost in semantics. The continued references to obsolete definitions confuse things further.
In practice, the phrase "an art" is usually used in the same way as "an artform", as it is not meant to be taken literally; a commentator may say "there's a real art to mastering the offside trap" in football, but he does not mean that the defender should be put in a glass case in a contemporary art gallery.
The whole art/science classification of programming appears to me to be people defending their philosophy or encampment. If you're working in formal methods, you're likely to say "it's about the science", but if you're hacking the last cycle out of a console processor in the games industry you might say "wow, that was really clever, it's really an art this isn't it?"
I'd say both of these views are daft. "Science" is usually synonymous with Physics/Chemistry/Biology, which are inescapably different from programming or Computer Science. Similarly, fine arts is not isomorphic to programming.
What we usually do is much more like a craft. Sure, it has elements of engineering and maths, and in CS research we borrow some of the scientific method some of the time, but you could probably say the same about any craft, e.g. making jewellery, pottery, etc.
All crafts can strive for both beauty and utility, and can borrow from scientific methods and engineering when appropriate, but "pure" science or "pure" art they ain't. There's no ground truth in craft, and there's a strong degree of utility, which precludes it from being science or art respectively.
I've heard this discussion dozens of times. Always the mathematicians want CS to be a science, and the hackers want it to be an art or maybe engineering, but I think the argument is counter-productive. Programming is quite unique, but if you really want a relative description, it's kinda like a craft that uses certain maths and engineering in places.
I think dropping "science" from "Computer Science" would help immeasurably. Simply renaming a university department to "Computing" might stop students and staff worrying what they are.
Re: Knuth: Computer Programming as an Art (1974)
#44Re: Knuth: Computer Programming as an Art (1974)
#45> Meanwhile we have actually succeeded in making our discipline a science, and in a remarkably simple way: merely by deciding to call it "computer science." Well not only that but we actually stuffed two misnomers in there. It is not really a science, and it is not really about computers. Chip design, graphics, storage, input devices is more about computers as such.
Peter Naur (who unfortunately passed away recently) suggested the term "datalogy", to indicate that computer science doesn't necessarily have anything to do with computers, but instead is about the treatment of data[0]. The term "datalogi" is actually used in Denmark instead of "computer science". 0: https://en.wikipedia.org/wiki/Computer_science#Name_of_the_f...
Re: Knuth: Computer Programming as an Art (1974)
#46Earlier quoted context omitted.
> There's nothing to study via experimentation There isn't??
What part of computer science is experimentation?
Seriously, just about everything we do in computer science is experimentation, at least if it involves...physical computers.
Every time we run a program, we run an experiment. At least if we have some expectation of what we want the program to do. Every time we write a test, or run a test suite, we are running an experiment.
Every time we implement some sort of abstraction, every time we vary a parameter, every time we optimize a program, we are running experiments.
At least if we're doing it right.
If you're not doing experiments, I have a hard time categorizing what you are doing as computer science.
Re: Knuth: Computer Programming as an Art (1974)
#47On the subject of art and programming, I really like how Fred Brooks described it in "The Mythical Man-Month": The delight of working in such a tractable medium. The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds his castles in the air, from air, creating by exertion of imagination. Yet the program construct, unlike the poet’s words, is real in the sense that it moves and wo…
Re: Knuth: Computer Programming as an Art (1974)
#48"According to most dictionaries "science" means knowledge that has been logically arranged and systematized in the form of general "laws."" Ahh yes, the logical arrangement. Programming Law #1: Thou shalt tab to indent. Programming Law #2: Nested loops shall indent deeper to the right. How about the six laws of depth in art? 1. Perspective - 2-point, 3-point... 2. Lower on canvas is closer, higher is further away 3.…
Or, you know, go to art school.
Re: Knuth: Computer Programming as an Art (1974)
#49I start having a real tough time with this "code as art" argument when "code" becomes little more than gluing some Rails bullshit together.
In this sense, your run-of-the-mill Rails app is the IKEA table of coding.
Re: Knuth: Computer Programming as an Art (1974)
#50Earlier quoted context omitted.
Peter Naur (who unfortunately passed away recently) suggested the term "datalogy", to indicate that computer science doesn't necessarily have anything to do with computers, but instead is about the treatment of data[0]. The term "datalogi" is actually used in Denmark instead of "computer science". 0: https://en.wikipedia.org/wiki/Computer_science#Name_of_the_f...
How does this fit with, say, designing an ergonomic phone interface? Or constructing quantum computers using optics? I think this is another example of one person calling Computer Science what they would like it to be, because of their background.
I consider the term "computer science" historically motivated and anachronistic. Similar to how old people would stereotypically describe their child's job as "something with computers", we muddled subtopics of various sciences together just because they're doing "something with computers".
With computing technology and methodology now permeating nearly all areas of science, art, and engineering, maybe it's time to tear down the computer science departments and reintegrate their pieces back into the appropriate departments.
Or maybe we shouldn't, for we would lose the extremely diverse curriculum that a CS degree includes.