UVOD U PROGRAMSKI JEZIK C

Programski jezik C, razvijen 1972. godine od strane Denisa Ričija u laboratorijama kompanije Bell Labs, predstavlja jedan od najvažnijih i najuticajnijih programskih jezika u istoriji informatike. Osmišljen je kao alat za implementaciju operativnog sistema UNIX, ali se vrlo brzo proširio na druge oblasti zahvaljujući svojoj efikasnosti i svestranosti.
Glavne karakteristike C-a uključuju: Uticaj C-a na savremene jezike je ogroman. C++, koji je razvijen kao nadogradnja C-a, uvodi koncept objektnog programiranja, dok jezici poput Java i C# preuzimaju mnoge koncepte C-a, ali ih prilagođavaju za rad u modernim aplikacijama.Sa svojim minimalističkim pristupom i blizinom hardveru, C ostaje ključan za svakog programera koji želi da razume osnove programiranja i arhitekture računarskih sistema. C je opšti programski jezik koji se koristi za širok spektar aplikacija iz operativnih sistema kao što su Windows i iOS za softver koji se koristi za kreiranje 3D filmova.
C programiranje je vrlo efikasano. To je glavni razlog zbog koga je veoma popularan uprkos tome što ima više od 40 godina. Standardni C programi su prenosivi. Izvorni kod napisan u jednom sistemu radi u drugom operativnom sistemu bez ikakve promjene. Kao što je rečeno, dobar je jezik za početak učenja programa.


Zašto koristiti C?


C se inicijalno koristio za rad na razvoju sistema, posebno za programe koji čine operativni sistem. C je usvojen kao jezik za razvoj sistema jer proizvodi kod koji pokreće gotovo brže kao kod napisan u asembleru. Neki primjeri korištenja C mogu biti -

      Operativni sistemi
      Programski prevodioci
      Asembleri
      Uređivači teksta
      Mrežni drajveri
      Savremeni programi
      Baze podataka

Gde se programski jezik C koristi danas

    C jezik je i dalje široko korišćen u mnogim područjima softverskog razvoja zbog svoje efikasnosti, niskog nivoa apstrakcije i bliskosti hardveru. Evo nekoliko ključnih područja gde se C danas koristi:

1. Operativni sistemi:
    - Mnogi operativni sistemi, uključujući Unix, Linux i delovi Windowsa, napisani su u C. Jezgro (kernel) Linuxa je, na primer, većinom napisano u C.

2. Embedded sistemi:
    - C je dominantan u razvoju firmware-a i softvera za ugrađene sisteme (embedded systems), kao što su mikrokontroleri, senzori i razna industrijska i potrošačka elektronika.

3. Sistemski softver:
    - Kompajleri, interpreteri, asembleri, pa čak i neki delovi runtime okruženja drugih programskih jezika često su implementirani u C zbog njegove efikasnosti i kontrole nad hardverom.

4. Razvoj baza podataka:
    - Mnoge baze podataka, kao što su MySQL i PostgreSQL, napisane su u C, što im omogućava visok stepen performansi i optimizacije.

5. Računarske igre i grafika:
    - C se koristi u razvoju igara i grafičkih motora (engines), gde je brzina ključna. Mnogi popularni grafički motori kao što su Unity (koristi C++) i Unreal Engine (koristi C++) imaju komponente napisane u C.

6. Mrežni protokoli i sigurnost:
    - Mnogi mrežni protokoli i sigurnosni alati implementirani su u C zbog potrebe za visokim performansama i direktnim pristupom memoriji i mrežnim uređajima.

7. Visoko-performantni računari (HPC):
    - C se koristi u naučnim istraživanjima i numeričkom računarstvu, gde su potrebne brze i efikasne implementacije algoritama.

8. Razvoj vozača (drivers):
    - Drajveri za hardver (hardware drivers) često su napisani u C jer zahtevaju direktan pristup hardverskim resursima i efikasno upravljanje memorijom.

9. Portabilnost:
    - Programi napisani u C mogu se relativno lako portovati između različitih platformi, što je korisno za razvoj softvera koji treba da radi na različitim vrstama hardvera.

Iako su noviji jezici kao što su Python, Java i C++ preuzeli mnoge oblasti u softverskom razvoju, C ostaje ključan za situacije gde su performanse, kontrola nad hardverom i efikasnost od suštinskog značaja.

Šta je potrebno da bi se kreirao jedan C ili C++ program?

Pored operativnog sistema, da bi se mogla razvijati jedan C, kao i C++ aplikacija potrebno je:
Razvojni alat za programiranje(opciono), kao npr: dec c++, CodeBlock, VS Code i sl.
Za potrebe ovog tutorijala koristiće se CodeBlock, koji se može preuzeti sa websajta: https://www.codeblocks.org/downloads/

C vs. C++. Prednosti i mane

C programski jezik

