miércoles, 7 de noviembre de 2018

Programación de Inteligencia Robótica

Presentación 

¡Saludos! Inicio este blog con finalidad de exhibir mis intenciones para realizar un proyecto innovador el mismo tiene como propósito principal el descubrimiento de información referente a la Programación de Inteligencia Robótica. Este blog no solo tiene como objetivo informarnos, también consiste en aprender juntos nuevas ideas para una mejor extensión de conocimientos y abrir nuevas fronteras. En las próxima entradas iniciaremos con contenido muy interesante, tendremos ilustraciones, vídeos y muchísima información solo para ti, en fin; ¡Es una sorpresa! ¡Descúbrelo tú mismo! 
¡Hasta la Próxima Amigos de la innovación!



Autor: Ana Pedrozo
Estudiante
Universidad Católica Andrés Bello
1er Semestre UCAB
Ingeniería Informática


 Indice

 3 Inteligencia Artificial
3.1 Comunicación con los robots.
 5 Historia y evolución de los lenguajes de programación
  


Programación de Inteligencia Robótica 


Programación De Robot


El proceso de programación de un robot consiste en introducir en su sistema de control las instrucciones necesarias para que desempeñe las tareas por las cual ha sido diseñado.   
  Propiedades características de los robots Las características más importantes de los robots son:

  •   Versatilidad: es la posibilidad de ejecutar diversas tareas, o la misma tarea, de formas diversas. Estos robots deben tener una estructura mecánica de geometría variable. 
  • Autoadaptabilidad: de los robots es la posibilidad, de estos, por alcanzar el objetivo que se le ha fijado (ejecutar su tarea), a pesar de las perturbaciones imprevistas del entorno a lo largo de la ejecución de su tarea. Esto supone que el robot sea consciente de su entorno y, por lo tanto, posea sentidos artificiales (sensores).


Inteligencia Artificial 
La inteligencia artificial, es la inteligencia exhibida  por las maquinas. 
 La Inteligencia Artificial tiene dos aspectos, uno como ciencia cognitiva y otro como tecnología informática, y sus características esenciales son:
  • Información simbólica preferente a la numérica. 
  • Métodos heurísticos preferente a los algorítmicos.
  • Uso de conocimiento específico-declarativo. 
  • Informaciones incompletas o con incertidumbre.
  • Multidisciplinaridad.
Son cuatro pilares básicos en los que se apoya la inteligencia artificial: 
  •         Estado producidos por las acciones posibles.
  •          Algoritmos Genéricos (análogo al proceso de evolución de las cadenas de ADN)
  •         Redes neuronales Artificiales (análogo al funcionamiento físico del cerebro de animales y humanos)
  •         Razonamiento mediante una lógica formal análogo al pensamiento abstracto humano. 
 La IA en la robótica:  
A finales de los años 70, se produjo un nuevo giro en el campo de la investigación relacionada con la inteligencia artificial: la aparición de robots. Los robots experimentales creados para estos efectos eran automatismos capaces de recibir información procedente del mundo exterior (p. ej, sensores, cámaras de televisión, etc.), así como órdenes de un manipulador humano (expresadas en lenguaje natural). De este modo, el robo determinaba un plan y, de acuerdo con él, ejecutaba las órdenes recibidas mediante el empleo de un modelo del universo en el que se encontraba. Era incluso capaz de prever las consecuencias de sus acciones y evitar, así, aquéllas que más tarde pudieran resultarle inútiles o, en algún momento, perjudiciales. Estos primeros robots experimentales eran bastante más inteligentes que los robots industriales, y lo eran porque disponían de un grado mucho mayor de percepción del entorno que los robots empleados en las cadenas de producción. El principal problema con el que se enfrenta la inteligencia artificial aplicada a los robots es el de la visión. Mientras que la información recibida a través de sensores se puede interpretar con relativa facilidad y entra a formar parte de la descripción del modelo de universo que
emplea el robot para tomar decisiones, la percepción de las imágenes captadas y su interpretación correcta es una labor muy compleja. En cuanto a la interpretación de las imágenes captadas mediante cualquier sistema, se ha logrado ya el reconocimiento de formas preprogramadas o conocidas, lo que permite que ciertos robots lleven a cabo operaciones de reubicación de piezas o colocación en su posición correcta a partir de una posición arbitraria. Sin embargo, no se ha logrado aún que el sistema perciba la imagen tomada mediante una cámara de ambiente y adapte su actuación al nuevo cúmulo de circunstancias que esto implica. Así, por ejemplo, la imagen ofrecida por una cámara de vídeo de las que se emplea en vigilancia y sistemas de seguridad no puede ser interpretada directamente por el ordenador. 
 Referencia: 
Díaz, D. Inteligencia Artificial yprogramación neuronal.
Publicado originalmente en http://cinefantastico.com/nexus7/
Comunicación con los robots. 
La comunicación con los robots no sólo se basa en la programación de éste, también hay comunicación entre los distintos periféricos del robot industrial, y cada vez estos periféricos son mayores en cuanto a número. Los protocolos de comunicación utilizados por los sistemas automatizados suelen ser numerosos para así ajustarse a las posibles necesidades del usuario. En la ilustración inferior, se puede observar la multitud de periféricos instalables en un sistema de KUKA, y las posibles comunicaciones contempladas. 
 El lenguaje es el medio que utiliza el hombre para gobernar las máquinas controladas por sistemas informáticos, de manera, que su correcta adaptación con la tarea a realizar y sencillez de manejo, son factores determinantes del rendimiento obtenido en los robots industriales. 
Hay tres maneras generales de comunicarse con un robot que son: reconocimiento de voz, enseñanza y repetición y lenguajes de programación de alto nivel.
Los sistemas de reconocimiento de voz con la tecnología actual, son bastante primitivos. Estos sistemas pueden reconocer un conjunto de palabras concretas de un vocabulario limitado y, en general, exigen al usuario una pausa entre las palabras, aunque en la actualidad es posible reconocer las palabras separadas en tiempo real debido a que cada vez los PC’s son más rápidos y eficientes. La utilidad del reconocimiento de palabras separadas para describir la tarea de un robot es bastante limitada. Así mismo, pueden confundirse los ruidos ambientales con la voz.
La enseñanza y repetición, también conocido como guiado, es la solución más utilizada en la actualidad en los robots industriales. Este método consiste en guiar al robot (enseñar), dirigiéndole los movimientos que el usuario desea que realice.
 La enseñanza y repetición se lleva a cabo, normalmente, con los siguientes pasos:
        Dirigiendo al robot con un movimiento lento, utilizando el control manual, para realizar la tarea completa y grabando los ángulos del movimiento del robot, en los lugares adecuados, para que vuelva a repetir el movimiento.
        Reproduciendo y repitiendo el movimiento enseñado.
        Si el movimiento enseñado es correcto, entonces se hace funcionar al robot a la velocidad correcta, en modo repetitivo.
