Ծրագրավորման_լեզու
Ծրագրավորման պարադիգմ
Լեզուներին պարադիգմներին վերագրելը կարող է իրականացվել մի քանի հիմքերով, որոնցից մի քանիսը համապատասխանում են լեզուների հատուկ տեխնիկական բնութագրերին, իսկ մյուսները շատ կամայական են:Տեխնիկապես, լեզուները բաժանվում են, օրինակ, կողմնակի էֆեկտների և կապի թափանցիկության:Երկրորդ դեպքում ասում են, որ լեզուն պատկանում է «զուտ ֆունկցիոնալ պարադիգմին»:Տիպային համակարգի որոշակի հատկություններ և լեզու հաշվարկելու ռազմավարություններ երբեմն համարվում են որպես պարադիգմ, օրինակ ՝ պարամետրային բազմամորֆ տիպային համակարգերի համար, նրանք հաճախ խոսում են ընդհանուր ծրագրավորման պարադիգմի իրականացման մասին:Մեկ այլ օրինակ `համասեռականության հատկությունն է, որը բացում է մետրոպոգրամանման սորտերի մի ամբողջ սպեկտր:Կան բազմաթիվ «լեզուներ, որոնք ժառանգվել են մաթեմատիկայից», որոնցից շատերը կազմում են եզակի պարադիգմներ:Ավելի պայմանականորեն լեզուները բաժանվում են սերունդների:Առաջին երկու սերունդը ցածր մակարդակի վրա է, այսինքն, կենտրոնացած են հատուկ ապարատների առանձնահատկությունների վրա, և սկզբունքորեն դրանք չեն համապատասխանում որևէ պարադիգմի:Երրորդ սերնդի հետ միասին նրանք ձևավորում են հրամայական ծրագրավորման պարադիգմ, իսկ հաջորդ սերունդները ՝ դեկլարատիվ:Շատ դեկլարատիվ լեզուներ ներառում են որոշակի հրամայական հնարավորություններ, երբեմն էլ հակառակը:Ծրագրերի չափի և բարդության բարձրացմամբ, երկրորդ սերնդի լեզուները օգտագործելիս սկսեց ձևավորվել ընթացակարգային ծրագրավորման պարադիգմը,պահանջելով մեծ ընթացակարգերի տարանջատում հիերարխիկորեն կապված փոքր ավելի փոքր շղթաների մեջ:Միևնույն ժամանակ, հայտնվեցին առաջին երրորդ սերնդի լեզուները, և կառուցվածքային ծրագրավորումն առաջին հերթին ձևավորվեց ՝ որպես ընթացակարգային, իսկ հետո ՝ մոդուլային ուղիղ զարգացում:Ժամանակի ընթացքում հայտնվեցին հսկայական թվով տարբեր եղանակներ ՝ լուծելու հիմնահարցը զարգացող ծրագրային համակարգերը ինտեգրելու սկզբնական հրամայական մոտեցումը:Որոշ դեպքերում ձեռք է բերվել էական ազդեցություն զարգացման արագության և որակի ցուցանիշների վրա, բայց ընդհանուր առմամբ, ինչպես նշվեց վերևում, երրորդ սերնդի լեզուները վերացական են մեքենայական տրամաբանությունից միայն որոշակի մակարդակի վրա և մի փոքր ենթակա են համարժեք վերափոխումների:Մինչ օրս լեզուների երրորդ սերունդը ներկայացված է բազմազան պարադիգմների առավել լայն շրջանակով:Ֆունկցիոնալ լեզուները վերաբերում են չորրորդ սերնդին, որից առանձնանում են «զուտ ֆունկցիոնալ», իսկ մնացածները կոչվում են «ոչ զուտ ֆունկցիոնալ»:Հինգերորդ սերունդը ներառում է տրամաբանական ծրագրավորման լեզուներ, որոնցում, բացի ավանդականից, առանձնանում են մի քանի հատուկ ձևեր, օրինակ ՝ ծրագրավորումն ըստ սահմանափակումների:Փաստորեն, հինգերորդ սերնդի լեզուները չորրորդ սերնդի լեզուներն են ՝ լրացված գիտելիքների բազայով, հետևաբար այս կատեգորիան, ինչպես արդեն նշվեց վերևում, ընդհանուր առմամբ ընդունված չէ:Բազմաթիվ պարադիգմներ պայմանականորեն հռչակված մեթոդներ են ՝ ծրագրի կառուցվածքը կազմակերպելու համար և կիրառելի են մեծ թվով լեզուների համար:Լայն ընդգրկումը կառուցվածքային և մոդուլային է. Դրանք օգտագործվում են ինչպես հրամայական, այնպես էլ դեկլարատիվ լեզուներով:Այլ պարադիգմները սերտորեն կապված են տեխնիկական հատկությունների հետ։ Օրինակ, C ++ լեզվի ենթաբազմությունը `կաղապարներ - կարող է պաշտոնապես համարվել որպես Turing- ի ամբողջական զուտ ֆունկցիոնալ լեզու, բայց C ++- ը չունի հատկություններ, որոնք բնորոշ են ֆունկցիոնալ լեզուներին:Արդյունքում, ֆունկցիոնալ լեզուների կազմման մեջ օգտագործված ալգորիթմները չեն կարող կիրառվել C ++- ի համար, ուստի ֆունկցիոնալ պարադիգմի առաջատար հետազոտողները շատ թերահավատորեն են վերաբերվում C ++- ին։