This is in reference to the post on eclair-turing. I was going to write a comment on Naresh's post, but it grew too long.
Now, the gist of the post is as follows
- good programming is about succintness (maximum bang for the buck)
- good poetry is about succintness
- Good metaphors make for more expressive writing
- Good programming paradigms (metaphors for computers :) ) make for more expressive coding.
- Therefore poetry==programming.
It is very well written and backed up with sources. I really enjoyed reading it. But the more I think about it, the less sure I am that it's correct.
All the characteristics of good poetry quoted there are characteristics of good prose too. Low signal-to-noise ration and maximum expressiveness are as much a characteristic of good prose, as of poetry. These things are not poetry's exclusive province. Indeed, they are characteristics of good communication in any medium.
(what General Charles Napier said after the conquest of Sind. (Peccavi means 'I have sinned'.)). The Gettysburg Address
The Last Question, by Asimov
None of these has anything more or less than is required. They are expressive, informative and beautiful. They are compact and have intense unity. But, they cannot be called poetry, unless we seriously stretch the meaning of poetry. We can't just say 'Any good collection of sentences is poetry', can we now?':)
So, what then, sets poetry apart?
The most concise way to convey the message of Charge of the Light Brigade is not the poem, but to say 'The Light Brigade was asked to charge the artillery. Even though the soldiers knew that they were going to die for no reason, they followed the order and got shot to bits.' Two sentences, tell you the whole story. Succint. Gets the information across.
But something is missing isn't there? What's missing is the emotional content. The Charge of the Light Brigade is about hopeless courage. It's not about telling you what happened at the Battle of Baclava. That poem stands for any conflict, anywhere where men throw their lives away for a mistake. It is as valid for the 13th Hussars as it is for the millions of lives that Stalin threw away in human wave attacks against the Germans.
Poetry is not about communicating a thought or an idea. It's about communicating an emotion. A poet seeks to make you feel what he feels. That's why our response to poetry is visceral, rather than cerebral.
We would not seek directions to the airport in verse. On the other hand the feeling of separation can be most beautifully expressed in song.
Good poetry is not just a play in words. It has soul. It is romantic in the Zen and the Art of Motorcycle Maintenance definition of classical and romantic.
Emotional content is what sets poetry apart.
Which brings us to programming..
Programming is a cerebral process. A program is a way of executing an idea or a concept. It is not concerned with the writer's (or the reader's) emotions. It is a 'classical' thing. Its raison-d'etre is utility.
So, where then, one might ask, is the place for art in programming? Is it possible for code to be beautiful? Am I a troglodyte who enjoys destroying other people's joy in writing code? The answers would be yes, yes and no.
Software is not poetry. If I must look for an analogue, I would look into architecture and civil engineering. It's like building a bridge, for example. A bridge can be beautiful, but it's primary purpose is utility, not beauty. A program takes it to the extreme. Its beauty is utility. Beauty here is a piece of code that does the mostest with the leastest.
Isn't that true of poetry also? Of course it is. And prose, and music, and photography, and any other art form. All art seeks to harmoniously interplay the elements to obtain maximum bang for the buck.
Programming is one such art. Poetry is one another such art. Other than the fact that they are art forms, there is not much in common between them.
I really like this post because other than the conclusion (programming==poetry) , the rest of the post is absolutely spot-on. More powerful programming paradigms do make programming more expressive. we must, as programmers, focus on low signal-to-noise ratio. More powerful tools make for better programs.
But these similarities are because both programming and poetry are arts, not because programming==poetry.