Programacion Hibrida
Programacion Hibrida
Programacion Hibrida
Ing. En Sistemas Computacionales Ing. Lorena N. Ramirez Beltran Interfaz Carlos Reyes Lopez 602-A 16/05/2012
PROGRAMACIN HIBRIDA En la programacin software, sistemas hbridos inteligentes denotan a los sistemas software que emplean, en paralelo, una combinacin de modelos de inteligencia artificial, mtodos y tcnicas de stos subcampos Cada sistema inteligente natural es un hbrido porque stos desarrollan operaciones mentales tanto en niveles simblicos como sub-simblicos. Desde hace pocos aos se ha ido desarrollando una discusin sobre la importancia en la inteligencia artificial de la integracin de todos stos sistemas. Basados en las nociones de que se haban ya creado simples y especficos sistemas de inteligencia artificial (como sistemas para la visin de computadores, sntesis del habla, etc., o software que emplean alguno de los modelos mencionados arriba) algunos autores proponen aque es ahora el momento de la integracin para crear complejos, grandes sistemas de inteligencia artificial. Investigadores destacados sobre estas ideas son Marvin Minsky, Aaron Sloman, Deb Roy, Kristinn R. Thrisson y Michel Arbib. La metodologa de diseo Creacionista (CDM, por sus siglas en ingls) (ntese en su nombre referencias al deseo humano de ser el Arquitecto) es una filosofa de desarrollo software diseado especficamente para la creacin de grandes sistemas A.I. CDM est basado en pasos de diseo iterativos que guen hacia la creacin de una red de llamados mdulos interactivos, que se comunican por flujos tipados explcitos y mensajes discretos. 02 La organizacin Mindmakers es un portal online para la gente que trabaja en la integracin e incremento de la coloboracin en el campo de la Inteligencia Artificial Al trabajar con un lenguaje de alto nivel, en ocasiones nos encontramos con el problema de que necesitamos que haga determinada funcin o trabajo pero desafortunadamente sta solo existe en otro lenguaje que no es el que necesitamos utilizar, o simplemente, no encontramos esa funcin en ningn lenguaje de alto nivel. 03 Ventajas de la Programacin Hbrida Para mejorar la escalabilidad Cuando muchas tareas producen desbalanceo Aplicaciones que combinan paralelismo de grano grueso y fino Reduccin del tiempo de desarrollo de cdigo Cuando el nmero de procesos MPI es fijo En caso de mezcla de paralelismo funcional y de datos En este momento el lenguaje ensamblador constituye una herramienta no solo eficaz, sino simple para producir un parche para el compilador de nuestro lenguaje preferido. Tal vez el mayor problema con el que nos enfrentemos sea el de cmo conectar ambos programas (el de alto y el de bajo niveles) y cmo pasar variables de un programa al otro. Para conseguir nuestro objetivo se utilizan pseudo-operadores, es decir, instrucciones que aparecen en el cdigo fuente del ensamblador pero que no generan ninguna instruccin de mquina, pero proporcionan directivas para que el ensamblador pueda operar con datos, ramificaciones condicionales, generacin de listados y con macros durante el proceso de ensamble. DIRECTIVAS PARA COMPILACIN HIBRIDA Turbo Pascal permite escribir procedimientos y funciones en cdigo ensamblador e incluirlas como parte de los programas en lenguaje Pascal; para esto, Turbo Pascal cuenta con dos palabras reservadas: Assembler y Asm. Assembler permite indicarle a Turbo Pascal que la rutina o procedimiento que se est
escribiendo est totalmente escrita en cdigo ensamblador. Ejemplo de un procedimiento hbrido: Procedure Limpia_Pantalla; Assembler; Asm Mov AX,0600h ; procedimiento Clr Scr de la unidad CRT de Turbo Pascal Mov BH,18h Mov CX,0000h Mov DX,184Fh Int 10h End; Por otro lado, Asm nos permite incluir bloques de instrucciones en lenguaje ensamblador en cualquier parte del programa sin necesidad de escribir procedimientos completos en ensamblador. Ejemplo de un programa con un bloque de instrucciones en ensamblador: ;El programa solicita que se introduzcan dos nmero, despus calcula la suma por medio de la instruccin Add de ensamblador y finalmente imprime el resultado en la pantalla. ; realiza la suma de dos cantidades enteras (N1 y N2) introducidas previamente por el usuario, despus almacena el resultado en la variable Res y finalmente presenta el resultado en la pantalla. Program hibrido; Uses Crt; Var N1,N2,Res : integer; Begin Writeln(Introduce un nmero: ); Readln(N1); Writeln(Introduce un nmero: ); Readln(N2); Asm Mov AX,N1; Add AX,N2; Mov Res,AX End; Writeln(El resultado de la suma es: ,Res); Readln; End. ;Este programa solicita al usuario que presione alguna tecla, cuando la tecla es presionada, sta se utiliza para rellenar la pantalla. Termina cuando se presiona la tecla enter. Utiliza tres procedimientos: Limpia_Pantalla: Este se encarga de borrar la pantalla Cursor_XY: Este procedimiento reemplaza al Goto XY de Pascal Imprime_Car: Este procedimiento imprime en pantalla el carcter que se le pasa como parmetro. Program Hibrido2; Uses Crt; Var Car: Char; i,j : integer;
;Este procedimiento limpia la pantalla y pone blanco sobre azul Procedure Limpia_Pantalla; Assembler; Asm Mov AX,0600h Mov Bh,17h Mov CX,0000h Mov DX,184Fh Int 10h End; ;Este procedimiento imprime el carcter en la pantalla Procedure Imprime_Car(C: Char); Assembler; Asm Mov Ah,02h Mov Dl,C Int 21h End; ;Este procedimiento tiene la misma funcin que el procedimiento Goto XY de Turbo Pascal Procedure Cursor_XY(X,Y: Byte); Assembler; Asm Mov Ah,02h Mov Bh,00h Mov Dh,Y Mov Dl,X Int 10h End; Begin Limpia_Pantalla; Repeat Limpia_Pantalla; Cursor_XY(0,0); Write(Introduce un carcter: ); Car:=Read Key; Imprime_Car(Car); Limpia_Pantalla; If car #13 then Begin For i:=0 to 24 do For j:=0 to 79 do Cursor_XY(j,i); Imprime_Car(Car); End; Cursor_XY(30,24); Write(Presiona enter para salir u otro para seguir); Readln; Until car = #13; End.
Tal vez el mayor problema es cmo conectar dos programas, el de alto y el de bajo niveles, y cmo pasar variables de un programa al otro. Para conseguir nuestro objetivo se utilizan pseudo-operadores, es decir, instrucciones que aparecen en el cdigo fuente del ensamblador pero que no generan ninguna instruccin de mquina, pero proporcionan directivas para que el ensamblador pueda operar con datos, ramificaciones condicionales, generacin de listados y con macros durante el proceso de ensamble. El formato de este pseudo-operador es PUBLIC nmero, variable o rtulo Ejemplo de uso de PUBLIC: PUBLIC nombre Instrucciones RET nombre ENDP