Podemos guiar al robot en movimientos lentos de varias maneras: usando un joystick, un conjunto de botones (uno para cada movimiento) o un sistema de manipulación maestro-esclavo.
Los lenguajes de programación de alto nivel suministran una solución más general para resolver el problema de comunicación hombre-robot. En la década anterior, los robots fueron utilizados con éxito en áreas tales como soldadura por arco voltaico o pintura con spray utilizando el guiado. Estas tareas no requieren interacción entre el robot y su entorno y pueden ser programadas fácilmente por guiado. Sin embargo, la utilización de robots, para llevar a cabo las tareas, requiere técnicas de programación en lenguajes de alto nivel, ya que el robot de la línea de producción suele confiar en la realimentación de los sensores. Este tipo de interacción sólo puede ser mantenida por métodos de programación que contengan condiciones.
 Los lenguajes clásicos empleados en informática, como el FORTRAN, BASIC, PASCAL, C, etc., no disponen de las instrucciones y comandos específicos que necesitan los robots, para aproximarse a su configuración y a los trabajos que han de realizar. Esta circunstancia, ha obligado a los constructores de robots e investigadores a diseñar lenguajes propios de robótica.
El problema, es que los lenguajes desarrollados hasta el momento, se han dirigido a un determinado modelo de controladora de robot, lo que ha impedido la aparición de lenguajes estándar y transportables entre máquinas, es decir, de carácter universal.  
La estructura del sistema informático del robot varía notablemente, según el nivel y complejidad del lenguaje y de la base de datos requerida.
Clasificación De La Programación Usada En Robótica
La programación empleada en Robótica puede tener un carácter explícito, en el que el operador es el responsable de las acciones de control y de las instrucciones adecuadas que las implementan, o estar basada en la modelación del mundo exterior, cuando se describe la tarea y el entorno y el propio sistema toma las decisiones. La programación explícita es la más utilizada en las aplicaciones industriales y consta de dos técnicas fundamentales:
1.       Programación Gestual o Directa (Guiado): consiste en guiar el brazo del robot directamente a lo largo de la trayectoria que debe seguir. Los puntos del camino se graban en memoria y luego se repiten. Este tipo de programación, exige el empleo del manipulador en la fase de enseñanza, o sea, trabaja "on-line". En este tipo de programación, el propio brazo interviene en el trazado del camino y en las acciones a desarrollar en la tarea de la aplicación. Esta característica determina la programación "on-line". Los lenguajes de programación gestual, además de necesitar al propio robot en la confección del programa, carecen de adaptabilidad en tiempo real con el entorno y no pueden tratar, con facilidad, interacciones de emergencia. La programación gestual se subdivide en dos clases:

  • Programación por aprendizaje directo. El punto final del brazo se traslada con ayuda de un dispositivo especial colocado en su muñeca, o utilizando un brazo maestro o maniquí, sobre el que se efectúan los desplazamientos que, tras ser memorizados, serán repetidos por el manipulador. La técnica de
    aprendizaje directo se utiliza, extensamente, en labores de pintura. El operario conduce la muñeca del manipulador o del brazo maestro, determinando los tramos a recorrer y aquellos en los que la pistola debe expulsar una cierta cantidad de pintura. Con esta programación, los operarios sin conocimientos de "software", pero con experiencia en el trabajo a desarrollar, pueden preparar los programas eficazmente. La programación por aprendizaje directo tiene pocas posibilidades de edición, ya que, para generar una trayectoria continua, es preciso almacenar o definir una gran cantidad de puntos, cuya reducción origina discontinuidades. El "software" se organiza, aquí, en forma de intérprete.
  • Programación mediante un dispositivo de enseñanza (botonera). Consiste en determinar las acciones y movimientos del brazo manipulador, a través de un elemento especial para este cometido. En este caso, las operaciones ordenadas se sincronizan para conformar el programa de trabajo. El dispositivo de enseñanza suele estar constituido por botones, teclas, pulsadores, luces indicadoras, ejes giratorios o "joystick". Dependiendo del algoritmo de control que se utilice, el robot pasa por los puntos finales de la trayectoria enseñada. Hay que tener en cuenta que los dispositivos de enseñanza modernos no sólo permiten controlar los movimientos de las articulaciones del manipulador, sino que pueden, también, generar funciones auxiliares, como:
  1. Selección de velocidades.
  2. Generación de retardos. 
  3. Señalización del estado de los sensores.
  4. Borrado y modificación de los puntos de trabajo.
  5. Funciones especiales.
Al igual que con la programación directa, en la que se emplea un elemento de enseñanza, el usuario no necesita conocer ningún lenguaje de programación. Simplemente, debe habituarse al empleo de los elementos que constituyen el dispositivo de enseñanza. De esta forma, se pueden editar programas, aunque como es lógico, muy simples. La estructura del "software" es del tipo intérprete; sin embargo, el sistema operativo que controla el procesador puede poseer rutinas específicas, que suponen la posibilidad de realizar operaciones muy eficientes.
 1.       Programación Textual: En la programación textual, las acciones que ha de realizar el brazo se especifican mediante el programa, que consta de un texto de instrucciones o sentencias (en un lenguaje determinado), cuya confección no requiere de la intervención del robot; es decir, se efectúan "off-line". Así mismo, con este tipo de programación, el operador no define, prácticamente, las acciones del brazo manipulado, sino que se calculan, en el programa, mediante el empleo de las instrucciones textuales adecuadas.
     Las trayectorias del manipulador se calculan matemáticamente con gran precisión y se evita el posicionamiento a ojo, muy corriente en la programación gestual. En esta labor no participa la máquina (off-line). Los lenguajes de programación textual se encuadran en varios niveles, según se realice la descripción del trabajo del robot. Estos son los lenguajes de programación por orden creciente de complejidad:


  1.     Lenguajes elementales, que controlan directamente el movimiento de las articulaciones del manipulador.
  2.       Lenguajes dirigidos a posicionar el elemento terminal del manipulador.
  3.       Lenguajes orientados hacia el objeto sobre el que opera el sistema.
  4.       Lenguajes enfocados a la tarea que realiza el robot.

     En una aplicación tal como el ensamblaje de piezas, en la que se requiere una gran precisión, los posicionamientos seleccionados mediante la programación gestual no son suficientes, debiendo ser sustituidos por cálculos más perfectos y por una comunicación con el entorno que rodea al sistema.

   En la programación textual, la posibilidad de edición es total. El robot debe intervenir, sólo, en la puesta a punto final. Según las características del lenguaje, pueden confeccionarse programas de trabajo complejos, con inclusión de saltos condicionales, empleo de bases de datos, posibilidad de creación de módulos operativos intercambiables, capacidad de adaptación a las condiciones del mundo exterior, etc. Dentro de la programación textual, existen dos grandes grupos, de características netamente diferentes:


  1.       Programación textual explícita: el programa consta de una secuencia de órdenes o instrucciones concretas, que van definiendo con rigor las operaciones necesarias para llevar a cabo la aplicación. Se puede decir que la programación explícita engloba a los lenguajes que definen los movimientos punto por punto,

similares a los de la programación gestual, pero bajo la forma de un lenguaje formal. Con este tipo de programación, la labor del tratamiento de las situaciones anormales, colisiones, etc., queda a cargo del programador. Dentro de la programación explícita, hay dos niveles:




