язык программирования SAC
Парадигма | массив , функционал |
---|---|
Разработано | Свен-Бодо Шольц, Клеменс Грелк и др. |
Разработчик | Исследовательская группа СаК |
Впервые появился | 1994 год |
Предварительный выпуск | 1.3.3-1079-1 (14 июня 2023 г [±] | )
Дисциплина набора текста | статический , сильный |
Язык реализации | С и САК |
ТЫ | POSIX-совместимая UNIX |
Лицензия | Бесплатное программное обеспечение [1] |
Расширения имен файлов | .мешок |
Веб-сайт | www |
Под влиянием | |
АПЛ , СИЗАЛЬ , С |
SAC (Single Assignment C) — это строгий чисто функциональный язык программирования , конструкция которого ориентирована на потребности числовых приложений. Особое внимание уделяется эффективной поддержке обработки массивов посредством параллелизма данных . Проблемы эффективности, по сути, двояки. С одной стороны, эффективность разработки программ должна быть повышена за счет возможности специфицировать операции с массивами на высоком уровне абстракции . С другой стороны, эффективность выполнения программ, то есть производительность программ во время выполнения с точки зрения потребления времени и памяти, по-прежнему должна быть достигнута с помощью сложных компиляции схем . Только если последнее удается, стиль спецификаций высокого уровня действительно можно назвать полезным.
Чтобы облегчить компиляцию в эффективно исполняемый код, некоторые функции функционального языка, которые не считаются существенными для числовых приложений, например, функции высшего порядка, полиморфизм или отложенное вычисление , (пока) не поддерживаются SAC. Их можно найти в функциональных языках общего назначения, например Haskell , Clean , Miranda или ML .
Чтобы преодолеть проблемы с принятием, с которыми сталкиваются другие функциональные языки или языки на основе массивов, предназначенные для приложений с интенсивным числом/массивами, например SISAL , NESL , Nial , APL , J или K , особое внимание уделяется облегчению перехода от C / Fortran -подобного программирования. среду для SAC.
Более подробно, основные цели разработки языка SAC заключаются в следующем:
- предоставить чисто функциональный язык с синтаксисом, очень похожим на синтаксис C, чтобы облегчить для большого сообщества программистов переход от императивного к функциональному стилю программирования;
- поддержка многомерных массивов как объектов первого класса;
- разрешить спецификацию операций с массивами, не зависящих от формы и размера;
- обеспечивают высокоуровневые операции с массивами, которые освобождают программирование от утомительных и подверженных ошибкам спецификаций начала, остановки и шагов для обхода массива, тем самым улучшая возможность повторного использования кода и производительность программирования в целом.
- включить систему модулей, которая допускает раздельную компиляцию, отдельные пространства имен и абстрактные типы данных, а также, кроме того, обеспечивает интерфейс для иностранных языков, чтобы обеспечить возможность повторного использования существующего кода;
- предоставить средства для плавной интеграции состояний и модификаций состояний в функциональную парадигму, основанную на типах уникальности;
- использовать систему модулей, интерфейс на иностранных языках и интеграцию состояний для создания стандартной библиотеки, которая обеспечивает функциональность, аналогичную функциональности стандартных библиотек C, например, мощные средства ввода-вывода или математические функции;
- облегчить компиляцию в хост-машинный код, который может быть эффективно выполнен как с точки зрения затрат времени, так и пространства;
- облегчить компиляцию для непоследовательного выполнения программы в многопроцессорных средах.
Ссылки
[ редактировать ]- Шольц, Свен Бодо (1996). реализация функционального C-варианта со специальной поддержкой операций с массивами, инвариантных по форме ] Единственное задание C — проектирование и (доктор философии) (на немецком языке). Институт компьютерных наук и прикладной математики, Кильский университет Кристиана-Альбрехта, Киль, Германия.
- Грелк, Клеменс (2001). Поддержка мультипроцессора с неявной общей памятью для языка функционального программирования SaC — одно задание C (доктор философии). Институт компьютерных наук и прикладной математики, Кильский университет Кристиана-Альбрехта, Киль, Германия. ISBN 3-89722-719-3 .
{{cite thesis}}
: CS1 maint: игнорируются ошибки ISBN ( ссылка )