Սի (ծրագրավորման լեզու)

**Սի** ()— ստանդարտացված, ընդհանուր օգտագործման համար նախատեսված պրոցեդուրային ծրագրավորման լեզու է։ Ստեղծվել է 1969-1973 թթ․ Բելլի լաբորատորիայում։ Ի սկզբանե նախատեսված է եղել Յունիքս օպերացիոն համակարգի համար, սակայն օգտագործվում է նաև որպես կիրառական ծրագրավորման լեզու։ Ամենատարածված ծրագրավորման լեզուներից մեկն է։ Մեծ ազդեցություն է ունեցել իրենից հետո առաջացած լեզուների մեծ մասի վրա։ Մասնավորապես այսօր առավել տարածված ծրագրավորման լեզուների մեծ մասը (C++, Ջավա, C#, ՋավաՍկրիպտ և այլն) ունեն այսպես կոչված C-աձև սինտաքսիս։ Լեզվի հեղինակ Դենիս Ռիտչին նպատակ է ունեցել ստեղծել B լեզվին փոխարինող լեզու, որը կփոխարինի այն որպես UNIX օպերացիոն համակարգի գրման հիմնական լեզու։ Այսպիսով C-ն սերտ կապված է UNIX ընտանիքի օպերացիոն համակարգերին։ Չնայած, որ C-ն նախատեսված չի եղել նորեկների համար, այն լայնորեն օգտագործվում է որպես ուսուցողական լեզու։

## Պատմություն
Սին նախագծվել է 1969-1973 թվականներին Դենիս Ռիտչիի կողմից, և գրված է եղել DEC PDP-11 համակարգչի վրա՝ UNIX օպերացիոն համակարգի համար։ Համաձայն հեղինակի, առավել ակտիվ շրջանը եղել է 1973 թ․։ Լեզուն անվանվել է C, որպեսզի ցույց տա, որ այն B լեզվի շարունակությունն է, որն էլ իր հերթին սկիզբ է առնում BCPL լեզվից։ Լեզվի ստեղծման հիմնական նպատակն էր նորաթուխ UNIX օպերացիոն համակարգը, որը գրված էր PDP-11/2 ասեմբլերի լեզվով։ Մինչ այդ տարածված միայն երկու օպերացիոն համակարգ էր գրված եղել բարձր մակարդակի լեզվով (Multics-ը՝ գրված PL/I և TRIPOS–ը՝ BCPL լեզվով)։

1978 թվականին լույս է տեսել Բրայան Կերնիգանի և Դենիս Ռիտչիի հայտնի «C ծրագրավորման լեզուն» () գիրքը, որը մինչև լեզվի ստանդարտ ի հայտ գալը հանդիսացել է C լեզվի ոչ ֆորմալ նկարագրությունը։

Հետագա տարիներին Սին լայն տարածում է գտել։ Ութսունականների սկզբներին Բյորն Ստրաուստրուպը սկսեց աշխատել C++ լեզվի վրա, որը հանդիսանում է C լեզվի ընդլայնումը՝ օբկեյտ կողմնորոշված ծրագրավորման առկայությամբ։ Այս ամենի հետևանքով անհրաժեշտություն ստեղծեց լեզվի ստանդարտ մտցնել։ Այդ նպատակով 1983 թ. Ամերիկայի ազգային ստանդարտների ինստիտուտը (ANSI) ստեղծեց կոմիտետ, որը պետք է զբաղվեր C լեզվի ստանդարտի ստեղծմամբ։ 1989 թ․ ստանդարտն ընդունվեց որպես «C ծրագրավորման լեզու» ANSI X3.159-1989. Մեկ տարի անց, 1990 թ․ չնչին փոփոխություններից հետո այդ ստանդարտը ընդունվեց նաև Ստանդարտների միջազգային կոմիտետի (ISO) կողմից։ Տասը տարի անց՝ 1999 թ. լույս տեսավ Սիի հաջորդ ստանդարտը՝ ISO 9899։1999, որը սովորաբար անվանվում է C99։ 2000 թ․ այն ընդունվեց նաև ANSI-ի կողմից։

2007 թվականից սկսվել է Սիի հաջորդ ստանդարտի վրա աշխատանքը, որը անվանում են C1X, որտեղ X-ը ցույց է տալիս ստանդարտի ընդուման թվականի վերջին թվանշանը (օրինակ, եթե ստանդարտը ընդունվի 2013 թ․, ապա X = 3)։

## Առանձնահատկություններ
C-ն հանդիսանում է բարձր մակարդակի ծրագրավորման լեզու։ C-ի համար կարելի է ձևավորել միակողմանի կոմպիլատորներ, որի հետևանքով էլ C-ն հասանելի է բազմաթիվ հարթակների վրա։ Նրա գրելաձևը ազատ ձևի է, և չունի ավելորդ բարդույթներ, որը թույլ է տալիս C-ով գրված պրոյեկտները հեշտությամբ տեղափոխել դեպի այլ հարթակներ։

Այդ ամենի հետ մեկտեղ այս լեզուն իր մեջ ներառում է տարբեր այլ առանձնահատկություններ․

* Ունի հեշտ լեզվային բազա․ Իր ստանդարդ գրադարանի տարբեր header-ֆայլերում առկա են հիմնական ֆունկցիաները (մաթեմատիկական օպերացիաները, ֆայլերի ու հիշողության հետ աշխատանքը և այլն)։
* C-ով գրված ծրագրերը հեշտությամբ կարելի է տեղափոխել մեկ այլ համակարգ, առանց հիմնային վերափոխելու ծրագրի ֆունկցիաները։
* Առկա է տիպերի համակարգ, որը զերծ է պահում կողմնակի օպերացիաներից։
* Կառավարում է ծրագրի հիշողությունը ցուցիչների միջոցով։ 
* Թույլ է տալիս օգտագործել պրեպրոցեսսորը միատեսակ օպերացիաները և մակրո ծրագրերը իրագործելու համար։
* Ունի անունների տեսանելիության տեղամասեր։
* Կարելի է ստեղծել սեփական ստրուկտուրաներ և միավորումներ, որոնք օգտվողը կարող է մանիպուլացնել։

Որոշ բացակայող հատկություններ C-ում կարելի է օգտագործել `setjmp` և `longjmp` միջոցով, ավելացնելով `<setjmp.h>` ֆայլը, սակայն կան նաև կողմնակի գրադարաններ (օրինակ ՝ *GTK*), որոնք լրացնում են C-ի հատկությունները, ավելացնելով գրաֆիկայի և այլ գործառույթների ընդլայնումները։ Նաև C-ում կարելի է ֆունկցիան կանչել հենց իր մեջից, որը առաջացնում է ֆունկցիաների ռեկուրսիա։

## Կիրառությունները
C լեզվի հիման վրա ձևավորվել են բազմաթիվ ժամանակակից ծրագրավորման լեզուներ։ Օրինակ՝ Python և PHP ծրագրավորման լեզուները գրված են C-ի վրա, C++-ը հանդիսանում է C-ի ավելի բարելավված տարբերակը։ Գոյություն ունեն տարբեր C-ի կոմպիլյատորների իրացումներ, որոնցից են՝

* GCC – բաց ծրագրային կոդով կոմպիլյատոր, որի միջոցով կոմպիլյացվում են բազմաթիվ ծրագրեր, օրինակ՝ Լինուքս օպերացիոն համակարգը։ Այն հանդես է գալիս GNU General Public License-ի ներքո։
* LLVM - կոմպիլյատորների ենթակառուցվածք է, որը նախագծվել է որպես լավ (կանոնավոր) սահմանված ինտերֆեյս ունեցող բազմակի օգտագործման գրադարանների բազմություն։
* Microsoft Visual C/C++ (MSVC) – Մայքրոսոֆթի կողմից ստեղծված կոմպիլյատոր, հիմնված Lattice C-ի վրա, որով ստեղծվում են Windows օպերացիոն համակարգի համար ծրագրեր։
* Borland C/C++ – Բորլանդ ընկերության C/C++ կոմպիլյատորը, որը հիմնականում հանդիսանում էր MSVC–ի հակառակորդը։ 2006թ․–ից այն պատկանում է CodeGear ընկերությանը, որը հետագայում միավորվել է Embarcadero ընկերությանը։
* Intel C – Ինթել ընկերության կոմպիլյատորը, որով կարելի է ստեղծել 80386 տեսակի Ինտելի պրոցեսսորների հիման վրա ծրագրեր։
* K&R C – առաջին և օրիգինալ C կոմպիլյատորը։ Այն համապատասխանում է օրիգինալ C-ի ստանդարտին։
* Watcom C/C++ – կոմմերցիալ կոմպիլյատոր, որը թողարկվել էր Վաթքոմ ընկերության կողմից։ 2003 թ․–ից այն դադարեց լինել կոմմերցիալ և բաց ծրագրային կոդով հրատարակվում է որպես Open Watcom.

## Ծանոթություններ

Կատեգորիա:ISO ստանդարտի ծրագրավորման լեզուներ
Կատեգորիա:Ամերիկյան հայտնագործություններ