a)     Nivel de movimiento elemental: comprende los lenguajes dirigidos a controlar los movimientos del brazo manipulador. Existen dos tipos:


         Articular, cuando el lenguaje se dirige al control de los movimientos de las diversas articulaciones del brazo. Los lenguajes del tipo articular indican los incrementos angulares de las articulaciones. Aunque esta acción es bastante simple para motores de paso a paso y corriente continua, al no tener una referencia general de la posición de las articulaciones con relación al entorno, es difícil relacionar al sistema con piezas móviles, obstáculos, cámaras de TV, etc. Los lenguajes correspondientes al nivel de movimientos elementales aventaja, principalmente, a los de punto a punto, en la posibilidad de realizar bifurcaciones simples y saltos a subrutinas, así como de tratar informaciones sensoriales.


         Cartesiano, cuando el lenguaje define los movimientos relacionados con el sistema de manufactura, es decir, los del punto final del trabajo (Tool Center Point). Los lenguajes del tipo cartesiano utilizan transformaciones homogéneas. Este hecho confiere "popularidad" al programa, independizando a la programación del modelo particular del robot, puesto que un programa confeccionado para uno, en coordenadas cartesianas, puede utilizarse en otro, con diferentes coordenadas, mediante el sistema de transformación correspondiente. Son lenguajes que se parecen al BASIC, sin poseer una unidad formal y careciendo de estructuras a nivel de datos y de control.


b)   Nivel estructurado: Intenta introducir relaciones entre el objeto y el sistema del robot, para que los lenguajes se desarrollen sobre una estructura formal.


    Se puede decir que los lenguajes correspondientes a este tipo de programación adoptan la filosofía del PASCAL, LABVIEW, o cualquier programa parecido. Describen objetos y transformaciones con objetos, disponiendo, muchos de ellos, de una estructura de datos arborescente.
  El uso de lenguajes con programación explícita estructurada aumenta la comprensión del programa, reduce el tiempo de edición y simplifica las acciones encaminadas a la consecución de tareas determinadas. En los lenguajes estructurados, se utilizan mucho las transformaciones de coordenadas, que exigen un cierto nivel de conocimientos. Por este motivo dichos lenguajes no son populares hoy en día.
2.    Programación textual especificativa: Se trata de una programación del tipo no procesal, en la que el usuario describe las especificaciones de los productos mediante una modelización, al igual que las tareas que hay que realizar sobre ellos. 


   El sistema informático para la programación textual especificativa se ha de disponer del modelo de donde se encuentra el robot. Este modelo será, normalmente, una base de datos más o menos compleja, requiriendo siempre computadoras potentes para el procesado de una abundante información. 


    El trabajo de la programación consistirá, simplemente, en la descripción de las tareas a realizar, lo que supone poder llevar a cabo trabajos complicados. Dentro de la programación textual especificativa, hay dos clases, según la orientación a la que se refiera el modelo, objeto u objetivos:



  •       Si el modelo se orienta al nivel de los objetos, el lenguaje trabaja con ellos y establece las relaciones entre ellos. La programación se realiza "off-line" y la conexión CAM es posible. Dada la inevitable imprecisión de los cálculos del ordenador y de las medidas de las piezas, se precisa de una ejecución previa, para ajustar el programa al entorno del robot. Los lenguajes con un modelo del universo orientado a los objetos son de alto nivel, permitiendo expresar las sentencias en un lenguaje similar al usado comúnmente.
  •       Cuando el modelo se orienta hacia los objetivos, se define el producto final. La creación de lenguajes de muy alto nivel transferirá una gran parte del trabajo de programación, desde el usuario hasta el sistema informático; éste resolverá la mayoría de los problemas, combinando la Automática y la Inteligencia Artificial.
Referencia: 


Yebra Perez, J. Lagos Fernandez, N (Diciembre 2002) El Lenguaje V+, Mini proyectó Robótica. http://www.etitudela.com/profesores/rpm/rpm/downloads/manualv.pdf
 Aspectos Diferenciales De La Programación De Robots
¿Qué circunstancias hacen diferentes los lenguajes de programación de robots del resto?
• El entorno en que actúa el robot generalmente no puede describirse en términos puramente cuantitativos.
• Se necesita poder incluir condiciones no usuales, tales como la prevención de colisiones.
 • Las acciones del robot están sujetas a imprecisiones que pueden dar lugar a incidentes que el programa debe ser capaz de tratar.
 • Ciertas informaciones sensoriales del sistema pueden ser no sólo difíciles de procesar en tiempo real sino también ambiguo. 
Clasificación De Los Lenguajes De Programación De Robots 
Una posible clasificación de los lenguajes de programación en robótica, puede hacerse estableciendo niveles, según se adapten en mayor o menor medida al lenguaje natural del hombre o al robot.
 En el primer nivel, de las articulaciones, existen lenguajes como ARMBASIC y MAL que llegan a especificar incluso los pasos de los motores internos del robot para ejecutar un determinado movimiento. A nivel del manipulador, los lenguajes incorporan ya la conversión entre el espacio cartesiano y el de las articulaciones, así como también la posibilidad de generar determinadas trayectorias entre puntos del espacio. 
Estos lenguajes son los que en la actualidad están más extendidos en los robots industriales y un representante característico sería VAL, desarrollado por Unimation en la década de los 70, para controlar su robot PUMA. En el siguiente nivel es donde existe un mayor esfuerzo investigador por parte de la comunidad científica. Aquí se intercepta con otro tópico de gran importancia por su repercusión en la industria: "planificación del ensamblado". Básicamente se pretende: a partir de un modelo del mundo (representación geométrica del entorno del robot, incluido el robot), mediante la construcción de un "planificador de tareas", traducir automáticamente las especificaciones "estado inicial/estado objetivo" (especificaciones a nivel de tarea), al código de un manipulador específico (especificaciones a nivel de manipulador). 
Fruto del esfuerzo investigador en esta línea son los lenguajes: RAPT, desarrollado en la Universidad de Edimburgo [Popplestone 78), LAMA, desarrollado en el M.I.T. [Lozano-Perez  77], AUTOPASS, desarrollado por IBM [Lieberman  77]. En la frontera entre el nivel del manipulador y el de los objetos estaría el lenguaje AL, desarrollado en la Universidad de Stanford [Finkel 74], del cual arrancan algunas ideas incorporadas en los anteriores lenguajes. En el nivel más alto planteado, se sitúan los lenguajes a nivel de objetivos, donde se pretende que sea el propio robot el que cree sus planes para cada tarea que se le ordene mediante lenguaje natural. Esto requiere un sistema capaz de: razonamiento geométrico, comprensión del lenguaje natural, generación de planes, interpretación de imágenes etc. Todo lo cual lo hace inaccesible por el momento. Los esfuerzos investigadores se centran en la etapa anterior, pues está claro que hasta que aquella no esté resuelta de modo satisfactorio difícilmente podremos pasar a la siguiente.
  Lenguajes De Programación A Nivel Robot
 Los lenguajes de programación a nivel manipulador o nivel robot constituyen los denominados lenguajes industriales, puesto que es para dichos robots para lo que se han diseñado. Veremos solo dos ejemplos recientes de dichos lenguajes: RAPID, desarrollado por la multinacional sueca ABB a partir de 1994, y V+, desarrollado por Adept Technology en 1989.
