На правах рекламы:
ISSN 0236-235X (P)
ISSN 2311-2735 (E)

Авторитетность издания

ВАК - К1
RSCI, ядро РИНЦ

Добавить в закладки

Следующий номер на сайте

2
Ожидается:
16 Июня 2024

В Национальном исследовательском университете «Московский энергетический институт» разработаны методы и алгоритм статического (до выполнения программы) контроля типов функциональных программ на созданном языке функционального параллельного программирования FPTL.

10.07.2014

Язык FPTL (functional parallel typified language) создавался с целью эффективного параллельного выполнения функциональных программ на компьютерных системах с общей памятью. В отличие от известных языков функционального программирования, таких как LISP, ML], Haskell, которые в большей степени основаны на лямбда-исчислении, FPTL базируется на модели построения новых функций путем применения операций композиции функций и общей формы их задания в виде систем функциональных уравнений. Язык рекурсивных функций – очевидный пример такого подхода к заданию вычислимых функций.

 Кажущееся преимущество лямбда-основанных функциональных языков, обычно формулируемое как единообразный способ задания функций высших порядков, компенсируется в FPTL использованием в задании функций функциональных параметров. Этот традиционный способ повышения порядка функции допускает возможность в подставленной вместо функционального параметра функции снова использовать функциональные параметры, увеличивая таким образом функциональную иерархию в построении функций.

Однако FPTL имеет ряд преимуществ перед основанными на лямбда-исчислении функциональными языками. Наиболее важными на практике являются следующие его особенности:

- очевидная близость используемой нотации к традиционной математической форме задания функций;

- алгебраизированная форма задания функции, позволяющая извлекать ее композиционную структуру (схему функции), что существенно улучшает проектирование, анализ и эквивалентные преобразования функций;

- возможность явного отражения и варьирования параллелизма в функциональной программе, поскольку три из четырех операций композиции являются параллельными;

- простой алгоритм обнаружения параллелизма при выполнении, что позволяет исключить необходимость явного указания с помощью соответствующих процессных примитивов (как, например, в Haskell), какие фрагменты программы могут выполняться параллельно;

- простота в освоении; язык позволяет широко использовать библиотеки, как правило, оптимизированных функций, вводить абстрактные типы данных, использовать разработанные для него приложения для оценки сложности параллельного выполнения программы, приведения ее к оптимальной параллельной форме, анализа структурной сложности программ и др.

Одна из последних реализаций языка FPTL была недостаточно эффективной, так как выполнялась на компьютерах с распределенной памятью (многоядерные компьютеры в то время еще не были широко распространены). Реализация FPTL на многоядерных компьютерах, напротив, оказалась успешной. Это подтверждают приведенные в экспериментальные данные ускорения FPTL-программ.

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

FPTL – строго типизированный язык, однако контроль типовой правильности (корректности применения функций к их аргументам), который осуществляется в данной реализации динамически, то есть в процессе выполнения программы, увеличивает время ее выполнения на величину, составляющую до 30 % от времени выполнения программы. Заметим, что продвинутые механизмы контроля типов присутствуют в компиляторах и интерпретаторах многих функциональных языков, включая компилятор языка Haskell GHC.

Подробное описание дается в статье «Система типового контроля программ на языке функционального программирования fptl», авторы: Бочаров И.А., Кутепов В.П., Шамаль П.Н. (Национальный исследовательский университет «Московский энергетический институт», Москва).