«Ծրագրավորման լեզու»–ի խմբագրումների տարբերություն
Content deleted Content added
Rescuing 2 sources and tagging 0 as dead.) #IABot (v2.0.8 |
չ Colon֊ը (:, U+003A) փոխարինում եմ հայերեն վերջակետով (։, U+0589); ծանոթագրությունը տեղափոխում եմ կետադրական նշանից առաջ |
||
Տող 6.
Ծրագրավորման լեզվի նկարագրությունը սովորաբար կազմված է լինում երկու բաղկացուցիչներից՝ շարահյուսություն և իմաստաբանություն։ Որոշ ծրագրեր բացատրվում են մասնագրային փաստաթղթերով, օրինակ՝ C ծրագրավորման լեզուն մասնագիտացված է [[ISO]] ստանդարտով։ [[Perl]] 5-ը և այլ վաղ լեզուներ դոմինանտ իրականացում, ինչի շնորհիվ կիրառվում են որպես տեղեկագրություն։
Ծրագրավորման լեզուն նախատեսված է համակարգչային ծրագրեր գրելու համար, որոնք մի շարք կանոններ են, որոնք համակարգչին թույլ են տալիս կատարել որոշակի հաշվարկային գործընթաց, կազմակերպել տարբեր օբյեկտների կառավարում:Ծրագրավորման լեզուն տարբերվում է բնական լեզուներից, քանի որ այն նախագծված է համակարգիչները վերահսկելու համար, մինչդեռ բնական լեզուները հիմնականում օգտագործվում են մարդկանց միջև հաղորդակցվելու
== Մշակման վաղ փուլեր ==
Կարելի է ասել, որ առաջին ծրագրավորման լեզուները առաջացել են նույնիսկ ժամանակակից էլեկտրոնային համակարգիչների հայտնվելուց առաջ։ Արդեն 19-րդ դարում հորինվել են այնպիսի սարքեր, որոնք կարելի է ծրագրավորվող անվանել մի փոքր պայմանականությամբ-օրինակ՝ երաժշտական տուփ (իսկ հետագայում ՝ մեխանիկական դաշնամուր) մետաղական մխոցով և
== Բարելավում ==
1960-70-ականների ժամանակահատվածում մշակվել են ծրագրավորման լեզուների հիմնական պարադիգմները, որոնք ներկայումս օգտագործվում են, չնայած որ շատ առումներով այս գործընթացը միայն երրորդ սերնդի առաջին լեզուներում դրված գաղափարների և հասկացությունների կատարելագործումն
* APL- ն ազդեց ֆունկցիոնալ ծրագրավորման վրա և դարձավ առաջին լեզուն, որը աջակցեց զանգվածի մշակմանը,
* Լեզուն PL / 1 (NPL) մշակվել է 1960-ականներին ՝ որպես Ֆորտրան- ի և Կոբոլ- ի լավագույն հատկությունների համադրություն,
* 1960-ականների ընթացքում զարգացած և կատարելագործված Snobol լեզուն, որը կենտրոնացած է բառերի մշակման վրա, ներմուծել է ծրագրավորման լեզուների հիմնական գործողությունների շարքում օրինակելի համընկնում,
* Սիմուլայի լեզուն, որը հայտնվում էր միևնույն ժամանակ, առաջին հերթին աջակցում էր օբյեկտիվ ուղղված
* 1969 թվականից մինչև 1973 թվականն ընկած ժամանակահատվածում իրականացվեց C լեզվով լեզվի զարգացումը
* 1972-ին ստեղծվեց Prolog- ը `ամենահայտնի (չնայած առաջինը չէ, և հեռու միակից) տրամաբանական ծրագրավորման լեզու,
* 1973 թ.-ին ML- ում(Meta Language) իրականացվեց պոլիմորֆային մուտքագրման ընդլայնված համակարգ, որը հիմք դրեց մուտքագրված ֆունկցիոնալ ծրագրավորման լեզուների,
Այս լեզուներից յուրաքանչյուրը սերունդների ընտանիք էր առաջացնում, և ծրագրավորման ժամանակակից լեզուները, ի վերջո, հիմնված են դրանցից մեկի
== Միավորում և զարգացում ==
1980-ականներին սկսվեց մի շրջան, որը կամայականորեն կարելի է անվանել համախմբման ժամանակ:[[:ru:C++|C++]] լեզուն համատեղում էր օբյեկտի վրա հիմնված և համակարգային ծրագրավորման առանձնահատկությունները, ԱՄՆ կառավարությունը ստանդարտացրեց Ադայի լեզուն:Ստեղծված Պասկալից և նախատեսված է ռազմական կայանքների համար օդային կառավարման համակարգերում օգտագործելու համար,զգալի ներդրումներ են կատարվել Ճապոնիայում և այլ երկրներում, այսպես կոչված, հինգերորդ սերնդի լեզուների հեռանկարների ուսումնասիրության մեջ,որը կներառեր տրամաբանական ծրագրավորման կոնստրուկցիաներ,Ընդհանուր առմամբ, այս ժամանակահատվածը բնութագրվում էր նախորդ տասնամյակում դրված հիմքի վրա ապավինելով, այլ ոչ թե նոր պարամետրերի մշակմամբ:Մանրածախ համակարգերի համար ծրագրավորման լեզուների մշակման գործընթացում նկատվող կարևոր միտում եղել է մոդուլների օգտագործման շեշտը `ծածկագրերի կազմակերպման հատորային միավորները,աշխատանքի կարևոր ոլորտը վիզուալ (գրաֆիկական) ծրագրավորման լեզուներն են, որոնցում ծրագիրը, որպես տեքստ գրելու գործընթացը փոխարինվում է «նկարելու» գործընթացով:Տեսողական լեզուները տալիս են տեսանելիություն և ավելի լավ ընկալում անձի կողմից ծրագրի տրամաբանության
= '''Լեզվի բնութագրում''' =
=== Ստանդարտացում ===
Շատ տարածված ծրագրավորման լեզուների համար ստեղծվել են [[:ru:Международная стандартизация|միջազգային ստանդարտներ]]:Հատուկ կազմակերպությունները պարբերաբար թարմացնում և հրապարակում են համապատասխան լեզվի բնութագրերը և պաշտոնական սահմանումները:Նման հանձնաժողովների շրջանակներում շարունակվում են ծրագրավորման լեզուների մշակումն ու արդիականացումը, քննարկվում են առկա և նոր լեզվական կոնստրուկցիաների ընդլայնման կամ օժանդակության
==== Այբուբենը ====
Ժամանակակից ծրագրավորման լեզուները նախատեսված են ASCII օգտագործման համար,այսինքն, ASCII- ի բոլոր գրաֆիկական նիշերի առկայությունը անհրաժեշտ և բավարար պայման է ցանկացած լեզվական կոնստրուկցիաներ գրելու համար:6-բիթ նիշերի ժամանակաշրջանում առաջացած վաղ լեզուները օգտագործում էին ավելի սահմանափակ շարք:Օրինակ ՝ Fortran այբուբենը ներառում է 49 նիշ (ներառյալ տարածություն).A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 = + - * / () . , $ ' :
Հատկանշական բացառություն է APL լեզուն, որն օգտագործում է շատ հատուկ նիշ:ASCII- ից դուրս նիշերի օգտագործումը կախված է իրագործումից.երբեմն դրանք թույլատրվում են միայն մեկնաբանություններում և բնույթի / լարային հաստատություններում, իսկ երբեմն նույնականացուցիչներում:Լեզուները գոյություն ունեին ԽՍՀՄ-ում, որտեղ բոլոր հիմնաբառերը գրվում էին ռուսերեն տառերով, բայց դրանք մեծ ժողովրդականություն չէին վայելում:Օգտագործված խորհրդանիշների շարքի ընդլայնումը կաշկանդված է նրանով, որ ծրագրային ապահովման զարգացման շատ նախագծեր միջազգային են:Շատ դժվար կլինի աշխատել այնպիսի կոդով, որտեղ որոշ փոփոխականների անունները գրված են ռուսերեն տառերով, մյուսները ՝ արաբերենով, իսկ մյուսները ՝ չինական նիշերով:Այնուամենայնիվ, տեքստային տվյալների հետ աշխատելու համար նոր սերնդի ծրագրավորման լեզուները աջակցում են Unicode-
=== Ցածր և բարձր մակարդակի լեզուներ. ===
Տող 44.
* այն աստիճանի, որով լեզվի իմաստաբանությունը տարբերվում է թիրախային պրոցեսորային ճարտարապետության մեքենայական ծածկագրից. այլ կերպ ասած, այն փոքրագույն փոխակերպումները, որոնք ծրագրի կոդը պետք է ենթարկվեն նախքան դրա իրականացումը
* այն աստիճանը, որով լեզվի իմաստաբանությունը հաշվի է առնում մարդու մտածողության առանձնահատկությունները, այլ ոչ թե մեքենայական, այսինքն ՝ լեզվի մակարդակը «ավելի ցածր է», այնքան ավելի «մեքենային մոտ է», իսկ «ավելի բարձր» ՝ այն «ավելի մոտ է մարդուն»
Ցածր մակարդակի լեզուները հիմնականում ներառում են մեքենայական լեզուներ,այսինքն ՝ լեզուները, որոնք իրականացվում են ուղղակիորեն ապարատային մակարդակի վրա.Դրանք պատկանում են ծրագրավորման լեզուների առաջին
Կարևոր կատեգորիա են տիրույթի հատուկ լեզուները:Լեզվի նշանակումը այս կատեգորիայի համար շատ պայմանական և հաճախ հակասական է. գործնականում այս տերմինը կարող է կիրառվել լեզուների երրորդ, չորրորդ և հինգերորդ սերունդների ներկայացուցիչների համար:Լեզուների առաջին երեք սերունդները կազմում են ծրագրավորման հրամայական պարադիգմը, իսկ հաջորդը `դեկլարատիվ:«Հրամայական» տերմինը նշանակում է «հրամանի կարգ», այսինքն ՝ ծրագրավորում մեքենայի քայլ առ քայլ հանձնարարականով կամ մանրամասն ցուցում այն մասին, թե ինչպես է ծրագրավորողն արդեն հորինել մեթոդ ՝ տեխնիկական բնութագրերի իրականացման համար:«Դեկլարատիվ» տերմինը նշանակում է «նկարագրություն», այսինքն `ծրագրավորում` տեխնիկական բնութագրերի ձևակերպում `ավտոմատ փոխակերպումների համար հարմար ձևով, լեզվի թարգմանչի համար ընտրության ազատությամբ:Ստիպողական լեզուները ուղղված են նկարագրելու, թե ինչպես հասնել արդյունքի, մինչդեռ ավելի բարձր մակարդակի լեզուները ուղղված են նկարագրել այն, ինչ պահանջվում է որպես արդյունք:Շատ դեպքերում, բարձր մակարդակի լեզուները առաջացնում են ավելի մեծ մեքենայի կոդ և կատարում են ավելի դանդաղ:Այնուամենայնիվ, ալգորիթմական և կառուցվածքային բարդ ծրագրերի համար բարձր մակարդակի որոշ լեզուներ կարող են զգալի առավելություն տալ արդյունավետության մեջ, երկրորդը `միայն ցածր և միջին մակարդակի, փոքր և պարզ ծրագրերում:Այլ կերպ ասած, լեզվի հնարավոր արդյունավետությունը փոխվում է `իր« մակարդակը »ոչ գծային և ընդհանուր առմամբ երկիմաստորեն բարձրացնելով:Հետևաբար, այսօր ցածր մակարդակի լեզուները օգտագործվում են միայն համակարգային ծրագրավորման առաջադրանքներում:Լայնորեն համարվում է, որ այն առաջադրանքներում, երբ ռեսուրսների ճշգրիտ վերահսկողություն է պահանջվում, լեզուն ինքնին պետք է հնարավորինս քիչ փոխակերպումներ կատարի, հակառակ դեպքում ծրագրավորողի բոլոր ջանքերն ապարդյուն
=== Ապահով և անվտանգ լեզուներ ===
Ժամանակակից համակարգիչները ներկայացնում են բարդ աշխարհի իրական բարդությունները `որպես համակարգչային հիշողության թվեր,սա ներմուծում է մարդկային գործոնի ռիսկը ծրագրավորման կարգապահության մեջ, ներառյալ հիշողության հասանելիության սխալների հավանականությունը:Հետևաբար, ծրագրավորման շատ լեզուներ ուղեկցվում են երկուական տվյալների վրա գործողությունների նշանակությունը վերահսկելու միջոցներով, որոնք հիմնված են ուղեկցող տրամաբանական տեղեկատվության վրա-տիպային համակարգ:Լեզուների տիպի համակարգերը բաժանված են դինամիկ և ստատիկ, իսկ վերջիններս, իր հերթին, բաժանված են ոչ բազմիմֆորիկ և բազմամորֆային:Բացի այդ, դրանք բաժանվում են հստակ, այլ կերպ ասած, որոնք պահանջում են արտահայտված տիպի հայտարարագրեր ծրագրի օբյեկտների համար կամ դրանք ստատիկորեն բխելով ինքնուրույն:Ընդհանրապես, լեզուն անվանում են անվտանգ, եթե դրա վրա եղած ծրագրերը, որոնք կազմողը կարող է ընդունվել ինչպես ճիշտ կառուցված, դինամիկայում երբեք չի անցնում ընդունելի վարքի սահմաններից:Սա չի նշանակում, որ նման ծրագրերն ընդհանրապես չեն պարունակում սխալներ:«Ծրագրի լավ պահվածք» տերմինը նշանակում է, որ նույնիսկ եթե ծրագիրը պարունակում է որոշակի սխալ, այն այնուամենայնիվ, ի վիճակի չէ խախտել տվյալների ամբողջականությունը և
Սխալների վերահսկման աստիճանը և նրանց նկատմամբ լեզվի արձագանքը կարող են տարբեր լինել:Ամենապարզ տիպի համակարգերը արգելում են, օրինակ, տողն իջեցնել ամբողջ թվից:Այնուամենայնիվ, միլիմետրերը և դյույմները կարող են ներկայացվել որպես ամբողջ թվեր, բայց տրամաբանական սխալ կլիներ միլիմետրերից դյույմները հանելը:Առաջադեմ տիպի համակարգերը թույլ են տալիս նման տրամաբանական տեղեկությունները ներառել ծրագրի
C լեզուներն ու նրա սերունդ C ++ -ը անվնաս են
=== Տվյալների տիպերը ===
Տող 73.
==== Նախնական տեղեկություններ ====
Այս տերմինաբանությունը(առաջին և բարձր կարգի լեզուներ), բնականաբար, ժառանգվում է համակարգչային գիտության կողմից ՝ ձևավորելով համապատասխան իմաստաբանություն ՝ առաջին և ավելի բարձր կարգի:Առաջին կարգի լեզուները թույլ են տալիս սահմանել միայն առաջին կարգի հարաբերությունները քանակների միջև:Բարձր կարգի լեզուները թույլ են տալիս սահմանել կախվածությունը կախվածության միջև:Ավելին, շատ դեպքերում նրանք ասում են, որ նման լեզուն կախվածությունը (գործառույթները) համարում է առաջին դասի օբյեկտներ, այլ կերպ ասած, ընդունում է առաջին կարգի գործառույթները:Բարձր կարգի լեզուները պարունակում են գրեթե բոլոր ֆունկցիոնալ
==== Արտահայտչություն ====
Առաջին կարգի լեզուները թույլ են տալիս իրականացնել ալգորիթմներ որպես կոդ, բայց ոչ ծրագրային ճարտարապետություն
==== Ուսումնասիրություն ====
Ներկայացնելով «առաջին և երկրորդ կարգի սուբյեկտների» տերմինաբանությունը ՝ Ստրեյշին անմիջապես ուշադրություն հրավիրեց այն փաստի վրա, որ շատ մարդկանց հետ անձնական փորձից և քննարկումներից համոզվել է, որ անհավատալիորեն դժվար է դադարեցնել մտածելը գործառույթների մասին ՝ որպես երկրորդ կարգի օբյեկտներ,այսինքն ՝ լեզվի կարգը ունի արտահայտված հոգեբանական ազդեցություն:Բարձր մակարդակի լեզուների տիրապետումը կօգնի ծրագրավորողին մտածել ավելի բարձր մակարդակի աբստրակցիաների առումով:Ցածր մակարդակի լեզուները կարող են պարտադրել հակառակը, որի կապակցությամբ լայնորեն հայտնի է հետևյալ
Գործնականորեն անհնար է սովորեցնել լավ ծրագրավորում այն ուսանողներին, ովքեր ունեն BASIC- ի փորձառություն. Որպես հավանական ծրագրավորողներ, նրանք հոգեկան աղավաղված են `առանց վերականգնման հույս
Սա նշանակում է, որ ավելի բարձր կարգի լեզվի օգտագործումն ինքնին չի նշանակում ճարտարապետության փոփոխություն և վերօգտագործման գործոնի ավելացում. Որոշիչ գործոնը որոշակի մշակողի ՝ համապատասխան ապուշների օգտագործման ունակությունն է:Հասկանալով բարձր մակարդակի կոնստրուկցիաների հնարավորություններն ու սահմանափակումները, դրանց իրականացման հիմնական սկզբունքները ոչ միայն ծրագրավորողին հնարավորություն են տալիս առավել արդյունավետ օգտագործել իր սովորած լեզուն, այլև թույլ է տալիս Ձեզ ստեղծել և օգտագործել նմանատիպ մեխանիզմներ զարգացման դեպքում `այնպիսի լեզվով, որտեղ դրանք չեն իրականացվում:Ավելի հեշտ կլինի ծրագրավորողի համար, ով գիտի ծրագրավորման լեզուների լայն տեսականի, ընտրել դրանց շարքում այն գործիքը, որն առավելագույնս հարմար է իր խնդիրը լուծելու համար, անհրաժեշտության դեպքում, ուսումնասիրել նոր լեզու կամ իրականացնել տիրույթի հատուկ լեզու, օրինակ, կարող է ներառել բավականին բարդ ծրագրի հրամանի տողի
=== Ծրագրավորման պարադիգմ ===
Լեզուներին պարադիգմներին վերագրելը կարող է իրականացվել մի քանի հիմքերով, որոնցից մի քանիսը համապատասխանում են լեզուների հատուկ տեխնիկական բնութագրերին, իսկ մյուսները շատ կամայական են:Տեխնիկապես, լեզուները բաժանվում են, օրինակ, կողմնակի էֆեկտների և կապի թափանցիկության:Երկրորդ դեպքում ասում են, որ լեզուն պատկանում է «զուտ ֆունկցիոնալ պարադիգմին»:Տիպային համակարգի որոշակի հատկություններ և լեզու հաշվարկելու ռազմավարություններ երբեմն համարվում են որպես պարադիգմ, օրինակ ՝ պարամետրային բազմամորֆ տիպային համակարգերի համար, նրանք հաճախ խոսում են ընդհանուր ծրագրավորման պարադիգմի իրականացման մասին:Մեկ այլ օրինակ `համասեռականության հատկությունն է, որը բացում է մետրոպոգրամանման սորտերի մի ամբողջ սպեկտր:Կան բազմաթիվ «լեզուներ, որոնք ժառանգվել են մաթեմատիկայից», որոնցից շատերը կազմում են եզակի պարադիգմներ:Ավելի պայմանականորեն լեզուները բաժանվում են սերունդների:Առաջին երկու սերունդը ցածր մակարդակի վրա է, այսինքն, կենտրոնացած են հատուկ ապարատների առանձնահատկությունների վրա, և սկզբունքորեն դրանք չեն համապատասխանում որևէ պարադիգմի:Երրորդ սերնդի հետ միասին նրանք ձևավորում են հրամայական ծրագրավորման պարադիգմ, իսկ հաջորդ սերունդները ՝ դեկլարատիվ:Շատ դեկլարատիվ լեզուներ ներառում են որոշակի հրամայական հնարավորություններ, երբեմն էլ հակառակը:Ծրագրերի չափի և բարդության բարձրացմամբ, երկրորդ սերնդի լեզուները օգտագործելիս սկսեց ձևավորվել ընթացակարգային ծրագրավորման պարադիգմը,պահանջելով մեծ ընթացակարգերի տարանջատում հիերարխիկորեն կապված փոքր ավելի փոքր շղթաների մեջ:Միևնույն ժամանակ, հայտնվեցին առաջին երրորդ սերնդի լեզուները, և կառուցվածքային ծրագրավորումն առաջին հերթին ձևավորվեց ՝ որպես ընթացակարգային, իսկ հետո ՝ մոդուլային ուղիղ զարգացում:Ժամանակի ընթացքում հայտնվեցին հսկայական թվով տարբեր եղանակներ ՝ լուծելու հիմնահարցը զարգացող ծրագրային համակարգերը ինտեգրելու սկզբնական հրամայական մոտեցումը:Որոշ դեպքերում ձեռք է բերվել էական ազդեցություն զարգացման արագության և որակի ցուցանիշների վրա, բայց ընդհանուր առմամբ, ինչպես նշվեց վերևում, երրորդ սերնդի լեզուները վերացական են մեքենայական տրամաբանությունից միայն որոշակի մակարդակի վրա և մի փոքր ենթակա են համարժեք վերափոխումների:Մինչ օրս լեզուների երրորդ սերունդը ներկայացված է բազմազան պարադիգմների առավել լայն շրջանակով:Ֆունկցիոնալ լեզուները վերաբերում են չորրորդ սերնդին, որից առանձնանում են «զուտ ֆունկցիոնալ», իսկ մնացածները կոչվում են «ոչ զուտ ֆունկցիոնալ»:Հինգերորդ սերունդը ներառում է տրամաբանական ծրագրավորման լեզուներ, որոնցում, բացի ավանդականից, առանձնանում են մի քանի հատուկ ձևեր, օրինակ ՝ ծրագրավորումն ըստ սահմանափակումների:Փաստորեն, հինգերորդ սերնդի լեզուները չորրորդ սերնդի լեզուներն են ՝ լրացված գիտելիքների բազայով
=== Ծրագրավորման լեզուները փոքր և մեծ մասշտաբներով ===
Ծրագրերը կարող են լուծել տարբեր չափերի խնդիրներ,մի ծրագիր է ստեղծում ժամանակացույցը տվյալ գործառույթի համար, իսկ մյուսը ղեկավարում է խոշոր ձեռնարկության աշխատանքային հոսքը:Ծրագրավորման տարբեր լեզուներ նախատեսված են խնդրի տարբեր սկզբնական մասշտաբի համար և, որ ավելի կարևոր է, տարբեր կերպ են գործ ունենում ծրագրային համակարգերի աճող բարդության հետ:Լեզուի հիմնական որակը, որը որոշում է, թե ինչպես զարգանում է զարգացման բարդությունը, քանի որ համակարգը մեծանում է, աբստրակցիան է, այսինքն ՝ համակարգի բաղադրիչի իմաստը (պահվածքը) առանձնացնելու ունակությունը դրա իրականացման եղանակից:Սկզբնաղբյուրի համար որակական չափիչները, ինչպիսիք են ստուգելիությունը և փոփոխելիությունը, ակնհայտորեն որոշվում են վերօգտագործման գործոնով:Սա կարող է նշանակել միևնույն բաղադրիչի վրա տարբեր գործառույթներ կիրառելը, ինչպես նաև նույն գործառույթը տարբեր բաղադրիչներին կիրառելու ունակությունը:Պարամետրային բազմամորֆային (հատկապես արտանետվող) և դինամիկ տիպի համակարգերը զգալիորեն բարձրացնում են վերօգտագործման գործակիցը.Օրինակ, մի գործառույթ, որը հաշվարկում է զանգվածի երկարությունը, կկիրառվի զանգվածի տիպերի անսահման թվով:Բարձր կարգի լեզուները թույլ են տալիս տարբերակել գործառույթների փոխգործակցության սխեմաները բազմիցս կոչված կոդ բլոկի մեջ, և վերօգտագործումը հասնում է իր բարձրագույն արժեքների ՝ ավելի բարձր մակարդակի լեզու տեղափոխվելիս - անհրաժեշտության դեպքում, հատուկ մշակված այս առաջադրանքի համար - տվյալ դեպքում լեզուն վերաօգտագործվում է ոչ միայն մեկ ֆունկցիա, այլև զարգացումը:Լեզուն կարող է պահպանվել կազմողի բաղադրիչների ինտենսիվ վերաօգտագործմամբ:Լեզուների զարգացման հետ մեկտեղ հայտնվեցին հատուկ (բացառապես ծրագրավորման բնութագրիչ, որը նախկինում չի պահանջվում մաթեմատիկայում) բաղադրիչների և կախվածության կարգեր.մոնադներ, տիպի դասեր, պոլիմորֆային ճյուղեր, ասպեկտներ և այլն, դրանց օգտագործումը թույլ է տալիս ավելի մեծ ֆունկցիոնալություն արտահայտել նույն քանակի կոդով ՝ դրանով իսկ լայնածավալ ծրագրավորումը փոքր մասշտաբով թարգմանելով:Այլ հիմնական հիմնախնդիրները, որոնք կապված են խոշոր համակարգերի բարդության հետ, բխում են հենց ծրագրերից դուրս:Լեզվաբանական իմաստաբանության հատկություններից բացի, վերաօգտագործումը հնարավոր է հասնել համակարգչային համակարգի կամ բարդույթի մոդուլային կառուցվածքի միջոցով:Ավելին, անկախ նրանից, թե որքան ճկուն է լեզուն, աշխատելով հսկայական ծածկագրերով, հատկապես շատ մարդկանց, պահանջում է դրանց տարրալուծումը մոդուլների այս կամ այն ձևով:Մոդուլային կառուցվածքը ենթադրում է ոչ միայն ծրագրի մոնոլիտ աղբյուրի կոդը տրոհել շատ տեքստային ֆայլերի, այլև ավելի մեծ մասշտաբի վերացում, այսինքն ՝ ցանկացած տրամաբանորեն ամբողջական հատվածի համար ինտերֆեյսի սահմանում և թաքցնել դրա իրականացման մանրամասները:Կախված լեզվից կիրառվող շրջանակի կանոններից, լեզուն կարող է կամ չի կարող թույլ տալ ավտոմատ կախվածության հայտնաբերում:Եթե, ըստ կանոնների, հնարավոր է անվանման կոնֆլիկտ, ապա կախվածության ինքնագլխումն անհնար է, և այդ դեպքում մոդուլի վերնագրում դուք պետք է բացահայտորեն նշեք այն մոդուլների անունները, որոնց բաղադրիչները օգտագործվում են դրանում:Որոշ լեզուներ կենտրոնացած են բացառապես փոքր, կառուցվածքայինորեն պարզ ծրագրերի մշակման վրա:Դրանք չեն ապահովում ոչ մոդուլների մշակված համակարգ, ոչ էլ հատուկ բեկորների ճկունություն:C լեզուն ստեղծվեց որպես «բարձր մակարդակի հավաքույթ», որն ինքնին չի ենթադրում բարդությունների որոշակի շեմից վերև գտնվող համակարգերի զարգացում, հետևաբար, դրանում ներառված չէր նաև լայնածավալ ծրագրավորմանն աջակցելը:Բարձր և գերհզոր մակարդակի որոշ լեզուներ (Erlang, Smalltalk, Prolog) հասկացությունները տրամադրում են որպես հիմնական պարզունակ տարրեր, որոնք այլ լեզուներում, կարծես, կառուցողական և ալգորիթմիկ բարդ են (գործընթացներ, դասեր, գիտելիքների հիմքեր) - նման են մի շարք մաթեմատիկական հաշվարկների:Հետևաբար, նման լեզուները հաճախ դիտարկվում են որպես առարկայական:Այնուամենայնիվ, այս լեզուներում այլ ասպեկտների ֆունկցիոնալության ընդլայնումը կարող է դժվար լինել:Ժամանակի ընթացքում կառուցվել են տարբերակներ ՝ դրանք միասին միավորելու համար:Շատ այլ լեզուներ պարունակում են նաև մոդուլային համակարգեր, բայց դրանց մեծ մասը առաջին կարգի մոդուլի լեզուներ են:Lisp- ի և չորրորդ լեզուները թույլ են տալիս ձեզ ստեղծել կամայականորեն և անսահմանափակ համակարգեր, ներառյալ թույլ տալով, որ դուք ինքներդ ձեր մեջ ստեղծեք ներկառուցված առարկայի հատուկ լեզուներ, հետևաբար դրանք հաճախ կոչվում են մետաղալեզու:Այսօր բարդության հիմնախնդրի լուծման ամենատարածված մոտեցումը օբյեկտիվ ուղղվածություն ունեցող ծրագրավորումն է, չնայած դրա կիրառման հաջողությունն իր գոյության տասնամյակների ընթացքում մի քանի անգամ ենթարկվել է թերահավատության, և դեռևս չկա հուսալի ապացույց, որ այն բերում է օգուտներ `համեմատած այլ մոտեցումների հետ:Այն ուղեկցվում է բաղադրիչների միջև կախվածությունը կարգավորելու տարբեր տեխնոլոգիաներով ՝ մետաքսազերծում, պայմանագրեր, նախատիպեր, կեղտազերծում, տեսակներ և այլն:Metaprogramming- ի տարբեր ձևերի, այսինքն ՝ զարգացման գործընթացի ավտոմատացումը տարբեր մակարդակներով օգտագործումը պատմականորեն համարվել է առավել հզոր մոտեցում:Սկզբունքորեն տարբերվող մետրոպոգրաֆիկացումը լեզվից դուրս և ինքնին մատչելի լեզվով:Առաջին կարգի լեզուներ օգտագործելիս ՝ աճող ծրագրային համակարգերի բարդությունը արագորեն գերազանցում է մարդու կողմից տեղեկատվության ընկալման և մշակման ունակության շեմը, հետևաբար, նախնական տեսողական ձևավորման արտաքին միջոցներն օգտագործվում են բարդ սխեմաները պարզեցված ձևով և իջեցված մասշտաբով դիտելու համար, այնուհետև ինքնաբերաբար առաջացնում են ծածկագրի շրջանակ:Բարձր կարգի լեզուներ օգտագործող մշակողների համայնքներում գերակշռում է ճիշտ հակառակ մոտեցումը `կանխել բարդության հնարավորությունը վերահսկողությունից դուրս գալը` տեղեկատվական մոդելները անկախ բաղադրիչներին բաժանելով և միջոցներ մշակելով որոշ մոդելներ մյուսներին ինքնաբերաբար վերածելու
=== Ֆորմալ փոխակերպում և օպտիմիզացում ===
В. Ф. Турчин- ը նշում է
Կան բազմաթիվ առանձնահատուկ պատճառներ, թե ինչու է ավտոմատ օպտիմալացումը բարձր մակարդակի լեզուների թարգմանության ընթացքում, սկզբունքորեն, ավելի մեծ կատարման արագություն է տալիս, քան ցածր մակարդակի լեզուներով իրականացման մեթոդի գիտակցված հսկողություն:Օրինակ, առկա են հուսալի ապացույցներ այն մասին, որ հիշողության ավտոմատ կառավարումը ավելի արդյունավետ է, քան ձեռնարկը, միայն դինամիկ մեթոդը օգտագործելիս կա, և կա հավանականորեն ավելի արդյունավետ ստատիկ մեթոդ:Բացի այդ, յուրաքանչյուր միկրոհամակարգի համար անհրաժեշտ է բաժանել գրանցամատյանները ՝ հաշվի առնելով հիշողությունը հասանելիության նվազագույնի հասցնելու համար, և դա պահանջում է լուծել գծապատկերի գունավորման խնդիրը:Մեքենայական տրամաբանության այդպիսի շատ առանձնահատկություններ կան, ուստի տեղեկատվության ընդհանուր բարդությունը յուրաքանչյուր «աստիճանաբար» գնալով աճում է, և բարձր մակարդակի լեզու կազմելը կարող է ներառել տասնյակ նման քայլեր:Կան բազմաթիվ ավտոմատ օպտիմիզացման ռազմավարություններ:Ոմանք համընդհանուր են, մյուսները կարող են կիրառվել միայն որոշակի բնույթի լեզուների վրա, իսկ ոմանք էլ կախված են լեզուն գործածելու եղանակից:Սխեմաների լեզվի ստանդարտը պահանջում է յուրաքանչյուր գործողություն `դա երաշխավորելու համար:Բազմաթիվ ֆունկցիոնալ լեզուների համար այն սկզբունքորեն կիրառելի է, բայց դա անում են միայն օպտիմալացնող
=== Լեզուների հանրաճանաչությունը ===
Դժվար է որոշել, թե որ ծրագրավորման լեզուն է ամենատարածվածը, քանի որ «հանրաճանաչություն» բառի իմաստը կախված է ենթատեքստից:Մեկ լեզու կարող է տևել առավելագույնը մարդկային ժամեր, մյուսը ՝ ամենամեծ թվով կոդերի տողեր, երրորդը ՝ առավելագույն պրոցեսորային ժամանակ, իսկ չորրորդը ՝ առավել հաճախ, ծառայում է որպես հետազոտական հիմք ակադեմիայում:Որոշ լեզուներ շատ տարածված են հատուկ առաջադրանքների
Այլ լեզուներ պարբերաբար օգտագործվում են լայն կիրառական ծրագրերի ստեղծման
Լեզուների ժողովրդականությունը չափելու համար կան տարբեր չափումներ, որոնցից յուրաքանչյուրը մշակվում է հանրաճանաչության հայեցակարգի որոշակի նշանակության
* հաշվել լեզուն հիշատակող թափուր աշխատատեղերի քանակը.
* վաճառված գրքերի քանակը (դասագրքեր կամ տեղեկատու գրքեր).
* լեզվով գրված կոդերի տողերի քանակի գինը (որը հաշվի չի առնում լեզուների օգտագործման հազվադեպ հրապարակված դեպքերը).
* հաշվում են լեզվային տեղեկանքները որոնիչի
Հարկ է նշել, որ այս ցուցանիշների վրա բարձր գնահատականները ոչ միայն չեն նշում լեզուն բարձր տեխնիկական մակարդակ և / կամ ծախսերի օպտիմիզացում այն օգտագործելիս, այլ, ընդհակառակը, երբեմն նրանք կարող են այլ կերպ ասել:Արդյունքում, կարճաժամկետ հեռանկարում «Քոբոլ» -ին աջակցող ծրագրերը շատ ավելի թանկ են, քան ժամանակակից լեզուների մեծ մասի ծրագրերը, բայց դրանք զրոյից վերաշարադրելը կպահանջի նշանակալից միանգամյա ներդրումներ, և դրանք կարելի է համեմատել միայն երկարաժամկետ ծախսերի հետ:Կոբոլի տեխնիկական անկատարությունը պայմանավորված է նրանով, որ այն մշակվել է առանց համակարգչային գիտության ոլորտում փորձագետների ներգրավման
|заглавие=Cobol, your age is showing
|издание=[[Computerworld Россия|Computerworld]]
Տող 129.
| date = 2006-10-04
| accessdate = 2014-04-27
}}</ref>:.
== Տես նաև ==
|