Lenguaje de Programación RAPID 
Los programas desarrollados en RAPID se denominan tareas e incluyen el programa en sí junto con varios módulos de sistema, que contienen rutinas y datos de tipo general, independientes del programa pero que pueden ser utilizados por él en cualquier momento. A su vez, el programa puede ser dividido en varios módulos, uno de los cuales ha de ser el principal. Cada uno de estos módulos contiene submódulos de datos, además de diversas rutinas de ejecución. 
Referencia: 
Sanz Valero, P(2006)Introducción a la Robótica Inteligente. http://www3.uji.es/~sanzp/robot/RobInt-Apuntes.pdf


  •          Lenguaje de programación Gestual Punto A Punto
 Estos lenguajes se utilizan con el robot "in situ", recordando las normas de funcionamiento de un video doméstico, ya que disponen de unas instrucciones similares: PLAY (reproducir), RECORD (grabar), FF (adelantar), FR (atrasar), PAUSE, STOP, etc. Además, puede disponer de instrucciones auxiliares, como INSERT (insertar un punto o una operación de trabajo) y DELETE (borrar). Este manipulador en línea funciona como un digitalizador de posiciones. Los lenguajes más conocidos en programación gestual punto a punto son el FUNKY (creado por IBM), y el T3 (creado por Cincinnati Milacrom). En el lenguaje FUNKY se utiliza un mando (joystick), que dispone de un comando especial para centrar la pinza sobre el objeto y controlar los movimientos, mientras que el T3 dispone de un dispositivo de enseñanza ("teach pendant"). El procesador usado en T3 es el AMD 2900 ("bit slice"), mientras que en el FUNKY está constituido por el IBM SYSTEM-7.


  •  Lenguaje de programación A nivel de movimientos elementales
  Tienen como ventajas destacables, los saltos condicionales y subrutinas, además de un aumento de las operaciones con sensores. Estos lenguajes son de tipo intérprete, con excepción del RPL, que tiene un compilador. La mayoría dispone de comandos de tratamiento a sensores básicos: tacto, fuerza, movimiento, proximidad y presencia. El RPL dispone de un sistema complejo de visión, capaz de seleccionar una pintura y reconocer objetos presentes en su base de datos. Los lenguajes EMILY y SIGLA son transportables y admiten procesos simples, en paralelo. Otros datos interesantes de estos lenguajes son:
ANORAD: Este lenguajes es una transformación de un lenguaje de control numérico de la casa ANORAD CORPORATION, utilizado para el robot ANOMATIC. Utiliza como procesador el microprocesador 68000 de Motorola de 16/32 bits.
 VAL: Fue diseñado por UNIMATION INC para sus robots UNIMATE y PUMA. Utiliza como CPU un LSI-II, que se comunica con procesadores individuales que regulan el servocontrol de cada articulación. Las instrucciones (en inglés) son sencillas e intuitivas como podemos apreciar en el siguiente ejemplo de programa:
  PROGRAM PICKUP1. APRO PART, 25.02. MOVES PART 3. CLOSE, 0.0.04. APRO PART, -50.05. APRO DROP, 100.06. MOVES DROP7. OPEN, 0.0.0 8. APRO DROP, -100.0 .END
RPL: Esta dotado con un LSI-II como procesador central que se aplica a los robots PUMA. Fue diseñado por SRI INTERNATIONAL.
 EMILY: Es un lenguaje creado por IBM para el control de uno de sus robots. Usa el procesador IBM 370/145 SYSTEM 7 y está escrito en Ensamblador.
 SIGLA: Fue desarrollado por OLIVETTI para su robot SUPER SIGMA. Emplea un mini-ordenador con 8K de memoria. Escrito en Ensamblador, es de tipo intérprete.
  MAL: Fue creado en el Politécnico de Milán para el robot SIGMA, con un Mini-multiprocesador. Es un lenguaje del tipo intérprete, escrito en FORTRAN.
 RCL: Aplicado al robot PACS y desarrollado por RPI, emplea como CPU, un PDP 11/03. Es del tipo intérprete y está escrito en Ensamblador.

  • Lenguajes Estructurados De Programación Explícita

Algunos de los lenguajes más importantes de programación explícita son: AL, HELP, MAPLE, PAL, MCL, MAL EXTENDIDO.
Todos los lenguajes que tratan de la programación explícita, (con excepción de HELP), tienen estructuras de datos de tipo complejo.
 Así, el AL utiliza vectores, posiciones y transformaciones; el PAL usa transformaciones y el MAPLE permite la definición de puntos, líneas, planos y posiciones. Sólo el PAL, y el HELP carecen de capacidad de adaptación sensorial.
 Los lenguajes AL, MAPLE y MCL tienen comandos para el control de la sensibilidad del tacto de los dedos (fuerza, movimiento, proximidad, etc.). Además, el MCL tiene comandos de visión para poder identificar e inspeccionar objetos.
Exponemos las características más representativas de los lenguajes de programación explícita:
 AL Proporciona las definiciones necesarias acerca de los movimientos relacionados con los elementos sobre los que trabaja el brazo. AL fue diseñado por el laboratorio de Inteligencia Artificial de la Universidad de Stanford, con estructuras de bloques y de control similares al ALGOL (lenguaje en el que fue escrito). Está dedicado al manipulador de Stanford, utilizando como procesadores centrales, a un PDP 11/45 y un PDP KL-10.
 HELP: Fue creado por GENERAL ELECTRIC, para su robot ALLEGRO y está escrito en PASCAL/FORTRAN. Este lenguaje permite el movimiento simultáneo de varios brazos y dispone de un conjunto especial de subrutinas para la ejecución de cualquier tarea. Utiliza como CPU un PDP 11.
 MAPLE: Fue escrito por IBM, como intérprete en lenguaje PL-1, para el robot de la misma empresa. El cual, tiene capacidad para soportar informaciones de sensores externos. Utiliza como CPU un IBM 370/145 SYSTEM 7.
  PAL: Fue desarrollado por la Universidad de Purdure para el manipulador de Stanford. Esta escrito en FORTRAN y ensamblador, y és un intérprete, capaz de aceptar sensores de fuerza y de visión. Cada una de sus instrucciones para mover el brazo del robot en coordenadas cartesianas, es procesada para que satisfaga la ecuación del procesamiento. Como CPU utiliza un PDP 11/70.
 MCL: Fue creado por la compañía MC DONALL DOUGLAS, como ampliación de su lenguaje de control numérico APT. Es un lenguaje compilable, apto para la programación de robots "off-line".MAL EXTENDIDO Procede del Politécnico de Milán, al igual que el MAL. Incorpora elementos de programación estructurada y se utiliza en el robot SIGMA. 

  •  Lenguajes de programación Especificativa a nivel objeto. 
De los lenguajes de programación explícita a nivel de objeto destacamos los tres más interesantes: RAPT, AUTOPASS y LAMA.
RAPT: El lenguaje RAPT fue creado en la Universidad de Edimburgo, departamento de Inteligencia Artificial; está orientado, en especial, al ensamblaje de piezas. Destinado al robot FREDY, utiliza, como procesador central, a un PDP 10.
  Es un intérprete y está escrito en lenguaje APT. Este lenguaje se basa en definir una serie de planos, cilindros y esferas, que dan lugar a otro cuerpo. Para modelar un cuerpo, se confecciona una biblioteca con sus rasgos más representativos. Seguidamente, se define los movimientos que ligan a los cuerpos a ensamblar (alinear planos, encajar cilindros, etc.).
