C (programski jezik)

C programski jezik spada u proceduralne programske jezike koji je razvijen u ranim 70-im godinama 20. vijeka. Autor ovog programskog jezika je Dennis Ritchie, no značajan doprinos nastanku C-a dali su Ken Thompson kao autor programskog jezika B i Martin Richards, autor programskog jezika BCPL. Dennis Ritchie je stvorio ovaj programski jezik za rješavanje praktičnih problema kodiranja sistemskih programa i jezgre operativnog sistema UNIX, koji je praktički u cijelosti napisan u C-u.

Programski jezik C dosta se mijenjao tokom godina te je u više navrata neformalno i formalno standardiziran. Prva važnija verzija poznata je pod nazivom "K&R C", što je eng. kratica prezimena dvaju autora najpoznatijeg C priručnika "The C Programming Language" – Brian Kernighan i Dennis Ritchie. Prvo izdanje te vrlo sažeto i precizno pisane knjige iz 1978. godine ujedno je de facto standardiziralo jezik u 70-ima. Drugo izdanje iz 1988. godine opisuje "ANSI C", standard kojeg je 1983. godine definirao američki nacionalni institut za standardizaciju, a koji je i danas najbolje podržan. Aktualni ISO/IEC standard, skraćeno poznat kao "C99", podržava u cijelosti samo manji dio komercijalnih proizvođača softvera.

 Historija razvoja i verzije 
Prvobitni razvoj C programskog jezika započinje između 1969. i 1973. u AT&T Bell Labs, a po riječima Dennisa Ritchieja najkreativniji period bio je tokom 1972. Nazvan je C jer su mnoge od njegovih karakteristika potekle od ranijeg programskog jezika zvanog B.

Tokom 1980-ih, Bjarne Stroustrup zajedno s drugim istraživačima u Bell Labs proširuje C dodajući mogućnosti objektno orijentisanog programiranja, a naziv novog jezika postaje C++. Nažalost, ta 100%-na kompatibilnost naslijedila je i neke probleme koje programiranje u C-u nosi sa sobom.

 Standardizacija 
Svaki program napisan u C-u obično sadrži sljedeće elemente:

 Preprocesorski dio (npr. #include <stdio.h>) – Uključuje zaglavlja neophodna za osnovne funkcionalnosti ulaza i izlaza.
 Definisanje varijabli – Određivanje tipova i polja definisanosti varijabli koje se koriste u funkcijama.
 Glavna funkcija main() – Mora postojati u svakom C programu.
 Ostale funkcije – Definišu se prema vrsti ulaznih i izlaznih parametara.

 Programski primjer 

#include <stdio.h>

int main() {
    int a, b, c;
    scanf("%d %d", &a, &b);
    c = a + b;
    printf("%d\n", c);
    return 0;
}

 Napredne tehnike programiranja u C-u 
C omogućava nekoliko naprednih tehnika koje se često koriste u optimizaciji i sistemskom programiranju.

 Rad sa pokazivačima 

#include <stdio.h>

void swap(int *x, int *y) {
    int temp = *x;
    *x = *y;
    *y = temp;
}

int main() {
    int a = 5, b = 10;
    swap(&a, &b);
    printf("a = %d, b = %d\n", a, b);
    return 0;
}

 Korištenje struktura i unija 

#include <stdio.h>

struct Student {
    char ime[50];
    int godine;
    float prosjek;
};

int main() {
    struct Student s1 = {"Marko", 22, 8.5};
    printf("Ime: %s, Godine: %d, Prosjek: %.2f\n", s1.ime, s1.godine, s1.prosjek);
    return 0;
}

 Naučna istraživanja i uticaj C jezika 
C programski jezik je temelj mnogih istraživanja u oblasti računarskih nauka. Naučnici su proučavali njegovu efikasnost, sigurnosne aspekte i uticaj na razvoj drugih jezika. Ključna istraživanja uključuju:

 Efikasnost C jezika – Mnoge studije su pokazale da C omogućava visoke performanse zahvaljujući niskonivou kontroli memorije i direktnom pristupu hardveru.
 Sigurnosni izazovi – Naučni radovi analiziraju kako ručno upravljanje memorijom može dovesti do sigurnosnih ranjivosti (poput buffer overflow napada).
 Uticaj na moderne jezike – Istraživanja potvrđuju da su mnogi moderni jezici (Java, C#, Rust) inspirisani C-om, ali uvode poboljšanja u sigurnosti i upravljanju memorijom.

Danas se C koristi za razvoj operativnih sistema, kompajlera, ugrađenih sistema, te za programske aplikacije koje zahtevaju visoke performanse.

 Zaključak 
C programski jezik ostaje ključni alat u programerskom ekosistemu, od fundamentalnih softverskih sistema do najnovijih inovacija u softverskom inženjerstvu. Unatoč izazovima, njegova efikasnost i fleksibilnost čine ga nezaobilaznim u modernom računarstvu.

Kategorija:Programski jezici
Kategorija:Američki izumi