C (programski jezik)
C | |
---|---|
Pojavio se | između 1969. i 1973. |
Tvorac | Dennis Ritchie i Brian Kernighan, AT&T Bell Labs |
Sistem tipovanja | Statični, slabi |
Glavne implementacije | Razne |
Dijalekti | Mnogi |
Utjecali | B programski jezik |
Utjecao na | C++, Java, C# |
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.