Авторитетность издания
Добавить в закладки
Следующий номер на сайте
В Национальном исследовательском университете «Московский энергетический институт» разработаны методы и алгоритм статического (до выполнения программы) контроля типов функциональных программ на созданном языке функционального параллельного программирования FPTL.
10.07.2014Язык FPTL (functional parallel typified language) создавался с целью эффективного параллельного выполнения функциональных программ на компьютерных системах с общей памятью. В отличие от известных языков функционального программирования, таких как LISP, ML], Haskell, которые в большей степени основаны на лямбда-исчислении, FPTL базируется на модели построения новых функций путем применения операций композиции функций и общей формы их задания в виде систем функциональных уравнений. Язык рекурсивных функций – очевидный пример такого подхода к заданию вычислимых функций.
Однако FPTL имеет ряд преимуществ перед основанными на лямбда-исчислении функциональными языками. Наиболее важными на практике являются следующие его особенности:
- очевидная близость используемой нотации к традиционной математической форме задания функций;
- алгебраизированная форма задания функции, позволяющая извлекать ее композиционную структуру (схему функции), что существенно улучшает проектирование, анализ и эквивалентные преобразования функций;
- возможность явного отражения и варьирования параллелизма в функциональной программе, поскольку три из четырех операций композиции являются параллельными;
- простой алгоритм обнаружения параллелизма при выполнении, что позволяет исключить необходимость явного указания с помощью соответствующих процессных примитивов (как, например, в Haskell), какие фрагменты программы могут выполняться параллельно;
- простота в освоении; язык позволяет широко использовать библиотеки, как правило, оптимизированных функций, вводить абстрактные типы данных, использовать разработанные для него приложения для оценки сложности параллельного выполнения программы, приведения ее к оптимальной параллельной форме, анализа структурной сложности программ и др.
Одна из последних реализаций языка FPTL была недостаточно эффективной, так как выполнялась на компьютерах с распределенной памятью (многоядерные компьютеры в то время еще не были широко распространены). Реализация FPTL на многоядерных компьютерах, напротив, оказалась успешной. Это подтверждают приведенные в экспериментальные данные ускорения FPTL-программ.
В данной реализации, которая базируется на принципе интерпретации программы и динамическом выявлении и регулировании зернистости параллелизма и выполнена с использованием нитевого процессного параллелизма, можно достигать заметного ускорения при выполнении FPTL-программ.
FPTL – строго типизированный язык, однако контроль типовой правильности (корректности применения функций к их аргументам), который осуществляется в данной реализации динамически, то есть в процессе выполнения программы, увеличивает время ее выполнения на величину, составляющую до 30 % от времени выполнения программы. Заметим, что продвинутые механизмы контроля типов присутствуют в компиляторах и интерпретаторах многих функциональных языков, включая компилятор языка Haskell GHC.
Подробное описание дается в статье «Система типового контроля программ на языке функционального программирования fptl», авторы: Бочаров И.А., Кутепов В.П., Шамаль П.Н. (Национальный исследовательский университет «Московский энергетический институт», Москва).