C (програмски јазик)

**Програмскиот јазик Ц (C)** — релативно нов програмски јазик. Тој е програмски јазик кој ги одбележа осумдесеттите и деведесеттите години на минатиот век. Ц е најраширен програмски јазик на светот. Тој е едноставен и елегантен програмски јазик кој ја пополнува празнината меѓу вишите програмски јазици и асемблерите (assembler) бидејќи ги комбинира особеностите на вишите програмски јазици со функционалноста на асемблерите. Поради тоа Ц можеме да го наречеме јазик што ги обединува својствата и на вишите програмски јазици и на асемблерите.

За творец на овој програмски јазик се смета Денис Ричи (Dennis Ritchie) од Bell-овите лаборатории на АТ&Т. Тој заедно со Кен Нортон (Ken Northon) работел на дизајнирање на првичните верзии на оперативниот систем ЈУНИКС (UNIX) и го имплементира на PDP 11. Во 1978 година Брајан Кернихан (Brian Kernighan) и Денис Ричи ја издале првата книга за програмскиот јазик Ц. Оваа книга служела како референтна книга за јазикот сè до појавата на првиот ANSI стандард за Ц, десетина години подоцна.

Генеологијата на програмскиот јазик Ц е следнава. Како и за сите други структуирани програмски јазици, така и за програмскиот јазик Ц може да се каже дека негов најдалечен предок е програмскиот јазик ALGOL 60. ALGOL-от 60, како што кажува и неговото име, бил развиен во 1960 година од страна на повеќе национални групи. Тој настанал само неколку години по програмскиот јазик FORTRAN. При создавањето на овој јазик било посветено големо внимание на неговата синтакса, модуларната структура и многу други нешта за кои денес се смета дека се современи и полезни. За жал, овој програмски јазик не бил никогаш општо прифатен од програмерите, веројатно поради неговата преголема генералност, апстрактност и опширност.

## Историја
### Почеток
Во 1963 година на универзитетот во Кембриџ развиен е програмски јазик CPL (Combined Programming Language). Овој јазик претставува обид програмскиот јазик ALGOL 60 да се поедностави и доведе до разумна мера. Но и овој програмски јазик бил преопширен и пресложен, па како таков и тежок за учење и примена.

Мартин Ричардс (Martin Richards) исто така од Кембриџ, во 1967 година го создал јазикот BCPL (Basic Combined Programming Language). При тоа, поедноставувајќи го програмскиот јазик CPL, се обидел да дојде до поедноставен и применлив програмски јазик. Овој програмски јазик е сличен на макроасемблерите и се нашол во примена на повеќе компјутери меѓу кои и на некои микрокомпјутери (BBC и Sincler QL). 
Натамошното поедноставување на овој програмски јазик било направено од Кен Томсон (Ken Thompson). Тој работел во лабораториите на Bell на имплементација на разните верзии на оперативниот систем ЈУНИКС. За таа цел, Томсон го создал програмскиот јазик Б во 1970 година. Јазикот Б претставува натамошно поедноставување на програмскиот јазик BCPL. Тој бил применет за реализација на првиот ЈУНИКС оперативен систем на компјутерот PDP-7.

Поедноставувањето на овие програмски јазици довело до тоа тие да личат на макро асемблери и да бидат употребливи само за ограничен број примени. Затоа, Денис Ричи се обидел да ја поврати изгубената генералност кај овие програмски јазици, конструирајќи го програмскиот јазик Ц во 1972 година.

Според тоа, генеологијата на програмскиот јазик Ц е следнава: **ALGOL 60 > CPL > BCPL > B > C.**
### Понатамошно развивање
Програмскиот јазик Ц бил конструиран првенствено за потребите на развој и пренос на оперативниот систем ЈУНИКС од еден вид компјутер на друг. Овој оперативен систем бил напишан во асемблер за PDP 11, а Денис Ричи го преобработил неговото јадро (kernel) со помош на програмскиот јазик Ц. На тој начин оперативниот систем станал полесно пренослив на други компјутери.

