Парадигма | Сборка |
---|---|
Разработано | Алленом Ньюэллом, Клиффом Шоу, Гербертом А. Саймоном |
Разработчиком | Алленом Ньюэллом, Клиффом Шоу, Гербертом А. Саймоном |
Впервые появилось | 1956 |
Стабильный выпуск | IPL-VI |
OS | Кросс-платформенный : JOHNNIAC, IBM 650, IBM 704, IBM 7090 |
Под влиянием | |
Lisp |
Язык обработки информации (IPL ) - это язык программирования, созданный Аллен Ньюэлл, Клифф Шоу и Герберт А. Саймон в RAND Corporation и Технологический институт Карнеги о 1956. Ньюэлл работал программистом приложений-спецификаторов языка, Шоу был системным программистом, а Саймон работал программистом-пользователем приложений.
Код включает функции, предназначенные для помощи в программах, которые выполняют простые действия по решению проблем, такие как списки, распределение динамической памяти, типы данных, рекурсия, функции как аргументы, генераторы и совместная многозадачность. IPL изобрела концепцию обработки списков, хотя и в стиле языка ассемблера.
Компьютер IPL имеет:
Структура данных IPL - это список, но списки представляют собой более сложные структуры, чем во многих языках. Список состоит из односвязной последовательности символов, как и следовало ожидать, плюс некоторые списки описаний, которые являются вспомогательными односвязными списками, интерпретируемыми как чередующиеся имена и значения атрибутов. IPL предоставляет примитивы для доступа и изменения значения атрибута по имени. В описательных списках даются местные названия (в форме 9-1). Таким образом, список с именем L1, содержащий символы S4 и S5 и описанный путем связывания значения V1 с атрибутом A1 и V2 с атрибутом A2, будет сохранен следующим образом. 0 указывает конец списка; имена ячеек 100, 101 и т. д. являются автоматически сгенерированными внутренними символами, значения которых не имеют значения. Эти клетки могут быть разбросаны по памяти; только L1, который использует региональное имя, которое должно быть известно во всем мире, должен находиться в определенном месте.
Имя | SYMB | LINK |
---|---|---|
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 - это сборка язык для работы со списками. В нем есть несколько ячеек, которые используются в качестве регистров специального назначения. Например, H1 - это счетчик программ. Поле SYMB в H1 - это имя текущей инструкции. Однако H1 интерпретируется как список; ССЫЛКА H1, говоря современным языком, является указателем на начало стека вызовов. Например, вызовы подпрограммы помещают в этот стек SYMB H1.
H2 - список свободных. Процедуры, которым необходимо выделить ячейки захвата памяти из H2; завершенные с памятью процедуры помещают его на Н2. При входе в функцию список параметров задается в H0; при выходе результаты должны быть возвращены в H0. Многие процедуры возвращают логический результат, указывающий на успех или неудачу, который помещается в H5. Десять ячеек, W0-W9, зарезервированы для общественной рабочей памяти. Процедуры «морально связаны» (если цитировать статью CACM) сохранять и восстанавливать значения этих ячеек.
Имеется восемь инструкций, основанных на значениях P: вызов подпрограммы, нажатие / выталкивание S в H0; нажмите / вставьте символ в S в список, прикрепленный к S; копировать значение в S; условная ветвь. В этих инструкциях S - это цель. S является либо значением поля SYMB, если Q = 0, либо символом в ячейке, названной SYMB, если Q = 1, либо символом в ячейке, названной символом в ячейке, названной SYMB, если Q = 2. Во всех случаях, кроме условного перехода, поле LINK ячейки сообщает, какую инструкцию выполнить следующей.
IPL имеет библиотеку, содержащую около 150 основных операций. К ним относятся такие операции, как:
IPL была впервые использована, чтобы продемонстрировать теоремы из Principia Mathematica, которые были тщательно проверены вручную Бертраном Расселом и Альфредом Норт Уайтхедом, на самом деле могут быть подтверждены вычислением. Согласно автобиографии Саймона «Модели моей жизни», это приложение изначально было разработано путем моделирования вручную, с использованием его детей в качестве вычислительных элементов, при этом они записывали и держали карточки для заметок в качестве регистров, которые содержали переменные состояния программы.
IPL использовался для реализации нескольких ранних программ искусственного интеллекта, также тех же авторов: Logic Theorist (1956), General Problem Solver (1957), и их программа компьютерные шахматы (1958).
Было создано несколько версий IPL: IPL-I (не реализовано), IPL-II (1957 для JOHNNIAC ), IPL-III (существовала недолго), IPL-IV, IPL- V (1958, для IBM 650, IBM 704, IBM 7090, многие другие. Широко используется), IPL-VI.
Однако вскоре язык был вытеснен Lisp, который имел гораздо более мощные функции, более простой синтаксис и преимущества автоматической сборки мусора.
IPL, возможно, представила несколько функций языка программирования:
Многие из этих возможностей были обобщены, рационализированы и включены в Лисп, а затем и во многие другие языки программирования в течение следующих нескольких десятилетий.