Параллельные вычисления. Баканов В.М. - 107 стр.

UptoLike

Составители: 

- 107 -
4.3.2 Автоматическое распараллеливание с помощью Т-системы
Разработка технологии автоматического динамического распараллелива-
ния программ (названнаяТ-система’) ведется с конца 80-х г.г. в Институте
программных средств РАН (г. Переславль-Залесский). В целом стиль Т-
программирования близок традиционным языкам программирования
(Fortran, C/C++), причем явное указание на параллельность выполнения бло-
ков
программы в тексте отсутствует.
Базовые принципы Т-системы основаны на результатах общей теории
функционального программирования (ФП). Теоретические основы импера-
тивного (операторного) программирования были заложены в 1930-х г.г.
(Алан Тьюринг, Джон фон Нейман), положенная в основу функционального
подхода теория родилась в 1920
÷
1930-х г.г. (комбинаторная логика - Мозес
Шенфинкель, Хаскелл Карри, лямбда-исчисление - Алонзо Черч, 1936).
Математические функции выражают связь между параметрами (входом) и
результатом (выходом) некоторого процесса. Вычислениетакже процесс,
имеющий вход и выход, при этом функция является вполне подходящим и
адекватным средством описания вычислений. Именно этот простой принцип
положен в основу функциональной парадигмы и функционального стиля
программирования. Функциональная программа представляет собой набор
определений функций. Функции определяются через другие функции или
рекурсивно через самих себя. В процессе выполнения программы функции
получают параметры, вычисляют и возвращают результат, в случае необхо-
димости вычисляя значения других функций. Программируя на функцио-
нальном языке,
программист не должен описывать порядок вычислений - ему
необходимо лишь описать желаемый результат в виде системы функций.
Функции в ФП не имеют побочных эффектов. Обращение к функции не
вызывает иного эффекта, кроме вычисления результата (в этом смысле при-
вычные вызовы традиционных языков программирования суть процедуры, а
не функции в понятии ФП
); это устраняет серьезный источник ошибок и де-
лает порядок выполнения функций несущественным (так как побочные эф-
фекты не могут изменять значение выражения, оно может быть вычислено в
любое время).
Теория функционального программирования долгое время оставалась
гадким утенком’ (в противоположность идеям императивного программиро-
вания) до момента разработки первого почти функционального языка
про-
граммирования Lisp (Джон МакКарти, 1950). К началу 1980-х г.г. появились
ФП-языки ML, Scheme, Hope, Miranda, Clean и др.; одной из популярных в
настоящее время реализаций ФП-подхода является язык Haskell (Хаскелл
Карри, начало 1990-х г.г.,
http://www.haskell.org
).
                                   - 107 -



  4.3.2 Автоматическое распараллеливание с помощью Т-системы

   Разработка технологии автоматического динамического распараллелива-
ния программ (названная ‘Т-система’) ведется с конца 80-х г.г. в Институте
программных средств РАН (г. Переславль-Залесский). В целом стиль Т-
программирования близок традиционным языкам программирования
(Fortran, C/C++), причем явное указание на параллельность выполнения бло-
ков программы в тексте отсутствует.
   Базовые принципы Т-системы основаны на результатах общей теории
функционального программирования (ФП). Теоретические основы импера-
тивного (операторного) программирования были заложены в 1930-х г.г.
(Алан Тьюринг, Джон фон Нейман), положенная в основу функционального
подхода теория родилась в 1920 ÷ 1930-х г.г. (комбинаторная логика - Мозес
Шенфинкель, Хаскелл Карри, лямбда-исчисление - Алонзо Черч, 1936).
   Математические функции выражают связь между параметрами (входом) и
результатом (выходом) некоторого процесса. Вычисление – также процесс,
имеющий вход и выход, при этом функция является вполне подходящим и
адекватным средством описания вычислений. Именно этот простой принцип
положен в основу функциональной парадигмы и функционального стиля
программирования. Функциональная программа представляет собой набор
определений функций. Функции определяются через другие функции или
рекурсивно через самих себя. В процессе выполнения программы функции
получают параметры, вычисляют и возвращают результат, в случае необхо-
димости вычисляя значения других функций. Программируя на функцио-
нальном языке, программист не должен описывать порядок вычислений - ему
необходимо лишь описать желаемый результат в виде системы функций.
   Функции в ФП не имеют побочных эффектов. Обращение к функции не
вызывает иного эффекта, кроме вычисления результата (в этом смысле при-
вычные вызовы традиционных языков программирования суть процедуры, а
не функции в понятии ФП); это устраняет серьезный источник ошибок и де-
лает порядок выполнения функций несущественным (так как побочные эф-
фекты не могут изменять значение выражения, оно может быть вычислено в
любое время).
   Теория функционального программирования долгое время оставалась
‘гадким утенком’ (в противоположность идеям императивного программиро-
вания) до момента разработки первого почти функционального языка про-
граммирования Lisp (Джон МакКарти, 1950). К началу 1980-х г.г. появились
ФП-языки ML, Scheme, Hope, Miranda, Clean и др.; одной из популярных в
настоящее время реализаций ФП-подхода является язык Haskell (Хаскелл
Карри, начало 1990-х г.г., http://www.haskell.org).