Язык программирования SAC - SAC programming language
Парадигма | множество, функциональный |
---|---|
Разработано | Свен-Бодо Шольц, Клеменс Грелк и др. |
Впервые появился | 1994 |
Печатная дисциплина | статический, сильный |
Операционные системы | POSIX-совместимый UNIX |
Лицензия | проприетарный [1] |
Интернет сайт | http://www.sac-home.org |
Под влиянием | |
APL, СИЗАЛ, C |
SAC (Single Assignment C) - строгое чисто функциональный язык программирования чей дизайн ориентирован на нужды численных приложений. Акцент делается на эффективную поддержку обработка массива через параллелизм данных. По существу, проблемы эффективности двоякие. С одной стороны, эффективность разработки программ должна быть повышена за счет возможности задавать операции с массивами на высоком уровне абстракция. С другой стороны, эффективность выполнения программ, то есть производительность программ во время выполнения, с точки зрения потребления времени и памяти, все еще должна быть достигнута за счет сложных сборник схемы. Только в той мере, в какой это удается, высокоуровневый стиль спецификаций может быть действительно полезен.
Чтобы облегчить компиляцию в эффективно исполняемый код, некоторые функции функционального языка, которые не считаются необходимыми для числовых приложений, например функции высшего порядка, полиморфизм, или же ленивая оценка, (пока) не поддерживаются SAC. Их можно найти в функциональных языках общего назначения, например Haskell, Чистый, Миранда, или же ML.
Чтобы преодолеть проблемы приемлемости, с которыми сталкиваются другие функциональные языки или языки на основе массивов, предназначенные для приложений с большим количеством чисел / массивов, например СИЗАЛ, NESL, Ниал, APL, J, или же K особое внимание уделяется облегчению перехода от C / Фортран как среда программирования для SAC.
Более подробно, основные цели языкового дизайна SAC:
- предоставить чисто функциональный язык с синтаксисом, очень похожим на синтаксис C, чтобы облегчить для большого сообщества программистов переход от императивного стиля программирования к функциональному;
- поддерживать многомерные массивы как объекты первого класса;
- позволяют специфицировать операции с массивами, неизменяющиеся по форме и размерам;
- обеспечивают высокоуровневые операции с массивами, которые освобождают программирование от утомительных и подверженных ошибкам спецификаций запусков, остановок и шагов для обходов массива, тем самым улучшая возможность повторного использования кода и продуктивность программирования, в целом.
- включить модульную систему, которая допускает раздельную компиляцию, отдельные пространства имен и абстрактные типы данных, и, кроме того, обеспечивает интерфейс с иностранными языками для повторного использования существующего кода;
- обеспечивать средства для плавной интеграции состояний и модификаций состояний в функциональную парадигму на основе типов уникальности;
- использовать модульную систему, интерфейс на иностранном языке и интеграцию состояний, чтобы создать стандартную библиотеку, которая обеспечивает функциональность, аналогичную функциям стандартных библиотек C, например мощные средства ввода / вывода или математические функции;
- облегчить компиляцию для хост-машинного кода, который может быть эффективно выполнен как с точки зрения потребности во времени, так и в пространстве;
- облегчить компиляцию для непоследовательный выполнение программы в мультипроцессор среды.