On Friday, December 17, 2010 08:00:25 pm Yu-Hsuan Lai wrote:
> You imply that our programming craft is too young to be art.

No, that's not what I'm saying at all. I'm saying it's too young to be 
_recognized_ as art.

For instance, video games are certainly not too young to be art, and people 
are even starting to recognize them as art, but we still have Roger Ebert 
loudly claiming first that it cannot be "art", then that it cannot be "fine 
art", and finally backing off and admitting that he might not have any right 
to say one way or the other without at least playing a single game.

> But
> programming is growing more quickly than other industries(or sciences).
> Maybe fifty years is not short?

Well, first, most great art isn't recognized within the artists' lifetime, and 
fifty years is a bit too short for, say, _why to die (or disappear) and then 
be recognized by later generations as a genius, unappreciated in his time.

> Quick sort and merge sort and so on is algorithms rather than programming.

What? How are algorithms not programming?

> Algorithms are mathematics and mathematics are immutable.

By that logic, _all_ programs are also mathematics, and this has also been 
proven -- every program can be reduced to a mathematical expression. Is that 
what you meant?

But then, I also remember my Calculus teacher talking about how integration is 
more an art than a science, so maybe that's not such a bad thing...

In any case, if programs are more than just math, then algorithms must be, 
also. They are step-by-step instructions, the abstract form of a program 
before we translate that algorithm into a particular programming language. In 
that sense, my morning routine -- wake up, drink protein shake and caffinated 
pseudo-energy-drink, work out, shower, brush teeth, shave, then get to where I 
need to be -- could be seen as an algorithm.

Even more so if we consider it to be a number of rules -- for instance, if I 
am running late enough, I may skip everything but the caffeine in order to get 
there on time. If I am on vacation, I may not set my alarm, I may just sleep 
till I feel like getting up. Now we're getting closer to an actual algorithm 
-- if I worked at it, I'm sure I could come up with a reasonable flowchart for 
how I wake up.

Nothing about it is "immutable", either. Sure, if I changed one aspect of my 
morning routine -- say I decide to drink tea instead, cut back on the caffeine 
-- it wouldn't be the same routine it was before. But nothing about it is 
"immutable". I can certainly take existing algorithms, adapt them, and come up 
with new versions -- one trivial optimization of QuickSort, for instance, is 
to drop to insertion sort when the partitions get small enough. It's not 
exactly the same QuickSort, but I don't think anyone would try to claim it's 
not QuickSort.

> Even we have
> non-Euclidean geometry, every student learns Pythagorean theorem first. But
> still CS students learn Fortran? Some of them even don't want C language.

I'm not sure how this is relevant.

> Now my opinion is like the essay Arcieri posted.

It was interesting, and maybe I've lost a bit of respect for Paul Graham, but 
I do still think programming can be art. Maybe most of it isn't, but then most 
writing isn't art either. Certainly, no one would argue that we can't have 
things like poetry, or even beautiful enough prose that the language itself is 
art. But I am by no means claiming that what I'm writing here is art, either.