Information Processing Language ( 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 de especificación de lenguaje, Shaw era el sistema programador, y Simon tenía el trabajo de programador-usuario de aplicaciones.
Paradigma | Montaje |
---|---|
Diseñada por | Allen Newell , Cliff Shaw y Herbert A. Simon |
Desarrollador | Allen Newell, Cliff Shaw y Herbert A. Simon |
Apareció por primera vez | 1956 |
Lanzamiento estable | IPL-VI |
SO | Multiplataforma : JOHNNIAC , IBM 650 , IBM 704 , IBM 7090 |
Influenciado | |
Ceceo |
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:
- Un conjunto de símbolos . Todos los símbolos son direcciones y celdas de nombres. A diferencia de los símbolos en idiomas posteriores, los símbolos consisten en un carácter seguido de un número y se escriben H1, A29, 9-7, 9-100.
- Los nombres de celda que comienzan con una letra son regionales y son direcciones absolutas.
- Los nombres de celda que comienzan con "9-" son locales y son significativos dentro del contexto de una sola lista. El 9-1 de una lista es independiente del 9-1 de otra.
- Otros símbolos (por ejemplo, números puros) son internos .
- Un conjunto de celdas . Las listas se componen de varias celdas que incluyen referencias mutuas. Las celdas tienen varios campos:
- P, un campo de 3 bits que se usa 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.
- 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.
- SYMB, un símbolo utilizado como valor en la celda.
- Conjunto de procesos primitivos , que se denominarían funciones primitivas en los lenguajes modernos.
La estructura de datos de IPL es la lista, pero las listas son estructuras más complejas que en muchos idiomas. 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 valores y nombres de atributos alternos. IPL proporciona primitivas para acceder y cambiar el valor del atributo por nombre. Las listas de descripción reciben nombres locales (del formulario 9-1). Por lo tanto, una lista denominada L1 que contiene los símbolos S4 y S5, y que se describe asociando el valor V1 al atributo A1 y V2 al 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 esparcidas por la memoria; solo L1, que utiliza un nombre regional que debe ser conocido globalmente, debe residir en un lugar específico.
Nombre | SYMB | ENLACE |
---|---|---|
L1 | 9-1 | 100 |
100 | S4 | 101 |
101 | S5 | 0 |
9-1 | 0 | 200 |
200 | A1 | 201 |
201 | V1 | 202 |
202 | A2 | 203 |
203 | V2 | 0 |
IPL es un lenguaje ensamblador para manipular listas. Tiene algunas celdas que se utilizan como registros de propósito especial. 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 LINK de H1 es, en términos modernos, un puntero al comienzo de la pila de llamadas. Por ejemplo, las llamadas a subrutinas empujan el SYMB de H1 a esta pila.
H2 es la lista libre. Procedimientos que necesitan asignar celdas de captura de memoria fuera de H2; los procedimientos que se terminan con la memoria lo ponen en H2. Al ingresar a una función, la lista de parámetros se da 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 MCCA) para guardar y restaurar los valores de estas celdas.
Hay ocho instrucciones, basadas en los valores de P: llamada de subrutina, empujar / hacer estallar S a H0; presione / haga estallar el símbolo en S en la lista adjunta a S; copiar 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 LINK de la celda indica qué instrucción ejecutar a continuación.
IPL tiene una biblioteca de unas 150 operaciones básicas. Estos incluyen operaciones como:
- Prueba de símbolos para la igualdad
- Buscar, configurar o borrar un atributo de una lista
- ubica el siguiente símbolo en una lista; insertar un símbolo en una lista; borrar o copiar una lista completa.
- Operaciones aritméticas (sobre nombres de símbolos).
- Manipulación de símbolos; por ejemplo, pruebe si un símbolo denota un número entero o haga que un símbolo sea local.
- Operaciones de E / S
- "generadores", que corresponden a iteradores y filtros en la programación funcional. Por ejemplo, un generador puede aceptar una lista de números y producir la lista de sus cuadrados. Los generadores podrían aceptar funciones adecuadamente diseñadas — estrictamente, las direcciones de código de funciones adecuadamente diseñadas — como argumentos.
Historia
La IPL se utilizó por primera vez para demostrar que los teoremas de Principia Mathematica que fueron probados laboriosamente a mano por Bertrand Russell y Alfred North Whitehead , de hecho, podían probarse mediante cálculo . Según la autobiografía de Simon, Modelos de mi vida , 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.
La IPL se utilizó para implementar varios programas de inteligencia artificial tempranos , también de los mismos autores: The Logic Theorist (1956), General Problem Solver (1957) y su programa informático de ajedrez NSS (1958).
Se crearon varias versiones de IPL: IPL-I (nunca implementado), 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, muy utilizado), IPL-VI.
Sin embargo, el lenguaje pronto fue reemplazado 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 de la programación informática
Podría decirse que IPL introdujo varias características del lenguaje de programación:
- Manipulación de listas, pero solo listas de átomos, no listas generales.
- Listas de propiedades, pero solo cuando se adjuntan a otras listas.
- Funciones de orden superior, excepto que la programación en ensamblador siempre ha sido capaz de calcular con direcciones de funciones para llamar; IPL fue un intento temprano de generalizar esta propiedad del lenguaje ensamblador y de una manera basada en principios
- Cálculo con símbolos, excepto que los símbolos son letra + número, no palabras completas.
- Máquina virtual .
Muchas de estas características se generalizaron, racionalizaron e incorporaron en Lisp [1] y desde allí en muchos otros lenguajes de programación durante las siguientes décadas.
Referencias
Fuentes
- Este artículo se basa en material extraído del Diccionario gratuito de informática en línea antes del 1 de noviembre de 2008 e incorporado bajo los términos de "renovación de licencias" de la GFDL , versión 1.3 o posterior.
Otras lecturas
- Newell, A. y FC Shaw. "Programación de la máquina de teoría lógica". Febrero de 1957. Actas de la Western Joint Computer Conference, págs. 230-240.
- Newell, Allen y Fred M. Tonge. 1960. "Introducción al lenguaje de procesamiento de información V." CACM 3 (4): 205-211.
- Newell, Allen. 1964. Manual del lenguaje de procesamiento de información-V; Segunda edición . Rand Corporation [Allen Newell], Englewood Cliffs, Nueva Jersey: Prentice-Hall.
- Samuel, Arthur L .: Programación de computadoras para jugar. En: Advances in Computers, vol. 1, 1960, págs. 165-192 (especialmente: 171-175).