Функцыянальнае праграмаванне: Розніца паміж версіямі

[дагледжаная версія][дагледжаная версія]
Змесціва выдалена Змесціва дададзена
др крыніца
др арфаграфія
Радок 1:
'''ФункцыйнаеФункцыянальнае праграмаванне''' — парадыгма праграмавання, якая разглядае вылічэнні як разлікі [[Функцыя, матэматыка|матэматычных функцый]], і пазбягае становішчаў і зменных дадзеных. Адносіцца да [[Дэкларатыўнае праграмаванне|дэкларатыўнай]] парадыгмы праграмавання, гэта азначае, што праграмы складаюцца з выразаў. У функцыйнымфункцыянальным кодзе выхадное значэнне залежыць толькі ад аргументаў на ўваходзе функцыі, таму пры выкліку функцыі ''f'' двойчы з тым жа значэннем аргумента ''х'' будзе атрыманы той жа вынік ''f(x)'' кожны раз. Ліквідацыя пабочных эфектаў, г.зн. зменаў становішча, якія не залежаць ад параметраў функцыі, можа зрабіць нашмат лягчэйшым разуменне і прадказанне паводзін праграмы, што з'яўляецца адным з ключавых матываў для развіцця функцыйнагафункцыянальнага праграмавання.
 
ФункцыйнаеФункцыянальнае праграмаванне мае свае карані ў [[Лямбда-злічэнне|лямбда-злічэнні]], фармальнай сістэме, распрацаванай у 1930-я гады для даследаванняў вылічальнасці, праблемы развязвальнасці, вызначэння функцый, прымянення функцый, і рэкурсіі.<ref>{{cite journal | last = Hudak | first = Paul | title = Conception, evolution, and application of functional programming languages | journal = ACM Computing Surveys|volume=21|issue=3 | pages = 359–411 |date=September 1989 | url = http://www.dbnet.ece.ntua.gr/~adamo/languages/books/p359-hudak.pdf|format=PDF|doi=10.1145/72551.72554 }}</ref>
 
У асноўным увагу на функцыйныяфункцыянальныя мовы праграмавання, асабліва «чыста функцыйныяфункцыянальныя», звяртаюць акадэмічныя даследчыкі, а не распрацоўшчыкі камерцыйнага праграмнага забеспячэння. Тым не менш, функцыйныфункцыянальны стыль праграмавання падтрымліваецца спецыялізаванымі мовамі, сярод якіх [[Erlang]] (паралельныя праграмы)<ref>{{cite web | title = Who uses Erlang for product development? | work=Frequently asked questions about Erlang | url = http://www.erlang.org/faq/faq.html#AEN50 | accessdate = 2007-08-05 }}</ref>
<ref>{{cite conference | last = Armstrong | first = Joe | title = A history of Erlang | conference = Third ACM SIGPLAN Conference on History of Programming Languages | location = San Diego, California | date = June 2007 | url = http://doi.acm.org/10.1145/1238844.1238850 | accessdate = 2009-08-29 }}</ref>, [[R, мова праграмавання|R]] (статыстыка)<ref name="Amath-CO">{{cite web | author = Department of Applied Math, University of Colorado | title = Functional vs. Procedural Programming Language | url = http://amath.colorado.edu/computing/mmm/funcproc.html | accessdate = 2006-08-28 }}</ref>, [[Mathematica]] (сімвальныя вылічэнні)<ref>{{cite web | title = Wolfram Language Guide: Functional Programming | url = http://reference.wolfram.com/language/guide/FunctionalProgramming.html | year = 2015 | accessdate = 2015-08-24 }}</ref>, [[J, мова праграмавання|J]] і [[K, мова праграмавання|K]] (фінансавы аналіз), і інш.
 
Праграмаванне ў функцыйнымфункцыянальным стылі таксама магчымае ў мовах, якія не прызначаны спецыяльна для функцыйнагафункцыянальнага праграмавання. Напрыклад, імператыўная мова праграмавання [[Perl]] з'яўляецца прадметам кнігі, якая апісвае, як прымяніць канцэпцыі функцыйнагафункцыянальнага праграмавання.<ref>{{cite book | last = Dominus | first = Mark J. | title = Higher-Order Perl | publisher = Morgan Kaufmann | year = 2005 |isbn = 1-55860-701-3 }}</ref> [[C_Sharp|C#]]&nbsp;3.0 і [[Java, мова праграмавання|Java]]&nbsp;8 дадалі канструкцыі, якія робяць праграмаванне ў функцыйнымфункцыянальным стылі больш натуральным.
 
{{зноскі}}