ProintDocsPortada | Acerca de | Ayuda | FAQ | Páginas especiales | Registrarse/Entrar

Versión para imprimir | Disclaimers

Groklaw: ¿Por qué el código de un programa no es lo mismo que una novela?

De ProintDocs

Originalmente en http://www.groklaw.net/article.php?story=20040716130419511

Traducido bajo los términos de la licencia Creative Commons Attibution-Share Alike con una restricción especial: este artículo y sus derivados no pueden ser usados en ninguna forma que pretenda limitar o dañar al GPL, o a cualquier programa de fuente abierta o aquellos que los usen. Si no está de acuerdo con esos términos entonces no lo copie, dado que no tiene licencia para hacerlo.

Autor: k12linux (CJ) en Groklaw (seudónimo)

El autor tiene 15 años de experiencia como programador/administrador, los últimos 5 en educación k-12 (equivalente al rango primaria, secundaria y preparatoria)

Un ejemplo de por qué el Código de un Programa no es lo mismo que una Novela

Por k12linux

Debido a que Groklaw se enfoca principalmente en aspectos legales, coloquemos nuestro ejemplo en una corte (imagine una corte estilo Matlock). Un hombre se sienta en la silla del testigo con el juez al lado izquierdo del juez y del lado opuesto del cuarto (detrás de filas de espectadores) está la salida. Nuestro objetivo hoy es conseguir que el testigo salga por la puerta.

El autor de la novela haría que el hombre saltara del estrado, tomara el arma de un oficial, tomara como rehen a un fiscal y saliera por la izquierda de los espectadores dando la vuelta y lanzándose por la puerta. O, podría salir normalmente. O tal vez sería sacado a la fuerza. Todas esas opciones son no solamente posibles, sino de hecho probables dependiendo de la historia. Hay también un número infinito de variaciones y detalles que un autor podría incluir.

Ahora veamos un "programa" para hacer que el hombre salga. Nuestro programa no es más que un set de instrucciones necesarias para alcanzar nuestro objetivo. Pero esperen, primero todos tienen que notar que hay algunas limitaciones. Primero, el sujeto en la silla del testigo no es terriblemente brillante. De hecho es bastante tonto y hará EXACTAMENTE lo que se le diga que haga.

Como estamos simplemente dando instrucciones y como eso es todo lo que él entiende, el comentario descriptivo no es del todo útil. Oh, una cosa más. Tienes que escribir todas las instrucciones y entregárselas al testigo antes de que empiece a moverse. (No se le va diciendo según lo hace... una vez que empieza no pondrá atención a nada más que el pedazo de papel con las órdenes).

Así que iniciemos a darle órdenes al sujeto: Levántese. Gire 90 grados a la izquierda. Camine dos pies hacia adelante. Ooops.. cayó de cara porque no le dijimos que había un escalón. Ok, a empezar de nuevo. De pie, 90 grados, escalón, caminar un pie hacia adelante. Derecha 90 grados. Adelante 3 pies. Derecha 90 grados. Adelante 30 pies. Hm... cayó por la ventana a la derecha del juez. Mejor hay que ser más cuidadosos con nuestras distancias.

Ok, otra vez. Arriba, izquierda 90, abajo 1, adelante 1, derecha 90, adelante 3, derecha 90, adelante 10, derecha 90, adelante 40, abrir puerta, adelante 2, derecha 180, cerrar puerta. ¡Listo! Ahora tenemos un programa funcional.

Ahora, ¿Cómo haría otro "programador" este trabajo? Si hubiera alguna diferencia, esta sería mínima. Tal vez daría la vuelta a la izquierda 180 casi al final en lugar de la derecha, o tal vez no cerraría la puerta. ¿Va nuestro programador a hacer que el sujeto salte, robe un arma y tome un rehén? No es muy probable.

En primer lugar, no le ayuda en ninguna forma a alcanzar su objetivo de salir del cuarto. En segundo, sería más trabajo. Y quiero decir MUCHO más trabajo. El programador no tiene control del oficial NI del rehén así que las instrucciones tendrían que incluir decirle a nuestro sujeto de qué tener cuidado (¿El oficial esquiva a la izquierda? ¿A la derecha? ¿Retrocede?) y cómo reaccionar a cada acción del oficial y del rehén.

¿Haríamos que nuestro testigo diera la vuelta alrededor de los asientos de los espectadores? En primer lugar eso solamente lo frenaría de alcanzar nuestro objetivo y, otra vez, tendríamos que hacer más trabajo. Más vueltas, más distancias correctar, verificar que no haya obstáculos como portafolios, etc. Otra vez, no es muy probable.

El resultado es que todos los "programas" escritos para hacer que nuestro testigo vaya del estrado a la puerta y salga van probablemente a ser muy similares, si no idénticos. El objetivo del programador y las limitacioones con las que tiene que opperar lo dictan. Él/ella no tiene las mismas opciones virtualmente infinitas que nuestro autor de novela tiene. El autor no está siquiera restringido por la realidad. En un libro el testigo podría teletransportarse o volverse invisible.

Y ESA es la razón por la que las patentes en procedimientos son tan peligrosas. Si uno es el primero en patentar y publicar un procedimiento para "egreso eficiente de un testigo desde el estrado vía portal público primario" ha bloqueado al resto del mundo. Se podría incluso pensar que pueden haber cientos de "programas" idénticos usados en las cortes de todo el mundo.

Comparemos con la forma del GPL para hacer cosas. Noto que otras personas pueden querer usar mi programa, así que lo llamo WitnessEgress() y entrego el código fuente. Ahora nadie escribiendo software de "procedimientos en la corte" tiene que volver a escribir otra vez ese estúpido, pequeño programa.

Aún mejor, pueden mejorarlo. Pueden agregar revisiones por el número de escalones en el estrado, su ubicación, pruebas para encontrar la mejor ruta hacia la salida. Podrían agregar revisiones para prevenir tropezar con portafolios dejados en el pasillo e instrucciones al testigo de cómo manejar la situación.

Al final, yo puedo tomar el programa WitnessEgress() vastamente mejorado y usarlo yo mismo. No solamente no tengo que modificarlo nunca más para cada pequeño cambio en el cuarto, tampoco tuve que hacer toda esa programación yo mismo. Es por eso que liberar programas como GPL no es siempre un acto tan desinteresado como pudiera parecer. Sin importar la razón, sin embargo, todos se benefician.


Encontrar
Hojear
Portada
Cambios Recientes
Página aleatoria
Actualidad
Editar
Edita esta página
Ayuda de edición
Opciones de página
Discute esta página
Pon un comentario
Versión para imprimir
Información de página
Historia
Lo que enlaza aquí
Seguimiento de enlaces
Mis opciones
Registrarse/Entrar
Special pages
Páginas nuevas
Lista de imágenes
Estadísticas
Informes de error de software
More...