Si se desea definir un cuerpo C1, se comienza definiendo sus puntos más importantes, por ejemplo: P1 = < x, 0, 0 >P2 = < 0, y, 0 >P3 = < x/2, y, 0 >P4 = < 0, 0, z >
 Si, en el cuerpo, existen círculos de interés, se especifican seguidamente:C1 = CIRCLE/P2, R;C2 = CIRCLE/P4, R;
A continuación, se determinan sus aristas: L1 = L/P1, P2;L2 = L/P3, P4;
Si, análogamente al cuerpo C1, se define otro, como el C2, una acción entre ambos podría consistir en colocar la cara inferior de C1 alineada con la superior de C2. Esto se escribiría.  AGAINST / BOT / OF C1, TOP / OF C2;
 AUTOPASS: Fue creado por IBM para el ensamblaje de piezas. Utiliza instrucciones, muy comunes, en inglés. Precisa de un ordenador de varios Megabytes de capacidad de memoria.
 Además de indicar, como el RAPT, puntos específicos, prevé, también, colisiones y genera acciones a partir de las situaciones reales.
El AUTOPASS realiza todos sus cálculos sobre una base de datos, que define a los objetos como poliedros de un máximo de 20,000 caras. Está escrito en PL/1 y es intérprete y compiladle.
Un pequeño ejemplo, que puede proporcionar una idea de la facilidad de relacionar objetos, es el siguiente programa, que coloca la parte inferior del cuerpo C1 alineada con la parte superior del cuerpo C2. Asimismo, alinea los orificios A1 y A2 de C1, con los correspondientes de C2. PLACE C1SUCH THAT C1 BOT CONTACTS C2TOP AND B1 A1 IS ALIGNED WITH C2A1AND B1 A2 IS ALIGNED WITH C2A2
LAMA: Fue creado por el laboratorio de Inteligencia Artificial del MIT, para el robot SILVER, en el que se orientaron hacia el ajuste de conjuntos mecánicos. Aporta más inteligencia que el AUTOPASS y permite una buena adaptación al entorno.
 La operatividad del LAMA se basa en tres funciones principales:

  1.  Creación de la función de trabajo. Operación inteligente.
  1.  Generación de la función de manipulación.
  1.  Interpretación y desarrollo, de forma interactiva, de una estrategia de realimentación para la adaptación al entorno de trabajo.


  • Lenguajes de programación En función de los objetivos.

Los lenguajes en función de los objetivos, consisten en definir la situación final del producto a fabricar, a partir de la cual se generan los planes de acción que tienden a conseguirlo, obteniéndose, finalmente, el programa de trabajo. Estos lenguajes, de tipo natural, suponen una potenciación extraordinaria de la Inteligencia Artificial, que descargan al usuario de las labores de programación.

Estos lenguajes pueden realizar una comunicación hombre-máquina, a través de la voz. De los lenguajes de programación en función de los objetivos destacamos:

 STRIPS y HILAIRE. STRIPS Fue diseñado, en la Universidad de Stanford, para el robot móvil SHAKEY. Est6á basado en un modelo del universo ligado a un conjunto de planteamientos aritmético-lógicos que se encargan de obtener las subrutinas que conforman el programa final. Es intérprete y compiladle, y utiliza como procesadores a un PDP-10 y un PDP-15.

HILAIRE: Fue creado por el laboratorio de Automática y Análisis de Sistemas (LAAS) de Toulouse. Está escrito en lenguaje LISP. Es uno de los lenguajes naturales más interesantes, por sus posibilidades de ampliación e investigación.



Primeros pasos Evolución de la Robótica  
Los orígenes de la palabra robot y su supuesto significado. El término robot es reciente, pero el concepto es muy antiguo. Antiguamente aparecía expresado en sinónimos como autómata, que significaba que pensaba por sí mismo.

La palabra robot aparece por el sueño de los seres humanos en poder librarse de tareas indeseables, peligrosas o demasiado pesadas. La primera vez que se hablo de estos seres, utilizando el término por el que es hoy mundialmente conocido, robot, fue en 1923 por el escritor Karel Capek en su comedia R.U.R..("Rossum`s Universal Robots"), palabra que proviene del término checo robotnik que significa “siervo”. Hoy la palabra robot tiene diferentes significados:
  •     El significado de la palabra Robot por el Institute of América: "un manipulador multifuncional y reprogramable, diseñado para mover materiales, piezas, herramientas o dispositivos especiales, mediante movimientos programables y variables que permitan llevar a cabo diversas tareas".
  •    El significado de la palabra Robot por Oxford English dictionary: "un aparato mecánico que se parece y hace el trabajo de un ser humano".
  •     El concepto de Robot inteligente incluye la capacidad de recibir instrucciones de alto nivel expresadas como "comandos" para realizar una tarea general, trasladando dichas instrucciones a un conjunto de acciones que deben ejecutarse para llevar a cabo dicha tarea. Será consciente de su entorno y capaz de tomar decisiones acerca de sus acciones basadas, en parte, en la interpretación de dicho entorno. 
 En lo comienzo de la Robótica destacaron:
  1.  En 1954, Devol diseña el primer robot programable, La comercialización de robots comenzaría en 1959.
  2. En 1960 se introdujo el primer robot “Unimate”, basada en la transferencia de artículos. programada de Devol.
  3. En 1966 Trallfa, construyó e instaló un robot de pintura por pulverización.
  4. En 1971 El “Standford Arm”, un pequeño brazo de robot de accionamiento eléctrico, se desarrolló en la Standford University.
  5. En 1973 Se desarrolló en SRI el primer lenguaje de programación de robots WAVE. 
  6. El lenguaje AL en 1974.
  7. En 1978 Se introdujo el robot PUMA.
  8. En 1980 Un sistema robótico de captación de recipientes fue objeto de demostración en la Universidad de Rhode Island.
