Revista Login:_ nº 13
description
Transcript of Revista Login:_ nº 13
• 111111
1 nforn1ática Personal
• KHEPRI DATA® el Mota, 15 (zona La Rubia)
tel. 277 1 07 fax. 29 15 27 ORDENADORES REDES PERIFÉRICOS CONSULTORÍA FORMACION MULTIMEDIA
[1 1] -~
iooo@l ~~~~~0;;:::::;::::,; 1--D---1
~ ~ EPA POLLUTION PREVENTER
Cl
NUESTROS ORDENADORES LO TIENEN TODO ... . . . EXCEPTO UN ALTO PRECIO
INTEL DX4/1 00 HDD 540 Mbytes RAM 4 Mbyte s 72 contac tos SVGA VESA PCI 1 Mbyte ID E B. L. ,,.
,...-"" \ M o n it or C olo r 1 4" _,- \ Flo ppy 3, 5" 1 , 44 M bytes __ _.,/~es \, Tec~ado _.----- ·~60 r-..Q~ __ ,,~ R a t o n _- -.\00 ~~-:/
~~i~~orre ·< --~~\:-~g__./ j ,C--~ --E- --- ·t&Q-i l 149.000 Pts \\ )~~ /- L-~~~----~pana _ ;;D_ ~---1 6% IVA NO INCLUIDO \_,.. pague hasta en 12 meses sin interés!!
Login:_ Nº13 Marzo-Abril l . 995
Director y maquetador José Emilio Mori Recio
11 ustrador y portada José Luis Escribano
Redactores Alfredo Catalina Gallego
José M'' Cuenca de la Cru; Luis A. Cuesta S.1ncheL
Joaquín Ferrero San Pedro Ángel M. Galván Alonso
José Emilio Mori Recio Javier Palmero Esteban
Publ icidad Mario Díez Calvo
Hugo Fernández Alonso Luis García Tejero
jorge Merino López
Distribución Joaquín rerrero San Pedro
Imprenta El Cllmpus Artes GrMictls, S.A.
Telf. y Fax (983) 27 25 08
Depósito Legal: VA-436/92 fJTff(.1cl :! {/(/0 t jtiiiJif rrt \
Difusión gratuita P· r1<1 ltculml htm. \Ira/
lo Rev1sto login: es uno publicación de lo Asocioc1ón
1 1 f. r'J '
(G UJI de lo Univers1dod de Valladolid, 1nscnlo en el Registro Provincial de
Asoooeiones, Sección la. número l 4n lo Asociación no asume n~nguno
responsabilidad sobre los opiniones expresados en los artículos firmados.
Se autorizo lo reproducción de los conlenidos de lo revisto, siempre y cuando se cite expresomenle lo
procedencia de los mismos
sumario Password: El mundo o/ revés
Noticias del mundillo informático
Cobol, Ensamblador y C: ¿Amigos poco reconciliables? Procedimientos poro utilizar desde Cobol lo potencio del (y el Ensamblador
Por Ángel Manuel Galván Alonso
Charles Babbage: Mecánica aplicada a la computación
4
5
7
Un vistazo o la p-ehrtono de los ordenad.•res a 'ra.,. s de la vtdo del genio/ matemático.
Por José María Cuenca de la Cru; 12
Introducción a las Redes neuronales artificiales Cómo los máquinas pueden aprender o pensar siguiendo el modelo del cerebro humano.
Por Alfredo Catalina Gallego 14
MAC... Windows Alternativas en el mundo Apple para migrar desde los programas Windows del P(
Por Javier Palmero Esteban 21 ,------------------------,
La "ut;;crcn~. l ,l'>, c..umentarios. aclnracioncs. anuncio .... suscripcil'nc:-, numero-. ntrnsndos. etc. relativas a la re\ isla Login: los pt,déis dccwar: * Personalmente en nuestra A ocinción, CU) a sede social se encuentra en la Facultad de Ciencia. ( P.) dd Prado de la Magdalena). prcaula-. A4-B4 * Por correo dirigido ni Grupo lJnivcr itnrio de lnlonnátic:s -Re-.: i~ta Logi Apdo. de Correos 6.062, 470RO Vall:ldolid. • Por corre,l electrónico dirigido a l"C\'ista ti gui.uva.cs.
Los programas de dominio publico) ~lwreware comentados en la revista ~e pueden obtener en el sen idor de fip anónimo de lntemct perteneciente a nuestra Asociación. uniendo en la dirección ftp.gui .u' n.cs.
Marzo-Abril 95 login: 3
Password:
H ace poco, leyendo las carteleras de cine, me detuve a hacer esta reflexión. Hasta ahora, la informática habla evo lucionado progresivamente y en muchas ocasiones ha
bía adoptado para sí patrones y modelos de la sociedad de consumo. Más concretamente, muchos juegos de ordenador tenían como protagonistas a personajes del cine (todos habremos visto en la pantalla a Indiana Jones, a Terminator ... ), pero ahora, por primera vez que yo recuerde, la gran pantalla ha adoptado un personaje de un juego (Street Fighter) para una pelicula. Sin duda, la rápida evolución de toda la informática -también de los juegos- nos está llevando a este «mundo al revés» en el que ella es quien marca la influencia.
Y no se trata de que en este mundo al revés vayamos a estar peor que ahora. Los cambios y evoluciones siempre crearon temores entre los humanos. La informática marcará una revolución, como en su momento lo hicieron la rueda o la máquina de vapor. Los historiadores del futuro trazarán una linea imaginaria en algún punto de estos cincuenta años pasados, y dirán que marcó el inicio de la Era Informática*. Y falta aún lo más importan-
NOTA ACLARATORIA
El mundo al revés te por llegar: todo parece indicar que, en unos diez años, la «aldea global>> será fmalmente w1a realidad si los hogares del mundo son conectados por cables por los que llegará toda la información, datos, imágenes y sonido. Y con ello sin duda aumentará y mejorará, no sólo nuestra calidad de vida y comodidad, sino nuestra calidad humana. Hoy en día, Sarajevo ya está «abierta» al mundo gracias a Internet: un ejemplo de cómo la intercomunicación conlleva una mayor fraternidad humana. Vaya desde Login: nuestra aportación para que evolucionemos sin suspicacias ni dudas, sino con la confianza en el futuro.
].E.M.
(*) Seguro que a muchos les sonará la frase. De acuerdo, no voy a marcarme el tanto. Está tomada de Fundación, de Isaac Asimov, y la incluyo porque además de venirme a la mente por adaptarse tan bien al contexto, resulta un homenaje por mi parte a tan estupenda obra.
En relación con b sección ·Reflexión p:l/71 pens:~dores·, np:~rccicl:t en l:1 págin:1 6 del número 17 (Enero-Febrero 9'5) de la revista Uneas Universitarias, en la cu:-~1 dicha revista dab:1 a conocer el ;ICt:l donde se rctkjaha la reunión en l::t que todas las revistas universitarias reparueron l:t subvención otorgada por el viccrrcctor.tdo, Login: dese<J hacer consr:tr los siguientes puntos:
4
1 ~) La inform:1ción q ue presenta Líneas, est:í expuesta con :ínimo de tergivers:1 r y hacer creer a sus lectores que el resto ele re,•ist:Js hemos planteado un:1 conjur<J conrr<J ellos. JndependientcmcnLc de las d iferencias que desde luego existen entre l:ls cl ivers:~s
revist:ts (en l:ls que cabe scñ:1b r que Login: pennanece :~1 margen, como revista divulgativa y ·:lcontcsion:ll· que es), en nmgun momento de las reuniones manrenicl:~s se intentó perseguir :1 Líneas, sino que los represenr:tntes intem:unos llegar a un :tcuerclo :;obre d rqxmo m:ís adecuado pam todos, siendo b opinión general -salvo de ellos- que Líneas habí:l estado recibiendo demasiado (rm::llldo el medio millón, siendo 1.400.000 a repartir este año entre ocho revistas) El hecho ele tener un:~ gr<Jn tir:1d:1 y mucha -lüstoria· no quiere decir que sen justo que ellos reciban mucho m:ís dinero que el resto. (Y es que la justic1a es ciega .. )
2~J El objetivo de Login; es difundir la infom1:ítica y no ser una revista peseter.!(') cuya idea de democracia sea que si la mayoría no opma como yo, me entado y os pongo verdes, en lug:1r de intentar comprender los mzonamientos de los clem:ís pnr:1 que les toque menos d111cro, los cuales por cieno son muy lógicos, en especi::d el hecho ele que~ ellos reciben subvenciones aclicion:lles a la uni,·ersirari:J . Y :1 pesar de lo cual. se siguen llevando la mejor mjacb, y <lllll con cliferem:i:~ sobre el resto.
(•) De hecho, Login: viene teniendo pérdidas económicas en pr.ícticamente todos sus números
Com1s1ón Ed1tortal del
GruP.O Umvers1tar10 ~e
Informática
'C' para mgemerías Sistema operabuo ~oOOS 1500
ltl&RAUPT LIST and other useful files u43 (6 Rou 1994) lenguaje ~k Bas1c
2600 600
El uruuerso dag1tal deiiBfD PC. AT y PS/2 21
Login:
Para compra o mayor mformac1ón. acudw a Pre~ulas n4=B4. racultad de C1enc1as. Umuers1dad de Ualladohd
Marzo-Abril 95
( )' {
111 Jornadas Té<nicas Informáticas de la A<UP. La Asociación Cultural Universitaria Palentina ha organizado, por tercera ocaSión en estas fechas de vacaciones, unas mteresantes jornadas en las que se han tratado temas informáticos de diversa Indote en conferencias que han tenido lugar en las tardes del 17 a122 de Abril, en la sala Caja España de Palencia. Entre otros asuntos, se ha hablado de BBSs, Procesadores Alpha, Accom RISC PC, Edificios Inteligentes, etc. y se han efectuado dos proyecciones cinematográficas. Dado que en la fecha de cierre de este número no han concluido dichos actos, tendremos dispuesto un resumen más amplio, realizado m Sifll para el n° 14.
SINFO' 95. Del jueves 20 al domingo 23 de Abril se ha celebrado en nuestra Feria de MueSiras el Salón Monográfico de la Informática Profesional y Nuevas Tecnolo· gfas (SlNFO), patrocinado por AVEIN, la Asociación Vallisoletana de Empresas de Informática.
MUNI"~~ 1 e \1 \ <e •. Mientras los precios siguen bajando (Compaq sigue ahora la estela de 18M) las tecnologías siguen avanzando.) así se anuncia el desarrollo de ch1ps de 1 Gigabyte de RAM porNEC. ¿Serán comercial izables ... ?
En materia de microprocesadores, Sun Microsystems ha desvelado su futuro UltraSPARC, RJSC de 64 bits que será el primero en la industria en incorporar en el propio chip soporte multimedia para videoconferencias. descompresión MPEG-2 en t1empo real. etc. Mientras, D1gital Equipment Corporation ha sido el primer fabricante en romper la barrera de los 300 Megahertzios con su nuevo procesador, el Alpha A.Y'P 2/16-1 (con más de 9 millones de transistores), el primero disponible comercialmente en superar los mil millones de instrucciones por segundo ( 1 BIPS, Billón de Instrucciones Por Segundo inglesas que aquí deberemos traducir adecuadamente).
Otro más de los eternos juic1os entre empresas se ha resuelto. Y esta vez M1crosofl no ha perdido ... Apple había reclamado 5.500 millones de dólares a M icrosofl y Hewlett-Packard por haber violado su patente al crear software basada en la Interface Gráfica (GUI) de Windows. habiendo de por medio un
Noticias del mundiUo informático acuerdo de licencia sobre este interface entre Microsoft y Apple. Sin embargo, Apple aún puede apelar.
El primer CD-ROM de séxtuple velocidad (si se generalizan, es de temer que acaben llamándose 6x a secas) ha sido presentado por la compañia Plextor. Se trata del modelo 6PleX, con una velocidad de transferencia de 900 Kb/seg y tiempo de acceso aleatorio de 145ms. El imcio de su distribuCIÓn está previsto para el mes de Abril, incluyendo drh!ers especiales para el aprovechamiento de sus posibi 1 idades.
Tras siete meses, 2M 3.0 nos trae importantes mejoras y ha conseguido un gran éxito en Internet.
D ,, tl'lolo P· 1 u
2M 3.0. Después de siete meses de intensas pruebas en fase beta en los que se ha aumentado notablemente el interés por su salida, finalmente el pasado lunes 6 de Marzo vio la luz la versión 3.0 del programa de formateo y soporte de discos de alta capacidad y velocidad, 2M, de Ciriaco Garcia de Celis, que ha superado los resultados que parecían inmejorables de la versión 2.1. Los cambios pueden resumirse de la siguiente forma:
• Reestructuración casi completa del código, simplificando su mantenimiento, mejorando y subsanando ligeros problemas, añadiendo nuevas opciones y con mejor ayuda y documentación.
• Nuevo programa residente para mejorar las posiblidades de 2M: 2MDOS, que permite al DOS el formateo sobre la marcha, usando FORMAT, de discos no estándar así como su uso con DISKCO PY, opciones que además incluyen el soporte para discos FDFORMA T. pudiéndose prescindir del FDREAD Y, lo más importante, el formateo mediante cualquier programa de los discos a tamaño estándar «bajo 2MDOS», se real1za con la técnica DiskBoost que crea d1scos mucho más rápidos de lo normal (los más rápidos en 1 .44M, con casi 45 Kb/seg en lectura y escritura).
• Nuevo programa que incorpora una tecnología revolucionaria y experimental (aunque segura) para el formateo con acceso directo a la unidad de disco (pasando por enc1ma de la mismísima
controladora), el 2MGUI -de GUlnessque permite crear discos por encima de los dos millones de bytes en 3"Yz liD, y bate en todos los formatos el récord absoluto de espacio disponible. Sus «pegasll son el consumo de memoria y la necesidad de definir letras de unidad especificas para estos formatos .
• Nuevo, espectacular y completo programa de información 2M-INFO, que reúne todos los ficheros de documentación anteriores e incorpora los programas 765DEBUG -ahora con una apariencia radicalmente distinta- y 2M-FDTR de la ver· sión 2.1.
El nuevo 2M se ha convertido en una de las utilidades de Dominio Público para PC de mayor expansión e interés en muchísimo tiempo. No es ésta una afirma· ción gratuita, sino que gracias a su difusión en Internet, se conocen usuarios de 2M en por lo menos 35 paises, además de haber sido comentado y analizado en diversas revistas de programación nacionales y extranjeras, y de haber supuesto un aumento muy importante en el tráfico de datos en nuestra estación luna.gui.uva.es, actualmente una de las más conocidas y visitadas de España.
Por cierto. hay que recordar que 2M se distribuye como Cardware: qu1enes decidan usarlo con regularidad tienen la obligación de enviar una tarJeta postal a Ciriaco. El hecho ¿curioso? es que, con diferencia, se han comunicado por correo electrónico con Ciriaco más usuarios de Estados Unidos que de España, aunque nuestro país sea el de mayor número de usuarios registrados.
Por otro lado, gracias al esfuerzo conjunto de Ala in Knaff, en Grénoble (Francia), y de David Niemi, en Virginia (Esta· dos Unidos), las utilidades de manejo de disco al estilo MS-DOS desde Linux, las mtools, af\aden ya a sus posibilidades previas el soporte de los formatos especiales 2M, en todas sus densidades y tipos, in· cluyendo los formatos «antiguos» más lentos. De esta forma, podremos instalar Linux sin temor a no poder acceder a nuestros d1scos 2M; bastará emplear comandos del tipo mdír o mcopy, al igual que con el resto de discos. También se prevé para próximas fechas el soporte de discos 2MGUI.
Ciriaco ha anunciando una próxima revisión 3.1 de 2M en Mayo, de la que en nuestro próximo número os informaremos ampliando los datos que ahora hemos adelantado sobre esta destacada utilidad.
Marzo-Abril 95 Login: 5
Take Command para Windows de JP Software. JP Software, la compai'lia de software distribuido por shareware creadora del procesador de comandos 4DOS, ha hecho público el pasado 23 de Noviembre un nuevo producto, que viene a ser una alternativa inteligente a los shells secundarios de Windows: Take Command (TCmd). Se trata de un programa 1 00% Windows, con menús, cuadros de diálogo y pantalla gráfica, pero que imita totalmente una sesión de comandos 4DOS. De esta forma, los comandos soportados son muy sim ilares y desde luego compatibles con los de 4DOS; con adiciones muy interesantes, como la posibilidad de incluir cuadros de diálogo y menús Windows en los ficheros de comandos BAT 6 BTM; y opciones adicionales en los menús del programa, que permiten configurar el entorno, alias, descripciones, etc. en cuadros de diálogo con el manejo intuit ivo habitual de Windows. Contaremos también, como siempre, con los históricos de órdenes y de directorios y con la facilidad para personalizar las opciones a nuestro gusto, incluyendo una barra de hasta 16 botones que podemos destinar a lanzar aplicaciones y/o a producir un eco de texto en la pantalla de trabajo.
Al ejecutar programas externos DOS desde TCmd, se abre una ventana DOS adicional, pero podemos hacer que «corran» en la misma sesión gráfica de TCmd (siempre que trabajen en modo texto) instalando en nuestro SYSTEM.INI un controlador suministrado llamado CAVEMAN.386 para la gestión de programas DOS. Aunque éste y otros aspectos son los de una primera versión y necesitan todavla algunas mejoras, el producto ya merece un vistazo al menos para quienes ya usen 4DOS. Adicionalmente, el 1 de Febrero apareció una versión 32-bits para Windows NT 3.5 y superiores. En el momento de cerrar este número, las últimas revisiones de los productos de JP eran: 4DOS 5.5 C, 40S/2 2.5 C, 4DOS/ NT 2.5 C, Take Command 1.0 B y TCmd32 1.0 A.
Antivirus. La situación en lo que se refiere a los antivirus más conocidos por todos, SCAN y F-PROT, ha sufrido algunas variaciones, aunque no muchas. Después de iniciar una nueva numeración tras la versión 1 17 del SCAN y pasara la2.0.0, McAfee ha introducido, como cabla esperar, la op-
6 login: Marzo-Abril 95
ción /CLEAN para poder ser utilizada desde el SCAN.EXE, reuniendo lo que antes eran dos productos en uno. Sin embargo, no ha creado un entorno con menús para desarrollar el trabajo de la limpieza de virus, por lo que sigue por detrás de F-Prot en este sentido. Hay que decir que su documentación es ahora muy extensa, aunque por ejemplo para la V217, última a la fecha, se sigue distribuyendo el manual de la 2.1. 1 (los cambios de versión tan sólo van referidos al fichero de datos de los virus) lo que a alguno le puede llevar a confusión. Por otro lado, ¿tiene alguna intención de competencia a F-Protla similitud en el número de versión? Y es que ahora ya se ha distribuido una Beta de la V220, «superando» por vez primera la numeración de F -Prot, tradicionalmente «lenta». También siguen existiendo versiones para Windows y OS/2.
Desde la 2.0.0 es fácil saber qué tipo de SCAN cae en nuestras manos, ya que la denominación de los ZlPs en que se distribuyen indica: con tres letras, el S.O. (SCN en la versión de DOS, WSC Windows, OSC OS/2 ... ); con otra letra la fase de versión: Alpha, Beta o Final (un guión); con tres números, la versión; y en el octavo carácter, la letra que indica la distribución de esa versión especítica; asi el SCNB220E.ZIP es una Beta de la V220 del SCAN para DOS de distribución Electrónica (por ejemplo, a través de Internet).
En lo que respecta a F-Prot, en Marzo se han sucedido las versiones 2.16d y 2.17 (última disponible). Las actual iLaciones están por lo general más cuidadas que en Sean, y las últimas variaciones introducidas se refieren sobre todo al cambio de nombre de numerosos virus. Frisk Software recomienda en estas últimas versiones usar el programa PGP para verificar la signatura de bytes que identifica al ZIP como idéntico al original de Islandia, aunque tal vez resultara más cómodo y evidente para el usuario emplear la Verificación de Autenticidad de PKZIP en su versión registrada, como hacen McAfee o JP Software.
11 ·\RD\\ARf '1 BI OS En cuanto a novedades en el apartado de Hardware, cabe destacar la proliferación de placas madres, desarrolladas por las más diversas casas, entre las que se inc luyen IBM e Intel. Estas nuevas placas incluyen lo último en chipsets mejorados, para dar soporte a toda
la amplia gama de nuevos procesadores y a los nuevos estándar en Buses, tanto VLB como PCI, incorporando algunas como novedad el soporte en la misma placa, o a través de tarjetas, de los nuevos ATA-2 o ATA PI, que nos permitirán tener discos lOE de más de 528 Mb. o conectar un CD-ROM (se espera una fabricación masiva de nuevos dispositivos lOE, desde discos de 1 Gb. o más, hasta las nuevas unidades CDROMIDE).
Con el desarrollo de nuevas placas aparecen también BlOS que pretenden adaptarse mejor a l nuevo hardware, por e llo vemos revisiones continuas en su código de los tres principales fabricantes: American Megatrends (AMJ), Award y Phoenix.
AMI destacó no hace mucho con sus BIOS gráficas que permitían ser configuradas mediante el uso del ratón en un entorno al estilo Windows o GEM (el casi o!vidadoGraphics Environmenl Manager de Digital Rcsearch que han incorporado históricamente los ATAR! ST, entre otros) y sistemas antivirus incorporados a nivel BIOS.
Mientras, los esfuerzos de Award y Phoenix se han encaminado a dar mejor soporte a los nuevos buses, trabajando a distintas frecuencias de reloj, y en algún caso hemos visto como se incluía un detalle que siempre echamos en falta cuando teníamos disqueteras mixtas: elswap o intercambio de unidades de disquete al arrancar. Ignoramos si este detalle tiene ahora algún propósito más, pero llega tarde, máxime cuando Phillips fue la pionera en las BIOS de algunos de sus equipos, al hacer que aquella unidad desde la que arrancáramos se autoconfigurara como unidad A:, independientemente de los conectores en la controladora.
Con todo, el mayor esfuerzo está aún por desarrollarse a nivel PC, pues la demanda de dispositivos y BIOS que permitan el uso del tan comentado Plug & Play (también coloquialmente llamado Jumpers-Free), está ahora en la calle, y hacia ahí se mueven la mayor parte de los esfuerzos de fabricantes de Hardware y Software.
Luis A. cuesta Joaquín Ferrero san Pedro
José Emilio Morí Recio
Programación
Cobol, Ensamblador y C: ¿Amigos poco reeoneiliables? El Cobol viene siendo, desde su creación en 1.960, un lenguaje destinado a su fácil comprensión tanto por un observador como por un experto, dada su similitud sintáctica con el inglés. conse· cuencia directa de este objetivo es Que Cobol esté lejos de utilizar de forma óptima los recursos del ordenador. No obstante, en este artículo vamos a ver cómo podemos convertirlo en una herramienta más poderosa con la ayuda del e o del Ensamblador.
ANcll rv\,\1'-oULL G,\l W oN At o Nso
Como dice e lthulo, COBOL suele ser poco amigo de los ·malabarismos• de los que son el
paces tanto C como ensamblador: de hecho, típie~mente se suelen situar como extremos radicales en lo que a programación se refiere.
Últimamente se están hadendo grandes esfuerzos para poner al día un lenguaje que muchos consideran un auténtico dinosaurio: b norm:t 85 y la inclusión de témiCIS OOP son claros ejemplos. De todos modos, el COBOL nune~ se ha dejado de usar para aquello para lo que ha sido diseñado: aplicaciones de gestión y, porta nto, m:tnejo de ficheros.
Pero, probablemente, si programas (o estás obligado a programar) en COBOL, te darás cucnt:1 ele lo limitado que está en dertos aspectos. Si además est.is acostumbrado, o sientes b necesidad de usar eso ele lo que por fuerza careces, probablemente ac.1bes por evit:tr el COBOL en la medida en la que puecbs.
Para paliar esas -defidend.as-, proponemos aquí uro soludón: enlazar rulinas ensamblador y/ o e dentro de programas en COBOL. Esto pa1ticulariza eno1memente el código COOOL para los PC, pero si eso es algo que no te preocupa, y quieres dar un toque esped.al a esos programas COBOL ·rústicos y encorsetados-, estás leyendo el artículo adecuado.
Los programas empleados para comprobar los listados han sido los siguientes:
- MacroAssembler v4.00 (masm) - lBM COBOL vl .OO (cobol) - Turbo C++ vl .OO (tcc :
compilador ele línea de comandos) - LINK Microsoft v2.10 Clink) Healmentc, la cuestión de las ver
siones debería molestar poco si de veras se dispone de estos programas. De lO
dos modos, si se emple:tn otros sistemas, con un poco de maña (y derta e~ntidad de suerte) se poclt:ín utilizar también las técnie~s aquí descritas, gracias a que el fonnato .OBJ puede calificarse casi de universal. Lo que sí se puede asegurar es que los programas generados por los listados que se o frecen en este artículo fundonan correctamente.
Las cosas vistas desde Cobol
Primero, wmosa crear un programa en COBOL que implemente
par: son meros w.1mings o avisos; el compilador, a l ver la cláusula COMPUTATIONAL-0, S.'lbe ya qué hacer. A su vez, definimos otras dos variables auxiliares, 01 y D2, p:tra pocler obtener por pantalla los valores de DATOl y DAT02: el verbo DISPLAY se atragant:l con las variables bln:1rias. L.1. instrucción CALL se explim por sí sola: llama al subprograma sumar uLilizando como parámetros DATO! y DAT02.
Al compilar, obtendremos el ficl1ero PROGRAMA.OBJ, que utilizaremos posteriormente al ·linkaro.
Si no conoces el ensamblador, y no deseas meterte en camisas de once varas, vete directamente al epígrafe Creación de la rutina e n C.
una llamada a un subprograma de la fonna más sencilla posible (fig. 1).
Listado 1: PROGRAI'IA. COB
lDENTIFICATlON DlV1SlON. PROGRAM-ID. PROGRAMA. AUTHOR. ANGEL GALVAN.
Vamos a explicar algunas peculiaridades: e l fo rmato COMPUTA TIONAl..-0 es necesario p:-tra que las variables ocupen justamente una palabra -dos bytes- y sus wlores sean codificados en binario: simplificamos así su manejo por parte de la subrutina (las variables COBOL típie~s, definidas con PIC, se implementan en BCD). Al com-
ENV!RONMENT DlVlSION. CONF1GURATION SECTlON. DATA DlVISION.
pilar, COBOL nos dará dos avi-sos como éste:
NO PICTURE; ELEMENT ARY I T EM ASSUMED TO BE BI NARY
WORKI NG-STORAGE SECTI ON. 01 DAT01 COI'IPUTATIONAL-0. 01 DAT02 COI'IPUTATIONAL-0. 01 01 PlC 99999. 01 D2 PIC 99999. PROCEDURE DlVISION. lNIClO.
I'IOVE 100 TO DAT01. I'IOVE 120 TO DAT 02. I'IOVE DAT01 TO 01. I'IOVE DAT02 TO D2. DISPLAY 01 '+' 02. CALL •sumar• USING DAT01, OAT02. I'IOVE DAT02 TO 02. DISPLAY '= ' 02. STOP RUN.
No nos debemos preocu- Fig. l . Uslodo COBOL poro llamar subprogramas
Marzo-Abril 95 Login: 7
Funcionamiento de l paso de parámetros
Ahora viene In ¡xlrte dura del asunto; vamos ::t examin::tr en detalle el mecanismo CJLIC entra en ~•cción cuando se llama a un::t subnnin::t. P::trtimos ele que el lector conoce y::t qué es b pib del sistema, y cu;llcs son y para qué sin en los registros internos del microprocesador (aunque nos limitaremos a los dcl8088, comunes a toda la familia 80x86, que serán los t:micos neccs~uios).
El aspecto de la pila, antes de qu~ el program::t en COBOL ejecute 1~1 ll:lm::tda, será más o menos ::~sí:
PO:. C1mn
cosas anteriores SS:SP
i+1 cosas anteriores
SS:SP apum:1 ::t l:t cima de la pila: i indie::t ahor::t esa mism::t dirección y nos servid par::t conocer la posición relativa de los posteriores elementos que entrar:ín en 13 pila.
justo después de 13 llamad::1 con dos parámetros, la pib quedará tal que así:
POS e; •~1
i-4 1P SS:SP
i -3 es
i-2 Dirección parámetro 2
i -1 Dirección parámetro 1
cosas anteriores
Este gráfico nos da ya algunas pistas par::t la creación de la rutina en ensamblador: los parámetros se pasan por referencia, metiéndose en la pila sólo los o!TSet (desplazamientos), ya que se toma por defecto el segmento DS; además, COBOL realiz.<t una llamada PAR 3 b rutina, por lo que mete en la pila tanto CS como IP.
Pero aún debemos hacer más: como utilizaremos Juego el registro DP p3ra obtener los valores de la pila, tendremos que salvar su contenido p::tra
8 Login: Marzo-Abril 95
que ::tl regresar al programa COBOL no haya problemas: esto lo haremos con PUSH BP. Eso sí: precisamente para utilizar BP como base de acceso a la pila , después hacemos MOV BP,SP. He aquí la pib después de todo esto, con la posición rebtiva de sus elementos respecto 3 BP:
POS Cima
i -5 BP
i -l, 1P
i-3 es
i -2 Dirección parámetro 2
i -1 Dirección parámetro 1
cosas anteriores -
SS:SP ó
SS:BP
BP + 2
BP +L.
BP +6
BP +8
BP+10
Los sumadores a BP crecen de dos en dos porque en la pila se introducen palabras enteras, de dos bytes, y nosotros tenemos que direccionar los elementos de la pila byte a byte.
Así, las posiciones reales de los parámetros, expresadas simbólicamente, son:
DAT02 -> DS:[BP+6] DATO!-> DS:[BP+8]
Creación del código en ensamblador
Listado 2: RUTINA.A~M
main
sumar
segment assume cs :main
public suma r proc far push bp mov bp,sp push di push ax
Debemos tener en cuenta que el procedimiento tiene que ser público (PUBLIC sumar) y ha de ser definido rAR, ya que de ese modo lo va a invocar COBOL. Además, tendremos que salvar en la pila todos aquellos registros que Lltilicemos dentro de la nllina, para que al regrcs::tr mantengan sus valores. Importantísimo: el procedimiento en ensamblador debe Jlev::tr el mismo nombre que el especificado en b instrucción CALL del programa COBOL: en este caso, sumar (rig. 2).
Como se puede ver, la rutina suma los dos números contenidos en DATOl y DAT02, y deja el resultado en DAT02.
En cuanto ::ti manejo de la pila y los parámetros queda ya poco que explicar: obviamente, todo lo que metemos en b pib lo extraemos con instrucciones POP. Lo que sí cabría comentar es la instrucción RET 4: RET de por sí devuelve la ejecución al proceso llamador obteniendo (y sacando) ele la pila el par CS:I.P que la instrucción CALL había metido antes. Pero para nosotros sigue habiendo un problema: ¿qué hacemos con los valores imroducidos como p:trámetros? Pues tendremos que sacarlos de la pila nosotros mismos: eso es lo que hacemos con RET 4, ya que RET x lo que hace es sumar x (en bytes) al registro SP, con lo que, al regresar, SS:SP se-
mov di,[bp+8J DI = di rec.ción del 1•• parámetro mov mov add
pop pop pop ret
sumar endp
main ends end
ax,(diJ di,[bp+6J [diJ,ax
ax di bp 4
AX = (DIJ = valor del 1•• parámetro 01 = dirección del 2 8 parámetro [01) = 28 parámetro = [01) + AX
) Rg 2: Código de Ensamblador que enlozaremos desde nuestro programo COBOL.
Cobol, Ensamblador y C Programación guir3 apuntando a 1::1 posición i, que es donde :~puntnbn antes. Los compiladores e h:~cen esto fuera del procedimiento, <d volver al programa llamador, con un ADD SP,x; nuestra solución es un poco más elegante, y la emplean los compiladores Pascal.
Creación de la rutina en C
Pam codificar la rutina en C hay que tener en cuent."l v·.1rias cosas: primero, e introduce en l::t pila los parámetros en orden inverso a como lo hace COBOL (y el resto de los lenguajes que conozco para Il3M PC/MS-DOS). Podemos hacer dos cosas: o tenemos en cuenta esta peculiarid:~cl y, sin modilkar los programas, actuamos en consecuencia (con lo que obtendríamos el resultado de la SLJma en DATO 1 en vez de en DAT02), o especificamos al definir la f1.10ción C que los parámetros se pasen en el orden normal. Esto se consigue con la palabra reservada PASCAL (que yo sepa, privati\·a de Turbo C++) ¡usto antes del nombre de la función.
Segundo: los parámetros que verdaderamente se pasan a la función e son punteros NEAH a enteros. Se puede apuntar a CL•alquíer otr:1 cosa: pero si tenemos la feliz idea de especificar punteros YOID que, por su generalidad, parecen venir mejor al caso, no podremos realizar operaciones aritméticas con los valores a los que apuntan, porque C no sabrá a qué demonios cst.-ín apuntando. Eso sí: la dáUSLJia NEAR es indispensable; recordemos que COBOL introduce en la pila sólo los despl:namientos (cuyo La maño es una palabra). Obviamente, dentro de la función debemos manejar los panímctros como punteros que son.
Tercero: hemos de definir explícitamente que la función ha de ser llamada con un CALL remoto, ya que de ese modo b va a invocar COBOL: es decir, introduciendo en la pila tanto CS como IP. Esto se hace con la cliusl.!la fAR.
lle aquí el listado de la función utiliza eh:
Listado 3: RUTINA2.C
void far pascal sumar(int near *a,int near *b>
(
*b += *a; }
En este caso, no ha habido problemas en cu:~nto al segmento utihzado para los datos, ya que tanto e como COBOL toman el DS por omisión. Pero eso es algo que puede cambiar si nuestra propia función en C es bastante más complicada que la aquí listada: habría que estudiar el caso particular, y tomar las medidas adecuadas.
Sí no podemos utilizar la palabra reservada PASCAL porque nuestro compilador e no implementa ni ésta ni ninguna parecida, tendremos que •aguantamos• y actuar en consecuencia: una ayuda para estos casos es dar a los parámetros de la función el mismo nombre que los utilizados por COBOL, pero en orden inverso, del modo siguiente:
1': introduce los parámetros en la pila en orden inverso al de COBOL y prácticamen· te el resto de lenguajes ~ara MS·DOS.
void far sumar(int near *dato2,int near *dato1>
Así no nos equivocaremos al utilizar cada uno en el cuerpo de la función. Pero hay muchos más problemas si no podemos utilizar PASCAL: con una función C normal, el compilador no incluye RET x para quitar los parámetros de la pila, porque supone que lo hará el programa llamador con una instrucción ADD SP,x; esto no lo hace el COBOL, y a falta de la palabra PASCAL, nuestra única solución es generar el código ensamblador como se indicará después, modificarlo (es decir, incluir RET 4 en vez de RET) y ensamblarlo, para lo cual será útil quitar las líneas especiales que C incluye en el código en ensamblador. Y eso no es todo: el procedimiento, en el fiche ro objeto, ya no se llamará sumar sino _sumar (esto es algo que e hace automáticamente con todas las funciones), por lo que habrá que cambiar el nombre de rutina que especi-
ficamos en el programa COBOL en la instrucción CALL. O sea, que manos a la obr:1, suerte, y al toro.
¿Y si queremos que la fundón nos devuelva un valor?; ésm es una situación no prevista por COI30L y que, por lo tanto, no debemos ut.ilíz.ar: no nos queda más remedio que usar los parámetros (que precisamente son por referencia, es decir, son punteros) para devolver valores a COBOL. Por eso debemos especificar siempre que la función e devuelve VOID (o sea, nada).
Juntándolo todo
Una vez compilado el programa en COBOL, obtendremos un fichero PROGRAMA.OBJ; y una vez ensamblada la rutina con MASM, obtendremos oli'O fichero RlJllNA.OBJ.
¿Cómo lo hacemos con C? Con TCC, el compilador de línea de comandos (es decir, sin entamo integrado) de Turbo C++,la cosa se harí:t así:
tcc -e rutina2.c
Lo cual generaría el esperado RUTINA2.0BJ. Aquí hemos de advertir de las posibles opciones por defecto que cada compilador tenga en su sistema, como información para depuradores en los .OBJ o soporte para ovedays, que nos pueden complicar la vida generando, en el mejor de los casos, ficheros objeto un poco más grandes y complejos de Jos normal, y en el peor, ficheros objeto no compatibles.
Para más información:
tcc -S rutina2.c
Con la opción -S, el compilador generará un fichero .ASM con el código en ensambladorde la función en vez de un fichero objeto. Se puede aprender mucho del funcionamiento del compilador C simplemente examinando el fichero resultante: de hecho, nos será necesario más de una Ve :l. lo que se obtuVO con RUTINA2.C lo podemos ver en la ftg. 3 de la siguiente página.
Aparte de un montón de cosas raras, podemos ver el gran parecido que tiene con nuestro propio RUTINA.ASM: incluso utiliza igualmente RET 4 para desembarazarse de los parámetros (siempre que hayamos incluido la cláusula PASCAL, claro). De
Marzo-Abril 95 Login: 9
todos modos, e se tiene que preocupar de muchas más cosas que nosotros cuando programamos en ensamblador: de alll que tanto Sll
.t\SM como su .0~1 sean más complicados que los nu~stros. Lo que sí nos ayuda a comprendt•r el listado son los comentanos incluidos, donde sc insertan las correspondientes lineas en e que generan bs instrucciones en ensamblador inclicad::ts.
enbzador de Microsoft UNK (en concreto, la versión 3.00):
Link prog -+ rutina, o hien Link prog + rutina2
Lo primero enlaza el programa COBOL con nuestra rutina en ensamblador: lo segundo hace lo mismo pero con la fi.mción en C. LINK roma por defecw las extensiones .OBJ.
Una indicación: LJNK debe estar en el mismo directorio que las librerías estándar del lBM COBOL, es
Ahora nos qul)d:l cnht7.ar los módulos .OBJ; lo h::trcmos con el
Listado 4: RUT1NA2.ASM
ifndef ??version ?debug macro
endm $e o mm macro na me, di s t, si ze, count
etse
comm di!:t name:BYTE:count*size endm
$comm macro name,di st , si ze, count comm dist name[sizeJ:BYTE:count endm endif
?debug s •a: ruti na2. e• ?debug C E9f24C241EOB613A727574696E61322E63 RUTINA2 TEXT segment byte public 'CODE' RUTINA2_TEXT ends DGROUP group DATA,_BSS
assume cs:RUT1NA2 TEXT,ds:DGROUP _DATA segmen t word publ i e 'DATA' diíl lebel byte diílw labelword _DATA ends _es s segment word publ i e 'BSS' biíl Label byte bólw Label word _BSS ends RUTINA2 TEXT segment byte public 'CODE'
, ; void far pascal sumar(int near *a,int near * bl
assume es:RUTINA2_TEXT SUMARproc far
push bp mov bp, sp
{
*b += *a;
mov bx,word ptr [bp+8J mov ax,word ptr [bxJ mov bx,word ptr [bp+6J edd word ptr CbxJ,ax
}
pop bp re t 4
SUI'lAR endp ?debug C E9 RUTINA2_TEXT ends _DATAsegment word public 'DATA' siíl labelbyte _DATAends RUTINA2_TEXT segment byte public 'CODE' RUTINA2_TEXT ends
public SUMAR end
Ag. 3: Fichero ASNI generado al compilar RUTINA2 e con lo opción -S de lec
10 Login: Marzo-Abril 95
decir, COBOLl.LIB y COBOL2.LIB; si no, el monL'l¡e fall::tr.i, y LINK pedirá la unidad en la que se encucntr:l.n dichas librerías.
Pero aL'in h::ty más; si en nuestro código en en53mbbdor lu~mos utilizado rutinas ~xtcmas diferentes que se encuentran en otros ficheros .O~J ó .UB, tenemos que decírselo a LlNK. Del mismo modo, hemos dt> espcdfic:!r qué librcrí::ts ( .LI B) o ficheros ob¡eto (.OBJ) tenemos qut.> enla;-.ar si hemos utilizado funciones de la librería estándar, u orrns mu~strns, en nuestra función C. Por fortun::t, no estamos en ninguno de los dos casos, y LINK no nos debería dar prohlt:m~ts si le invocamos como hemos dicho antes.
Otra ClJcsllón: siempre que nuestro programa ensamblador llame a otra rutina extema o, por qué no, a liO:l función t:n e, haremos bien en salvar todos los registros en la pila, p:tra, despu~s de c¡t•cut:lr la llamada, recuperar sus v:1lores. Cuando se trate de 1:1 función en C. nos tendremos que fiar de la coherencia interna que tanto el compil:lclor COBOL como el de e mantengan.
Si no especific.'lmos nada, obwndrcmos un J> ROG. EXE en los dos ctsos, que ser:í el J'ichero 11nal e¡e<.:utable, donde si todo ha funcionado bien (y vuel\'o a repetir que todo lo aquí presentado ha sido comprobado) veremos qL•e el enlace funciona com,~ct:llnentc. Para que PROG .EXE h.1ndone dcbcr::í cxistir en su directorio el fichero COBRUN.EXE, sin cL•ya presencia los program:ls en lBM COBOL no se ejecut:.~n.
Consideraciones finales
1) Si los compil:tdorc:>, cl en53mbbdor o el montador mdicascn qu~ no han podido •~lliz:.1r sus funciones por no haber encontrado ciertos ficheros, debernos decirles dóndc pLK'den encontmrlos, o ponerlos ¡usto donde los programas los ,·an a buscar. En estructuras de dirL·cto•ios m3s o menos habituales no debería cxtsLir ningún problema.
2) E .. xiste b tentación de uS:lr otros montadores difer('nLes a LINK, como el incluído en nuestro compil::tdor o ensamblador. Por supuesto: en estos casos, las cosas no funcíonarán l:ll y como aquí describimos, pero quizá el
..
..
Cobol, Ensamblador y C Programación esfuerzo empleado sea compens:~do con las \'entajas que nos ofrezcan
.3> Lo que s1 sera d•d:1ctico y nos dar:.í alguna infonn:tcion será pedir ;¡) montador <sea cual fuere) un fichero .MAP donde vendrán descritos todos los elementos de los módulos .OBJ uuliz:~dos, con datos sobre cada uno de ellos, como su t~unaño
4) Cuidado con mc7clar cosns raras; me explico. llamar a otras funciones, definir estructuras ele datos complicadas, o utilizar técnicas avanzadas (por ejemplo, memona clin:ímica) dentro de ntleStra !unción C plledc que se le atragante a CORO!., poco acostumbrado a estas ·peripecias•. Normalmente, con un poco de estudio y cxpcritm:ntación sobre cómo hacen las cosas COBOL y C, no se nos debe negar nada de lo que se nos ocurm h<•ccr: en concreto, la tllilización ele gráficos o estructuras de datos din:ímicas dentro ele un progmma COBOL es de lo más tentador, aunque seguro que nos dar.í más de un quebradero de cabeza Personalmente, apenas utilizo estas técnic:ts, y st lo hago es sólo para cambiar la forma
del cursor o gesrionJr el teclado de una m:mer.t más eficiente y completa, poco más.
5) Ojo con las variables COBOL: la cl:íusub COMPUTATTONAL-0 se nos puede quedar pequeña, aunque sea la más apropiada; igual que ames, la experimentación será la que nos dicte cómo manejar otro tipo de variables, y:t .sean de orra clase COMPUTATIONAL o definidas con PICTURE.
~L . . ' 1 a expenenc1a sera a mejor maestra para aplicar estas técnicas, al ser escasa la docu-~mentación existente.
6) El mejor modo de demostrar que la informática es la ciencia menos exacta de todas es programar en ensamblador: no sólo no obtendréis los resultados esperados en un princ1pio. sino que además serán de una aleatancdacl (puede que peligro-
sidad) nuncn vista. Preparaos pnr:t pulsar RESET m:ís de una vez ...
7) Dicho lo cltcho en el apartado 6, no puedo por menos ele librarme de toda responsabilidad en el uso de las técnicas y/o listados aquí descritos por parte de los lectores. A mí me han funcionado, pero no quiero que me hagan responsable de pérdida..c; o comportamientos extraños causados por utilizar sistemas diferentes o por errores al teclear los listados.
Para acabar, apuntar que la mayoría de lo aquí dicho es fntto de la experimentación y no de l:t documentación, que siempre es escasa en estos temas. En parte, h~•y que pagar las grandes ventajas que obtenemos con cieno grado de riesgo: de seguro que las cosas no funcionarún a la primer:t.
¡Ánimo, tladlc vitlilla al COBOL!
Blbllogratra • ROD\UGUEZ·I{OSELLÓ, 1-l.A.; Hfi88·
S(J..%18087 PmBt:IIII:H'ICin ..:n t:n...;uu-11i:1dor t:n t'n· tomu I\IS 1>0.\: 1-'Al Anay:1.
• !im C!.'pc.'Ci0~~1r· 1'11rf10 C ++ Pmxr.mUik!r:, Guiclt'clc lo' manu:~lc., nrogin:Jic, clc 11<>rl:mcl.
· OONNI N, C:.. f/ COBOL dd IIJM·PC, Ed. Gu.,wvo Gih •
THE BEST CHOICE Cl DOMINGO MARTINEZ, 21 TLF:47 38 46 FAX: 47 38 46
PROXIMA APERTURA EN PALENCIA
VALLADOLID -4Mb de memoria RAM de 72 contactos (32 bits). - Disco Duro de 428 Mb. - Floppy de 3,5" Alta Densidad. -Tarjeta Gráfica Super VGA VESA 1 024x768-l Mb. ·Monitor Super VGA Color 1024x768 Baja Radiación. - Placa madre Green Pe con zócalo Z IF. - 3 Slots Vesa Local Bus en 486 - Caja Minitorre con Display.
* 486/Dx II 66,256 Kb de Caché ........ 119 .900 Ptas.
- CD-ROM x2 ........................... 16.896 Ptas. * 486/Dx IV 100,256 Kb de Caché ..... 129.900 Ptas. · CD-ROM Mitsumi x4 ............. 29.985 Ptas. · Sound Blastcr Pro .................. 11 .239 Ptas. - Sound Blaster 16 ..................... 13.900 Ptas. • Impresora I-IP 540 .................... 38.966 Ptas. - Impresora Canon BJ200ex ........ 39.224 Ptas. -Impresora Canon BJC4000 ....... 59.828 Ptas. -25 Discos Bulk de 3 1/2 II.D ..... 1.293 Ptas.
* PENTIUM 60(8Mb Ram- INTEL ) .. 195 .000 Ptas. * PENTIUM 90(8Mb Ram- INTEL) .. 239.900 Ptas. * PENTIUM 90(8Mb Ram - INTEL ) .. 259. 900 Ptas.
5 AÑOS DE GARANTIA
FINANCIACION HASTA EN 12 MESES Marzo-Abril 95 Login: 11
Historia 1 nformática
Charles Babbage: Mecánica apHeada a la eompntaeión Aunque el desarrollo de los ordenadores como grandes artefactos para la realización de cálculos, primero, y como utensilios de trabajo en hogares y oficinas, después, se ha efectuado en la segunda mitad de este siglo, hubo un precursor de la computación automática, que construyó máquinas que según la crítica histórica exigían más de lo permisible por la ingenería de la época. En este artículo el lector podrá hacerse un juicio más objetivo sobre el excéntrico profesor Charles Babbage.
)OSÉ MARÍA C UENCA DL LA CRUZ
Se considera a Charles Babbage(ma temático inglés profesor en Cambridge, que vivió ent~-e 1792 y
1871 para más señas) como el precursor de las ciencias informáticas; tanto por establecer los conceptos teóricos en que se basa actualmente la arquitectura de computadores, como por diseñar sus máquinas analítica y de las diferencias: auténticas pioneras de las calculadoras digitales, pese a basarSe en ptincipios puramente mednicos, lo que constituye todo un alarde ele ingeniería.
El tal sujeto era un bicho raro ya desde estudiante en el 1/inity College: aficionado a repasar los en·o1-es de cálculo, Lransctipción o tipográficos que se aa.1mulaban en las tablas rnatemáticas de la época cual raLón de biblioteca, se le ocunió la genial idea de constmir una máquina capaz de recopilar las tablas de logatitmos, que por aquel entonces apenas tenian un siglo de antigüedad.
De carácter muy excéntrico, se movía en círCLilos privilegiados, donde lo hacían también Chades Díckens, Píen-e S. de La place o Charles Darwin, lo que le dotaba de una visión de la 1-ealidad muy avanzada para su época. Pero el desan-ollo de sus progresos más allá de la pura teoría se vió limitado por su mal carácter: obligaba a sus empleados a desmontar sus máquinas para volver a reconstrui rlas de modo más complejo a medida que se le oCLirrían nuevas ideas una y otra vez; lo que a la larga acabó dejándole sin fondos para seguir adelante, y sin nadie interesado en financiar sus interminables empresas. Intolerante con las intromisiones, llegó incluso a intentar procesar al gremio de organilleros por-
12 Login: Marzo-Abril 95
que le molestaban en su trabajo, lo que provocó que los niños de la vecindad fi..1cran tras él por las calles burlándose y C.:'lntando al son de incipientes Latas de conserva.
Pero todo esto no quita un ápice a su gran talla como matemático e ingeniero. Su ptimera calculadora digital fue inventada en 1822 para el Servicio ele Con-eos Biitánico; detenninaba valores sucesivos de funciones polinómicas utilizando solamente la operación de adición, mediante el método de las diferencias finitas: pa1tiendo de los valores iniciales conocidos ele una sede de potencias obtenemos los demás mediante la realización ele restas entre valores consecutivos hasta obtener una columna de un valor constante; y retroceder sumando hasta el valor siguiente que deseamos obtener, como se ve en la figura 1 para las segundas potencias de x.
Como no disponía de conmutadores eléctlicos para imitar el álgebra booleana, se vio obligado a sustituirlos en todos sus diseños con inlenuptores mecánicos a base de barras, cilindros, cremalleras y medas dentadas. Todo el sistema estaba basado en
X~
1 4 9 16 25 36
la práctica equivale a un resultado correcto como solución, o al CLie!gue de b máquin::1, pero nunca a un resultado em5-neo.
La primera máquina inicial fue desarrollándose más y más en lo que se dio en llamar artilugio de diferencias, hasta que tras diez años de trabajo el proyecto se vino abajo debido a las r:lZones expresadas más arriba, y a su elevado coste: se habían invertido 17.470 libras de 1834, unas veinte veces más de lo que costó desan-ollar la locomotora de Bull. Aunque después de todo Charles no perdió sus esperanzas, porque los problemas tecnológicos de diseño y fabticación de las 25.000 piezas realizadas hasta la fecha estaba demostrado que podían salvarse. Además una parte (ali-ededor de dos mil piezas) se aproved1ó como máquina de exhibición, fonnando la ptimera ca!CLiladora automática de sobremesa conocida ... que ha seguido funcionando con·ectamente hasta hoy con una precisión d e hasta 21 cili-as.
Tras este fracaso cobró nuevas fuerzas haciendo gala al dicho ·lo que no mata hace más fuerte• y emprendió has-
1l diferencia 4-1= 3 9-4= 5-16-9= 7 25-16= 9 36-25= 11 11 t2= 13
z• diferencia 5-3::::. 2 7-5= 2 ~9-7<= 2 11-9= 2 2
la numeración d ecimal, de forma que cada una de las cifras de un número se representaba por una rueda dentada , y su valor por la rotación angular asociada a ella. Este funcionamiento hace que sólo sean posibles las rotaciones con-espondientes a valores numéticos enteros, lo que en
X
1 2 3 4 5 6 7 36+13= 49
Fig 1· El método de las diferencias finitas nos permite hallar los valores de funciones polinómicas empleando únicamente sumas en la operación. En este ejemplo se resuelve x2 para los primeros números naturales.
) )
) (
}
1 l
ra su muerte lcbro) el desarrollo de los phmos y bocetos del ingenio al que le debe ~u fama de pionero en la informátiGI: la máquin:~ analítica, primer:~ computadora universal y programoble ... . ¡y mecánica!
Correctamente pretendía que las operaciones aritméticas se realizasen en un procesador similar a su máquina anterior, aunque mucho m:'is complejo; provinienres ele un almacén de tarjetas perfor:~cbs como el usado por);1cquard en su tebr automático; imprimiendo los result:~dos en t:~rjet:~s V<lCÍ:1S que irían a almacenarse ele forn1:1 ordenad;:¡ de ma-
~a máquina podía reci- " bir datos de hasta 50 dígitos y dar resultados ~e hasta 100 dígitos.
ner:~ que fuese posible su recuperación en un momento posterior. Unas pequeñas campanas avisa lÍan al empleado, para introducir nuevas tarjetas; y otras mayores indicarían los fallos del sistema. El invento de la sirena para la hora del almuerzo creemos que es posterior.
Para hacernos una idea de lapotencia ele tal máquina, sólo decir que estaba diseñada para recibir elatos ele hasta 50 dígitos y dar resultados hasta ele 100; en formatos impreso y gráfico además de la tarjeta perforada. La enormidad ele este proyecto hizo que enseguida las ideas del genial invemor se viesen ümi-
CENlRO Ol. ESH IDIOS
PLAZA PI91WI~
Bobboge Historia 1 nformótico radas por In escasez de medios en la época: una máquina de estas características no poel[a ponerse en funcionamiento de fonm1 práctic-..1 sin ayuda de la electricidad, y sobre todo de In electrónica, aún no descubierta. En espera de estos avances, nuestro amigo optó por desarrollar mecanismos capaces de realizar autom.<íticamente multiplicación y división, sin tener que remitir éstas a las operaciones b;ísicas: era la segunda tmíquin<~ de bs diferencias, de diseño mucho más evolucion:~clo y económico, cap:~z de tabul:1r hasta !:1 séptima potencia con una precisión de 31 dígitos.
l.a máquina es accionada mediante una manivela solidaria empleando engranajes con una ntecla vertical ele 14 pares de levas, encargadas de activar y sincronizar cada ciclo de cálculo. Los nl"tmeros producidos mecliame el giro ele los engranajes se ret1ejan en 8 columnas verticales de 31 ruedas cada una, con 10 dígitos por nteda. La adición de diferencias se realiza mediante un sistema de cremalleras y palancas que, accionadas por las levas, bajan o alzan los ejes verticales, haciéndoles girar hasta su posición final. El ciclo de trabajo se divide en dos p::utes para redudr e l tiempo de dlculo, como en la técnica de bombeo o pipeliningde los ordenadores electrónicos actuales: primero se suman los valores de las columnas impares a las pares; y seguidamente los registrados en las pares a las impares; de forma que a cada vuelta de manivela se produzca un nuevo valor y deje a la máquina lista para generar el siguiente.
Fig. 2: El Ingenio de Diferencias.
Un attilugio así es e l que ha sido construido con motivo del bicentenario del nacimento de l3abbage por el museo de la Ciencia ele Londres, en donde puede contemplarse si a lguna vez tenemos ocasión de pasar por alli (visita obligada para los informáticos, como para un paleontólogo el Museo de Historia Natural). Su realización deja bien patente lo correcto ele las ideas del matemático en lo tocante a l empleo de elementos mecánicos para realizar operaciones complejas: el primer cálculo produjo las ptimeras potencia.s ele 7 correctamente. Solo tiene un pero : su precio, de unos 50 millones de pesetas, hace que sea eso, una pieza ele museo. •
r•···1 ECONÓMICAS y EMPRBSARIAI.ES • .ARQUITECI'URA • CIENCIAS
1 •• 1
MAYOR INFORMACIÓN Centro de Esntdios Pza. Mayor, 7, 1º
Teléfon~: 352885-352330 47001 VAllADOLID
E. U. PO~CNICA • GRADU.ÁDOS SOCIALES • INGENmRfAS • MAGISTERIO BIOI!STADtmCA -~ PoúnCA -lW:IENDA PúBLICA- DERP.aro ~ - FsOLOGfA
INFORMÁTICA
MATRíCULA GRATI.JITA
Windows MS-DOS Wn..-n...:orT.a,. Autocad dBASE IV
Novell Clipper
Marzo-Abril 95 Login: 13
Inteligencia Artificial
Introdneeión a las redes neuronales artificiales De la prehistoria al futuro que tal vez Babbage nunca soñó. El desarrollo de máquinas que puedan imitar la capacidad de aprendizaje del hombre es actualmente un desafío en el que pone sus miras buena parte de la comunidad científica. con esta amplia Introducción a las redes neuronales, pre· tendemos dar a conocer los elementos básicos de lo que comúnmente se denomina Inteligencia Artificial, para así comprender de qué modo pueden llegar a «pensar» v «aprender» las máquinas.
ALFREDO CATALINA GALLEGO
El hombre se ha cardcterizado siem pre por una bt1squecla constante de nuevas vías para mejorar sus
condiciones de vida. Estos esfuerzos le han servido para reducir el trabajo en aquellas operaciones en las r¡ue la fuerza juega un papel primordial. Los progresos obtenidos han permitido dirigir estos esfuerzos a otros campos, como por ejemplo, a la construcción ele máquinas calculadoras que ayuden a resolver de fonna automática y rápida determinadas operaciones que resultan tediosas cuando se realizan a mano.
Uno de los primeros en acometer esta empresa fue Charles Babbage, quien trató infructuosamente de construir una
Fig. 1 Detalle de una neurona
14 Login: Marzo-Abril 95
máquina capaz de resolver problemas matemáticos. Posteriormente otros tantos intentaron construir máquinas similares, pero no fue hasta b Segund'l Guerra Mundial, cuando ya se disponia ele instrumentos electrónicos, que se empezaron a recoger los primeros frutos. En 1946 se construyó la primera computadora electrónica, ENIAC. Desde entonces los desarrollos en este campo han tenido un auge espectacular.
Estas máquinas permiten implementar fácilmente algoritmos para resolver multitud ele problemas que antes resultaban engorrosos de resolver. Sin embargo, se observa una limitación unportante: ¿qué ocurre cuando el proble
ma que se quiere resolver no admite un tratamiento algorítmico, como es el caso, por ejemplo, ele la clasificación de objetos por rasgos comunes?. Este ejemplo elemuestra que la construcción ele nuevas máquinas más versátiles requiere un enfoque del problema desde otro punto de vista. Los desarrollos actuales de los c ientíficos se dirigen al estudio de las capacidades humanas como una fuente de nuevas ideas para el diseño ele las nuevas máquinas. Así, la inteligencia artificial es un intento por descubrir y describir aspectos de la inteligencia humana que pueden ser simulados mediante máquinas. Esta disciplina se ha desarrollado fuertemente en los últimos años teniendo aplicación en algunos campos como visión artificial, demostra-ción de teoremas, procesamiento
de infonnación expresada mediante lenguajes humanos ... etc.
Las redes neuronales son otra forma de emular otra ele las características propias ele los humanos: la capacid.1.cl ele memorizar y asociar hechos. Si examinamos con atención aquellos problemas que no pueden expresarse a través ele un algoritmo nos daremos cuenta ele que todos ellos tienen una característica común: la experiencia . El hombre es capaz de resolver estas situaciones acudiendo a la experiencia acumulada. Así, parece claro que una forma de aproximarse al problema consista en la construcción de sistemas que sean capaces ele reproducir esta característica humana. En definitiva, las redes neuronales no son más que un modelo artificial y s implificado del cerebro humano, que es el ejemplo más perfecto del que disponemos de sistema que es capaz de adquirir conocimiento a través ele la experiencia. Una red neuronal es ·un nuevo sistema para el tratamiento de la infom1ación cuya unidad básica de procesamiento está inspirada en la célula fundamental del sistema nervioso humano, la neurona•.
La neurona y la sinapsis
El cerebro humano contiene aproximadamente 12 billones de células nerviosas o neuronas. Cada neurona tiene de 5.600 a 60.000 conexiones dendríticas provenientes ele otras neuronas (figura 1). Estas conexiones transportan los impulsos enviados desde otras neuronas y están conectadas a la membrana de la neurona. Cada neurona tiene una salida denominada <lXón. El
Redes neuronales 1 nteligencia Artificial conL'lCLO de cad:t :txón con una dendnL'l se realiz:t :1 tr:t,•és de: la sin;lpsis. Tanto el axón como l:tS d~ndrit.'ls t~nsrniten b señal ~n un:t lJOict dirccdón
La sinapsis (figura 2) consta de un eJ~c'trcmo prcsin:íptico de un axón conect:tdo a un extremo postsin:lptico de una dendnl:l, ex.isti~ndo 1101malrncme entre éstos un espacio <.hmominado esp:1do sindptico.
Las neuronas son elécttiCll11ente activas e inter..tctúan entre ellas me<.!iante un flUJO de c.'OITÍCnlCS ~léctric:.tS loctles. Estas CotTicntcs se deben a clifercnci::ls de potencial entre las nwmbr-:tnas celulares de bs 11l'uronas. Un impulso nervioso es un c:unbio de volta¡c que ocum."! en una zona lo<:alizada de 1:1 membrana celltl:lr. Elimplllso se tmnsmite a lr:t\"és del :1xón hasw llegar'' 1:\ sinapsis, produdendo I:L libc~ción ele un:1 SliSt:.lncia químic:t denomin:1da ncurotmnsmisorque se csparn• por el Ouido exiStente en el espacto sin:lptico Cuando esw Ouido ak:tn7~1 el otro extremo transmite b señ.ll :1 b dendrita l.os tmpulsos recibidos desde la stnapsts se suman o reSt:ln a l:t magnitud de las ,·ariacionesdcl potl'tKial de la m~..·ml>r~tna. Si las contnbucton1..·s totales :llctnzan un ,·alor deterr11111ado (:tlrcdcdor de JO milh·oltios) se cilspar:tn uno o más impulsos que se propagar:ín a lo brgo del axón.
r ' Las redes neuronales son nuevos sistemas para el tratamiento de la información inspirados en la neurona humana. ~ ~
Aunque Lod.l vía no l'SL:í dl'llodo claro. parece que e~te impulso se inicia t:n la conexión entre el axón y la mcmbrnna. Su amplitud y velocidad dependen del dtámctro del axón}' su frecuenCia del núm('ro ele disparos que St..' efectúen.
L=ts redes ncuron:lles .1111fietales basan su funcionamtcnto en lns redes neuronales re~tles, cstnndo form:tcbs por un con¡unto de unidades ele procesarruemo concct:td:.ts entre sí. Por analogía con el cerebro humano se clcnominn •nCllrona· a cada un::1 de estas unidades de
procesamiento. Cada neurona reabe muchas señales de entrada y envía una única señal de saHda (como ocurre en las neuronas reales).
El modelo de McCullochPitts
Uno de los primeros modelos m:nemáúcos de una neurom fue el propuesto por ¡\kCutloch y PitLS en l 943 y es en el que se basan las redes neuronales actuales.
En este modelo (figura 3) cnda ncuron::1 consL3. de un con-junto de entradas, s:, ~' una sol::t salida S. Cada entrada iestá afee-
Rg 2: Elementos de lo sinopsis
¡ Lada por un coeficieme que se denomi-na peso y 4ue se representa por la letr:t 11
11 (gr:Hic:uncme suele representarse
corno una media luna). El subíndice i rcfle¡:t que el peso afeC[a a la entr:tda i, y el subíndice ¡que se trata de la neuron:~¡.
L'l cantidad calculad~• como la suma del producto de cada cnlr.lcb multiplietda por su respecth·o peso se denomina :JClii':Jción el~.· la neurona. x . La
1 salida. S~ de la neurona es una función de b :l(."tÍ\~tctón de ésta. Es decir:
S l
= f(x ) l
w + e 'l l
donde el ténnino 81es un valor•umbral·,
y f(x)cs una fundón de la activación ele la neurona.
Por ejemplo, en una de las primeras arquitecturas neuronales, el ·Perceptron•. se utiliz:t la siguiente fundón de salida:
SÍ X l
si x l
< h ~ h
donde la consL:Jnte h se denomina umbml f:st:t es una función de salida de tipo binaria, y existen otms de tipo lineal puro, lineal con umbr:tl. y sigmoidea. entre otras.
En este modelo tan sencillo puede verse que la acliv:ldón de la neurona depende del valor que tomen los pesos y las emrndas, de lonna que la \'ariaaón ele éstos otigina clistintas salidas para la misma ent.rada a la neurona. En la prácti-
ca, los pesos de bs nt•uron:ts se modifican sometiendo a la red a un cntn:n:.lmiento, permitiendo que la red realice una función dcteiTllinada Est.'l es b car:tcteñstic• que diferencia a una red neuronal de una m.'íquina algoritmic:t cl:ísica· una red neuronal no se prog~ma,
se ·educa·. La red es capaz de retener y asociar el conocimiento a tr.tvés de la ad.a ptactón de los pesos de bs neuronas siguiendo una regla de :1prcndiz:1jc. EsL'ls r~glas son ccundones c"-presndas en flmción de las entradas y salidas ele las neuronas y desoiben la foiTlla de \-:triación de los p~.sos. En definitiva, son el instrumento empicado por lns neuron:tS par:t adaptarse a 1:1 información que se le pres~nw.
EJ aprendizaje de una red se puede proclulir de tres formas:
• Aprendizaje supervisado: consiste en introduc..ir una sede de p:~troncs ele entrada a 1:1 nxl y a Sll v~..·z mosli~tr la salida que sc quicrc Lcm:r. ~~ rcclcs <.::i
paz de :tjlL'>tar los pesos ele l:tS nclll'onas de forma qL•e a l:t prcscnwción posterior de esos patrones de entrada l:t red responde con s.11icb mcrnori7.ad:t.
• Aprcndi:~.a¡e no supervisado: se prcsent:m los patrones de cm~da ~~ la red y ésw los clasifica en cncgorias según sus rasgos m:ís sobresalientes.
• Apr-endiz:tje nutosupenisado: la propi:~ red conigc los cn·orcs en la interprewdón emplmndo una n.>alirnent.'lción.
Una de las primcms reglas de aprendiza¡e fue propuesl:J por Donald Hebb en 1949, y se basa en un hecho biológico consunado: cuando dos neuronas se actlv:m simultáneamente su
Marzo-Abril 95 Login: 15
conexión se refuert.a Esta idea se expresa maremátic:~mcntc como:
dw " --=a S x
1 1
dt Desarrollo histórico de las redes neuronales Partiendo de que las redes neuronales se fundamentan en el sistema nervioso humano deberíamos remontamos a los tiempos de Galeno en los que ya se tenb un conocimiento considerable de éste. Sin embargo, los verdaderos avances en neurología se produjeron a partir de la segunda mitad del siglo XIX. 1 nvestigadores ilustres de esta época son .Jackson, Ramón y Cajal y Golgi entre otros.
Fue en 1943 cuando Warren McCulloch y Walter Pitts propusieron el clásico modelo de neurona en el que se basan las redes neuronales actuales. Seis años después, en 1949, en su libro Tfle Organizarion ofBclwvior, Don:~ld Hebb presentaba su conocida regla de aprendizaje.
En 1957, Fmn.k Rosenbl:m presentó el Perceptron, una red neuronal con aprendiL<'l¡e supervisado cuya regla de aprendtz.:tje era una modificación de la propuesta por Hebb. El Perceptron trabaja con patrones de entrada binarios, y su funcionamiento, por tratarse de una red supervisada, se realíza en dos fases: una primer.1 en la que se presentan bs entradas y la salidas deseadas; en esta fase la red aprende la salida que debe dar para cada entrada. La principal aportación del Perceptron es que la adaptación de los pesos se realiza teniendo en cuenta el error entre la salida que da la red y la salida que se desea. En la fase siguiente, de opernción, la red -es capaz. de responder adecuada me me cuando se le vuelven a presentar los patrones de entrada. Se crearon grnndes expectativas sobre sus aplicaciones, que posterionneme se tomaron en gran decepción cuando en 1969 Minsky y Papen demostraron las grandes limitaciones de esta red
En los años 60 se propusieron otros dos modelos, también supervisados, basados en el Perceptron de Rosenblatt denominados Adallne y Madaline. En estos, la adaptación de los pesos se realiza teniendo en cuenta el error, calculado como la diferencia entre la salida deseada y la dada por la red, al igual que en el Perceptron. Sin em-
16 login: Marzo-Abril 95
S· J
Fig. 3: Modelo de neurona de McCulloch-PiHs
bargo, la regla de aprendizaje empleada es distinta. Se define una función error para cada neurona que da cuenta del error cometido para cada valor posible de los pesos cuando se presenta una entrada a la neurona. Así, la regla de aprendizaje hace que la vanación de los pesos se produzca en la direcdón y sentido contrario del vector gradiente del error. A esta regla de aprendizaje se la denomina Delta.
La era moderna de las redes neuronales artificiales surge con la técnica de aprendizaje de propagación hacia atrás o B;Jck Propagation. La eslrUctunt de las redes citadas anteriormente (Perceptron, Adaline y Madaline) consta de dos capas: una capa primera formada por unidades que dejan pasar la entrada y que no tienen aprendizaje, y una segund::~ capa formada por una o varias neuronas en el caso del Madaline. L'l contribución de Minsky y Papen fue la de demostrar que una red del tipo Pcrceptron no es capaz pe aprender todas las posibles combinaciones entre entradas y salidas. La solución del problema consiste en añadir capas intermedias de neuronas, introduciendo de esta forma el problema de cómo enseñar a estas capas intermedias. Aquí es donde tiene imponancia el algoritmo de propagación hacia atrás. En éste se comparn la salida real con la salida deseada. La diferenda entre ambas constituye un error que se propaga hacia atrás desde la capa de salida hasta la de entra-
da permitiendo así la adaptación de los pesos de las neuronas intermedias mediante una regla de aprendizaje Delta. Sin embargo, también tiene sus limitaciones.
Posteriormente se han desarrollado otros modelos que permiten un aprendi~tje no supervisado como el mapa auto-org::miz.ativo de Kohonen, los basados en la Teoría de Resonancia Adapmtiva (ART) de Grossberg y Carpemer, o los modelos de control motor de Bullock, Gaudiano y Grossberg, entre otros.
El Perceptron A continuación se mostrará el
funcionamiento de una de las redes neuronales clásicas, el Percepcron de Rosenblatt. Su importancia es más bien histórica puesto que las limitaciones que presenta hacen que en 1:1 actualidad no se emplee en aplicaciones prácticas. Se ver:l en primer lugar la estructura del Perceptron, a continuación se detallaci su funcionamiento y por último se mostrará el código fuente en C de un programa que realiza una simulación por ordenador de un Perceprron, donde puede verse cómo es capaz de aprender funciones lógicas de tipo OR y AND.
• EsTRUCTURA Un Perceptron consta de dos
niveles o capas (fig.4).EI primer nivel, podemos decir que está compuesto por un número limitado de unidades de entrada, denominadas unida
•
Redes neuronales 1 nteligencia Artificial des sensori:tles, que en nuestro ejemplo son dos. El segundo n1vel está compuesto por un número de unidades de salida, denominadas unid;lCies de :lsOCi;lción, cuyas entradas son las sahdas de las unidades de entrada ponderadas por unos pesos. En el ejemplo sólo se empleará una neurona en la capa de s~thcla. Las unidades de entrada tienen una sola entrada correspondiente a una de las entradas a la red, y una sola salida. Estas unidades transmiten la señ:1l que aparece en su entrada.
• FuNCIONAMIENTO
El Pcrccptron se diseñó para trabaj:u con parrones de entrada y salida de tipo binnrio. Así, la salida será 1 cuando b activación de la neurona alcance un valor y O en caso contrario.
Según lo expuesto, la activación de la neurona del segundo nivel parJ un umbral O se calcub, en el ejemplo, como:
XI= SI wll + sl wl¡
donde s, y 51
son las entmdas, y w,, y w
1, sus correspondientes pesos.
La función de salid:l vendrá determinada por:
{1 Si x
1 > h
0 SÍ x1 ~ h
donde hes elumbr:ll. L:1 regla de aprendizaje que se
emplea para la adapt:1ción de los pesos está basada en el error. Durante la fase
ele aprendizaje se presentan a la red los patrones de entrada y b s:~lida b
1
deseada para > h cada entrada. El error viene dado por la diferencia entre la salida deseada b,. y la salida real de la neurona, 5
1• Es decir:
ó = b -S 1 1 1
Veamos el mecnnismo de vnrin ción de los pesos:
• Sí la entrad<1 fue correctamente categoriz<1da (es decir, que b salida de la ncuron:l corresponde con la s:tlida deseada), entonces no se h:~ce ning(m cambio.
• Si la salida es 1 cuando deberín ser O, entonces los pesos y el umbral se modifican de la siguiente manera: en primer lugar se incrementa el umbral en una unidad, para hacer menos probable la activadón ele b neurona. Si l::t entrada i, es O, emonces no se h<1ce ninglln cambio en su peso, puesto que esta entrada no ha contribuido a activar la neurona. Por el contrario, si la entrada i, es 1, se decrementa su peso w, en una unidad. En el otro caso en el q ue b salida es J cuando debiera ser un O, los cambios que deben hacerse son los opuestos.
El método requiere que cada patrón de entrada y salida se presente a la red las veces necesarias hasta que ni los pesos ni el umbral varíen. Por otro lado, el cambio en el umbral y en los pesos se expresa matemáticamente como:
~h =-B. 1
~w. = óil ' 1
4B6SLC-50
lrtFORMATICA C./ MADRE DE 0105,1:1 17011 - VALLADOLID TEL. (983) 26.37.00
C / PUI;;NTl". COJ.<:ANTE,34 47007 - VALLADOUD 'I'I::L. (983) 23.!10.M
540 tvTB 4tv1B SVGA COLOR
4B6DX2- 66 540 tvTB. 4tv1B SVGA COLOR
486DX4--100 540 tvTB. BtvTB SVGA COLOR
PENT!UtvT 90 540 tvTB. BtvTB SVGA COLOR
Fig 4: Perceplron de dos niveles para procesar funciones lógicas de dos entrados
Esta regla de aprendizaje, que Rosenblatt denominó b.1ck coupled error correction, tiene la propiedad ele converger siempre al valor correcto de los pesos siempre que este valor exista. En uno de los apartados siguientes veremos que hay detemlinadas combina dones de e ntradas y salidas que el Perceptron no puede aprender.
--¡ '18 . 000
-140.000
'185.000
275.000
* CONSULTAR OTRAS CONFIGURACIONES " !VA 16% NO INCLUIDO ~ DESCUENTOS PARA GRUPOS
i RECUERDA ..... LO IMPORTANTE ESTA EN SU INTERIOR
Marzo-Abril 9 5 Login: 17
• SIMUI ACIÓ N
El código fuente ele la figura 5 es un programa en C++ que pennite estudiar el funcionamiento del Perceptron, compilado con Turbo C++ 3.0. Como ejemplo, se muestra el aprendizaje de una fundón OR de dos entradas. Puede comprobarse que el Perceptron es <:.1.
paz d e aprender también una función AND. Se ha prescindido de las dos unidades del plimer nivel puesto que únicamente dejan pasar el vector presentado en la entrada. El umbral para la función de s..qlicla se ha ajustado al valor l.
• CONCl USIONl:S En este apartado se estudiarán al
gunos resultados interesantes que pueden obtenerse medi:1nte la simulación.
El Perceptron aprende bien las funciones OR y AND, sin embargo no oa.me lo mismo con la fundónXOR. Esto es debido a que a medida que se van presentando los patrones ele entrada y su conespondiente s..'llichl, la red va adaptando los pesos, pudiendo ocunir (como en el caso del XOR) que la diferencia entre las entradas y la salida sea muy grande provocando un cambio grande en el valor de los pesos y haciendo que se bone lo aprendido antetionnente.
Este problema en el que la red •va olvidando-lo aprendido a medida que aprende nuevas cosas ya ha sido resuelto en otras redes neuron~lles más modernas. En algunos casos el problema se soludona presentando las entradas en un orden distinto. Sin embargo, en el caso del Perceptron se ha demostrado que no puede aprender determinadas combinaciones de entrada y salida. En este sentido, en 1969 Minsky y Papert demostraron en su libro Perr:eprrons que este tipo de redes no puede clasificar pr..ttrones de entrada que no sean linealmente separables. Unos patrones de entrada/salida se consideran linealmente separables cuando en una representadón geométtica en el plano pueden separarse por una linea recta los grupos de entradas/salidas del mismo Lipa. Por ejemplo, en el caso de la fundón OR, la figura 6 muestra cómo pueden ser separados por una línea tecta los patrones de entrada clasificados con una salida O de los clasificados con una salida l. Sin embargo, en el caso del XOR, véase la figura 7, no es posible hacer una separación de este tipo.
18 Login: Marzo-Abril 95
/* PCPTRON. CPP Al·fredo Catalina Gallego 8 Feb 95 */
#include <conio.h>' llinclude <iostream.n> #i nclude <a lloc. h>' lldefine NO_HAY_CAMSJ}l O lldefine .HAY_CAMBIO 1
class neuron.a{ float *wi j; float xj'; float sj; float h; int dro; int cambi'o; float *ents;
publ ic: •. , neuróña<"int NumEnt~ float Umbral);
- neu ro.na<void>; float act'ivacion<float *si>; float salida(void); void aprendizaje(float *si, float b); int mir:a_ cambio<void); ) ;
neurona: :neurona<int NumEnt, float Umbral) { int n; xj=O; sj=O; h = Umbral; nro = NumEnt;
wij = (float *) malloc<sizeof<float> * nro); for <n = O; n < nro; n++) wi j[nJ = O; wij[OJ = O; wij[1J = O; }
neurona: : -neurona<void) { 'free<wij); )
float neurona:: activacion( float *s'i > { i nt n; xj = O;
for(n = O; n < nro; n++> xj = xj '+- <si'CnJ .~!; .. wij[nJ); return xj; }
flof)t neurona: : sa liCla <voi d) ( i9f ' (xj > h) s) = 1''; else sj :: O; return sj; }
voi'a neurona: :aprendizajé<float *si, f .loa:t b)
{ float error; int n; activacion<si); sa~idaO; error = b - sj; if <error != O> { h = h - error;
for<n = O; n < nro; n++) wi j_(nJ :: wi j[nJ t enror '* siEnJ; if (!cambio) ents = (float *) malloc(¡s)zeo.f<'t'.ltoat) * n.ro); cambio = HAY_CAMBIO; memcpy<ents, si, sizeofCfloat) * nro>;t
} el se ( if (!memcmp(ents, si, sizeof<float) * r¡ro))· (
cambio = NO_HP.Y_CAMBJO-; free<ents); } }
re,turn; }
int neurona: :mi ra_cambio<void) { return
vo'id m a in ( voi d) { float entradas(8J = {0, O, O, 1, 1,
Hoat salidas(4J = <O, 1, 1, D; int n; neurona n1<2, 1); ctrscr().;
O, 1, 1>; ~'
1* '0E~ es te bucle· se realiza el aprendí za,t.je r?t,¡, do {' for<n = 1; n <= 4; n++) {
}
Q1.apcendizaje<"&e.nt¡:adas((n ,- 1) * 2J, salidasJ:n - 1J>; } } w He < n1 . mi.r!1l:_cambi o<>)i>';
/* bu el e se comprueba ~o apr~dido '* 1 cout << .. ,ptradas " << «Salidas\n•; ' cout << ,¡.:..;:_~ « <~, ,~,--\n\n,.; for< n = 1>;~7; 11' <::; 4; n'-t;;t)'1 {
n1.activab.tl>n<&entrada~IJ<ln - 1> * 2J>; << f( «; @it
<< entradas((n - 1) * 2J; out << ~,• << entradas[(n - 1) :j1; out << '~ •;
n1.salida() << •\n•;
Fig 5: Ustodo en C++ para la simulación de uno red neuronal del tipo Perceptron
Redes neuronales 1 nteligencia Artificial Veamos que esto es asr. Pnra que
el Perccptron aprenda una función XOR deben cumplusc l;ts sigtucntcs cuatro desiguakbdes
O w 1 + O "'z < h 1 w 1 + O ""z < h O w 1 + 1 \\"z < h 1 w
1 + 1 \\"z < h
•> o< h •> w, > h •> \\'l > h •> w, + \\'1 < h
Sm embargo, sr w, y "'.!son mayores que el umbral h, su suma nunca podrá ser menor que <.:src, }' por tanto no hay nrngun~t <:ombinatión de esros valores que Lllmpla simultáneamente bs cuatro desigualdades.
Para ilusuar estas ideas puede representarse en t'l L'spacro de los pesos la superllcie c.lel L'l mr para cac.la función Así, puede tomarse una función de error del trpo
E .. L C()P)l 1 1
dondt: li" es d L'rror de b neurona j paw cad:, p:ltlcin ¡>de cntr..1da. Es decir, la fundún dt• er rur l:~ da el error tot<JI en b neurona ¡ p;tr.l un ,·alor dado de los pesos y para un grupo de cncr.lcbs r salrd.rs. Fl error se calcul:t como b sum:1 dt• los errores elevados al cu:tdr.•clo cu:1nc.lo se presentan bs 11 entradas a 1:1 neurona. F.n el ejemplo que nos ocup:1 n-'1, puesto que hay cu:11ro pallones de entrada distinros.
L1 luntron de.: enor defimda de esta manera toma un \alor par.r cada p:1r de valores que tcng.ln los pesos "'
11 y
zoco Record;~mos <1 todos los lectores que pueden cnvi;~rnos anuncios para la compm, venta o cambio de todo tipo de productos que tengan c;~bid;~ en el ámbito de los temas de la revista.
Los anuncios serán insertados gratuitamente. Los textos pueden enviarse a nuestro Apartado de Correos, o bien personalmente en nuestra sede o por correo electrónico (ver página 3).
Esperamos vuestra colaboración.
(0,1 ) (1,1) .---------,
o (0,0) (1 ,0)
Función OR Función XO R
Fig 6 y 7: Representoctón geomélrico en el plano de uno función OR y otro XOR
w . De esta forma, en el CSIXICio de :¡
los pesos fa función de cnor es un:1 superfine donde podr;i obser\arsc r¡ué combrnaoonc~ de los pesos hacen mínuno el error
Las frgur..ts 8, 9 y 1 o muescr:~n las superfrcrcs del error, con un umbral de \·alor 1, p:tra bs luncrones OR, M\D y XOH. respecll\·amt·nte Se ha representado en color m;is oscuro las porciones de superftere de error O en cada caso. Adem:ís, los bordes de la función de error se han unrdo al plano ele error O p:ua mayor cbndad.
Como puede observarse hay infinit:~s combinaciones de los pesos que hacen que hacen el error O p~1rn l:t función OH lgu:tlmcntc puede verse que hay una única combinación ele los pesos que hace que valga O en el caso de la función ANO. Y por úlumo, que no hay rungún valor de Jos pesos que h~tga nulo
el error cuando .se tratn de una función XOR, como era de esper:~r.
Una solución al problema, ya conoc1da por Minsky y Papert, consaste en rntroducir una c:1p:1 adicional de neuronas entre la capa de entrad:~ r 1::1 capa de sahd:t Sin embargo, eSI:I solución m1phca modificar la rcgb de aprendrza¡e par:~ poder enseñar también a las neuronas de la capa íntermedra
Aplicaciones al control automático
Por ültimo, se muestran algunas de las múltiples aplicaciones que pueden darse a las redes neuronales en este campo.
Visión artificial : Se emplean modelos de redes neuronales que son capaces de emular características del fun-
CENTRO DE ESTUDIOS
MODULOR CARRERAS UNIVERSITARIAS
PHI·.PAH \( )()'\; D .. 1 '\ \r-..H<\1· ..... H~ALE~
CURSOS TÉCNICOS
(/ Ponoder~ 68, Bajo Derecho Teléfono 208804 -47004 Vollodolid
Marzo-Abril 95 Login: 19
genes texturad;ts l'n color. el aprendiZ3-~ ¡xu:t dctcnnin;u posiciones a partir de 1::\ información pro,·cn•entc de dos cimar:ts y n .. •prcscntación de b visión bínocubr
Reconocimiento y catcgori7 .. ación de patrones. Estas redes emplean bs artJllitcctur:ts de la TealÍa de la Re1;onancia Adapt:Hiva o ART. Entre o11~11; aplit~lciones se enc.1.1entr:tn el reconocuniento de c.':lr3Cteres manuscritos, autori7 .. adón de descubiertos bancarios y cbsdlc1ción de cromosomas.
Procesos químicos: Dos aplicaciones posibles son: el control de b tempe•~llur:t l'l1 un fl':lCtor quím1co y el control de procesos quunico orgánicos no lineales.
Control motor Permiten resol,·er el problema <.mcmallco mverso en manipuladores y robót1ca mó\'il, consistente en detl'nmnar la scc."'..•encia de movimientos que deben realizar las distintas partl'S dd rohot para alctnzar una pOSición descad.1 También pcnniten el
~.a evolución de las redes neuronales no está clara y se determinará en los próximos años. ~ ~
aprcndizajl' <.k la din;,mica clcl manipulador, es ckcir, de la gl'neracíón de las fuer7.:~s y JXII'CS que hay que aplicar para producir un movimlcnto determinado.
Otros campos, como la predicción económic:t y problemas de gest1ón, aprendi7..::1Jl' preventivo, etc ..
Los Rrupos de redes neuronales que tr:tba¡an actu;tlmcnte en la Unh·ersid'ld de \'nlladolid se encuentran en la Facult.'ld de Ciencias y en la Escuela Técn•ca Superior de Ingenieros lndUSlriales. En est.1 última se trabaj;t en distintos campos como control motor, \isión artificial, identiftCllión y control de procesos, robólict rnó,·il y l'Cconoomicnto de patrones. Si dlector desea ampliar información sobrl' l'Sll' tema puede dirigirse a cualquíc•:• d<.! los dos ccnu·os o bien ponerse en contacto con el autor (dirección de c-m:ail :¡/(_so/[email protected]•'<'l.es)
El futuro de las redes neuronales
20 Login: Marzo-Abril 95
r.:~s redes neuron:tlcs alcan7.:~n e~d.'l ,·ez mayor:tuge, teniendo mulutud de aplicaciones en campos d1versos y d:tndo soluciones senctll:ts :1 problemas cuya resoluaón n:Slllta complie~da cuando se emplean m:iqumas algorítmiets. Aún así, el futuro de las 1-edes neuron:tles no está tocbvía claro y ser:í en los próximos años cuando Sl' dctcnninc su cvoludón.
Por último, quiero agradecer la colaboración preMad:t por Félix Muñiz Espad:t, José !vl:lnuel C:tno Izquierdo y Juan López Coronado ¡xu-a la d:tbomdón de este artículo.
Bibliografía
[ J Redes neuron.t!es. Algoritmos, .7p!ic:Jaoncs y técnic:1s de progmm:tdón. James A. f rccm:tn y David M. Skapura. Ed. Addison-Wesley/Díaz de Santos. [ _;] Explomtions in paml/el distributed proccssing A 1 !.1ndbook of Models, Progmms, .1nd Exeroses.James L. McCielland, D:tvid E. Rumelhart 1l1c MlT Press. Cambridgl' M:tSSachusetts. (-q lntroductJOn to :trllfici:t! intelligence. Ph1Wp C. Jackson, Jr. Do ver Publie~tions, lnc. Nev. York. [ iJ SelfOrgnmz;llJon .1nd ;1ssoo:uil·e Memory. Kohonen, T. 19&-L SpringerVerlag, Bcrlfn. [5] Principies of Neurodynamics: Perceptrons :wcl rile 111eory of Bmin MedJanisms. Rosenblau, P. 1962. Spnrt.'ln Books, Washington OC. [<>] Ncurn! D:m11'nism: l11e 17woryof Neuron.1/ Group Selection. G .M. Edelman.New York, B.'lsic Dooks, 1987 [- ] A m.7ssil·efy ¡u m// el :trchilecture for ."1 self-organiztng neura/ pauern recognition m.1chine G Carpenter y S. Grossbcrg. Computer VJS1ón [¡;] Hof'.· does ;t bmin build a cogmti1·e code? S. Grossberg. Pshycol Rev. \'OI 87. [9] Neura/ netn-orks and Physical Systems f'.' ith Emergen/ Collecth'e Compurarion:tl Abilities. llopfield, J.J. 1982. ProcWatl Acad. [ lO] 7Jwory ofthe Prop:1gation Neuml Nerwork. Hetch-Wielsen, R. 1989. Proc. rm. Joint Con f. •
Fig 8 Functón de error poro uno OR
•• l
Fig. 9. Función de error poro una AND
Flg. 10 Función de error poro una XOR
NOTA DFL HAQUt TAIJOR: Por necesidades de espacao, en el listado C++ de la tig. 5 del artfculo se han yuxtapuesto órdene~ que 1mc•almeme figuraban en lfneas separadas, aunque el texto permanece fntegro. El hswdo ongmal puede obtenerse de las formas md1cadas en la pág. 3 de Login:
Apple
MAC ... Windows ¿Podré continuar utilizando mis programas DOS/Windows si decido cambiarme a una plataforma no compatible como la de PowerMAC? Esta duda es habitual cuando analizamos las interesantes ofertas de la familia Apple en el momento de la compra de un nuevo ordenador, en especial tras la aparición del PowerPC y el PowerMAC. Analizaremos aquí la compatibilidad con PC ofrecida por estos equipos, y continuaremos hablando en próximos números de las alternativas al mundo PC.
JAVIER PALMERO Es1 EBAN
Cuando se decide la compra de un nuevo ordenador, al usuario del PC sie m pre le salta n a la me nte esas
o tras bmilias como son la de Ap ple Macintosh, y las dis tintas estacio nes de trabajo basadas en UNIX (TBM, HP, SUN, DfGlTAL, . .). En este artículo se tratnd el tema de la emulación del sistema operati\'O DOS/ \Xfindows bajo Apple Power Macimosh.
La bmili;l de orderudores Applc 1\l:tcinrosh siempre ha esrado a la altura de los PC en lo que respecta a rendimiento; esta clase de orc.k-nadorcs sc han dedicado rradidonalmcntc, gracias :1 su interface gr:ítico, a la autocdictón y d iseno grMico. Pero u·as la aparioón en el mundo PC ele .\licroSolt Winclows 3.x con sus programas de edición y diseño, esta han·era h;l sido superada. J>or lo cu:rl el mundo PC y el mundo .'-.L-\C se v;¡n :tct.!rcanclo poco a poco. El último p:1so ele este acerc11níento serí:l b comp:ltibilicbcl binaria ele bs aplicaciones.
H:1st:1 h:-~ce un par de anos la t'ultCl t01 m a de h:-~cer "cumpa tibies· a los i\] -\(' CJ.I t¡liC pudicr:lll icct dtSl'ClS r•\T, }'
los dikr~·nte'> fmm:nos de los fidwrus crc:tc.lns t'<)n :tplicKi\Jllc~ I'C Pero siempre se ncccsir~1ha qcnlt.u algun progr:tm.r para DOS/\\1indo\\'s. ~·os:t unp,>sihlL" ele conseguir en aqul'llos :lntiguos l'vL\C. 1 l:lbta que cnnsegurr l:t comp:nihtlrcbd bunna con los prog•:un:1s DOS;\\'inclmYs.
l'ar:1 cnnsegutr que un programa DOS/ \\frmlows funcione en los i\pple l'vbcintosh cxtslen dos posibilíclades
.1) Vía .soft\varc, por un program:l de emulación
h> Vía hardware, incluyendo un proces:-~dor compatib le DOS!Windows.
Empecemos ha blando de la primerJ forma.
Fig 1 Power MAC 6100 con monitor multimedia.
ENCUADERNACIÓN CASTILLA S.l. JUAN MAMBRILLA N° 25 TLFO: 21 03 40 VA LL A D O LI D
Se realizan toda clase de trabajos:
FASCÍCULOS y REVISTAS.
T ESIS.
Proyectos
fiN DE CARRERA.
Restauración de
LIBROS ANTIGUOS.
GRABACIONES EN ÜRO.
Marzo-Abril 95 Login: 21
SoftWindows
1 • n mpaubthtbd con la!> aplic~tcione~ [)( >~ \\ mdows se puede conseguit via sc.>lt\\ .m: 1.." ucur cmpll..'anuo un progr:lllt;t C(lll..' l..'tnttle :11 sistema op~.:rau\'0 O< )S \\ 111dows En bs pl:tt:Jionnas Appl<: Pc)\\'l..•n\IAC este programa es SoftWindows ucado por lnsi~ni.t
Soluuon.' DtdlO p1ogram.1 genera un P<..
vutu:ll tk·ntro ud Power~lAC, m:ís con t rct:tllWIHI..', tea liza una translo11naucin del \1'1 ( \¡>pflc;¡twn Pro,w:tm lmct Uce cs dt.'CÍI, d con¡unto tk· o1dencs } lthtt.%ts quc pcrnHtcn al progr:tma l.t t·ollllllllt'anon dt.• alto 111\ el con el Si~tema Oper:ttín> p:tr:t l:t utiltzacicín dc sus re cursos, qm· t.'~te :-.e encarga de gcsttonar a b:IJO 111\ d l de OOS W1ndows al API dd \U el J.<., < :u ando u na a pltG!uon genct~l un;l ll.unad:t al :;1stem:1 DOS \\'indows, Solt\Vindows reconnerte t.·st:t llamada a un:1 dc:l s1stcma ~JacOS Pero .SI la :1phc:tu6n DOS \\ 1ndo" s lntt.•nt:t saltar..c dtrl..'ttJml·ntc al hardware del PC, esto en el c.:mubdor no se podra tmducir a dtrccoone:-. ~IAC, y:1 que la :uquuc:ctura de los PC y de los MACes distmta Por lo tanto cualqwcr programa func1onarf1 de manera uniforme si cuando fue progr:unado respetó los API de DOS/ Windows.
liemos vbto como consigue SoftWtndows emular el API de DOS/ Wtndows pero, ¿cómo convertir al MAC en un Pl. con el mayor parecido postble~
Todo PC basado en DOS/ Windows se compone de los s1guíentes clemcntos b:ís1cos
.1) Un d1sco duro con un SIStema ele• ftdwros h:t-;:tdo en 11n:1 FAT
b> L'n r:uón upo M1crosoft. el Un procesador compauble PC dl Una taf)eta de vídeo C\'GA.
EGA, l. e) ,\.le mona expandida r exten
elida. f> Altavoz.
Pues bien, SoftWindows realiza la virtualización del PC de la siguiente forma: Cuando se inicializa el programa SoftWindows en una ventana del escritono del MAC se crea un e momo DOS o Windows, que arranca en un disco duro vtnual o en la un1dad de disco una versión de DOS, que se hnbrá configurado
22 Login: Marzo-Abril 95
Fig 2· Lo ventano de SofiWtndows bajo MacOS en el PowerMAC 6100 muestro uno sesión de Ull!Jdodes Nor1on 7 que nos 1nformo de las coracleristicos PC
prc.:\ 1amenre en los menús de SoftWindows, indicando qué upo} e .mtidad de memoria, t::~rjet:t de ndc.:o y t:tll13i'IO del disco duro se qutcrc uttlll~ll p:tr:t esta sesión re.
Como todo en el MAC, la sesión de DOS estará en modo graltco, podremos tener aplicaciones gr:'tf1<::ts en una vcntan:t, compartiendo escnto110 con otras aplicaciones MAC. El di.sco UliiO C. que vemos al arrancar SoftWindows es en realidad un fichero del MAC que simula el comportamiento del dispositivo.
~L 1 . , ' a emu ac10n actual es pobre, aunque muy pronto se podrá emular un 386, incluído el modo extendido de Windo\\ s. ~ ..J.
Ya tenemos un PC dentro del MAC. Pero, ¿qué tipo ele J>C? En la versión actual de SoftWindows las características emuladas son las siguientes:
a) Procesador 80286 rápido. b) MS-DOS 6.2 e) MS-Winclows 3.1 en el modo
ele ej~ución standard, con todas sus características (OLE, DDE, )
el) Tarjeta gráfica VGA, FGA,CGA
Como se puede ,·cr el rendí mientoes bajo por el momento, ya que no podemos correr todas l:!s :tplicaciones \X1tndows del modo extendido, ni las DOS que requieren un 386 para su funcionamiento. Es dcetr, casi todo lo que puede correr en un AT puede ejecutarse con SoftWinclows. siempre que dichos programas no manejen el hardware directamemc (Vamos, que no podemos utilizar el 2l\l, por ejemplo)
En la figura 2 se: puede ver la ejecución del programa de tnform:1ción del sistema ele bs Utilidades Norton 7, sobre un PowcrMAC 6100/66 con 8Mb de RAM ( pn1ebas realiz.aclas en Gillnfonn:ítica); la prueba resultó satisfactoria y sin errores. Tamb1én se probó el Derive, pero obtuvimos un error )1:1 que SoftWindows no regenera la venrana PC, emrcmezclándose lineas y texto al cambiar de la \'entana de la gr-.ífica a la de :ílgebra. También se mtcntó ejecutar el Civilizauon pero choco, aunque a favor de SoftWindows hay que decir que no colgó al MAC, sino que tan solo se vió afectada la sesión actual ele SoftWindows.
Resumiendo: el rendimiento fue pobre; esta emulación sólo puede utilizarse de forma ocasional y sin ab:1rc.ar campos como el de OS/2 Dentro de poco Insignia lanzará una nueva versión de SoftWindows que emulará un 386, con la posibilidad de ejecutar Windows 3.1 en modo extendido a mayor velocidad.
MAC ... Windows Apple
Apple Power Macintosh 6100 DOS
La otra posibilidad para conseguir la compatibilidad del software es La vía hardware, consistente en La conexión al slot de proceso directo del MAC, PDS, de una placa hija con los componentes necesarios del PC. emre ellos un procesador compatible PC (80x86) para que ejecute bs uplicacíones DOS/ Windows.
Fig. 3. Apple Power Macintosh 6100 DOS
El Apple Power Macintosh 6100 DOS es el fruto de lo anteriormente expuesto. Cuando ejecuta un programa DOS/Windows, el programa de emuladón SoftWmdows redirecciona las llamadas al API DOS/Windows hacia el procesador PC. De este modo conseguimos prácticamente la compatibilidad completa con los programas DOS/ Windows. Este modelo lleva incorporado lo siguiente:
Está destinado a Jos entornos de trabajo que ejecuten aplicaciones MAC y DOS/Windows.
con buenos o jos la incorporación de un PowerMAC en tu vida.
a) Procesador PowerPC 601 60/ 66MHz Resumiendo: si sólo vas a ejecu
tar programas DOS/Windows sigue en el mundo PC, pero si piensas dedicarte de forma profesional a la edición, mim
Agradecemos a D. José Luis del Olmo, de Gil Inform.ática, la ayuda prestada para \a realización de este artículo. •
b) Procesador i486DX2/66 MHz e) Sound Blastcr de 16 bits.
OFERTA ASfSORES • NFORMA·ncos
• Caché de 256 Kb ampJiable . 6º Aniversario • Triple VESA Local BUS (opción PCJ). ¡Lió menos! • 4 Mb. de Memoria RAM 72 comactos PENTIUM. Ampliable a 128 Mb. • Ampliable a Pentium y DX4. • Floppy de 3'n, 1.44 Mb. - !DE de Alta Velocidad Vesa Local Bus. • Disco Duro de 540 Mb. - SuperVga de 1 Mb. Ampliable Vesa Local Bus.
y consuhe Precios Actualizados OfertaS
íod3S Jas Mejoramos
• Monitor SuperVga Color 14", I024x768., Full Sean - Baja Radiación. Ratón LOG 486DX2 66 MHz Local Bus/PCI 120.000 Ptas. HP 540 Deskjet
LOG 486DX4100 MHz PCI 133.900 Ptas. Canon BJ-4000Color
LOG Pentium 90/100 MHz PCI 8Mb. RAM Consultar Canon BJ-200
39.900 Ptas. 54.000 Ptas. 36.900 Ptas.
"' Ampliación a 840Mb. Disco Duro .............................. 9.900 Pts. "' Disquetes 3111 Mb. Formateados ...................................... 39 Pis. * CD-Rom 2X Doble Velocidad (Varios Marcos) SONY ... 16.000 Pts. * CD-Rom 4X Cuádruple Velocidad (Varios Marcas) .... 25.000 Pis. * Digitalizadora J 2"x 12" Puntero y Lápiz .................. 24.000 Pis. • Módem-Fax Alto Velocidad 28.800 bps ................... 20.000 Pis.
Garantla «Plena Satisfacción» Si no queda Satisfecho le Devolvemos su Dinero
Pago hasta en 3 meses con Tarjeta Red 6000 Entrega Inmediata
Servicio a toda Castilla y León
·~ot. SERVICIO TÉCNICO E INSTALACIÓN A DOMICILIO GRATUITOS
a,c \.~ 3 AÑOS DE GARA~... TOTAL "'e ~V ~ 1 '11 .a .a.t1l Piezas y Mano de Obra \t.'ó.~'\ ~,t3~ Plz. del Ochavo 2 -3 Atico C [Junto C/ Platerías] VALLADOLID
Q) 983- 37 02 28 y 37 56 30 y Q) 24H 908 48 72 71
• Marzo-Abril 95 Login : 23
•• • ~cológicos y &eon6mkos • Unieo~ impre$0rof slo fungibles;
slo tfliduos Innecesario~ • Compontllles inlemos de lorga
durocl611
!)fRAC CASTfU.A UON S.A.L
Muro, \1 47004 Vollodolid 1t 21 07 67 Fax 21 09 89
¡·;,
POR ECONOMIA
-"r· ,/~L.
. '-~" . ·.··· .. ·' .. ·r~:,:,·:·,,~>r.· :: ~:~··'~·2:~.~""'''' .
·~ K9DtERa .
Emulaciones: IBM, EPSON,
PRESCRIBE 11, DIABLO
;;¡
CSiAFF 1Q95