¿Por qué el código de un programa no e s lo mismo que una novela?

18/07/2004 - 20:11 por Ille Corvus | Informe spam
¿Por qué el código de un programa no es lo mismo que una novela?
http://www.soffernet.com/jaime/arch..._novela%3F


From Jaime Soffer's archives.

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

Traducido bajo los términos de la licencia Creative Commons by-nc 1.0

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.


Meritorios de Filtrado (Kill-File Global):
tella llop, jm (N.B. 2003.10.25)


«Prefiero molestar con la verdad que complacer con adulaciones (Lucio Anneo Seneca)»
 

Leer las respuestas

#1 Ramón Sola [MVP Windows Client]
19/07/2004 - 01:46 | Informe spam
Hash: SHA1

¿Y?
Ramón Sola @ Málaga (España) / MVP Windows - Shell/User
(quitar "IFeelGreat")

Ille Corvus () animó a la concurrencia declamando:
¿Por qué el código de un programa no es lo mismo que una novela?



http://www.soffernet.com/jaime/arch..._novela%3F



[...]

Preguntas similares