En el Siglo XVIII Vaucanson construyó varias muñecas mecánicas de tamaño humano que ejecutaban piezas de música, este avance importante destaco.
  •    1801 J. Jaquard invento su telar, que era una máquina programable para la urdimbre.
  •     1805 H. Maillardet construyó una muñeca mecánica capaz de hacer dibujos.
  •    1946 El inventor americano G.C Devol desarrolló un dispositivo controlador que podía registrar señales eléctricas por medios magnéticos y reproducirlas para accionar un máquina mecánica. La patente estadounidense se emitió en 1952.
  •    1951 Trabajo de desarrollo con teleoperadores (manipuladores de control remoto) para manejar materiales radiactivos. Patente de Estados Unidos emitidas para Goertz (1954) y Bergsland (1958).
  •     1952 Una máquina prototipo de control numérico fue objetivo de demostración en el Instituto Tecnológico de Massachussets, después de varios años de desarrollo. Un lenguaje de programación de piezas denominado APT (Automatically Programmed Tooling) se desarrolló posteriormente y se publicó en 1961.
  •    1954 C. W. Kenward solicitó su patente para diseño de robots. Patente británica emitida en 1957. 1954 G.C. Devol desarrolla diseños para Transferencia de artículos programados. Patente emitida en Estados Unidos para el diseño en 1961.
  •   1959 Se introdujo el primer robot comercial por Planet Corporation. estaba controlado por interruptores de fin de carrera.
  •   1960 Se introdujo el primer robot ‘Unimate’’, basado en la transferencia de articulaciones programada de Devol. Utilizan los principios de control numérico para el control del manipulador (robot de transmisión hidraulica).
  •    1961 Un robot Unimate se instaló en la Ford Motors Company para atender una máquina de fundición de troquel.
  •   1966 Trallfa, (firma noruega) construyó e instaló un robot de pintura por pulverización.
  •   1968 Un robot móvil llamado ‘Shakey’’ se desarrollo en SRI (standford Research Institute). Estaba provisto de una diversidad de sensores así como una cámara de visión y sensores táctiles y podía desplazarse por el suelo.
  •   1971 El ‘Standford Arm’’, un pequeño brazo de robot de accionamiento eléctrico (Standford University.)
  •    1973 Se desarrolló en SRI, el primer lenguaje de programación de robots del tipo de computadora para la investigación con la denominación WAVE. Fue seguido por el lenguaje AL en 1974. Los dos lenguajes se desarrollaron posteriormente en el lenguaje VAL comercial, para Unimation, por Víctor Scheinman y Bruce Simano.
  •    1974 ASEA introdujo el robot Irb6 de accionamiento completamente eléctrico. 1974 Kawasaki, bajo licencia de Unimation, instaló un robot para soldadura por arco para estructuras de motocicletas.
  •    1974 Cincinnati Milacron introdujo el robot T3 con control por computadora. 1975 El robot ‘Sigma’’ de Olivetti se utilizó en operaciones de montaje, una de las primitivas aplicaciones de la robótica al montaje.
  •    1976 Un dispositivo de Remopte Center Compliance (RCC) para la inserción de piezas en la línea de montaje se desarrolló en los laboratorios Charles Stark Draper Labs en estados Unidos.
  •   1978 El robot T3 (con lenguaje propio T3 gestual punto a punto) de Cincinnati Milacron se adaptó y programó para realizar operaciones de taladro y circulación de materiales en componentes de aviones, bajo el patrocinio de Air Force ICAM (Integrated Computer- Aided Manufacturing).
  •    1978 Se introdujo el robot PUMA (Programmable Universal Machine for Assambly) para tareas de montaje por Unimation, basándose en diseños obtenidos en un estudio de la General Motors.
  •   1979 Desarrollo del robot tipo SCARA (Selective Compliance Arm for Robotic Assambly) en la Universidad de Yamanashi en Japón para montaje. Varios robots SCARA comerciales se introdujeron hacia 1981.
  •    1980 Un sistema robótico de captación de recipientes fue objeto de demostración en la Universidad de Rhode Island. Con el empleo de visión de máquina el sistema era capaz de captar piezas en orientaciones aleatorias y posiciones fuera de un recipiente.
  •    1981 Se desarrolló en la Universidad de Carnegie- Mellon un robot de impulsión directa, el cual utilizaba motores eléctricos situados en las articulaciones del manipulador, sin las transmisiones mecánicas habituales 1982 IBM introdujo el robot RS-1 para montaje, basado en varios años de desarrollo interno. Se trata de un robot de estructura de caja que utiliza un brazo constituido por tres dispositivos de deslizamiento ortogonales. El lenguaje del robot AML, desarrollado por IBM, se introdujo también para programar el robot SR-1.
  •     1983 Informe emitido por la investigación en Westinghouse Corp. bajo el patrocinio de National Science Foundation sobre un sistema de montaje programable adaptable (APAS), un proyecto piloto para una línea de montaje automatizada flexible con el empleo de robots.
  •    1984 Robots 8. La operación típica de estos sistemas permitía que se desarrollaran programas de robots utilizando gráficos interactivos en una computadora personal y luego se cargaban en el robot.



Historia y evolución de los lenguajes de programación
 El conjunto de Órdenes e instrucciones que se dan al ordenador para que resuelva un problema o ejecute una determinada misión, recibe el nombre de programa. En los primeros tiempos de la informática, la programación se efectuaba en el único lenguaje que entiende el microprocesador: su propio código binario, también denominado lenguaje máquina o código máquina. Pero la programación en lenguaje máquina resulta muy lenta y tediosa, pues los datos e instrucciones se deben introducir en sistema binario y, además, obliga a conocer las posiciones de memoria donde se almacenan los datos. Como puede imaginar, este tipo de programación conlleva gran número de errores y la tarea de depuración exige bastante tiempo y dedicación. Por este motivo, a principios de los 50 se creó una suceso simbólico, denominada código de ensamblaje (ASSEMBLY), que utiliza una serie de abreviaturas mnemotécnicas para representar las operaciones (figura 1): ADD (sumar), STORE (copiar), etc.. Al principio, la traducción del código de ensamblaje al código máquina se realizaba manualmente, pero enseguida se vio que el ordenador también podía encargarse de esa traducción; se desarrollo así un programa traductor, llamado ensamblador1 (ASSEMBLER). Conforme los ordenadores fueron introduciéndose en el mundo empresarial y académico, aquellos primitivos lenguajes fueron sustituidos por otros más sencillos de aprender y más cómodos de emplear. Estos lenguajes, llamados de alto nivel, tienen una estructura que se adapta más al pensamiento humano que a la forma de trabajar del ordenador. Por ejemplo, seguro que le suenan lenguajes como BASIC, PASCAL, C, etc. 
¿Y cuántos lenguajes de programación existen? Pues sucede algo así como con los lenguajes humanos: existen centenares, si bien solo unos pocos de ellos son ampliamente utilizados.  
Algunos de los lenguajes, más importantes, que tratan los movimientos punto a punto son: ANORAD, EMILY, RCL, RPL, SIGLA, VAL, MAL. Estos lenguajes mantienen las características de los movimientos primitivos, ya sea en coordenadas articulares o cartesianas.
COBOL Business applications. FORTRAN. Engineering & Scientific Applications. PASCAL.
En este artículo me voy a centrar en los lenguajes de programación más difundidos, siguiendo un criterio cronológico, y lo finalizaré presentandole una somera relación de otros lenguajes de programación más minoritarios o que ya han caído en desusa Antes de pasar a ver los principales lenguajes de programación, debemos hacer un alto para comentar una característica común a todos ellos: las Órdenes dadas en cualquier lenguaje siempre deben traducirse al código binario del ordenador, que es el nicho que realmente comprende su unidad central. Esta labor de traducción se lleva a cabo mediante un intérprete o un compilador. ¿Y qué diferencia hay entre estas dos cosas? Retomemos el símil de los lenguajes humanos y todo quedar· aclarado. Imagine que no sabe nada de inglés y necesita conversar con alguien que solo conoce ese idioma. La forma más sencilla de establecer comunicación es conseguir una persona que ejerza de intérprete. Cuando diga una frase en castellano, su intérprete la traducir· al inglés y, de esta forma, podrá· entenderla aquella persona con la que esté conversando; análogo proceso se seguir· para traducir del inglés al castellano. En resumen, mientras esté presente su intérprete, la conversación es posible. El intérprete informático realiza, más o menos, el mismo papel. Traduce instrucción a instrucción y, de esta forma, favorece la interactividad, la depuración y puesta a punto del programa, la ejecución inmediata de una orden, etc. Por ejemplo, entre los lenguajes que suelen ser interpretados, se encuentran BASIC, LOGO, etc. No obstante, existe otro tipo de traducción, la escrita, que presenta diferencias con respecto a la traducción oral. Suponga, por ejemplo, que uno de sus libros vaya a ser editado en Gran Bretaña. Desde luego, no tiene sentido que, quien compre su libro, tenga un intérprete cerca cada vez que desee leer su libro. ¿Resulta más lógico traducir el libro al inglés, uno? Cuando el traductor haya finalizado su trabajo, se tendrán dos copias del libro; el original, en castellano, y su traducción, en inglés, que ya puede ser leída por cualquier persona que conozca el idioma de Shakespeare, sin necesidad de intérprete a su lado. El equivalente informático de esta modalidad de traductor se denomina compilador. Observe que, en contraste con el intérprete, que traduce las instrucciones una a una, el compilador traduce todo el programa de golpe, dejandolo listo para ser ejecutado. De esta forma, se logra mayor rapidez en la ejecución y, además, se liberan recursos de la memoria, pues el programa, una vez compilado, no exige que el traductor esté residente en memoria, como sucede con los intérpretes. Por ejemplo, entre los lenguajes que siempre son compilados se pueden destacar PASCAL, FORTRAN, COBOL, etc. Sin embargo, no todo son ventajas en los lenguajes compilados. Así, la depuración del programa resulta más cómoda con un intérprete, ya que el compilador no informa de los posibles errores hasta el momento de la compilación. Por otra parte, cada vez que se modifica algo en el programa es preciso volver a compilarlo de nuevo. Una vez aclarada la diferencia entre intérprete y compilador, vayamos ya con el primer lenguaje de alto nivel de amplia difusión. FORTRAN Al comienzo de la década de los 50, John Backus estaba trabajando con SSEC (Selectivo Séquense Electrónica Calculador), uno de los primeros ordenadores de IBM, y desarrollo el programa SPEEDCODING para Él. Tomando Éste como base, se emprendió, en otoño de 1954, la creación de un lenguaje para añadirle más prestaciones al modelo IBM 704, que iba a salir pronto al mercado.


