О функциональном программировании

  • Лидия Васильевна Городняя Новосибирский государственный университет, ул. Пирогова, 1, 630090, Новосибирск, Россия
Ключевые слова: Функциональное программирование, язык программирования, парадигма программирования, система программирования, прагматика, мета-парадигма, новые задачи, параллельные вычисления

Аннотация

Статья посвящена описанию особенностей функционального программирования, рассматриваемого как методология решения новых и исследовательских задач прикладного и системного программирования. Привлечена методика анализа и сравнения парадигм программирования, учитывающая приоритеты принятия решений в процессе разработки программ. Методика сравнения языков и парадигм программирования основана на неформальном определении термина «парадигма программирования», согласно которому при сравнении парадигм следует выделять отличительные тестируемые особенности, допускающие проверку. В качестве таких признаков оказалось полезным использовать приоритеты при принятии решений на разных этапах изучения постановки задачи, а затем разработки и отладки программы её решения. Учёт приоритетов позволяет прогнозировать сложность процессов применения программируемых решений, начиная с планирования, изучения и организации разработки долгоживущих программ. 

Материал статьи имеет несколько дискуссионный характер. В статье дана четкая формулировка принципов парадигмы функционального программирования, отличающих её от других парадигм. На  этих принципов выполнен вывод следствий, позволяющих успешно применять функциональное программирование при решении сложных задач, они конкретизированы на задачи организации параллельных вычислений и повышения производительности программ, созданных в рамках парадигмы  функционального программирования. Показана сложность создания программ для решения новых задач на примере параллельных вычислений и описаны требования к универсальному мультипарадигмальному языку параллельных вычислений. Для задач функционального программирования правильность и полнота решений важнее эффективности и производительности полученных программ. Именно этот выбор приоритетов позволяет функциональное программирование рассматривать как общую методику подготовки прототипов или функциональных моделей. Можно сказать, что функциональное программирование выполняет роль проектно-конструкторского бюро для производственного программирования.

Биография автора

Лидия Васильевна Городняя, Новосибирский государственный университет, ул. Пирогова, 1, 630090, Новосибирск, Россия

Кандидат физико-математических наук, доцент кафедрыПрограммирование Механико-математического факультета НГУ, старший научный сотрудник Института систем информатики СО РАН, lidvas@gmail.com

Литература

J. McCarthy, LISP 1.5 Programming Manual, Cambridge, UK: The MIT Press, 1963.

J. Backus, “Can programming be liberated from the von Neumann style? A functional stile and its algebra of programs,” Commun. ACM, vol. 21, no. 8, pp. 613–641, 1978; doi: 10.1145/359576.359579

P. Henderson, Functional programming, Moscow: Mir, 1983 (in Russian).

S. S. Lavrov, “Functional programming,” Computer Tools in Education, no. 3–4, pp. 81–93, 2002 (in Russian).

S. S. Lavrov and L. V. Gorodnyaya, “Functional programming. Principles of Lisp Implementation,” Computer Tools in Education, no. 5, pp. 49–58, 2002 (in Russian).

L. V. Gorodnyaya, “Functional Programming Fundamentals,” in NOU «INTUIT», [Online Course], 2004 (in Russian). Available: http://www.intuit.ru/studies/courses/29/29/info

L. V. Gorodnyaya, “The first implementations of the Lisp language in the USSR,” in Proc. of Materialy vtoroi Mezhdunarodnoi konferentsii Razvitie vychislitel’noi tekhniki i ee programmnogo obespecheniya v Rossii i stranakh byvshego SSSR (SoRuCom–2011), Veliky Novgorod, Russia, 2011, pp. 95–100, 2011 (in Russian).

S. S. Lavrov, “Methods for defining the semantics of programming languages,” Programming and Computer Software, no. 6, pp. 3–10, 1978 (in Russian).

L. Gorodnyaya, “On the presentation of the results of the analysis of programming languages and systems,” in Proc. of the 20th Conf. Scientific Services & Internet (SSI-2018) Novorossiysk-Abrau, Russia, September 17–22, 2018, pp. 152–166, 2018 (in Russian). bibitemlib-10-en P. Wegner, “Concepts and paradigms of object-oriented programming,” ACM Sigplan Oops Messenger, vol. 1, no. 1, pp. 7–87, 1990; doi: 10.1145/382192.383004

