Язык программирования SAC - SAC programming language

SAC
SAC language logo.png
Парадигмамножество, функциональный
РазработаноСвен-Бодо Шольц, Клеменс Грелк и др.
Впервые появился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, например мощные средства ввода / вывода или математические функции;
  • облегчить компиляцию для хост-машинного кода, который может быть эффективно выполнен как с точки зрения потребности во времени, так и в пространстве;
  • облегчить компиляцию для непоследовательный выполнение программы в мультипроцессор среды.

внешняя ссылка