UNITY (язык программирования) - Википедия - UNITY (programming language)

ЕДИНСТВО это язык программирования, созданный К. Мани Чанди и Джаядев Мишра для их книги Разработка параллельных программ: основа. Это теоретический язык, который фокусируется на Какие, вместо куда, когда или же как. В языке нет метода управление потоком, и программа заявления бежать в недетерминированный путь до тех пор, пока операторы не перестанут вызывать изменения во время выполнения. Это позволяет программам работать бесконечно долго, таким как автопилот или системы безопасности электростанции, а также программам, которые обычно завершаются (которые здесь сходятся к фиксированная точка ).

Описание

Все заявления задания, и разделены #. Заявление может состоять из нескольких присваиваний в форме a, b, c: = x, y, z, или же а: = х || b: = y || c: = z. Вы также можете количественный список отчетов, <# х, у: выражение :: утверждение>, где x и y выбираются случайным образом среди значений, удовлетворяющих выражение. А количественное присвоение похож. В <|| х, у: выражение :: утверждение >, утверждение выполняется одновременно для все пара Икс и у это удовлетворяет выражение.

Примеры

Пузырьковая сортировка

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

Программа пузырьковortdeclare n: integer, A: array [0..n-1] of integerinitially n = 20 # <|| i: 0 <= i и i  assign <# k: 0 <= k <2 :: <|| i: i% 2 = k и 0 <= i  A [ i + 1]>> конец

Ранг-сортировка

Вы можете отсортировать время с рангом-сортировкой. Тебе нужно процессоры, и делаем работай.

Ранги программыortdeclare n: integer, A, R: array [0..n-1] of integerinitially n = 15 # <|| i: 0 <= i  assign <|| i: 0 <= i > # <|| i: 0 <= i  конец

Алгоритм Флойда-Уоршолла

С использованием Алгоритм Флойда-Уоршолла все пары кратчайший путь алгоритма, мы итеративно включаем промежуточные узлы и получаем время, используя процессоры и работай.

Программа кратчайшего пути объявляет n, k: целое число, D: массив [0..n-1, 0..n-1] целочисленных изначально n = 10 # k = 0 # <|| i, j: 0 <= i  assign <|| i, j: 0 <= i  || k: = k + 1, если k 

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

Программа shorttestpath2 объявляет n: целое число, D: массив [0..n-1, 0..n-1] целочисленных исходных чисел n = 10 # <|| i, j: 0 <= i  assign <|| i, j: 0 <= i )> конец

После раунда , D [i, j] содержит длину кратчайшего пути из к длины . В следующем раунде длины , и так далее.

Рекомендации

  • К. Мани Чанди и Джаядев Мишра (1988) Разработка параллельных программ: основа.