Непейвода Н.Н. Программирование. Раздел 1

Непейвода Н.Н. Программирование. Страница 130

Поэтому возникает вопрос о том, какие минимальные операции нужны для работы с функциями? Конечно же, это композиция функций (эту опера­цию не позволяет в общем виде естественно запрограммировать ни С++, ни Pascal, ни Ada, ни Алгол 68).

В 60х гг. была выделена еще одна естественная и, в принципе, ис­ключительно просто реализуемая операция над функциями. Это частич­ная параметризация. При частичной параметризации мы фиксируем часть аргументов процедуры и получаем процедуру, выдающую результат после получения оставшихся аргументов. Например, частичной параметризацией деления нацело является функция (в обозначениях С)

Доказано, что композиции и частичной параметризации достаточно для мо­делирования всего типизированного Лисчисления. Соответственно, эти опе­рации приводят к эффективным функциональным программам.

Надо сказать, что при работе с функционалами высших типов возникают большие сложности, и для понимания их теории нужно хорошо знать ло­гику, современную алгебру и топологию. Специалистов, владеющих и этой теорией, и практикой программирования, практически нет. Поэтому, хотя экспериментальных систем для работы с понятиями высших типов доволь­но много, все они наследуют первородный грех языка LISP: их создатели просто не могут удержаться и добавляют какуюлибо возможность (кон­цептуально несовместимую), которая разрушает эффективность системы. Соответственно, это препятствует применению систем на практике.

Функциональное программирование дает возможность проиллюстриро­вать тезис о вредности концептуально несогласованных пополнений систе­мы понятий на примерах, которые проработаны и на практике, и в теории. Рассмотрим один такой пример.

Динамическое порождение функций можно понимать следующим обра­зом. Пусть основными структурами данных нашего языка являются списки (поскольку исторически действия над списками определялись рекурсивно, именно таковы базовые данные практически всех нынешних функциональ­ных языков). Тогда можно список, произвольным способом порожденный в нашей программе, просто прочитать как программный текст и объявить определением динамически вычисленной процедуры. Именно так подошли к функциональному программированию в языке LISP, созданном Дж. Мак карти. Этот язык уже 40 лет живет в академической среде, на нем написано множество исследовательских и экспериментальных систем, и богатый опыт его применения позволяет подвести некоторые итоги.

Новости

  • 1
  • 2
Prev Next

Ракета "Ангара-А5В" в ближайшее десятилетие не полетит

24.01.2016

Ракета "Ангара-А5В" в ближайшее десятилетие не полетит

Роскосмос не планирует в течение ближайшего десятилетия осуществлять пуск тяжёлой ракеты-носителя А...

Ученые РФ опровергли выводы исследований о вреде ГМО

24.01.2016

Ученые РФ опровергли выводы исследований о вреде ГМО

Исследователи из Института проблем передачи информации (ИППИ РАН) проанализировали несколько самых п...

Летающие "Крокодилы"

24.01.2016

Летающие "Крокодилы"

20 удивительных фактов о боевом вертолете Ми-24.Этот вертолет стал таким же узнаваемым символом сове...

В Аргентине описали новый вид динозавра-гиганта

24.01.2016

О ранее неизвестном виде динозавра, относящемуся к инфраотряду зауроподов, рассказали аргентинские п...

Реклама