Язык обработки информации

редактировать
Язык обработки информации (IPL)
Парадигма Сборка
Разработано Алленом Ньюэллом, Клиффом Шоу, Гербертом А. Саймоном
Разработчиком Алленом Ньюэллом, Клиффом Шоу, Гербертом А. Саймоном
Впервые появилось1956
Стабильный выпуск IPL-VI
OS Кросс-платформенный : JOHNNIAC, IBM 650, IBM 704, IBM 7090
Под влиянием
Lisp

Язык обработки информации (IPL ) - это язык программирования, созданный Аллен Ньюэлл, Клифф Шоу и Герберт А. Саймон в RAND Corporation и Технологический институт Карнеги о 1956. Ньюэлл работал программистом приложений-спецификаторов языка, Шоу был системным программистом, а Саймон работал программистом-пользователем приложений.

Код включает функции, предназначенные для помощи в программах, которые выполняют простые действия по решению проблем, такие как списки, распределение динамической памяти, типы данных, рекурсия, функции как аргументы, генераторы и совместная многозадачность. IPL изобрела концепцию обработки списков, хотя и в стиле языка ассемблера.

Содержание
  • 1 Основы IPL
  • 2 История
  • 3 Унаследованные от компьютерного программирования
  • 4 Ссылки
  • 5 Источники
  • 6 Дополнительная литература
  • 7 Внешние ссылки
Основы IPL

Компьютер IPL имеет:

  1. Набор символов. Все символы представляют собой адреса и ячейки имени. В отличие от символов в более поздних языках, символы состоят из символа, за которым следует число, и записываются как H1, A29, 9-7, 9-100.
    1. Имена ячеек, начинающиеся с буквы, являются региональными и являются абсолютными адресами.
    2. Имена ячеек, начинающиеся с «9-», являются локальными и имеют смысл в контексте одного списка. 9-1 одного списка не зависят от 9-1 другого списка.
    3. Другие символы (например, чистые числа) являются внутренними.
  2. Набор ячеек. Списки составляются из нескольких ячеек, включая взаимные ссылки. Ячейки имеют несколько полей:
    1. P, 3-битное поле, используемое для кода операции, когда ячейка используется в качестве инструкции, и неиспользуемое, когда ячейка является данными.
    2. Q, 3 -значное поле, используемое для косвенной ссылки, когда ячейка используется в качестве инструкции, и не используется, когда ячейка является данными.
    3. SYMB, символ, используемый в качестве значения в ячейке.
  3. Набор примитивных процессов, которые в современных языках называются примитивными функциями.

Структура данных IPL - это список, но списки представляют собой более сложные структуры, чем во многих языках. Список состоит из односвязной последовательности символов, как и следовало ожидать, плюс некоторые списки описаний, которые являются вспомогательными односвязными списками, интерпретируемыми как чередующиеся имена и значения атрибутов. IPL предоставляет примитивы для доступа и изменения значения атрибута по имени. В описательных списках даются местные названия (в форме 9-1). Таким образом, список с именем L1, содержащий символы S4 и S5 и описанный путем связывания значения V1 с атрибутом A1 и V2 с атрибутом A2, будет сохранен следующим образом. 0 указывает конец списка; имена ячеек 100, 101 и т. д. являются автоматически сгенерированными внутренними символами, значения которых не имеют значения. Эти клетки могут быть разбросаны по памяти; только L1, который использует региональное имя, которое должно быть известно во всем мире, должен находиться в определенном месте.

Пример структуры списка IPL-V
ИмяSYMBLINK
L19-1100
100S4101
101S50
9-10200
200A1201
201V1202
202A2203
203V20

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, возможно, представила несколько функций языка программирования:

  • Управление списками - но только списки атомов, а не общие списки.
  • Списки свойств - но только когда они прикреплены к другим спискам. 66>Функции высшего порядка - за исключением того, что программирование на ассемблере всегда позволяло вычислять адреса вызываемых функций; IPL была ранней попыткой обобщить это свойство языка ассемблера и принципиальным образом
  • Вычисления с символами, за исключением того, что символы представляют собой букву + цифру, а не полные слова.
  • Виртуальная машина.

Многие из этих возможностей были обобщены, рационализированы и включены в Лисп, а затем и во многие другие языки программирования в течение следующих нескольких десятилетий.

Ссылки
Источники
  • Эта статья основана на материалах, взятых из Free On-line Dictionary of Computing до 1 ноября 2008 г. и включенных в раздел «перелицензирование "условия GFDL версии 1.3 или новее.
Дополнительная литература
  • Newell, A. and FC Шоу. «Программирование машины логической теории». Февраль 1957. Труды Western Joint Computer Conference, стр. 230–240.
  • Ньюэлл, Аллен и Фред М. Тонг. 1960. "Введение в язык обработки информации V." CACM 3 (4): 205-211.
  • Ньюэлл, Аллен. 1964. Руководство по языку обработки информации-V; Второе издание. Rand Corporation [Аллен Ньюэлл], Энглвуд Клиффс, Нью-Джерси: Прентис-Холл.
  • Сэмюэл, Артур Л.: Программирование компьютеров для игр. В кн.: Достижения в области компьютеров, т. 1, 1960, pp 165-192 (особенно: 171-175).
Внешние ссылки
Последняя правка сделана 2021-05-24 14:44:02
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте