Интернет магазин китайских планшетных компьютеров |
|
Компьютеры - 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 потоков . Просмотров: 3892
|