Интернет магазин китайских планшетных компьютеров



Компьютеры - Oz (язык программирования) - Обзор языка

30 марта 2011


Оглавление:
1. Oz (язык программирования)
2. Особенности языка
3. Обзор языка
4. Примеры программ на языке Oz



Структуры данных

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

Основные структуры данных:

  • Числа
  • Записи: circle
  • Списки:
'|')))
2|)) % синтаксический сахар
2|4|6|8|nil % ещё более краткая запись
 % эффективное применение синтаксического сахара для реализации лаконичного синтаксиса

Эти значения являются константными сущностями первого рода, типизация при этом динамическая.

Функции

Функции являются сущностями первого рода, что позволяет применять парадигму функционального программирования:

fun {Fact N} % факториал
   if N =< 0 then 1 else N*{Fact N-1} end
end

fun {Comb N K} % количество сочетаний
   {Fact N} div % целые числа могут иметь сколь угодно большое значение
end

fun {SumList List} % сумма элементов списка
   case List of nil then 0
   H|T then H+{SumList T} % сопоставление с образцом для списка
   end
end

Потоковые переменные и декларативный параллелизм

Если программа обнаруживает несвязанную переменную, она ожидает до тех пор, пока переменной будет присвоено значение:

thread 
   Z = X+Y     % ожидает до тех пор, пока переменные X и Y не получат значения
   {Browse Z}  % отображает значение Z
end
thread X = 40 end
thread Y = 2 end

Изменить значение потоковой переменной, с которой связано значение, невозможно:

X = 1
X = 2 % error

Потоковые переменные позволяет легко создавать агентов, которые выполняются в параллельных потоках:

fun {Ints N Max}
   if N == Max then nil
   else 
      {Delay 1000}
      N|{Ints N+1 Max}
   end
end

fun {Sum S Stream}
   case Stream of nil then S
   H|T then S|{Sum H+S T} end
end

local X Y in
   thread X = {Ints 0 1000} end
   thread Y = {Sum 0 X} end
   {Browse Y}
end

Благодаря тому, как работают потоковые переменные, в любом месте программы можно использовать потоки вычисления, которые гарантированно вернут один и тот же результат, что делает параллельное программирование простым. Вместе с тем потоки расходуют очень мало системных ресурсов: как и в Эрланге, одновременно можно запустить 100 000 потоков .



Просмотров: 3765


<<< Microsoft Small Basic
Scheme >>>