Citar:
Mensaje original enviado por Dem0 ¿Qué tan parecida es la visión de Dijkstra con, digamos, la carrera de Ciencias de la Computación en Exactas? |
¿a Cs de las Computación en Exactas? La pregunta que deberías hacerte es ¿qué tan acertado estaba Dijkstra con respecto a las Ingenierías y las Tecnicaturas? En mi opinión estaba muy en lo cierto, y cae de sentado ejemplificarlo con las tantas ingenierías y tecnicaturas que institutos de dudada reputación en nuestro país han dado en promover, jactandose de dejar de lado la parte "dura" de nuestra disciplina o especializandose en mercados de atractivo comercial sin realmente comprometerse a enseñar el oficio como corresponde (por ejemplo, la tecnicatura en "programador de videojuegos" que en todo caso debería ser un posgrado).
Es triste ver como hay todavía individuos que insisten en comprender al software como una manufactura, o prefieren rasgar la superficie de la disciplina enseñando los tecnicismos, en lugar de introducir al alumno en el paradigma que le permita trabajar desde adentro del mismo, como profesional más que como técnico. Con esto último me refiero por ejemplo a quienes enseñan OOP enseñando como usar las herramientas del paradigma mas que dominando los fundamentos.
En cuanto al resto del artículo de Dijkstra, hay puntos en que estoy en desacuerdo. Su propuesta no es del todo alegre. Me parece que se equivocaba con respecto a la terminología como lugar donde se gesta la falla en el proceso de enseñanza. Muchos de los términos no son usados metafóricamente sino alegoricamente, o tal vez fueron usados de esta manera en su momento pero quedaron culturalmente aceptados y se convirtieron en alegorías o cambiaron su significado habiendo quedado perdida el vinculo original que las mantenía como metáforas. Por ejemplo, "bug" para referirse a errores de programa, "comportamiento" para referirse a las consecuencias funcionales de un programa, "mantenimiento" para referirse a la asistencia de incidentes y ajustes funcionales menores post-deploy, etc...
Creo que se ha avanzado sobre lo que Dijkstra considero como la mitad faltante en la formación de científicos de la computación, por lo menos en los lugares donde se considera a nuestra disciplina como tal. Me refiero a que se avanzo en lo que es pertinente a la especificación funcional. Programar no es simplemente el acto de escribir programas de computación, es todo lo que conlleva realizar dicho programa, desde relevar la especificación funcional, implementarlo, hacerlo parte de una base de conocimiento y procesos, y mantenerlo funcional y actualizado a los procesos que se busca automatizar (en el sentido: de crear el automata capaz de llevar a cabo el proceso).
Pero me parece que Dijkstra dejo de lado un tercer aspecto de nuestra disciplina que es tan importante como el resto: un programa es también una pieza literaria, una pieza de comunicación. Un programa tiene por lo menos tres aspectos: es ejecutado por una computadora, responde a una intención, y tiene una o más formas de ser "leído".