Իմացեք ֆունկցիոնալ ծրագրավորում. Կոդավորման այս ոճը կփչացնի ձեր միտքը

Բացահայտում. Ձեր աջակցությունն օգնում է կայքը պահպանել: Այս էջում առաջարկվող որոշ ծառայությունների համար մենք վաստակում ենք ուղեգրման վճար.


Թեև ծրագրավորման լեզուների մեծ մասը բաղկացած է մուտքերից, ելքերից և արտաքին փոփոխականներից, որոնք կարող են սահմանվել կամ օգտագործվել իր գործառույթների ներսից, ֆունկցիոնալ ծրագրավորումը խուսափում է սա.

Ֆունկցիոնալ ծրագրավորման հիմքում ընկած գաղափարն այն է, որ ամեն անգամ, երբ մի գործառույթ կանչվում է նույն պարամետրերով, այն պետք է վերադարձնի նույն արժեքը.

Ինչն է դարձնում ֆունկցիոնալ ծրագրավորումը «ֆունկցիոնալ»?

Դիտարկենք մի գործառույթ, որը վերադարձնում է ներկայիս ջերմաստիճանը: Անցնում է միայն մեկ փոփոխական, որը ցույց է տալիս, թե արդյոք ջերմաստիճանը պետք է վերադարձվի աստիճանով ջերմաստիճանում կամ Ֆարենհեյթում.

Ֆունկցիան այնուհետև օգտագործում է ներքին տրամաբանություն ՝ ներկայիս ջերմաստիճանը վերադարձնելու համար, գուցե կարդալով ջերմաստիճանի ցուցիչ: Սա չի համարվում ֆունկցիոնալ ծրագրավորում, քանի որ ամեն անգամ, երբ գործառույթն օգտագործվում է, այն ունի տարբեր արժեք վերադարձնելու ներուժ, նույնիսկ այն դեպքում, երբ գործառույթի մուտքերը նույնն են.

Ֆունկցիայի պարամետրերը

Գործառնական ծրագրավորման լեզուներն ունեն առաջին կարգի գործառույթներ: Սա նշանակում է, որ գործառույթը կարող է օգտագործվել այնպես, կարծես դա այն արժեքն է, որը վերադարձնում է.

Օրինակ, հաշվի առեք այն գործառույթը, կրկնակի (x), որը երկու անգամ վերադարձնում է իր մուտքային պարամետրի արժեքը: Այսպիսով, կրկնակի (2) կվերադառնա 4. Հաշվի առնելով, որ այն առաջին կարգի գործառույթ է, կոդը, կրկնակի (կրկնակի (2)), նույնը կլինի նույն ծածկագրին, կրկնակի (4).

Ինչպես օրինակով, սա թույլ է տալիս բույն դնել մեկ գործառույթը որպես մյուսի պարամետր և այլն.

Ֆունկցիոնալ ծրագրավորման լեզուները հնարավորություն են տալիս նաև գործառույթները վերցնել գործառույթները որպես փոխանցված փոփոխականներ: Ուշադրություն դարձրեք, որ սա ներառում է գործառույթը, որն ինքնին անցնում է, այլ ոչ թե պարզապես գործառույթի արդյունքների.

Ընդհանուր օգտագործման համար

Ֆունկցիոնալ ծրագրավորումը գերազանցում է բարդ մաթեմատիկական մոդելավորման իրականացմանը. այդ պատճառով ֆունկցիոնալ լեզուների հիմնական օգտագործումներից մեկը ավանդաբար եղել է ակադեմիական.

Շատ ֆունկցիոնալ լեզուներ նույնպես գերազանցում են զուգահեռ մշակումը իրականացնելիս: Դա պայմանավորված է մաքուր գործառույթներից օգտվելու նրանց ունակությամբ `միշտ վերադարձնելով նույն արժեքը` անկախ իրենց գործադրած կարգից.

Այլ լեզուները պետք է անհանգստանան մրցավազքի պայմաններից. Այնտեղ, երբ մեկ գործառույթ գործադրվում է նախքան իր օգտագործած փոփոխականը դրված է սպասվող արժեքին.

Ֆունկցիոնալ մեթոդաբանություն

Ծրագրավորման շատ լեզուներ, որոնք ֆունկցիոնալ չեն, կարող են օգտագործվել ֆունկցիոնալ ծրագրավորման մեթոդաբանությամբ.

