Alguien ya tocó anteriormente el tema en su blog. Es una pregunta que aparece reiteradamente en la comunidad de computación. Sin duda uno de los primeros en denominarla arte fue Donald Knuth. Desde el título de su afamada serie de libros The Art of Computer Programming, hasta su Turing Award Lecture (discurso de entrega del premio Turing). En este último, Knuth explica por qué prefiere clasificar a Computación como un arte.
Art in general consists of the truths of Science, arranged in the most convenient order for practice, instead of the order which is the most convenient for thought. Science groups and arranges its truths so as to enable us to take in at one view as much as possible of the general order of the universe. Art... brings together from parts of the field of science most remote from one another, the truths relating to the production of the different and heterogeneous conditions necessary to each effect which the exigencies of practical life require.
Luego de esta cita a John Stuart Mills, concluye:
Science is knowledge which we understand so well that we can teach it to a computer; and if we don't fully understand something, it is an art to deal with it.
Entre los representantes de computación como ciencia está el desaparecido Edsger Dijkstra. En Craftsman or Scientist? dice:
The future scientist learns his trade as a student from a teacher, who, in contrast to the master who transfers his knowledge implicitly to the apprentice, tries to formulate the knowledge and to describe the skills as explicitly as possible, thereby bringing both into the public domain. The latter technique is the prevailing one at the Universities. It is no coincidence that the rise of the Universities occurred when the printing press became widely established, and it is no accident that each University regarded its Library as its greatest treasure: the library was the embodiment of its specific calling. The scientist regard the free interchange of knowledge and insights as essential, and, in consequence, being non secretive is one of their rules of professional conduct.
Luego, en el mismo documento, incursiona en un camino más riesgoso: ¿cómo se educa a un programador? Muestra primero ambos extremos posibles: una educación basada en la resolución de problemas del "mundo real" vs una formación completamente académica y teórica. Sin duda es necesario un balance y habrá que ir buscando cuál el mejor. Al respecto, Dijkstra nos dice:
Now the teaching of programming comprises the teaching of facts -- facts about systems, machines, programming languages, etc. -- and it is very easy to be explicit about them, but the trouble is that these facts represent about 10 percent of what as to be taught: the remaining 90 percent is problem solving and how to avoid unmastered complexity, in short: it is the teaching of thinking, no more and no less. The explicit teaching of thinking is no trivial task, but who said that the teaching of programming is?
Sin duda es interesante el carácter de puente de las ciencia de la computación entre la intrínseca complejidad de los fenómenos naturales y la belleza estructural de los formalismos teóricos, el mismo que ha sido caracterizado por Dijkstra en What Computing Science is About con la ecuación
Programación = Matemáticas + Ley de Murphy
El corolario del esfuerzo de Dijkstra por mostrar computación como ciencia ha sido sin duda su paper titulado On The Cruelty of Really Teaching Computing Science publicado en Communications del ACM, y que está disponible en manuscrito. En el documento citado Dijkstra propone enseñar programación usando la las reglas de la lógica de Hoare.
Arte, ciencia, es debatible. Han pasado varios años desde las posturas propuestas por Knuth y Dijkstra. La gran influencia de la lógica en el desarrollo de computación sin duda la acercan cada vez más al quehacer científico, sin embargo todavía una gran parte de la comunidad no la ha adoptado como tal. Mientras tanto practicantes y académicos siguen dando pasos importantes en la madurez de la disciplina.Palabras clave: arte, ciencia, computación, programación