Mailinglist Archive: opensuse-es (1576 mails)
| < Previous | Next > |
Re: [opensuse-es] Libritos sobre Python
- From: "Carlos E. R." <robin.listas@xxxxxxxxx>
- Date: Fri, 5 Dec 2008 04:56:15 +0100 (CET)
- Message-id: <alpine.LSU.2.00.0812050430120.28886@xxxxxxxxxxxxxxxx>
-----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.
Que va. Se hacen por miles.
Todos los scripts de bash son secuenciales, por ejemplo.
Todos los programas en C (y algunos en c++) son secuenciales.
Ten en cuenta que aunque tengan procedimientos, que aunque sigan estructuras de control, bucles, bifurcaciones... son secuenciales.
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.
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 no está relacionado con las interrupciones. A ver si nos entendemos. Yo no se si ahora a eso lo llaman de otra forma, yo lo aprendí como eventos, en la nomenclatura de Borland. En el windows son "mensajes".
Y estos métodos manejadores de eventos son llamados fuera de secuencia de manera imprevisible, porque dependen de decisiones del usuario.
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.
- -- Saludos
Carlos E.R.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.9 (GNU/Linux)
iEYEARECAAYFAkk4pmIACgkQtTMYHG2NR9X7fgCcC58J0JJEUQ2+GweDWYWpaL1W
p0gAni5cZoNGUaoHNh69YpMt9QD8wqh0
=m67K
-----END PGP SIGNATURE-----
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.
Todos los programas en C (y algunos en c++) son secuenciales.
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".
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.
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 no está relacionado con las interrupciones. A ver si nos entendemos. Yo no se si ahora a eso lo llaman de otra forma, yo lo aprendí como eventos, en la nomenclatura de Borland. En el windows son "mensajes".
Y estos métodos manejadores de eventos son llamados fuera de secuencia de manera imprevisible, porque dependen de decisiones del usuario.
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.
- -- Saludos
Carlos E.R.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.9 (GNU/Linux)
iEYEARECAAYFAkk4pmIACgkQtTMYHG2NR9X7fgCcC58J0JJEUQ2+GweDWYWpaL1W
p0gAni5cZoNGUaoHNh69YpMt9QD8wqh0
=m67K
-----END PGP SIGNATURE-----
| < Previous | Next > |