El vie, 05-12-2008 a las 04:56 +0100, Carlos E. R. escribió:
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
El 2008-12-04 a las 01:34 +0100, lluis escribió:
Otro correo que no me llega por la cuenta principal.
Lineal o no lineal... es otro concepto, escribir 8900 lineas seguidas o modularizar el problema.
Lineal sólo significa que el programa sigue una secuencia definida de sucesos, que es previsible desde el principio. Se ejecuta una cosa, detrás otra, detrás otra... en una secuencia definida; aunque lo dividas en procedimientos, funciones, o incluso objetos, la secuencia es lineal
No lo se, hace mas o menos 20 años que yo hago cosas que no coinciden con esa definicion. Me parece que no es asi.... Desde las epocas del Algol, no hay programas lineales a menos que sean de gestion.
Que va. Se hacen por miles.
Todos los scripts de bash son secuenciales, por ejemplo.
Si, y eso es un lenguaje de programación frecuentemente utilizado para aplicaciones complejas :-)
Todos los programas en C (y algunos en c++) son secuenciales.
No es verdad, dependiendo de como se programe no hay ningun motivo para hacer algo controlado por eventos en C.
Ten en cuenta que aunque tengan procedimientos, que aunque sigan estructuras de control, bucles, bifurcaciones... son secuenciales.
La utilización de Eventos ( alias interrupciones) es comun a todas las formas de programación.
No, los eventos no son las interrupciones, eso es otra cosa. Son los eventos en OOP: se asocia un "método" a un determinado evento, que puede ser, por ejemplo, que el usuario hace click en la barra de tareas, o que selecciona el menú de abrir archivo, o que aprieta el botón de "Ok". Eso no son interrupciones, son otra cosa. Cuando sucede el "evento" se ejecuta un "método", que no deja de ser una función con otro nombre. Como los eventos, que la mayoría son originados por el usuario, son imprevisibles, la secuencia de ejecución del programa es también imprevisible: es entonces cuando el programa deja de ser "secuencial" o "lineal".
Los eventos no son algo magico que nace en el programa, son sucesos exteriores( con alguna excepcion) que se tratan a partir de interrupciones en cualquier sistema decente. Puede haber excepciones, como el Timer del sistema, pero al fin y al cabo eso tambien es una interrupcion.
Eso se presta muy bien a los programas que interactúan con el usuario, por ejemplo a un editor de texto, pero en cambio se presta mal si quieres hacer una tubería o un convertidor de formatos.
Ejem...
Eventos imprevisibles... interrupciones. porque en el Hard son eso.
No es lo mismo un evento que una interrupción. Una interrupción es bajo nivel, dispositivos, hardware.
Un evento es alto nivel, y no necesariamente se correponde con una interrupción. Es algo asociado a programación orientada a objetos.
Si, vale, un evento es consecuencia de una interrupción tratada. No tiene porque estar asociado a POO.
Se trata de que al definir una función, un método, en su cabecera (o en un fichero auxiliar de definición de la interfaz), declaras que esa función ha de recibir el evento de "pulsar OK", que puede producirse por pulsar la tecla Enter, por pulsar "alt O", por hacer click sobre el rectangulito adecuado... esas tres cosas distintas producen el mismo "evento". El bucle de control del programa, o el sistema operativo, le pasa el control al programa, que hasta ese momento no estaba ejecutandose, y le dice: oye, que se ha producido un evento, y es este. Y una serie de funciones harán, por "arte de magia", que se llame al evento por defecto de la clase "dialogo" que responde al "OK", o al que lo ha heredado, o al que lo ha sobrecargado.
Y eso.... es precisamente a otro nivel, lo que hace una interrupción.
Así, un programa típico en pascal tipo delphi o lazarus (o su equivalente en c++), sólo tiene esto en su "main":
begin Application.Initialize; Application.CreateForm(TContador, Contador); Application.Run; end.
A partir de que llamas a "Application.Run" ya no tienes ni idea de qué se va a ejecutar, ya no depende de tí. Bueno, si se sabe, pero no es tan simple. Se rompe la secuencia, ya no es "secuencial". Ni procedural.
No, claro no es secuencial, al menos entendiendo por eso, la ejecucion lineal. Si es secuencial en el contexto de una maquina de estados. -- Saludos Lluis