martes, 14 de abril de 2009

On how hacking and painting are quite alike.

For quite sometime (perhaps since computer science became a subject taught in our colleges) programming has been viewed as software engineering (i.e., a somehow scientific discipline that can be learned and applied in a methodical manner). We just have to find out its intrinsic rules. Graham, though, strongly disagrees with this approach. To him, programming is actually hacking and, therefore, its' more like an art than like a science. Yes, the programmer has to use a series of techniques to put things down in the form of a program, but that's no different than the way an artist does things:
Hacking and painting have a lot in common. In fact, of all the different types of people I've known, hackers and painters are among the most alike.

What hackers and painters have in common is that they're both makers. Along with composers, architects, and writers, what hackers and painters are trying to do is make good things. They're not doing research per se, though if in the course of trying to make good things they discover some new technique, so much the better.

(Graham: p. 18)

If Graham is right, this concept of the programmer as an artist should also effect the way we view programming languages:
Realizing this has real implications for software design. It means that a programming language should, above all, be malleable. A programming language is for thinking of programs, not for expressing programs you've already thought of. It should be a pencil, not a pen.

(Graham: p. 22)

This takes Graham down a path where he clearly prefers "hacking languages" to the researcher's favorite tools, beautiful in their perfection but almost completely useless for real work. After all, what good is the best programming language if nobody writes programs in it? Researchers in their ivory towers don't appear to care about a language's malleability but rather about its internal logical consistency or originality. After all, academic research prizes that over anything else. The real world, though, cares about flexibility and ease of use. In that realm, a language that's highly malleable is far more important than a perfectly consistent but highly abstract paper. It shouldn't surprise us, really. It's no different when it comes to natural languages. How many times have people tried to design and new perfect human language without much success? We continue relying on our old, patchy languages.

No hay comentarios: