Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...
Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...
Топ:
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов...
Когда производится ограждение поезда, остановившегося на перегоне: Во всех случаях немедленно должно быть ограждено место препятствия для движения поездов на смежном пути двухпутного...
Процедура выполнения команд. Рабочий цикл процессора: Функционирование процессора в основном состоит из повторяющихся рабочих циклов, каждый из которых соответствует...
Интересное:
Аура как энергетическое поле: многослойную ауру человека можно представить себе подобным...
Наиболее распространенные виды рака: Раковая опухоль — это самостоятельное новообразование, которое может возникнуть и от повышенного давления...
Мероприятия для защиты от морозного пучения грунтов: Инженерная защита от морозного (криогенного) пучения грунтов необходима для легких малоэтажных зданий и других сооружений...
Дисциплины:
2021-01-31 | 64 |
5.00
из
|
Заказать работу |
|
|
Конструкция | Примеры представле- ния | Трактовка | Пояснение |
Данные | |||
Встроенная константа | Nil | Представление функции без параметров, результатом кото- рой является пустой список | Результаты таких функций хранятся непосредственно в памяти. Их полу- чение не требует вычислений |
Элементар- ное значе- ние | List X Atom | Представление неопределен- ной функции, которая может быть в дальнейшем использо- вана как значение переменной или представление конкретной функции | |
Идентифи- катор | A X ATOMIC IDENT | Представление функции, ар- ность, категория и определе- ние которой задаются раз- ными средствами связывания атомов с их смыслом. (Связы- вание аргументов с парамет- рами при вызове функции или именование определения) | |
Именован- ная кон- станта | A | Представление функции без параметров, в любой позиции программы выдающей ранее заданное значение | |
Переменная | X | Представление функции без параметров, результат которой может зависеть от контекста, например, от области видимо- сти при вызове других функ- ций |
|
Конструкция | Примеры представле- ния | Трактовка | Пояснение | |
S-выражение | (A. B) (A B C. D) | Могут представлять вызов функции | Может быть аргу- ментом или резуль- татом функции | |
Список | NIL (A B) (A (B C) D) | Может быть пред- ставлением любой составной формы | ||
Составное константное значение | ‘(A B C) ‘(A (B C) D) ‘(А. В) | Результат унарной функции QUOTE, препятствующей вы- числению своего аргумента: (QUOTE (A B C)) (QUOTE (A (B C) D)) (QUOTE (А. В)) | Блокировка вычис- лений, в частности для организации отложенных дей- ствий | |
Операции | CAR CDR CONS ATOM EQ | Встроенные функции | Базовые средства обработки данных | |
Организация процессов
| ||||
Вызов функ- ции | (FN LIST-FRM) | Представление выражения в виде списка из представления функции и представлений ее параметров в виде выражений. При необходимости результат функции вычисляется с помо- щью универсальной функции APPLY | Общая схема вы- числений. При вызове функ- ции происходит ло- кальное связывание аргументов со зна- чениями парамет- ров, сохраняемое в стеке | |
Выражение (форма) | X FNAME (CAR ‘(a b c)) | Представление аргумента уни- версальной функцией EVAL, пригодное для вычисления зна- чения этого аргумента | Вывод значений по представлению вы- ражений | |
Ветвление | (COND ((EQ X A) Y) ((ATOM X) D) -- -- (T Z)) | Специальная мультифункция над произвольным числом аргу- ментов, каждый из которых яв- ляется списком из представле- ний предиката и соответствую- щей ему ветви | Метод организации частичных вычисле- ний |
|
Конструк- ция | Примеры представ- ления | Трактовка | Пояснение |
Определе- ние безы- мянной функции | (LAMBDA (x y) (expr x y)) | Результат специальной бинар- ной функции LAMBDA, пер- вый аргумент которой – спи- сок аргументов определяемой функции, а второй представ- ляет выражение, задающее ее тело | Конструирование представления функции |
Именова- ние локаль- ного опре- деления | (LABEL NAME DEF) | Результат специальной бинар- ной функции LABEL, связы- вающей новое имя, заданное первым аргументом, с пред- ставлением функции, задан- ной вторым аргументом, в ко- тором это связывание локали- зовано | Поддержка много- кратного примене- ния функции |
Вычисле- ние | (EVAL expr) | Результат универсальной функции EVAL, анализирую- щей структуру представления выражения и выбирающей ме- тод вычисления значения вы- ражения | Поддержка управ- ления ходом вы- числений, включая возобновление от- ложенных дей- ствий |
Примене- ние функ- ции к за- данным ар- гументам | (APPLY fn args ...) | Вспомогательная функция, выполняющая вызов FN при вычисленных аргументах | Часть интерпрета- тора |
|
|
|
|
Конструкция | Примеры пред- ставления | Трактовка | Пояснение |
Pure Lisp | |||
Вывод данных | (PRINT X) | Представление тож- дественной псевдо- функции PRINT с побочным эффек- том, заключающемся в размещении экви- валентного ее аргу- менту текста на экране или в задан- ном файле | (PRINT X) = X Результат совпа- дает с аргумен- том, поэтому раз- мещение в любой позиции про- граммы вывода данных может не влиять на ход вы- полнения про- граммы |
Ввод данных | (READ) | Представление псевдо-функции без параметров READ, побочным эффектом которой является конструирование представления дан- ного, эквивалент- ного строке, набран- ной на консоли или размещенной в за- данном файле | Включение в про- грамму средств ввода данных позволяет управ- лять ходом вы- числений без ре- дактирования текста про- граммы, что поз- воляет повысить удобство и надежность от- ладки |
Обработка прерываний, ошибок, исключений, неожиданно- стей и т.п. | (ERROR N “message” continuation) | Представление псевдо-функции, обеспечивающей для заданного номера со- бытия поясняющее сообщение и воз- можное продолже- ние процесса вычис- лений. По умолча- нию – восстанов- ление начального контекста | Поддержка вы- числений в стиле бэктреккинга |
Конструкция | Примеры представления | Трактовка | Пояснение | |
Элементарное значение, псевдо-атом | 123 3.14 4/5 «строка» | Представление само- определимой функ- ции без аргументов, результатом которой является ее соб- ственное представле- ние | Результаты такой функции хра- нятся непосред- ственно в памяти. Их получение не требует вычисле- ний | |
Операции над числами | (+ 1 2 3 4) (* 1 2 3 4) (– 1 2 3 4) (/ 1 2 3 4) | Представление муль- тифункций над про- извольным числом аргументов. Аддитивные опера- ции при пустом списке аргументов вырабатывают число 0. Мультипликатив- ные – число 1 | (+ 1 2 3 4) = 1+2+3+4 (* 1 2 3 4) = 1*2*3*4 (– 1 2 3 4) = 1–2–3–4 (/ 1 2 3 4) = 1/2/3/4 | |
Арифметиче- ские выраже- ния | (+ (* 3 5 D) (– A 8) (/ 1 2 X)) | Представление ре- зультатов вычисле- ний не требует опре- деления типов реа- лизуемых чисел, зависящих от фор- мата кода или длины машинного слова | (/ 1 2) = ½ Длина целых чи- сел не ограни- чена, результат целочисленного деления может быть представлен как дробь без по- тери точности, точность веще- ственных может быть задана | |
Lisp 1.5
| ||||
Компиляция функций | (COMPILE …) | Специальная функ- ция, побочный эф- фект которой заклю- чается в создании кода функции, оттес- няющего ее символь- ное определение | Оптимизация от- лаженных функ- ций ради скоро- сти выполнения |
|
Конструкция | Примеры представления | Трактовка | Пояснение |
Структуро- разрушающие функции | (RPLACA X Y) (RPLACD X Y) (CONC AL BL) | Представление функций с побоч- ными эффектами, вызванными исполь- зованием памяти ар- гументов при кон- струировании ре- зультата, при наличии их чисто функциональных эк- вивалентов: (RPLACA X Y) = (CONS Y (CDR X)) (RPLACD X Y) = (CONS (CAR X) Y) (CONC AL BL) = (APPEND AL BL) | Реализационный базис раскрутки СП. Поддержка опти- мизации и син- хронизации неза- висимых участ- ков программы, возникающих при вычислении рекурсивных функций, незави- симых парамет- ров, выполнении итераций и т. п. |
Именование глобальной функции | (DEFINE NAME DEF) | Результат специаль- ной бинарной функ- ции DEFINE, связы- вающей новое имя, заданное первым ар- гументом, с глобаль- ным определением функции, представ- ленным вторым ар- гументом | Поддержка ком- бинаторики неза- висимых опреде- лений функций |
Императив- ные вычисле- ния | (PROG (V..)….) | Специальная функ- ция, выполняющая последовательное вычисление выраже- ний, рассматривае- мых как операторы. Результат выделен функцией RETURN или определен по- следним оператором |
Конструкция | Примеры представления | Трактовка | Пояснение | |
Clisp | ||||
Конструиро- вание пред- ставления именованной глобальной функции | (DEFUN NAME ARGS DEF) | Результат специаль- ной функции DE- FUN, конструирую- щей по списку аргу- ментов и определяю- щему выражению новое глобальное определение функ- ции и связывает его с именем | Области действия имен и поддержка иерархии наследуемых определений
| |
Область видимости рабочих переменных | (LET LIST EXPR) | Специальная функ- ция LET строит об- ласть видимости, в которой опреде- лены значения рабо- чих переменных со- гласно списку LIST, используемых при вычислении выраже- ния EXPR | ||
Область видимости рабочих переменных | (LET* LIST EXPR) | Допускает взаимную рекурсию | ||
Область видимости вспомогатель- ных функций | (FLET LIST REXPR) | Специальная функция FLET строит область видимости, в которой определены вспомо- гательные функции согласно списку LIST, используемых при вычислении выраже- ния EXPR | ||
Конструиро- вание специ- альных функ- ций | (MACRO...) | Специальная функ- ция MACRO создает определения новых специальных функ- ций, обрабатываю- щих представления своих параметров без их предваритель- ного вычисления | Поддержка альтернативных методов вычислений |
|
Конструкция | Примеры представления | Трактовка | Пояснение |
Цикл | (LOOP …) | Специальная функ- ция, один из пара- метров которой яв- ляется предназна- ченным для многократного вы- числения телом цикла, а остальные используются при управлении кратно- стью вычисления тела цикла | Поддержка традиционных схем представле- ния программ |
Параллельные вычисления | (MULTIPLY …) | Специальная функ- ция, выполняющая вычисление своих параметров в произ- вольном порядке, не заданном заранее. Значения всех ре- зультатов доступны объемлющим функ- циям | Подготовка па- раллельных вы- числений |
Управление обработкой информации в лямбда-исчислении осуществля- ется в рамках иерархии свободных и связанных переменных, реализуемых с помощью таблицы соответствия символов и их смысла. Обработка пред- ставляется посредством правил интерпретации выражений, построенных из всюду определенных функций, аргументы которых могут быть упорядочены. По степени общности такое построение сравнимо с аксиоматической теорией множеств.
|
19 Магариу Н. А. Язык программирования АПЛ. М.: Радио и связь. 96 с.
|
|
Теоретически достаточно исследовать чисто функциональные лаконич- ные представления программ, поведение которых не зависит от побочных эф- фектов. Результат программы на константных значениях может быть получен системой редукций ее представления. Процессы применения редукций можно выбирать в зависимости от стратегии вычислений и реализовывать как простую подстановку текстов или списков.
На практике основная трудоемкость связана с отладкой программы на базе конкретной системы программирования, поддерживающей определен- ную стратегию вычислений или дающей возможность явного управления хо- дом выполнения программы в зависимости от данных. Чисто функциональ- ная программа при оптимизирующей компиляции может быть сведена к ее формальному результату без генерации исполнимого кода.
По отношению к проблемам определения языков и систем программиро- вания (СП) основные идеи ФП сложились при реализации языка Lisp и в ра- ботах Венской лаборатории IBM в начале 1960-х годов. Эти идеи оказались трудными для восприятия в пионерскую эпоху программирования, но в настоящее время их актуальность растет, что показывает рост популярности концептуально близкой пары Clang-LLVM. Это и обуславливает целесообраз- ность фундаментальных исследований в сфере функционального программи- рования, проектирования и моделирования.
С конца 1970-х годов появились Lisp-процессоры, доказавшие, что неэф- фективность функционального программирования обусловлена характери- стиками оборудования, а не стилем программирования. Функциональные мини-языки хорошо показали себя и при решении задач аппаратного уровня. Все это превращает ФП в практичный и перспективный инструментарий. Та- кая схема подтверждается самой историей развития диалектов языка Lisp и родственных ему языков программирования.
|
|
отложенные действия (lazy evaluation).
|
Здание функционального программирования получает логическое завер- шение на уровне определения функций высших порядков, удобных для син-
|
|
Алгоритм | Примечание |
n –1= F(n, 0, 0) где F(x, y, z) = если (x = 1) то 0 иначе если ((y +1) = x) то z иначе F(x, y +1, z +1) | Сведение к вызову вспомогательной функции. Вспомогательная функция. Объявление значения от 1. Проверка достижения предыдущего числа. Шаг рекурсии с наращиванием параметров |
Пример 19. Выражение «–1» через «+1»
Решение получилось через введение формально усложненной функции F со вспомогательными параметрами. Такой метод противоречит интуитив- ному стремлению к монотонности при движении от нового к привычному. Вместо общепринятого привычного нисходящего подхода, задача решена
20 Клини С. К. Введение в метаматематику. М.: Изд-во ИЛ, 1957.
восходящим методом, через определение более общей функции, вопреки ме- тодологии структурного программирования.
|
Важно отметить, что преимущества ФП обусловлены не только семанти- кой используемых языков программирования, но и особенностями его под- держки в системах программирования:
– представления данных (чисел, строк, имен, списков) обычно не ограни- чены по длине;
– полностью автоматизировано первичное и повторное распределение па- мяти – «сборка мусора»;
– выделен комплекс базовых средств для программирования без побоч- ных эффектов в памяти программы, достаточный для представления ленивых вычислений, отображений и других функций высших порядков;
– встроены средства управления вычислениями, расширяющие возмож- ности СП в направлении основных парадигм программирования.
|
|
Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...
Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...
Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!