Аппликативное программирование

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

Аппликативный подход к написанию программы состоит в систематическом осуществлении применения одного объекта к другому. Результатом такого применения вновь является объект, который может участвовать в применениях как в роли функции, так и в роли аргумента и т. д. Это делает запись программы математически ясной. Тот факт, что функция обозначается выражением, свидетельствует о возможности использования значений-функций на равных правах с прочими объектами. Следовательно, значения-функции можно передавать как аргументы, либо возвращать как результат вычисления других функций. Конструкции аппликативных, или функциональных языков программирования, в целом отличает простота исходных посылок. Их базовыми строительными блоками являются представления о выражении и функции, а все прочие понятия являются производными и вводятся шаг за шагом, что придаёт конструктивный стиль самому процессу программирования.

Аппликативный язык программирования[править | править вики-текст]

По классификации парадигм языков программирования аппликативный язык программирования предназначен для поддержки разработки программ способом получения результата вычисления функции, зависящей от комбинации переменных. Конечный результат достигается последовательным применением функциональных преобразований к данным[1]. Поскольку управление состояниями остается неявным, такой язык в более узком смысле называют функциональным языком.

Примерами аппликативных языков программирования служат Lisp[2] и ML. В языке Haskell эта парадигма программирования реализована в виде аппликативного функтора, расширяющего возможности механизма функциональной абстракции высших порядков до многоместной.

Аппликативный компьютинг[править | править вики-текст]

Аппликативный компьютинг предполагает комбинационное построение вычисления как относительно самостоятельного блока, пользуясь уже имеющимися блоками вычислений. Для его осуществления применяют аппликативные вычислительные системы (АВС), в состав которых включают системы исчислений объектов, основанные на комбинаторной логике и лямбда-исчислении. Единственное, что существенно разрабатывается в этих системах — это представление об объекте. В комбинаторной логике единственный метаоператор — аппликация, или, по иной терминологии, приложение одного объекта к другому. В λ-исчислении два метаоператора — аппликация и функциональная абстракция, позволяющая связывать одну переменную в одном объекте.

Компьютинг[править | править вики-текст]

Наиболее фундаментальным понятием в компьютерных науках — англ. computer science, — считается вычисление, выполняемое на компьютере — компьютинг (англ. computing). Вычислением считается множество преобразований, которые «механически» выполняются применением конечного числа заранее определенных правил. Вычисление выполняется на формализованных символьных данных — информации, — представляющих, например, числа (числовые вычисления), математические выражения (формальные вычисления/преобразования), данные (извлечение из базы данных ответа на запрос), метаданные (изменение «знаний»). Для всех этих вычислений присущим оказывается дискретный характер данных — информация оказывается конечной, — вместе с механическим, или рутинным способом применения правил, в соответствии с которыми вычисления выполняются. Вполне естественной представляется формализация, базирующаяся на идее объектов, для манипулирования которыми строится специальное средство — иллативная логика.

Определение компьютинга[править | править вики-текст]

Компьютинг представляет собой деятельность, направленную на разработку и применение компьютерных технологий, включая аппаратное обеспечение и программное обеспечение. Это компьютерно-ориентированная часть информационных технологий. В отличие от компьютинга, компьютерные науки представляют собой изучение теоретических основ компьютинга и применений этих теорий[3]

Компьютинг как область знаний[править | править вики-текст]

Термином компьютинг (англ. computing) также обозначают обобщенную область знаний, в которую входят информатика, программная инженерия, проектирование аппаратных платформ и прочие дисциплины, так или иначе связанные с информационными технологиями[4]. Информационные технологии являются одной из самостоятельных дисциплин в рамках более широкой области знаний, относящейся к компьютингу.

Дисциплина компьютинга[править | править вики-текст]

Иногда используется более узкое толкование термина компьютинг, приведенное в отчёте ACM «Компьютинг как дисциплина» (1989 г.)[5]:

дисциплина компьютинга — это систематическое изучение алгоритмических процессов описания и преобразования информации: их теория, анализ, проектирование, эффективность, реализация и применения. Фундаментальным для компьютинга вопросом является вопрос, что можно (эффективно) автоматизировать?

См. также[править | править вики-текст]

Ссылки[править | править вики-текст]

  1. Applicative Programming with Effects (in Haskell, 2008) by Ross Paterson.
  2. Пантелеев А. Г. Об интерпретаторе с языка Лисп для ЕС ЭВМ // Программирование. — 1980. — № 3. — с. 86-87.
  3. The Joint Task Force for Computing Curricula 2005. Computing Curricula 2005: The Overview Report
  4. Curricula Recommendations Software Engineering SE 2004: Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering
  5. Computing as a Discipline

Литература[править | править вики-текст]

  • Sabry A. What is a Purely Functional Language?. — Journal of Functional Programming, 1998, Vol. 8, No 1, pp. 1-22
  • Peyton Jones S.L. The implementation of functional programming languages. — N.Y.: Prentice Hall International, 1987. — 445~p. [1]
  • Вольфенгаген В. Э. Методы и средства вычислений с объектами. Аппликативные вычислительные системы. — М.: JurInfoR Ltd., АО «Центр ЮрИнфоР», 2004. — xvi+789 с ISBN 5-89158-100-0.