Son sándwiches de pan o queso?
Primero, tu pregunta incorpora una falsa dicotomía. Su pregunta asume que todas las actividades son artes o ciencias: que “arte o ciencia” circunscribe todo el esfuerzo humano.
La idea de “arte contra ciencia” surgió, creo yo, durante el Renacimiento y la Revolución Científica, y tuvo sentido para las personas condicionadas por la idea medieval de que el “arte” era el principio del esfuerzo humano. “También hay ciencia”, es lo que trató de expresar. En ese momento era una distinción útil, ya que obligaba a los pensadores a considerar el impacto no solo de la creación, sino también del descubrimiento.
El problema con esto es que obviamente no es cierto. Hay muchas cosas que no son ni arte ni ciencia.
- Construyendo (a diferencia de diseñar) puentes.
- libros de lectura
- componentes de soldadura en una placa de circuito
- conduciendo un auto
- resolviendo ecuaciones
En segundo lugar, su pregunta incorpora malentendidos populares de lo que es una “ciencia”. La ciencia no es “todo lo que no es arte”, o “todo esfuerzo no creativo”. La ciencia es el proceso iterativo de comparar observaciones con expectativas, y modificar expectativas basadas en esas observaciones, para descubrir hechos sobre el comportamiento o la constitución de los sistemas preexistentes.
Si bien la informática es una ciencia, existe una buena dosis de experimentos y descubrimientos, incluso eso está al límite. La informática se trata de (números sacados del aire aquí) una tercera ciencia y dos terceras matemáticas. Las matemáticas son un proceso de deducción inteligente a partir de los primeros principios: todo en matemática ha estado allí todo el tiempo, disponible para cualquiera que pensara seguir una cierta lógica. Pero la programación no es informática , aunque definitivamente la incluye.
El arte es creación. La programación involucra arte, en eso involucra la expresión creativa de ideas. La misma parte de mi cerebro que escribe poesía escribe código. Sin embargo, el código nunca es simplemente hermoso. Si tuviera que escribir “código abstracto” (líneas de C que no fueran ejecutables, pero que estuvieran dispuestas en bellos patrones en la pantalla), estaría creando arte, pero no programando.
La ciencia es descubrimiento. La programación involucra a la ciencia, en el sentido de que implica descubrimientos del comportamiento de los sistemas ganados con esfuerzo (en particular, descubrimientos de la mejor solución u óptima para ciertos problemas bajo ciertas condiciones). Sin embargo, la programación no es simplemente hechos acumulados sobre las computadoras. Si publicara un artículo sobre un conjunto de heurísticas que había descubierto experimentalmente para determinar cuándo ciertos algoritmos eran útiles, estaría haciendo ciencia, pero no programando.
La matemática es derivación. La programación involucra a las matemáticas, en el sentido de que involucra lógica pura y determinista, establecida desde el principio del universo, y que no requiere experimentación sino una deducción inteligente para descubrir. Sin embargo, la programación no es meramente lógica. Si tuviera que escribir una prueba de la lógica que esperaba que un programa implementara, estaría haciendo matemáticas, pero solo preparándome para programar.
La ingeniería es aplicación. La programación implica ingeniería, ya que implica la aplicación de principios científicamente descubiertos, la lógica derivada matemáticamente y la creación artística para construir estructuras, objetos o artefactos útiles. La programación es ingeniería. El hecho de que los artefactos producidos por la programación estén representados intangiblemente es lo que dificulta que las personas se den cuenta de esto, pero todas las características de la ingeniería como disciplina se aplican a la programación.
Su pregunta debe ser: “¿Es la programación de arte, ciencia, matemáticas o ingeniería?”
La respuesta es que incluye los tres primeros, pero no es ninguno de ellos. La programación requiere arte, ciencia y matemáticas; pero sería absurdo poner en cualquiera de esas categorías.
La programación es ingeniería.