From Wikipedia, the free encyclopedia
Ֆունկցիոնալ ծրագրավորում, դիսկրետ մաթեմատիկայի բաժին է և ծրագրավորման մի մոդել, որում հաշվարկման պրոցեսը մեկնաբանվում է որպես ֆունկցիայի արժեքների հաշվարկում՝ վերջինիս մաթեմատիկական հասկացությամբ (ի տարբերություն ֆունկցիայի պրոցեդուրային ծրագրավորման մեջ, որտեղ այն դիտվում է որպես ենթածրագիր)։
Այս հոդվածն աղբյուրների կարիք ունի։ Դուք կարող եք բարելավել հոդվածը՝ գտնելով բերված տեղեկությունների հաստատումը վստահելի աղբյուրներում և ավելացնելով դրանց հղումները հոդվածին։ Անհիմն հղումները ենթակա են հեռացման։ |
Այս հոդվածը կարող է վիքիֆիկացման կարիք ունենալ Վիքիպեդիայի որակի չափանիշներին համապատասխանելու համար։ Դուք կարող եք օգնել հոդվածի բարելավմանը՝ ավելացնելով համապատասխան ներքին հղումներ և շտկելով բաժինների դասավորությունը, ինչպես նաև վիքիչափանիշներին համապատասխան այլ գործողություններ կատարելով։ |
Ֆունկցիոնալ ծրագրավորումը հակադրվում է իմպերատիվ ծրագրավորման մոդելին, որը հաշվարկման պրոցեսը նկարագրում է որպես վիճակների հաջորդական փոփոխություն։ Անհրաժեշտության դեպքում ֆունկցիոնալ ծրագրավորման մեջ հաշվարկվող պրոցեսի հաջորդական վիճակների ամբողջ համախումբը ներկայացվում է պարզ ձևով, օրինակ՝ որպես ցուցակ։
Ֆունկցիոնալ ծրագրավորումը ենթադրում է մուտքային տվյալներից և այլ ֆունկցիաների արդյունքներից կախված ֆունկցիայի արդյունքների հաշվարկ և չի ենթադրում ծրագրի վիճակի պահպանում։ Հետևաբար՝ այն չի ենթադրում նաև այդ վիճակի փոփոխելիություն։
Պրակտիկայում իմպերատիվ ծրագրավորման մեջ մաթեմատիկական ֆունկցիայի տարբերությունը ՛՛ֆունկցիա՛՛ հասկացությունից այն է, որ իմպերատիվ ֆունկցիաները կարող են կախված լինել ոչ միայն արգումենտից, այլ նաև ֆունկցիայի նկատմամբ արտաքին համարվող փոփոխականներից, ինչպես նաև ունենալ կողմնակի էֆեկտ և փոխել արտաքին փոփոխականների վիճակը։
Այսպիսով՝ իմպերատիվ ծրագրավորման մեջ միևնույն պարամետրերով, բայց ալգորիթմի տարբեր էտապներում աշխատելիս միևնույն ֆունկցիան կանչելու ժամանակ կարելի է ելքում ստանալ տարբեր տվյալներ՝ փոփոխականների վիճակի ֆունկցիայի վրա ազդեցության պատճառով։
Իսկ ֆունկցիոնալ լեզվի մեջ միևնույն պարամետրերով ֆունկցիայի կանչման ժամանակ միշտ կստանանք նույն արդյունքը՝ ելքային տվյալները կախված են միայն մուտքային տվյալներից։
Սա թույլ է տալիս ֆունկցիոնալ լեզուների ծրագրի կատարման միջավայրին քեշավորել ֆունկցիայի արդյունքները և կանչել նրանց հերթականությամբ, ինչը չի որոշվում ալգորիթմով, և զուգահեռացնել նրանց՝ առանց ծրագրավորողի կողմից լրացուցիչ միջամտության։
Ֆունկցիոնալ ծրագրավորման համար որպես հիմք հանդիսանում է լյամբդա-հաշիվը։
Ֆունկցիոնալ ծրագրավորման առավել հայտնի լեզուներից են հանդիսանում.
Որպես կանոն, ֆունկցիոնալ ծրագրավորման լեզուների նկատմամբ հետաքրքրությունը, հատկապես զուտ ֆունկցիոնալ լեզուների, եղել է ավելի շատ գիտական, քան կոմերցիոն։ Սակայն այնպիսի լեզուներ, ինչպիսիք են Erlang, OCaml, Haskell, Scheme լեզուները, ինչպես նաև հատուկ R (վիճակագրություն), Wolfram, J և K (ֆինանսական վերլուծություն), և XSLT (XML) լեզուները, գտել են իրենց կիրառությունը կոմերցիոն ծրագրավորման ոլորտում։
Լյամբդա-հաշիվը դարձել է ֆունկցիաների նկարագրության և հաշվարկի համար տեսական հիմք։ Լինելով մաթեմատիկական աբստրակցիա, այլ ոչ թե ծրագրավորման լեզու, այն այսօր բոլոր ֆունկցիոնալ ծրագրավորման լեզուների հիմքն է։ Նրա նմանատիպ կոմբինատոր տրամաբանություն տեսական հասկացությունը, համարվում է ավելի աբստրակտ, քան λ-հաշիվը։ Եվ λ-հաշիվը, և կոմբինատոր տրամաբանությունը մշակվել են մաթեմատիկայի սկզբունքների ավելի պարզ ու ճշգրիտ նկարագրության համար։
Առաջին ֆունկցիոնալ լեզուն Lisp-ն է, որը ստեղծվել է Ջոն Մակկարտի կողմից 1958թ. և իրականացվել է IBM 700/7000-ի համար։ Lisp-ում առաջին անգամ ներդրվել են ֆունկցիոնալ լեզվի բազմաթիվ հասկացություններ։ Հետագայում Lisp-ի զարգացումներն են դարձել այնպիսի լեզուներ, ինչպիսիք են Scheme-ը և Dylan-ը։
Ֆունկցիոնալ ծրագրավորման առանձնահատկությունների հիմքը, որպես առավելություն, ինչպես նաև որպես տվյալ մոդելի թերություն, հանդիսանում է այն, որ նրանում իրականացվում է հաշվարկների մոդել առանց վիճակների։ Եթե իմպերատիվ ծրագիրը իրականացման ցանկացած էտապում ունի վիճակ, այսինքն՝ կա բոլոր փոփոխականների արժեքների համախումբ, և բերում է կողմնակի էֆեկտի, ապա զուտ ֆունկցիոնալ ծրագիրը ոչ ամբողջությամբ, ոչ իր առանձին մասերով չունի վիճակ և չի բերում կողմնակի էֆեկտի։ Այն, որ իմպերատիվ լեզուներում արվում է փոփոխականների արժեքների վերագրմամբ, ֆունկցիոնալ լեզուներում արվում է ֆունկցիայի պարամետրերին արտահայտություններ տալով։
Վիքիպահեստն ունի նյութեր, որոնք վերաբերում են «Ֆունկցիոնալ ծրագրավորում» հոդվածին։ |
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.