Los programadores pasan aproximadamente el 30% del tiempo navegando el código fuente

Que se ha visto superado por otros muchos lenguajes, ya que sus programas carecen de estructuración y son difíciles de seguir. Sin embargo, todavía se sigue utilizando, sobre todo en el mito universitario. ¿Por qué? La respuesta radica en la gran biblioteca de subrutinas y funciones que se ha ido creando en sus más de treinta años de existencia. COBOL A finales de los 50, el Departamento de Defensa USA estaba bastante preocupado con los lenguajes de programación existentes, especialmente por dos razones: los programas no podían llevarse de un ordenador a otro y resultaban bastante difíciles de leer y modificar. Para solventar estos inconvenientes, patrocina una conferencia sobre lenguajes (CODASYL, Conferencie en Data Sistemas Lenguajes), que tuvo lugar en 1959 y en la que participaron las grandes empresas del sector (IBM, Perry Rand, Money Wells, etc.). Como era previsible, formaba parte del comité la gran dama de la informática, Grace Hopper. Hopper junto al monumento a COBOL Fruto de aquella conferencia fueron las especificaciones para desarrollar COBOL (Como Business Orientad Lenguaje), un lenguaje orientado hacia funciones administrativas, de gran portabilidad y legibilidad. Su primera versión apareció al año siguiente y, con el paso de los años, surgieron nuevas actualizaciones: COBOL 74, COBOL 85, etc. Ya que se buscaba su facilidad de lectura, COBOL tiene una sintaxis muy similar al inglés ,cuya terminología aparece continuamente: verbos, párrafos, frases, etc. Así, los programas se estructuran en cuatro divisiones (Identificación, Envaronen, Data, Procederé), que se subdividen en secciones y Éstas, a su vez, en párrafos, que constan de frases e instrucciones.


el botón de comando, nombre button1, tiene un procedimiento de evento 'Click' que llamará al método COBOL para calcular el resultado.
En la actualidad, COBOL se utiliza casi exclusivamente en algunos grandes sistemas informáticos (entidades bancarias, sobre todo), si bien más para mantener el código existente que para desarrollar nuevas aplicaciones. BASIC John G. Kenny y Thomas E. Karts eran profesores del Dartmouth College (New Hampshire) y, en 1964, disecaron un nuevo lenguaje que permitiera introducirse a sus estudiantes en los sistemas de tiempo compartido. Ese lenguaje, al que llamaron BASIC por su sencillez 5, es, sin duda, el más difundido, aplicandose tanto en tareas de gestión como en aplicaciones científicas.
¿Y a qué se debe la gran popularidad del BASIC? Lo cierto es que no era el mejor lenguaje ni el más potente, pero tenía dos ventajas a su favor: se trataba de un lenguaje sencillo de aprender y, además, su intérprete ocupaba poca memoria. Por estos motivos, cuando se creó el primer ordenador personal (Altaír de MITS), no es extraño que se desarrollase un BASIC para Él. ¿Y sabe qué empresa lo deseó? ¡Exacto! Microsoft. Más tarde, Microsoft adapta su BASIC a los productos de Apple, a los microordenadores y, lo más importante, al PC de IBM; de hecho, el sistema operativo MSDOS incluía la versión GW-BASIC. En resumen, mucha gente aprendió a programar en BASIC con su ZX-Spectrum o su primer PC y, una vez dominado un lenguaje, es comprensible una cierta reticencia al cambio. Además de GW-BASIC, hubo otras versiones que tuvieron cierta difusión en los 80, como Turbo BASIC (de Borland) y quickbasic (de Microsoft). De hecho, hasta Kemeny y Kurtz intentaron aprovechar el Èxito de su creación y, en 1983, crearon True BASIC, cuya comercialización no resulta muy fructífera 6. True BASIC, casi desconocido BASIC ha sabido adaptarse a las necesidades del mercado en el transcurso de los años. Así, las primeras versiones eran interpretadas y sus programas resultaban un tanto ilegibles; en cambio, las actuales incorporan bastante estructuración y son compiladas. El exponente máximo de los modernos BASIC es Visual BASIC también de Microsoft, claro está.


Visual Basic es un lenguaje de programación dirigido por eventos, desarrollado por Alan Cooper para Microsoft.

