Функциональное программирование: уровень функций и математические объекты
Function-level programming
Функциональное программирование: парадигма от Джона Бэкуса, альтернатива объектно-ориентированному подходу. Эволюция языков и повышение надежности кода.
Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
В информатике, программирование на уровне функций относится к одной из двух контрастных парадигм программирования, выделенных Джоном Бэкусом в его работе о программах как о математических объектах, другой – программирование на уровне значений. В своей лекции при присуждении премии Тьюринга в 1977 году Бэкус представил то, что он считал необходимостью перехода к иной философии в проектировании языков программирования:
Кажется, языки программирования переживают не лучшие времена. Каждый последующий язык включает в себя, с незначительной доработкой, все возможности своих предшественников и добавляет ещё несколько. [ ] Каждый новый язык заявляет о новых и модных функциях, но горькая правда заключается в том, что лишь немногие языки делают программирование достаточно дешевым или надежным, чтобы оправдать затраты на их создание и изучение. Он разработал FP как первый язык программирования, специально поддерживающий стиль программирования на уровне функций. Программа на уровне функций не содержит переменных (см. бесточечное программирование), поскольку переменные программы, которые необходимы в определениях на уровне значений, не требуются в программах на уровне функций.
In computer science, function level programming refers to one of the two contrasting programming paradigms identified by John Backus in his work on programs as mathematical objects, the other being value level programming. In his 1977 Turing Award lecture, Backus set forth what he considered to be the need to switch to a different philosophy in programming language design:
Programming languages appear to be in trouble. Each successive language incorporates, with a little cleaning up, all the features of its predecessors plus a few more. [ ] Each new language claims new and fashionable features but the plain fact is that few languages make programming sufficiently cheaper or more reliable to justify the cost of producing and learning to use them. He designed FP to be the first programming language to specifically support the function level programming style. A function level program is variable free (cf. point free programming), since program variables, which are essential in value level definitions, are not needed in function level programs.
Введение
В стиле функционального программирования программа строится непосредственно из исходных программ путем их комбинирования с операциями или функционалами, формирующими программы. Таким образом, в отличие от подхода на уровне значений, который применяет заданные программы к значениям для получения последовательности значений, приводящей к желаемому результату, функциональный подход применяет операции формирования программ к заданным программам для получения последовательности программ, приводящей к желаемой результирующей программе. В результате, функциональный подход к программированию предполагает изучение пространства программ относительно операций формирования программ, с целью выявления полезных алгебраических свойств этих операций. Функциональный подход предлагает возможность представить множество программ как математическое пространство, акцентируя алгебраические свойства операций формирования программ над этим пространством. Другим потенциальным преимуществом функционального взгляда является возможность использования только строгих функций, что обеспечивает семантику снизу вверх – наиболее простую из всех. Еще одним преимуществом является существование функциональных определений, которые не являются результатом поднятия (то есть, переноса с более низкого уровня значений на более высокий функциональный уровень) какого-либо существующего определения на уровне значений: эти (часто лаконичные) функциональные определения представляют собой более мощный стиль программирования, недоступный на уровне значений.
In the function level style of programming, a program is built directly from programs that are given at the outset, by combining them with program forming operations or functionals. Thus, in contrast with the value level approach that applies the given programs to values to form a succession of values culminating in the desired result value, the function level approach applies program forming operations to the given programs to form a succession of programs culminating in the desired result program. As a result, the function level approach to programming invites study of the space of programs under program forming operations, looking to derive useful algebraic properties of these program forming operations. The function level approach offers the possibility of making the set of programs a mathematical space by emphasizing the algebraic properties of the program forming operations over the space of programs. Another potential advantage of the function level view is the ability to use only strict functions and thereby have bottom up semantics, which are the simplest kind of all. Yet another is the existence of function level definitions that are not the lifted (that is, lifted from a lower value level to a higher function level) image of any existing value level one: these (often terse) function level definitions represent a more powerful style of programming not available at the value level.
Примеры языков
Канонический язык функционального программирования — FP. К другим относятся FL и J.
The canonical function level programming language is FP. Others include FL, and J.