21 agosto 2006

Programming as theory building (1)

Hace bastante tiempo me habian mencionado el articulo Programming As Theory Building de Peter Naur... y hace poco consegui una copia (lamentablemente este articulo no esta en formato electronico para bajar en la web). Les cuento de que trata: La idea del articulo es aportar una contribución al entendimiento de "¿Qué es programar?". El mismo se divide en dos partes:
  1. La programación vista como una construcción de teorias
  2. Cuales son las consecuencias de ver a la programación como una construcción de teorias.
Para argumentar por que programar es construir teorias, Naur primero da dos ejemplos (basados en su experiencia personal) sobre el conocimiento adquirido por los programadores durante la creación de un programa. De estos dos ejemplos solo voy a mencionar el primero: Dos grupos de desarrollo A y B realizan un compilador. La idea no es que B reinvente la rueda, si no que utilize lo desarrollado por A. Por lo tanto el grupo A diseña y documenta el compilador de forma tal que pueda ser extendido. Cuando el grupo B comienza a extender el trabajo de A, muchas veces no utilizan las facilidades que poseia el compilador y que además habian sido discutidas en la documentación, en general las propuestas de B eran parches. En su lugar los miembros del grupo A eran capaces de proponer soluciones más simples, efectivas y enmarcadas dentro de la estructura del compilador. Esto no se debía a problemas del grupo B: que era capaz y estaba muy motivado. Al parecer la documentación no habia logrado transmitir el entendimiento (insight) sobre la teoria que era inmediatamente presente para los miembros del grupo A. La conclusión a la que llega Naur es que para ciertos programas grandes, las modificaciones, adaptaciones continuas y correccion de errores, son escencialmente dependientes de cierto tipo de conocimiento que posee un grupo de programadores. Si la programación involucra la adquisición de cierto conocimiento, lo que sigue es hacer una analisis más cercano a ese conocimiento. Para esto Naur recurre a la noción de teoría utilizada por Ryle. Es decir, cuando el dice que programar es construir teorias, no utiliza la palabra teoria en un sentido abstracto (como por ejemplo la teoría mecanica de Newton), si no en el sentido que le da Ryle, como actividad intelectual:
What characterizes intellectual activity over and beyond activity that is merely intelligent, is the person's building and having a theory, where theory is understood as the knowledge a person must have in order not only to do certain things intelligently but also to explain them...
¿Y cuales son las consecuencias de ver la programación de esta forma?.... eso queda para el proximo post ;)

No hay comentarios.:

Publicar un comentario