Програмскиот јазик Ц не бил посебно популаризиран од никого. Тој самиот се наметнал меѓу програмерите без никакво рекламирање, така што и самиот автор бил изненаден кога видел колку неговиот јазик станал популарен.

Од PDP 11 Ц се проширил на мини компјутерите, а потоа и на микро компјутерите. Тој е основно орудие на многу познати програмерски куќи како што се: Ashton Tate, Microsoft, Digital Research, DEC, AT&T итн.

## Особености
Преносливоста на Ц, за која многу се зборува, е реалност на ниво на пренос на програми што инаку би се пренесувале како асемблерски програми. За апликативни програми преносливоста на јазиците, како што се Паскал (Pascal) и FORTRAN е поголема поради големиот степен на нивната стандардизација.

Јазикот Ц ја поседува компактноста карактеристична за програмските јазици конструирани од еден човек. Такви програмски јазици се веќе споменатите B и BCPL и програмските јазици како Паскал, Lisp, APL и други. За разлика од нив програмските јазици што се конструирани од страна на тимови со повеќе автори како што се PL/1, ADA, ALGOL 60 и други, не се компактни и честопати се пресложени.
Ц е програмски јазик за општа намена и со него можат да се пишуваат најразлични видови програми. Сепак, може да се каже дека неговите можности најмногу доаѓаат до израз при пишување на системски софтвер, што и била неговата првенствена намена, а и специјалноста на неговиот творец.

Во однос на големината, Ц е екстремно мал програмски јазик. Бројот на клучни зборови (keyword) во Ц изнесува 32 (28 според првичниот незваничен стандард од книгата на Ричи и Кернихам и дополнителни 4 кои се внесени во ANSI стандардот за Ц). За разлика од Ц, IBM-овиот Basic, кој се смета за едноставен програмски јазик има 159 клучни зборови.

Клучни зборови во Ц според стандардот ANSI се:

:`auto`
:`break`
:`case`
:`char`
:`const`
:`continue`
:`default`
:`do`

:`double`
:`else`
:`enum`
:`extern`
:`float`
:`for`
:`goto`
:`if`

:`int`
:`long`
:`register`
:`return`
:`short`
:`signed`
:`sizeof`
:`static`

:`struct`
:`switch`
:`typedef`
:`union`
:`unsigned`
:`void`
:`volatile`
:`while`

Програмскиот јазик Ц е **case sensitive** односно тој прави разлика помеѓу малите и големите букви. **While** не е исто што и **while**.

И во двете верзии може да се забележи дека Ц ги содржи само основните наредби и дека нема вградени влезно-излезни (I/O) наредби  и наредби за ракување со низи знакови. Филозофијата на Ц е таква што сите посложени наредби се реализираат со помош на основните наредби и како функции (fuction) се чуваат во таканаречените библиотеки на функции (function library). Со секој преведувач на Ц (C compiler) се испорачуваат и повеќе библиотеки на разни видови функции.

Програмите во Ц се состојат од низи блокови кои се организираат како функции. Според тоа, пишувањето на програмите се сведува на пишување поедини функции и нивно вклопување. При тоа, сите функции се рамноправни со тоа што една мора да го има името main(). Тоа е функцијата од која отпочнува програмата.

Читањето на програмите во Ц е тешко и на прв поглед тие се прилично неразбирливи за почетниците. Тоа е поради големиот број оператори кои се присутни како резултат на тенденцијата за блискост со асемблерот.

Покрај другото, моќта на Ц е и во овозможување на работа со покажувачи (pointers). Покажувачите, најпросто речено, соодветстуваат со мемориски адреси. Многу машински инструкции работат директно со реалните мемориски адреси, па примената на покажувачите овозможува ефикасно преведени програми.

## Наводи

Категорија:Програмски јазици
Категорија:Американски пронајдоци