Интернет магазин китайских планшетных компьютеров |
|
Компьютеры - Oz (язык программирования) - Обзор языка30 марта 2011Оглавление: 1. Oz (язык программирования) 2. Особенности языка 3. Обзор языка 4. Примеры программ на языке Oz Структуры данныхЯдро языка образовано несколькими основными структурами данных, но может быть расширено с помощью т.наз. синтаксического сахара. Основные структуры данных:
'|'))) 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 потоков . Просмотров: 4366
|