Введение

SISAL (Streams and Iteration in a Single Assignment Language) — это язык функционального программирования общего назначения с единичным присваиванием, строгой семантикой, неявным параллелизмом и эффективной обработкой массивов. SISAL генерирует граф потока данных в промежуточном формате 1 (IF1). Он был разработан на основе VAL (Value oriented Algorithmic Language, созданного Джеком Деннисом) и дополнен рекурсией и конечными потоками. Язык имеет синтаксис, близкий к Паскалю, и был задуман как универсальный язык высокого уровня для численных программ, предназначенных для работы на различных многопроцессорных системах.

История

SISAL был разработан в 1983 году Джеймсом МакГроу и коллегами из Манчестерского университета, LLNL, Университета штата Колорадо и DEC. Он был пересмотрен в 1985 году, а в 1986 году была создана первая компилируемая реализация. По некоторым данным, его производительность превосходит C и сопоставима с Fortran, в сочетании с эффективной и автоматической параллелизацией. Название SISAL произошло от поиска подстроки "sal" в слове "Single Assignment Language" в словаре Unix /usr/dict/words с помощью утилиты grep. Существуют версии для Cray X MP, Y MP, 2; Sequent, Encore Alliant, DEC VAX 11/784, архитектур с потоковой обработкой данных, KSR1, Transputers и систолических массивов.

Архитектура

Требования к языку мелкозернистого параллелизма лучше удовлетворяются языком потока данных, чем системным языком. SISAL – это больше, чем просто язык потока данных и мелкозернистый язык. Это набор инструментов, которые преобразуют текстовый, удобочитаемый для человека язык потока данных в графический формат (называемый IF1 – Intermediary Form 1). В рамках проекта SISAL также была реализована конвертация этого графического формата в исполняемый C-код. В 2018 году SISAL был модернизирован с использованием синтаксиса, основанного на отступах, функций первого класса, лямбда-выражений, замыканий и ленивой семантики в рамках проекта SISAL IS.