L. Gorodnyaya, “Strategic Paradigms Of Programming, Which Was Initiated And Supported By Academician Andrey Petrovich Ershov,” in Proc. of 2020 5th Int. Conf. On The History Of Computers And Informatics In The Soviet Union, Russian Federation And In The Countries, SoRuCom 2020, pp. 1–11, 2020 (in Russian); doi: 10.1109/SORUCOM51654.2020.9464972

V. V. Voevodin, “Parallel’nye Vychisleniya,” St. Petersburg, Russia: BKhV-Peterburg, 2002 (in Russian).

L. V. Gorodnyaya, “On implicit multiparadigmality of parallel programming,” in Proc. of 23rd Scientific Conference “Scientific Services & Internet – 2021”, Online, Moscow.: IPM im. M.V.Keldysha, pp. 104–116, 2021 (in Russian); doi.org/10.20948/abrau-2021-6

R. Dushkin, Funktsional’noe programmirovanie na yazyke Haskel, Moscow: DMK-Press, 2016 (in Russian).

D. V. Soshnikov, Funktsional’noe programmirovanie na yazyke F#, Moscow: DMK-Press, 2011 (in Russian).

A. J. Field and P. G. Harrison, Functional Programming, V. A. Gorbatova, ed., Moscow: Mir, 1993 (in Russian).

A. van Wijngaarden et al., eds., Revised Report of the Algorithmic Language ALGOL 68, Moscow: Mir, 1979 (in Russian).

S. S. Lavrov, “Tak chto zhe takoe informatika?,” Computer Tools in Education, no. 1, pp. 22–25, 2000 (in Russian).

G. S. Tseitin, “An associative calculus with an insoluble problem of equivalence,” Problems of the constructive direction in mathematics. Part 1, Trudy Mat. Inst. Steklov, vol. 52, Moscow, Leningrad, Russia: Acad. Sci. USSR, pp. 172–189, 1958 (in Russian).

A. I. Maltsev, Algorithms and recursive functions, Moscow: Nauka, 1965 (in Russian).

G. M. Fichtenholz, The Fundamentals of Mathematical Analysis, vol. 1, Moscow: Nauka, 1968 (in Russian).

A. L. Lastovetskii, “Predvaritel’noe soobshchenie o yazyke programmirovaniya mpC,” Voprosy kibernetiki: Prilozheniya sistemnogo programmirovaniya, Nauchnyi sovet po kompleksnoi probleme "Kibernetika", Moscow: RAN, pp. 20–39, 1995 (in Russian).

V. E. Kotov, “MARS: arkhitektura i yazyki dlya realizatsii parallelizma, Sistemnaya informatika,” No. 1: Problemy sovremennogo programmirovaniya, Novosibirsk, Russia: Nauka. Sib. dep., pp. 174–194, 1991

(in Russian).

D. C. Cann, SISAL 1.2: A Brief Introduction and tutorial. Preprint UCRL-MA-110620, Livermore, California: Lawrence Livermore National Lab., 1992.

V. N. Kas’yanov, D. S. Gordeev, and T. A. Zolotukhin, Sistema oblachnogo parallel’nogo programmirovaniya CPPS: vizualizatsiya i verifikatsiya Cloud Sisal programm, Novosibirsk: NGU, Konstruirovanie i optimizatsiya programm, 2020 (in Russian).

I. B. Burdonov and A. S. Kosachev, “Semantiki vzaimodeistviya s otkazami, divergentsiei i razrusheniem. 2. Usloviya konechnogo polnogo testirovaniya,” Vestnik Tomskogo Gosudarstvennogo Universiteta, no. 2 (15), pp. 89–98, 2011 (in Russian).

P. Koopman, S. Michels, and R. Plasmeijer, “Dynamic Editors for Well-Typed Expressions,” in Trends in Functional Programming. TFP 2021. Lecture Notes in Computer Science, vol. 12834, Springer, Cham., pp. 44–66, 2021; doi: 10.1007/978-3-030-83978-9_3

Опубликован
2021-09-26
Как цитировать
Городняя, Л. В. (2021). О функциональном программировании. Компьютерные инструменты в образовании, (3), 57-75. https://doi.org/10.32603/2071-2340-2021-3-57-75
Выпуск
Раздел
Информатика