Գլխավոր էջ » 2015 » Ապրիլ » 04 » C լեզվի ընտրության նպատակահարմարությունը
20:26
C լեզվի ընտրության նպատակահարմարությունը
C լեզվի ընտրության նպատակահարմարությունը

C լեզվի ընտրությունը որպես նոր ծրագրավորման լեզվի բազա պայմանավորված է նրանով, որ C լեզուն.
Aquote1.png     

    բազմանպատակային է, լակոնիկ է և համեմատաբար ցածր կարգի լեզու է
    նպատակահարմար է բազմաթիվ սիստեմային խնդիրներ լուծելու համար
    կատարվում է ամեն տեղ և ամեն սարքի ու հարթակի վրա
    միաձուլված է UNIX օպերացիոն համակարգի միջավայրի հետ

— Б. Страуструп. Язык программирования C++. Раздел 1.6, 1999
    Aquote2.png


Չնայած C լեզվի մի շարք թերությունների, Ստրաուստրուպն ընտրեց C լեզուն, քանի որ այդ թերություններն արդեն հայտնի են, իսկ նոր ստեղծված ծրագիրն անկասկած կունենա իր թերությունները, որոնք դեռ պետք է բացահայտել։ Բացի այդ դա թույլ տվեց արագորեն կոմպիլյատոր (cfront) ստանալ, որը պարզապես նոր ավելացված սինտաքսային էլեմենտները տրանսլյացիա էր անում օրիգինալ C լեզվի։

C++ լեզուն զարգացնելու ժամանակ լեզվում ներառնվեցին միջոցներ, որոնք ծածկում էին C լեզվի կոնստրուկտիվ հնարավորությունները։ Այդ պատճառով էլ բազմաթիվ անգամ առաջարկներ եղավ վերացնել C լեզվի հետ համատեղելիությունը։ Այսպես թե այնպես համատեղելիություն նպատակահարմար եղավ թողնել, իսկ թողնելու պատճառները հետևյալն են.

    պահպանել C լեզվում գրված կողը, որը տեղափոխվել է C++
    բացառել այն ծրագրավորողների վերաուսուցումը, ովքեր նախկինում աշխատել են C լեզվով (նրանց մնում է միայն սովորել C++ լեզվի նոր հնարքները)
    բացառել խառնաշփոթը C և C++ լեզուների համատեղ օգտագործման ժամանակ («եթե երկու լեզուներ օգտագործվում են միաժամանակ, ապա նրանց տարբերությունը պետք է լինի մինիմալ, կամ այնքան մեծ, որ հնարավոր չլինի հնարավորությունները խառնել իրար»)

