Идентификатор (язык программирования)
Irvine Dataflow ( Id общего назначения ) — язык параллельного программирования , созданный в Калифорнийском университете в Ирвине в 1975 году. [1] Арвинд . и К.П. Гостелов [2] Арвинд продолжал работать с Id в Массачусетском технологическом институте до 1990-х годов.
Основное подмножество Id — это чисто функциональный язык программирования с нестрогой семантикой . Возможности включают в себя: функции высшего порядка , систему полиморфных типов со статической проверкой типов в стиле Милнера с перегрузкой, определяемые пользователем типы и сопоставление с образцом, а также префиксные и инфиксные операторы. Это привело к развитию pH, параллельного диалекта Haskell .
Программы id являются мелкозернистыми и неявно параллельными .
Абстракция переменных синхронизации MVar в Haskell основана на M-структурах Id. [3]
Примеры
[ редактировать ]Id поддерживает алгебраические типы данных , аналогичные ML, Haskell или Miranda:
type bool = False | True;
Типы выводятся по умолчанию, но могут быть аннотированы с помощью typeof
декларация. Переменные типа используют синтаксис *0
, *1
, и т. д.
typeof id = *0 -> *0; def id x = x;
Функция, которая использует понимание массива для вычисления первого Числа Фибоначчи :
typeof fib_array = int -> (array int); def fib_array n = { A = { array (0,n) of | [0] = 0 | [1] = 1 | [i] = A[i-1] + A[i-2] || i <- 2 to n } In A };
Обратите внимание на использование нестрогой оценки в рекурсивном определении массива. A
.
Мягкая стратегия оценки Id по умолчанию допускает циклические структуры данных. Следующий код создает циклический список, используя оператор cons :
.
def cycle x = { A = x : A In A };
Однако, чтобы избежать бесконечного построения действительно бесконечных структур, явные задержки должны быть аннотированы с помощью #
:
def count_up_from x = x :# count_up_from (x + 1);
Реализации
[ редактировать ]- pHжидкость
- Система pHluid представляла собой исследовательскую реализацию языка программирования Id с будущими планами создания интерфейса для pH, параллельного диалекта языка программирования Haskell, реализованного в Кембриджской исследовательской лаборатории Digital. и некоммерческое использование. Он ориентирован на стандартное оборудование рабочих станций Unix.
Ссылки
[ редактировать ]- ^ Шарп, Дж. А. (1992). Вычисление потоков данных: теория и практика . Интеллект, Лимитед. п. 125. ИСБН 9780893919214 . Проверено 2 декабря 2014 г.
- ^ Арвинд; Гостелоу, Ким П.; Плуфф, Уил (1978). «(Предварительный) отчет об идентификаторе: асинхронный язык программирования и вычислительная машина (пересмотренный)» . Технический отчет TR-114, Департамент информатики и компьютерных наук, Калифорнийский университет, Ирвайн .
- ^ «Параллельный Haskell». Пейтон-Джонс, Гордон и Финн. ПОПЛ 1996.
Внешние ссылки
[ редактировать ]- Справочное руководство по языку ID , Ришиюр С. Нихил, 1991.
- «Язык асинхронного программирования для большой многопроцессорной машины», Арвинд и др., TR114a, отдел ISC, Калифорнийский университет в Ирвайне, декабрь 1978 г.