Զարգացման այս մոտեցումը կարող է տալ հրամայական ծրագրավորման և ֆունկցիոնալ ծրագրավորման առավելությունների առավելությունները: Որոշ առավելություններ, որոնք դուք հակված եք կորցնել, ներկառուցված ունակություններն են `օգնելու պահպանել մաքրությունը` թողնելով ծրագրավորողին այդ պատասխանատվությունը.

Որոշ լեզուներ, ըստ էության, նախագծված են մեթոդաբանության հիբրիդով, ինչպես նաև ֆունկցիոնալ ծրագրավորմամբ, հանելով այս կամ այն ​​բոլոր թերությունները.

Պատմություն

Lambda Calculus- ը, հավանաբար, առաջին համակարգչային լեզուն է, և այն ֆունկցիոնալ լեզու է: Այն առաջին անգամ մշակվել է Ալոնցո եկեղեցու կողմից.

Հետաքրքիրն այն է, որ այս լեզուն առաջին անգամ ստեղծվել է 1930-ական թվականներին `նախքան ծրագրավորվող համակարգիչներ գոյություն ունենալը: 1958 թվականին Johnոն Մաքքարթին, Մասաչուսեթսի տեխնոլոգիական ինստիտուտի պրոֆեսոր (MIT), ստեղծեց LISP, որը մոդելավորվեց lambda հաշվարկից հետո և հանդիսանում է ամենակարևոր ֆունկցիոնալ լեզուներից մեկը.

Դեռևս կան LISP- ի շատ տարբերակներ, որոնք օգտագործվում են այսօր ՝ մի քանիսը ավելի ֆունկցիոնալ, քան մյուսները.

Լեզուներ, որոնք աջակցում են ֆունկցիոնալ ծրագրավորմանը

  • D- ն նախագծվել է C ++- ից հետո `բոլոր առավելությունները ստանալու համար` միաժամանակ հեռացնելով C- ի հետ հետադարձ համատեղելիության թույլ կողմերը.

  • Էլիքսիրը ստացվել է և նստում է Էռլանգի վերևում ՝ օգտագործելով հ

    բարձր
    զուգահեռ ծրագրեր, մինչ լեզուն ավելի հեշտ է գրել և պահպանել.

  • Erlang- ը խիստ փոփոխական և զուգահեռ է ՝ այն իդեալական դարձնելով հեռահաղորդակցման և այլ ծրագրերի համար, որոնք զանգվածային քանակությամբ տվյալներ են ստանում անկանխատեսելի կարգով:.

  • F #- ը բաց կոդով բազմապրոդիգմական լեզու է, որը հաճախ օգտագործվում է այդ ծրագրի շրջանակներում

    .NET
    շրջանակ Այն սովորաբար օգտագործվում է վերլուծական ծրագրակազմի արագ զարգացման համար.

  • Haskell- ը մաքուր ֆունկցիոնալ լեզու է, որն օգտագործում է Lambda Calculus- ը.

  • ML- ն օգտագործվում է մաթեմատիկական, գիտական, ֆինանսական, վերլուծական և այլ կիրառական ծրագրերի մեջ: Դրա ուժեղ կողմերից մեկը այլ ծրագրերի մանիպուլյացիայի համար ծրագրակազմ պատրաստելն է.

  • OCaml կամ Objective Caml- ը անվճար, բաց աղբյուրի լեզու է, որը հիմնված էր Քեմլի վրա: Այն հակված է ստեղծել շատ թեթև քաշային ծրագրեր, որոնք օգնում են նրանց ավելի արագ բեռնել և գործարկել, քան այլ լեզուներով ստեղծվածները.

  • Scala- ն նախատեսված էր հեշտությամբ ինտեգրվելու Java- ի և օբյեկտի վրա հիմնված այլ լեզուների: Scala- ն օգտվում է ֆունկցիոնալ ծրագրավորումից, ինչը թույլ է տալիս այն օգտագործել բաշխված և զուգահեռ ծրագրերում.

  • Scheme- ը հիմնված էր LISP- ի շարահյուսության և ALGOL- ի կառուցվածքի վրա: Շնորհիվ դրա պարզության, սխեման օգտագործվում է որպես համակարգչային գիտության բազմաթիվ դասընթացների ՝ ծրագրի ձևավորման համար ներածություն ՝ համակարգչային ծրագրավորման որոշ հիմունքներ ցույց տալու համար:.

  • Swift- ը նախագծված էր մեղքի հանդուրժող, արագ զարգանալու և արտահայտիչ լինելու նպատակով.

Ռեսուրսներ

Գործառնական ծրագրավորման ռեսուրսները սովորաբար կենտրոնացած են որոշակի լեզվի վրա, ինչպես Scala- ն: Բայց նույնիսկ երբ դրանք լինում են, նրանք արժեքավոր տեղեկատվություն են տրամադրում: Այնպես որ, մի ամաչեք, քանի որ որևէ հոդված կամ գիրք օգտագործում է մի լեզու, որը դուք չեք օգտագործում.

Ձեռնարկներ

  • Գործնական ներածություն ֆունկցիոնալ ծրագրավորման վերաբերյալ. Մերի Ռոուզ Քուքի քննարկումն հրամայական լեզուներով ֆունկցիոնալ ծրագրավորման մեթոդների օգտագործման մասին.

  • Ֆունկցիոնալ ծրագրավորման հիմունքներ. Ֆունկցիոնալ ծրագրավորման լավ տեսական քննարկում.

  • Մի վախեցեք գործառնական ծրագրավորումից. Ֆունկցիոնալ ծրագրավորումն է «ծրագրավորման պարադիգմների բեղմնավորված հիպսերին»: Պարզեք այստեղ.

  • Swift- ի գործառութային ծրագրավորման ներածություն. Swift- ի ֆունկցիոնալ ծրագրավորման մանրամասն ծանոթացում.

  • Ինչու են գործառնական ծրագրավորման բոլոր ձեռնարկները այսքան մաթեմատիկայի: – քննարկում Stack Exchange- ի վերաբերյալ, որը արժե կարդալ.

Գրքեր

  • Գործառնական ծրագրավորման ներածություն Lambda Calculus- ի միջոցով (2011) Greg Michaelson. Ներկայացում, որն սկսվում է հենց սկզբից.

  • Ֆունկցիոնալ մտածողություն. Պարադիգմ սինթաքսի մասին (2014 թ.) ՝ Նիլ Ֆորդի. Ֆունկցիոնալ ծրագրավորման հիմունքների առաջատար գիրք.

  • Ֆունկցիոնալ ծրագրավորման կախարդական աշխարհ. Մաս I. Մտածող գործառույթ (2014) Կ. Անանդ Կումարի կողմից. Կարճ գիրք ֆունկցիոնալ ծրագրավորման հիմունքների վերաբերյալ.

  • Դառնալով գործառույթ (2014) byոշուա Backfield- ի կողմից. Ֆունկցիոնալ ծրագրավորման ներդրում հրամայական և օբյեկտիվ ուղղված ծրագրավորմանը ծանոթ մարդկանց համար.

Ամփոփում

Չնայած ֆունկցիոնալ ծրագրավորումը շատ լավ է որոշ ծրագրերի համար, շատ ծրագրավորողներ գտնում են հրամայական լեզուների հեշտությունը, շատ ավելի հեշտ է գլուխները փաթաթել:.

Բայց մաթեմատիկական և ավելի ֆորմալ կոդավորման համար ֆունկցիոնալ ծրագրավորումը լավ ընտրություն է: Եվ ֆունկցիոնալ ծրագրավորման սկզբունքները հասկանալը կարող է օգտակար լինել բոլոր ծրագրավորողների համար.

Հետագա ընթերցում և ռեսուրսներ

Մենք ունենք ավելի շատ ուղեցույցներ, ձեռնարկներ և ինֆոգրաֆիկա, որոնք կապված են կոդավորման և զարգացման հետ.

  • F # Ծրագրավորում. Պարզել գործառնական ծրագրավորման մասին. NET շրջանակներում.

  • Erlang Ծրագրավորման ներածություն և ռեսուրսներ. Վաղ գործառութային լեզու, որն օգտագործվում է զուգահեռ կոդ ստեղծելու համար.

  • Swift ներածություն և ռեսուրսներ. Սա C- ի նորագույն լեզուներից մեկն է: Ծրագրավորման ապագան: Պարզեք այստեղ!

Ինչ օրենսգիրք պետք է սովորեք?

Շփոթված եք այն ծրագրավորման լեզվով, որով պետք է սովորեք ծածկագրվել: Ստուգեք մեր ինֆոգրաֆիկը ՝ Ինչ օրենսգիրք պետք է սովորեք?

Այն ոչ միայն քննարկում է լեզուների տարբեր ասպեկտները, այլև պատասխանում է այնպիսի կարևոր հարցերի, ինչպիսիք են. «Որքա՞ն գումար եմ վաստակելու ծրագրավորող Java- ն ապրուստի համար»:

Ինչ օրենսգիրք պետք է սովորեք:
Ինչ օրենսգիրք պետք է սովորեք?

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map