1983 թ.-ին լեզվին ավելացվեցին նոր հատկություններ՝ վիրտուալ ֆունկցիաներ, ֆունկցիաների և օպերատորների վերբեռնում, հղումներ, հաստատուններ, ազատ հիշողության օգտագործման կառավարում օգտատիրոջ կողմից և մեկնաբանության նոր ոճ (//)։ Ստացված լեզուն դատարեց C լեզվի վրա լոկ հավելումներով տարբերակ լինելուց և նրան «կլասներով C լեզվից» վերանվանեցին «C++»։ Լեզվի առաջին կոմերցիոն թողարկումը լույս տեսավ 1985 թ.-ին։

Լեզվի անունն արյունքում ստացվեց ունար պոստֆիքս «ինկրեմենտից» ++ (արժեքի մեծացում մեկ միավորով)։ C+ անվանումը նրա համար չի օգտագործվել, քանի որ C լեզվի տեսանկյունից այն սխալ է պարունակում։ Բացի դրանից նպատակահարմար չէր լեզուն վերանվանել D, քանի նորաստեղծ լեզուն իրենից ներկայացնում էր C լեզվի ընդլայնված տարբերակը։[4]
Ստանդարտների պատմությունը

1985 թվականին լույս տեսավ «C++ ծրագրավորման լեզու» գրքի առաջին հրատարակությունը, որն այդ լեզվի առաջին նկարագրությունն էր։ Այն կարևոր դեր խաղաց լեզվի հետագա զարգացման վրա, քանի որ լեզվի պաշտոնական ստանդարտ դեռևս գոյություն չուներ։ 1989 թվականին թողարկվում է C++-ի 2.0 տարբերակը։ Նրա նոր հնարավորությունները իրենց մեջ ներառում էին բազմակի ժառանգումը, աբստրակտ դասերը, ստատիկ ֆունկցիա–անդամները, ֆունկցիա–հաստատունները և պաշտպանված անդամները։ 1990 թվականին լույս է տեսնում «C++–ի մեկնաբանված տեղեկատվական ուղեցույց» գիրքը, որը հետագայում ստանդարտի համար որպես հիմք է ծառայել։ Վերջին թարմացումները ներառում էին կաղապարները, բացառությունները, անվանատարածքները, տիպերի վերման նոր եղանակները և բուլյան տիպը։

C++ լեզվի հետ միաժամանակ զարգանում էր նաև նրա ստանդարտ գրադարանը։ C++–ի ստանդարտ գրադարանի առաջին հավելումներն էին մուտքի–ելքի հոսքերը, որոնք ապահովում էին C լեզվի ավանդական printf և scanf ֆունկցիաների փոխարինման նոր միջոցներ։ Ավելի ուշ, ստանդարտ գրադարանի ամենանշանակալից զարգացումը դարձավ Կաղապարների ստանդարտ գրադարանի ներառումը։

1998 թվականին հրատարակվեց լեզվի ISO/IEC 14882։1998 ստանդարտը (հայտնի է որպես C++98),[9] որն մշակվել էր C++–ի ստանդարտավորման հանձնաժողովի կողմից (ISO/IEC JTC1/SC22/WG21 working group)։ C++–ի ստանդարտը չի նկարագրում օբյեկտների անվանման եղանակները, բացառությունների մշակման որոշ մանրամասներ և այլ հնարավորություններ, որոնք ավելի շատ կապված են իրականացման մանրամասների հետ, որը տարբեր կոմպիլյատորների կողմից ստեղծված օբյեկտային կոդերը միմյանց միջև դարձնում է անհամատեղելի։ Սակայն դրա համար երրորդ դեմքերի կողմից ստեղծվել են բազմաթիվ ստանդարտներ որոշակի կառուցվածքների և օպերացիոն համակարգերի համար։

2003 թվականին հրապարակվեց լեզվի ISO/IEC 14882։2003 ստանդարտը, որտեղ ուղղված էին լեզվի նախորդ ստանդարտի բացահայտված սխալներն ու թերությունները։

2005 թվականին թողարկվեց Library Technical Report 1 (կարճ անվանումով՝ TR1) հաշվետվությունը։ Չհանդիսանալով պաշտոնական ստանդարտի մի մաս, հաշվետվությունը նկարագրում է ստանդարտ գրադարանի ընդլայնումներ, որոնք, համաձայն հեղինակների սպասելիքների, C++ լեզվի հաջորդ տարբերակներում պետք է ներառվեն։ TR1-ի աջակցման աստիճանը բարելավվում է C++ լեզվի համարյա թե բոլոր աջակցվող կոմպիլյատորներում։

2009 թվականից սկսած աշխատանք էր տարվում նախորդ ստանդարտի թարմացման ուղղությամբ։ Սկզբում նոր ստանդարտի նախնական տարբերակն էր C++99-ը, իսկ մեկ տարի անց C++0x-ը, այսօր՝ C++11-ը, որտեղ ներառված էին լեզվի միջուկի հավելումներ և ստանդարտ գրադարանի ընլայնումներ, այդ թվում՝ TR1-ի մեծ մասը։

C++-ը շարունակում է զարգանալ, որպեսզի բավարարի ժամանակակից պահանջներին։ C++ լեզուն մշակող և ստանդարտավորման հանձնաժողովին լեզվի բարելավմանը նպաստող առաջարկներ ներկայացնող խմբերից մեկը Boost-ն է, որն, այդ թվում, զբաղվում է նաև լեզվի հնարավորությունների կատարելագործմամբ՝ լեզվում ավելացնելով մետածրագրավորման առանձնահատկությունները։

Ոչ մեկ չունի C++ լեզվի նկատմամբ ավելի շատ իրավունքներ, քան մյուսները․ այն ազատ է։ Սակայն լեզվի ստանդարտի փաստաթուղթը անվճար հասանելի չէ (բացառությամբ ստանդարտների սևագրերը)։
Լեզվի տեսքը

C++–ի 2003 թվականի ստանդարտը կազմված է երկու հիմնական մասերից՝ լեզվի միջուկի նկարագրությունից և ստանդարտ գրադարանների նկարագրությունից։

Բացի այդ, գոյություն ունեն մեծ թվով C++–ի գրադարաններ, որոնք չեն մտնում տվյալ ստանդարտի մեջ։ C++–ով գրված ծրագրերում կարելի է օգտագործել C լեզվի շատ գրադարաններ։

Ստանդարտացումն սահմանում է C++ ծրագրավորման լեզուն, սակայն C++ անվանման ետևում կարող են թաքնված լինել նաև լեզվի ոչ լիարժեք, սահմանափակ, մինչ ստանդարտային տարբերակներ։ Սկզբնական շրջանում լեզուն զարգանում էր առանց ձևական շրջանակների, ինքնաբերաբար, իր առջև դրված խնդիրների սահմաններում։ Լեզվի զարգացումն ուղեկցվել է cfront կոմպիլյատորի զարգացմամբ։ Լեզվի նորամուծություններին համընթաց փոփոխվում էր նաև cfront–ի տարբերակի համարը։ Կոմպիլյատորի այդ համարը տարածվում էր նաև լեզվի վրա, սակայն այսօր C++ լեզվի տարբերակների մասին չեն խոսում։
Ոչ օբյեկտային կողմնորոշված հնարավորություններ

Այս բաժնում նկարագրվում են հնարավորություններ, որոնք անմիջականորեն կապված չեն օբյեկտային կողմնորոշված ծրագրավորման (ՕԿԾ) հետ, բայց որոնցից շատերը կարևոր դեր են խաղում ՕԿԾ–ի կիրառման ժամանակ։




Դիտումներ: 757 | Ավելացրեց: hovo | - Վարկանիշ -: 5.0/2
Մեկնաբանություններն ընդամենը՝: 0
avatar