LOGO En 1964, Seymour Papert se incorpora al MIT, tras haber permanecido cinco años en Suiza, colaborando con el pedagogo Jean Paige (1896-1980). Tres años después, Papert comenzó a disecar un lenguaje que sirviera para introducir en el mundo de la programación al alumnado de menor edad. Papert con unos niños programadores (1984) Poco a poco, LOGO fue poniéndose a punto y cuando, en 1980, Papert lo divulga en todo el mundo con su libro ìmindstorms: Children Computers and Powerful Ideas, fue muy bien acogido en los ámbitos educativos, especialmente en enseñanza primaria y secundaria. Versión en castellano de ìmindstormsî Teniendo en cuenta los pocos conocimientos matemáticos de sus potenciales usuarios, LOGO introduce al mundo de la programación de una forma gráfica, mediante la geometría de la tortuga. En los primeros tiempos, con LOGO se controlaba un pequeño robot con ruedas, motor y un lápiz retráctil, que admitía Órdenes sencillas e intuitivas (Avanza, Retrocede, Gira a la derecha, etc.) Y al desplazarse por el papel iba trazando el dibujo ordenado. Como el robot tenía forma abombada se le llama tortuga7 (también influya en el nombre el hecho de que era bastante lento). Figura 10. Una de las tortugas de la primera Época Sin embargo, tras un impulso inicial muy ilusionante, LOGO ha ido desapareciendo de los centros de enseñanza españoles. ¿O las causas? Por un lado, resulta que el lenguaje LOGO no es nada sencillo cuando se quiere ir más al· de la tortuga gráfica, ya que se basa en la utilización continua de listas y procedimientos recursivos, que no son fáciles de manejar. Por otra parte, la informática educativa ha ido perdiendo su componente formativa y creativa (la programación) y ha sido sustituida por una informática de usuario (manejo de aplicaciones ofimáticas). C En los Laboratorios Bell (New Jersey) trabajaron dos de los investigadores más conocidos de la moderna informática, Kenneth Thompson y Dennis Ritchie (figura 11), creadores del sistema operativo UNIX, en 1969. Figura 11. Thompson y Ritchie recibiendo la Medalla National Technology en 1999En 1970, Thompson desarrolla un lenguaje experimental, al que llama B. Dos años después, Ritchie se base en B para crear un nuevo lenguaje de propósito general, que denomina C8. Como no depende de la arquitectura del hardware, C es uno de los lenguajes más portables del mercado y, como además ofrece amplias prestaciones, su difusión es amplísima. A principios de los 80, Bearne Stroustrup (figura 12) deseó una ampliación de C y, en 1984, la convirtió en un compilador que llama C++9, especialmente enfocado a la programación orientada a objetos. De hecho, PASCAL es el lenguaje más sencillo que posibilita el acceso a la informática teórica: descomposición modular, recursividad, punteros, etc.
 Niklaus Wirth PASCAL, que surgió como una derivación de ALGOL (ver ˙último apartado), fue definido en el libro pascal - User Manual and Reporte (1974), escrito por Kathleen Jensen y Niklaus Wirth En 1980 sufrió la primera formalización y se estandariza en 198310. Al poco tiempo, Borland lanza al mercado su compilador PASCAL, cuyo nombre se precedía con la palabra Turbo, para recalcar su rapidez. Su Èxito fue tan grande11 que vendió casi medio millón de copias de su compilador solo en 1985. Portada del libro que divulga el PASCAL Durante más de un década, Turbo PASCAL ha sido sinónimo de PASCAL, pero, por desgracia, en el año 2000, Borland dejó de darle soporte técnico y su presencia es cada día menor en el mito de la programación, sobreviviendo a duras penas en el mundo univerhistoria y evolución de los lenguajes de programación 8 Posteriormente, se reescribió UNIX en C. También están desarrollados en C el propio compilador C y la mayoría de sistemas operativos. 9 En C el operador ++ equivale a incrementar la variable. Como el nuevo lenguaje incrementaba la potencialidad de C con la programación orientada a objetos, se optó por el nombre C++. 10 Poco después, para solventar todos los inconvenientes que presentaba PASCAL, Wirth deseó el lenguaje MODULA-2 (Modular Lenguaje number 2), que esta· basado en el manejo de módulos, como bloques independientes. 11 Microsoft, que había lanzando su propia versión de PASCAL (Quick PASCAL), acaba retirandola del mercado. Autores cientìfico-tecnicos y académicos 91 sicario. Sin embargo, en 1995 surgiû una nueva versión, DELPHI, que amplía PASCAL a la programación visual e intenta hacerle la competencia a Visual BASIC. PROLOG En 1972, Robert Kowalski (universidad de Edimburgo) y Alain Colmerauer y Phillippe Roussell (universidad de Aix-Marseille) expusieron la revolucionaria idea de que la lógica podía emplearse como lenguaje de programación. Siguiendo esta línea, al año siguiente, el grupo de inteligencia artificial de la universidad de Aix-Marseille comenzó a disecar ese lenguaje, al que se llama PROLOG (programation logique). Alain Colmerauer PROLOG es el prototipo de lenguaje declarativo por excelencia. ¿Y qué es eso de declarativo? Todos los lenguajes que hemos ido viendo hasta ahora son algorítmicos; es decir, los ordenadores se consideran máquinas de Turín a las que debemos indicar todos y cada uno de los pasos a seguir para realizar una cierta tarea. Frente a estos lenguajes imperativos, los declarativos no están basados en Órdenes sino en descripciones.
 En otras palabras, en los programas PROLOG se proporcionan al ordenador una serie de conocimientos sobre un tema, junto con una serie de reglas, y el programa nos contestar  todas aquellas preguntas que deseemos hacerle sobre el tema siempre que las respuestas puedan deducirse lógicamente de los conocimientos dados al inicio. Como es fácil suponer, PROLOG no está destinado al cálculo científico. Su aplicación en el campo de la inteligencia artificial, definiendo objetos y estableciendo relaciones, permite resolver problemas lógicos, desarrollar sistemas expertos, investigar en la comprensión del lenguaje humano, etc. ADA Quince años después de intentar uniformizar los lenguajes con COBOL, el Departamento de Defensa USA percibió que su objetivo no se había cumplido, ni mucho menos 12. Por ese motivo, en 1975 forma un grupo de trabajo para evaluar los lenguajes existentes en aquel entonces13 y ver si alguno de ellos podía adaptarse a las necesidades del Departamento. Y qué condiciones debía cumplir el lenguaje 92 Autores cientìfico-tecnicos y académicos reducidas a cuatro, a las que se asigna los nombres clave de Red, Green, Yellow y Blue, por aquello de preservar el anonimato. Finalmente, Green fue el lenguaje elegido. Propuesto por Honeywell-Bull (Francia), fue diseñado por un equipo encabezado por Jean Ichbiah. 
En un primer momento, se le dio el nombre de dod-1 pero acaba cambiandose por ADA, en honor de Ada Lovelace. Jean Ichbiah Sin embargo, a pesar de los años transcurridos desde entonces y a las mejoras que han ido introduciéndose en Él , lo cierto es que ADA no es un lenguaje popular, salvo por su nombre.
 Se le reprocha ser un tanto complejo, bastante estricto y solo apropiado para el desarrollo de grandes programas. Programa realizado con el compilador GNAT ADA 95 JAVA Este lenguaje16, hoy en día ampliamente utilizado en Internet, fue desarrollado en 1990 por James Gosling, de Sun Microsystems, basandose en C y C++. ¿Aun lenguaje para Internet cuando, en aquella Época, la Red estaba casi circunscrita al mito universitario? En realidad, el objetivo de Sun no tenía nada que ver con Internet; era crear un interfaz atractivo e intuitivo para electrónica de consumo (calculadoras, televisión interactiva, etc.). James Gosling Sin embargo, la electrónica de consumo no evoluciona como se esperaba y, durante unos años, el lenguaje de Gosling permaneció aparcado, hasta que Bill Joy (cofundador de Sun) considera que podía ser interesante para Internet y propuso modificarlo para el nuevo medio. En agosto de 1995, ya con el nombre de JAVA, se presenta en sociedad. 
Estos se componen de un conjunto de reglas sintácticas y semánticas que permiten expresar instrucciones que luego serán interpretadas.



1 comentario:

  1. ¡¡Es genial la tecnología y mas aun que descubriremos nueva innovación juntos!!

    ResponderEliminar