stringtranslate.com

Lenguaje de procesamiento de información

El lenguaje de procesamiento de información ( IPL ) es un lenguaje de programación creado por Allen Newell , Cliff Shaw y Herbert A. Simon en RAND Corporation y el Carnegie Institute of Technology alrededor de 1956. Newell tenía el trabajo de programador de aplicaciones y especificadores de lenguaje, Shaw era el sistema. programador, y Simon tenía el trabajo de programador-usuario de aplicaciones.

El código incluye características destinadas a ayudar con programas que realizan acciones simples de resolución de problemas, como listas, asignación de memoria dinámica , tipos de datos , recursividad , funciones como argumentos, generadores y multitarea cooperativa . IPL inventó el concepto de procesamiento de listas, aunque en un estilo de lenguaje ensamblador .

Conceptos básicos de IPL

Una computadora IPL tiene:

  1. Un conjunto de símbolos . Todos los símbolos son direcciones y celdas de nombres. A diferencia de los símbolos de idiomas posteriores, los símbolos constan de un carácter seguido de un número y se escriben H1, A29, 9–7, 9–100.
    1. Los nombres de celda que comienzan con una letra son regionales y son direcciones absolutas.
    2. Los nombres de celda que comienzan con "9-" son locales y tienen significado dentro del contexto de una lista única. El 9-1 de una lista es independiente del 9-1 de otra lista.
    3. Otros símbolos (por ejemplo, números puros) son internos .
  2. Un conjunto de células . Las listas se elaboran a partir de varias celdas que incluyen referencias mutuas. Las celdas tienen varios campos:
    1. P, un campo de 3 bits usado para un código de operación cuando la celda se usa como instrucción y no se usa cuando la celda es de datos.
    2. Q, un campo de 3 valores que se usa como referencia indirecta cuando la celda se usa como instrucción y no se usa cuando la celda es de datos.
    3. SYMB, un símbolo utilizado como valor en la celda.
  3. Un conjunto de procesos primitivos , que en los lenguajes modernos se denominarían funciones primitivas .

La estructura de datos de IPL es la lista, pero las listas son estructuras más complejas que en muchos lenguajes. Una lista consta de una secuencia de símbolos enlazados individualmente, como podría esperarse, además de algunas listas de descripción , que son listas subsidiarias enlazadas individualmente interpretadas como nombres y valores de atributos alternos. IPL proporciona primitivas para acceder y modificar el valor del atributo por nombre. Las listas de descripción reciben nombres locales (del formulario 9-1). Entonces, una lista denominada L1 que contenga los símbolos S4 y S5, y que se describe asociando el valor V1 al atributo A1 y V2 a A2, se almacenaría de la siguiente manera. 0 indica el final de una lista; los nombres de celda 100, 101, etc. son símbolos internos generados automáticamente cuyos valores son irrelevantes. Estas células pueden estar dispersas por la memoria; sólo L1, que utiliza un nombre regional que debe ser conocido globalmente, debe residir en un lugar específico.

IPL es un lenguaje ensamblador para manipular listas. Tiene algunas celdas que se utilizan como registros para fines especiales. H1, por ejemplo, es el contador del programa. El campo SYMB de H1 es el nombre de la instrucción actual. Sin embargo, H1 se interpreta como una lista; el ENLACE de H1 es, en términos modernos, un puntero al comienzo de la pila de llamadas. Por ejemplo, las llamadas a subrutinas envían el SYMB de H1 a esta pila.

H2 es la lista libre. Procedimientos que necesitan asignar celdas de memoria fuera de H2; Los procedimientos que finalizan con la memoria la colocan en H2. Al ingresar a una función, la lista de parámetros se proporciona en H0; al salir, los resultados deben devolverse en H0. Muchos procedimientos devuelven un resultado booleano que indica éxito o fracaso, que se coloca en H5. Diez celdas, W0-W9, están reservadas para almacenamiento de trabajo público. Los procedimientos están "moralmente obligados" (para citar el artículo del CACM) a guardar y restaurar los valores de estas celdas.

Hay ocho instrucciones, basadas en los valores de P: llamada a subrutina, empujar/pop S a H0; empujar/hacer aparecer el símbolo en S en la lista adjunta a S; copiar el valor a S; rama condicional. En estas instrucciones, S es el objetivo. S es el valor del campo SYMB si Q=0, el símbolo en la celda nombrada por SYMB si Q=1, o el símbolo en la celda nombrada por el símbolo en la celda nombrada por SYMB si Q=2. En todos los casos, excepto en la rama condicional, el campo ENLACE de la celda indica qué instrucción ejecutar a continuación.

IPL tiene una biblioteca de unas 150 operaciones básicas. Estos incluyen operaciones tales como:

Historia

La IPL se utilizó por primera vez para demostrar que los teoremas de Principia Mathematica , que Bertrand Russell y Alfred North Whitehead demostraron laboriosamente a mano, en realidad podían demostrarse mediante computación . Según la autobiografía de Simon, Models of My Life , esta aplicación se desarrolló originalmente primero mediante simulación manual, utilizando a sus hijos como elementos informáticos, mientras escribía y sostenía tarjetas de notas como registros que contenían las variables de estado del programa.

IPL se utilizó para implementar varios de los primeros programas de inteligencia artificial , también de los mismos autores: Logic Theorist (1956), General Problem Solver (1957) y su programa de ajedrez informático NSS (1958).

Se crearon varias versiones de IPL: IPL-I (nunca implementada), IPL-II (1957 para JOHNNIAC ), IPL-III (existió brevemente), IPL-IV, IPL-V (1958, para IBM 650 , IBM 704 , IBM 7090 , Philco modelo 212, muchos otros ampliamente utilizados). IPL-VI fue una propuesta para un hardware IPL. [1] [2]

Se desarrolló un coprocesador “IPL-VC” para el CDC 3600 en las Bibliotecas Nacionales de Argonne que podía ejecutar comandos IPL-V. [3] [4] Se utilizó para implementar otro programa de juego de damas. [5] Esta implementación de hardware no mejoró los tiempos de ejecución lo suficiente como para "competir favorablemente con un lenguaje más directamente orientado a la estructura de las máquinas actuales". [6]

IPL pronto fue desplazada por Lisp , que tenía características mucho más poderosas, una sintaxis más simple y el beneficio de la recolección automática de basura .

Legado a la programación informática

Podría decirse que IPL introdujo varias características del lenguaje de programación:

Muchas de estas características se generalizaron, racionalizaron e incorporaron a Lisp [7] y de allí a muchos otros lenguajes de programación durante las siguientes décadas.

Referencias

  1. ^ Shaw y col. 1958.
  2. ^ Sammet 1969, pag. 389.
  3. ^ Hodges 1964.
  4. ^ Sammet 1969, pag. 393–394.
  5. ^ Cowell y Reed 1965.
  6. ^ Carson y Robinson 1966, pág. 5.
  7. ^ John McCarthy (1979) Historia de Lisp "Prehistoria de LISP: verano de 1956 a verano de 1958".

Fuentes

Otras lecturas

enlaces externos