Hay una cita de Alan J. Perlis que dice:
Hay dos formas de escribir programas sin errores; solo el tercero funciona.
Recientemente escuché esta cita de mi amigo, y no pude entender el significado más profundo detrás de ella.
¿De qué está hablando Perlis aquí?
bug
quotations
ykombinator
fuente
fuente
Respuestas:
Significa que realmente no hay programas libres de errores. Una cita profunda sobre formas de evitar errores con un error en sí mismo es parodia.
fuente
No hay tercer camino.
fuente
Contestaré con otra cita ...
;-)
fuente
Como muchas otras respuestas ya han señalado, no hay forma de escribir un programa sin errores .
Pero lo que me gustaría señalar es la potencial meta naturaleza de la cita. Es esencialmente un error fuera de límites. En la primera declaración, define el universo o "lista" que tiene solo dos posibilidades o elementos. Sin embargo, en la segunda declaración, hace referencia a una tercera. Lo cual es absurdo! ¡Incluso ilegal! Un tercer elemento dado un límite de dos elementos es en sí mismo un error.
Verdaderamente profundo en que la cita puede demostrar la esencia misma a la que se refiere.
fuente
Esto significa que todos los programas no triviales tendrán errores. Es solo una forma divertida de decir que no hay forma de escribir un programa sin errores.
fuente
Es posible escribir programas libres de errores, incluso programas no triviales e incluso probar que son correctos. Considere, por ejemplo, idiomas como Coq, Epigram o Agda donde se hace esto.
El problema de detención indica que no es posible hacer esto para el programa general .
fuente
Esto me recuerda a una camisa nerd que vi: hay 10 tipos de personas en el mundo. Los que saben binario y los que no.
También podría ser un juego el hecho de que a veces las listas están indexadas en 0. $ var = array ('Primero', 'Segundo', 'Tercero'); Y puede acceder a esta lista como tal: $ var [0] = 'Primero' $ var [1] = 'Segundo' $ var [2] = 'Tercero'
Entonces, el índice de matriz literal 2 apunta al índice "Tercero".
fuente
Esto ya se explica en otras palabras, pero no tan claramente como creo que debería ser. Simplemente significa que intentará en ambos sentidos, tendrán errores, y finalmente solucionará sus errores y tendrá un programa libre de errores. Compare con otra cita:
(Alternativamente, podría leer esto como dijo Pierre (lo que creo que es una exageración). (La tercera forma, que no existe en el dominio, funciona). Como dije, es una exageración, pero es cierto.
fuente
Esta es la misma cita que mi papá usa para decirme cuando pongo excusas. El dicho tiende a decir: "Hay 3 lados en una historia. Su lado, Tu lado y el lado correcto / verdadero / correcto".
Poniendo esto en contexto con el desarrollo (y siendo un probador de software por el profesor), diría que dado que hay tantas maneras de codificar algo, tendría sentido ir con "Hay tres lados en la codificación. Su código, su código y el código refactorizado ".
Creo que esto se debe a que los programadores / desarrolladores tienden a refactorizar una vez que el producto se está estabilizando, lo que en su mayoría es demasiado tarde, pero la mayoría de las veces el refactorizador se hace para mejorar algo que usted y su amigo no hicieron tan bien en primer lugar.
Espero que esto ayude.
fuente
Creo que, técnicamente hablando, podría escribir un programa no trivial sin errores, pero debido al problema de detención, es imposible demostrar que está libre de errores. Por lo tanto, uno debe trabajar bajo el supuesto de que todos los programas tienen errores, ya que es imposible demostrar lo contrario.
http://en.wikipedia.org/wiki/Halting_problem
Actualización: puede probar que un algoritmo particular devolverá las respuestas correctas, pero eso no es lo mismo que demostrar que es totalmente correcto. http://en.wikipedia.org/wiki/Correctness_(computer_science )
Sin embargo, mi punto fue que la cita se refiere al hecho de que uno debe asumir que un programa siempre tiene errores e intenta explicar por qué ese es el caso. http://en.wikipedia.org/wiki/Software_bug#Bug_management
fuente
Como información adicional, las "dos formas" podrían ser una referencia a esta cita de Tony Hoare :
Medita un poco en eso y verás que está diciendo lo mismo: si tu software no es trivial, tiene errores (pero complicalo lo suficiente y no serán errores obvios ).
fuente