28 de marzo de 2010

Anarquismo triunfante (11 de 36)

La función del código fuente en relación con otros seres humanos no es ampliamante comprendida por los no-programadores, que tienden a pensar en los programas de cómputo como algo incomprensible. Estarían sorprendidos de saber que una gran parte de la información contenida en la mayoría de los programas es, desde el punto de vista del compilador y otros procesadores de lenguaje, comentario, esto es, material no-funcional. Los comentarios, por supuesto, están dirigidos a otras personas que posiblemente necesiten corregir un problema, o alterar, o mejorar la operación del programa. En la mayoría de los lenguajes de programación, mucho más espacio se emplea en decirle a la gente qué es lo que hace el programa que en decirle a la computadora cómo hacerlo.

El diseño de los lenguajes de programación siempre ha procedido bajo el requerimiento dual de una especificación completa a ser ejecutada por la máquina, e información descriptiva para lectores humanos. Podemos identificar tres estrategias básicas en el diseño de lenguajes para cumplir con este propósito dual. La primera, desarrollada inicialmente con respecto al diseño de lenguajes específicos para productos particulares de hardware, colectivamente llamados ensambladores, esencialmente separaban las comunicaciones del programa en porciones para la máquina y para los humanos. Las instrucciones en ensamblador son parientes muy cercanos de las instrucciones en lenguaje-máquina: en general, una línea de un programa de ensamblador corresponde a una instrucción en el lenguaje nativo de la máquina. El programador controla la operación de la máquina en el nivel más específico posible, y (si bien disciplinado), agrega comentarios pertinentes junto con las instrucciones de la máquina, haciendo pausas cada pocos cientos de instrucciones para crear un bloque de comentarios, que proveen con un resumen de la estrategia del programa, o para documentar estructuras mayores de datos que el programa manipula.

No hay comentarios.: