Fascinación por la vida

Divagaciones mentales de Alberto Gimeno

Comprender el software

El mundo de las aplicaciones informáticas es diferente a cualquier otra cosa. Quiero plasmar aquí algunas de las reflexiones y comparaciones que suelo exponer a la gente para que comprendan cómo es el software.

Pues bien, los programadores para crear aplicaciones informáticas creamos código. El código fuente es como el plano de un edificio o como una receta de cocina: es una explicación detallada sobre cómo debe ser algo. El código fuente define de forma concisa y sin ambigüedades cómo debe comportarse una aplicación. Así como a dos personas no les sale igual un plato de cocina hecho con la misma receta, esto no sucede en la programación. Una aplicación informática se comporta tal y como se definió en su código fuente sin ambigüedades. El código fuente define, por ejemplo, qué ventanas, botones, cajas de texto, etc. tendrá una aplicación y cómo reaccionará al presionar los botones o al escribir algo en alguna de las cajas de texto.

Una vez diseñado un edificio hay que construirlo, y del mismo modo una vez tenemos una receta de cocina tenemos que cocinar el plato. Pues bien, tanto construir como cocinar son dos procesos que requieren esfuerzo, materia prima y mano de obra. En la programación de aplicaciones esto es distinto. Una vez hemos hecho el diseño de la aplicación (hemos escrito el código fuente) obtener la aplicación, el ejecutable, aquello que haciendo doble click ejecuta la aplicación, obtener eso es trivial. El diseño de la aplicación (código fuente) es absolutamente detallado, sin ambigüedades, de modo que el proceso de creación de la aplicación lo hace el propio ordenador. Este proceso se llama compilación y no requiere materia prima ni mano de obra, es decir, tiene coste cero. Es como si tuviésemos una máquina maravillosa que a partir de los planos de un edificio construyese el edificio sin coste alguno. O como si un robot de cocina cocinase cualquier cosa a partir de su receta, de nuevo sin coste alguno.

Otra particularidad del software, relacionada con lo anterior es que a partir de una aplicación es muy difícil saber cómo ha sido diseñada. Es decir, así como viendo un edificio nos podemos hacer una idea de cómo son los planos, o así como viendo un plato de cocina nos podemos hacer una idea de qué ingredientes tiene y cómo se han cocinado, en el software esto es mucho más complejo. Es como mirar al interior de un ordenador o de cualquier electrodoméstico que contenga mucha circuitería: lo abres y verás cientos de cables y un buen puñado de circuitos integrados pequeños con conexiones que vienen y van. Comprender el funcionamiento de eso es muy difícil si no dispones de los planos. Del mismo modo comprender el funcionamiento de una aplicación es muy difícil si no dispones del código fuente. Esta quizá sea la razón por la que la gente no sepa reconocer el trabajo de un programador, porque la gente ignora lo que hay detrás de una aplicación. La gente sólo sabe que nos pegamos muchas horas delante de un ordenador y no entienden qué hacemos exactamente.

Bueno, sigo enumerando algunas de las características que hacen del software algo diferente a cualquier otra cosa… Un programa de ordenador no es algo físico, no es algo tangible. Un programa de ordenador es como un pensamiento, es una idea. Del mismo modo que un pensamiento lo puedes plasmar en el papel o en una pared o tatuártelo en el pecho, un programa de ordenador puedes grabarlo en un CD, en un disco duro o en un pen-drive. Pero con la ventaja de que puedes replicarlo todas las veces que quieras con coste cero. Puedes mandarlo a Singapur a través de Internet, puedes copiarlo mil veces en tu disco duro, puedes enviarlo a otro lugar a través de las ondas, etc. Y sin coste alguno.

Y para terminar… Del mismo modo que este blog no se desgasta por muchas veces que lo leas, un programa informático tampoco se desgasta, no require mantenimiento, no es una máquina que tras muchos usos se estropea, no es una persona que con el tiempo envejece. De nuevo un programa informático es algo virtual, intangible. Como no es algo físico no se puede deteriorar. Su soporte (disco duro, CD,…) se puede degenerar, pero hasta que la última copia no se destruya un programa informático seguirá siendo tal y como lo fue el primer día.

Todas estas peculiaridades del software lo hacen distinto a cualquier otra cosa. Todas estas características hacen que crear software sea algo maravilloso😀. Resumiendo… hacer software es (1) una tarea creativa que (2) no tiene (prácticamente) más coste que el tiempo invertido en el proceso de diseño. El software es (3) infinitamente replicable sin coste (4) y no se degrada.

Written by gimenete

Lunes, octubre 2, 2006 a 12:41 am

Publicado en informática

A %d blogueros les gusta esto: