Las computadoras son deterministas, pero los programadores a menudo no pueden predecir correctamente los resultados de un programa. Ejemplo simple:
a = inicio
mientras que a! = end do
a + = 1
fin
Esto funciona bien si start es menor que end; pero si sucede que cometo un error, y el inicio es mayor que el final, la computadora hará un bucle (determinista) para siempre.
- ¿Cómo se puede reducir y gestionar la complejidad del software?
- ¿Cuál es mejor para ser utilizado como máquina de desarrollo, Fedora o Arch?
- Cómo conseguir proyecto para empresa de software
- Para usar AngularJS en mi aplicación, tengo que exponer una API públicamente, y los datos son el USP de mi aplicación. No quiero que alguien use fácilmente todos los datos. ¿Hay alguna alternativa?
- ¿Es el desarrollo de software independiente una buena manera de ganar dinero mientras viaja?
Otra fuente de comportamiento indeterminado es si algunas de las entradas a un programa o función no son predecibles. A veces, lo que sucede depende de la relación de tiempo precisa entre las diferentes entradas, o qué parte de un mensaje se corrompe por el ruido; o tal vez está haciendo algo crítico con el tiempo, y el recolector de basura decide ejecutarlo, bloqueando el programa principal durante unos pocos milisegundos. Una gran cantidad de programación en tiempo real y diseño de protocolo de comunicaciones trata de asegurarse de que pase lo que pase, el protocolo / programa actúa de manera predecible.
Finalmente, hay funciones matemáticas como, por ejemplo, la función de Ackermann, que son completamente deterministas, pero impredecibles en el sentido de que es difícil o imposible predecir una entrada arbitraria cuando o si el resultado convergerá.
TL; DR: ¡determinista no significa predecible!