Prednosti
1. Jednostavnost:
   - C je jezik niskog nivoa koji je lakši za učenje i korišćenje zbog svoje jednostavne sintakse i manjeg broja funkcionalnosti.

2. Efikasnost:
   - Programi napisani u C imaju visok stepen performansi i efikasnosti jer omogućavaju direktan pristup memoriji i hardveru.

3. Portabilnost:
   - C je veoma portabilan jezik i može se koristiti na gotovo svim platformama sa minimalnim promenama u kodu.

4. Široka upotreba:
   - C je osnova mnogih drugih programskih jezika, što olakšava učenje tih jezika. Mnogi sistemi i aplikacije su napisani u C, uključujući operativne sisteme i embedded sisteme.

Mane
1. Ograničena podrška za objektno orijentisano programiranje:
   - C nema nativnu podršku za objektno orijentisano programiranje (OOP), što može otežati organizaciju i održavanje većih projekata.

2. Manjak apstrakcije:
   - Programeri u C moraju da upravljaju memorijom ručno, što povećava rizik od grešaka kao što su curenja memorije i buffer overflow.

3. Nedostatak standardne biblioteke za moderne funkcionalnosti:
   - C ima relativno ograničenu standardnu biblioteku u poređenju sa savremenijim jezicima, što može zahtevati pisanje više koda za implementaciju određenih funkcionalnosti.

C++ programski jezik

Prednosti
1. Podrška za objektno orijentisano programiranje (OOP):
   - C++ dodaje podršku za klase, nasleđivanje, polimorfizam i enkapsulaciju, što omogućava bolju organizaciju i modularnost koda.

2. Standardna biblioteka (STL):
   - C++ dolazi sa bogatom standardnom bibliotekom koja uključuje kontejnere, algoritme i funkcionalnosti za rad sa stringovima, što značajno ubrzava razvoj softvera.

3. Podrška za više paradigmi:
   - Pored OOP, C++ podržava proceduralno, funkcionalno i generičko programiranje, pružajući veću fleksibilnost u razvoju softvera.

4. RAII (Resource Acquisition Is Initialization):
   - C++ koristi RAII idiom za upravljanje resursima, što olakšava pravilno upravljanje memorijom i drugim resursima.

Mane
1. Kompleksnost:
   - C++ je složeniji jezik u poređenju sa C zbog dodatnih funkcionalnosti i mogućnosti, što može otežati učenje i upotrebu.

2. Veći kompajlacioni zahtevi:
   - Programi napisani u C++ često zahtevaju više vremena za kompilaciju zbog složenih funkcionalnosti i bogate standardne biblioteke.

3. Potencijal za složenije greške:
   - S obzirom na to da C++ pruža mnoge moćne alate, neadekvatno korišćenje tih alata može dovesti do složenih grešaka koje su teže za otkrivanje i ispravljanje.

Zaključak
- C je idealan za sisteme i aplikacije koje zahtevaju direktan pristup hardveru i maksimalnu efikasnost, kao što su operativni sistemi, embedded sistemi i vozači hardvera.
- C++ je pogodan za složenije aplikacije koje zahtevaju bolju organizaciju koda i fleksibilnost, kao što su grafičke aplikacije, razvoj igara, softver za finansijske sisteme i druge aplikacije koje mogu iskoristiti objektno orijentisano programiranje i bogatu standardnu biblioteku.

Izbor između C i C++ zavisi od specifičnih zahteva projekta i preferencija programera.Za konkretne primere i sintaksu programskog jezika C, pogledajte naredne strane tutorijala, gde su detaljno objašnjeni osnovni elementi jezika.

Verzije programskog jezika C

Programski jezik C prošao je kroz nekoliko ključnih verzija tokom svoje istorije, pri čemu je svaka verzija donela značajna poboljšanja, nove mogućnosti i prilagođavanja modernim potrebama programiranja.
C89/C90 (ANSI C) C99 C11 C17 C23

Rezervisane reči u C jeziku

Rezervisane reči u C jeziku su unapred definisane reči sa specifičnim značenjima koje ne mogu biti korišćene kao identifikatori u vašem programu.

U sledećoj tabeli je prikazana evolucija rezervisanih reči kroz različite verzije C jezika:

Verzija Broj rezervisanih reči Primeri rezervisanih reči
C89/C90 32 auto, break, case, char
C99 37 inline, restrict, _Bool
C11 40 _Atomic, _Static_assert
C17 40 (isto kao C11)
C23 43+ (procena) Nove dodatke u razmatranju

Kako osigurati ažurnost?

Za programere koji žele da ostanu u toku s razvojem jezika C, preporučuje se:
  1. Praćenje zvaničnih standarda objavljenih od strane ISO.
  2. Redovno konsultovanje sa dokumentacijom za kompajler koji koriste (npr. GCC, Clang, MSVC).
  3. Učenje novih mogućnosti i ključnih reči putem kurseva i specijalizovanih vodiča.

​Sledeće
​Elementi jezika C​>|