- Programski jezici se klasifikuju prema nivou apstrakcije, paradigmi, namjeni, načinu izvršavanja i generisanju.
- Jezici visokog nivoa su lakši za korištenje, dok jezici niskog nivoa nude veću kontrolu nad hardverom.
- Odabir pravog jezika utiče na performanse, produktivnost i održivost softvera.
- Trenutni trendovi uključuju višeparadigmatske jezike i pristupe konkurentnom i kvantnom programiranju.
Klasifikacija programskih jezika
- Prema vašem nivou apstrakcije
- Po programskoj paradigmi
- Prema namjeni jezika
- Na osnovu forme izvršenja
- Po generacijama
Klasifikacija programskih jezika prema njihovom nivou apstrakcije
Jezici niskog nivoa
- Mašinski jezik: To je najniži nivo programiranja, koji se sastoji od nizova binarnih brojeva koje računar interpretira kao instrukcije.
- Jezik asemblera: To je korak iznad mašinskog jezika, koristeći mnemoniku za predstavljanje operacija.
Jezici visokog nivoa
- Veća apstrakcija detalja hardvera
- Sintaksa bliža ljudskom jeziku
- Veća prenosivost između različitih platformi
- Brži razvoj i manje sklon greškama
- piton
- Java
- C ++
- JavaScript
- Rubin
Klasifikacija programskih jezika po programskoj paradigmi
Imperativno programiranje
- Fokusira se na opisivanje kako se zadatak izvodi korak po korak.
- Koristite stanja i promjene stanja da biste postigli željeni rezultat
- Intuitivan je za mnoge programere, jer liči na način na koji dajemo uputstva u stvarnom životu.
- C
- paskal
- BASIC
deklarativno programiranje
- Fokusira se na željeni rezultat, a ne na korake za postizanje istog
- Često rezultira sažetijim i lakšim za razumijevanje koda.
- Može biti efikasnije u određenim vrstama problema, posebno u obradi podataka.
- SQL
- prolog
- Haskell (iako je također funkcionalan)
Objektno orijentirano programiranje
- Enkapsulacija: Grupira povezane podatke i metode u objekte
- Nasljeđivanje: Dozvoljava klasama da naslijede svojstva i metode od drugih klasa
- Polimorfizam: omogućava da se objekti različitih klasa tretiraju ujednačeno
- Java
- C ++
- Python (iako je multiparadigma)
Funkcionalno programiranje
- Čiste funkcije: uvijek daju isti rezultat za iste argumente
- Nepromjenjivost: Podaci se ne mijenjaju nakon kreiranja
- Rekurzija: prednost pred iterativnim kontrolnim strukturama
- Haskell
- šuškanje
- erlang
Klasifikacija prema namjeni jezika
Jezici opšte namene
- Fleksibilnost za rješavanje različitih vrsta problema
- Velika baza korisnika i dostupni resursi
- Oni uglavnom imaju kompletan skup funkcija
- piton
- Java
- C ++
- JavaScript
- Rubin
Jezici specifični za domenu
- Sintaksa i semantika prilagođena određenoj domeni
- Veća efikasnost u rješavanju problema unutar vašeg domena
- Oni općenito imaju kraću krivulju učenja za stručnjake iz domena
- SQL za manipulaciju bazom podataka
- HTML za strukturiranje web sadržaja
- R za statističku analizu i vizualizaciju podataka
- MATLAB za matematičke i naučne proračune
Klasifikacija programskih jezika na osnovu načina na koji se izvode
Sastavljeni jezici
- Veća brzina izvršenja
- Izvorni kod nije potreban za izvršenje
- Otkrivanje grešaka u vrijeme kompajliranja
- Općenito specifično za platformu
- C
- C ++
- Go
- rđa
Tumačeni jezici
- Veća fleksibilnost i lakoća razvoja
- Prenosivost između različitih platformi
- Sporije izvršenje u poređenju sa kompajliranim jezicima
- Za izvršenje je potreban izvorni kod
- piton
- Rubin
- JavaScript
- PHP
- Performanse: Ako je brzina izvršavanja kritična, kompajlirani jezik može biti najbolji izbor.
- Prenosivost: Ako trebate da vaš kod radi na različitim platformama bez modifikacija, interpretirani jezik bi mogao biti prikladniji.
- Razvojni ciklus: Interpretirani jezici obično omogućavaju brži razvoj i lakše otklanjanje grešaka.
- Sigurnost izvornog koda: Ako ne želite distribuirati svoj izvorni kod, kompajlirani jezik nudi veću zaštitu.
Klasifikacija po generacijama
Od prve do pete generacije
- Prva generacija (1GL): Mašinski jezik
- Sastoji se od sekvenci od 0s i 1s
- Direktno izvršljiv od strane procesora
- Ljudima je izuzetno teško pisati i održavati
- Druga generacija (2GL): Asemblerski jezik
- Koristite mnemotehniku da predstavite mašinske instrukcije
- Zahtijeva asembler da ga konvertuje u mašinski jezik
- Čitljiviji od mašinskog jezika, ali i dalje veoma blizak hardveru
- Treća generacija (3GL): Jezici visokog nivoa
- Uključuje jezike kao što su C, C++, Java, Python
- Bliže prirodnom jeziku
- Oni vam omogućavaju da pišete mašinski nezavisan kod
- Za njihovo izvršavanje potrebni su kompajleri ili tumači
- Četvrta generacija (4GL): Jezici orijentirani na specifične aplikacije
- Dizajniran za specifične tipove aplikacija (npr. SQL za baze podataka)
- Oni omogućavaju da se aplikacije razvijaju brže od 3GL-a
- Često uključuju vizuelne ili deklarativne programske karakteristike.
- Peta generacija (5GL): Jezici zasnovani na ograničenjima
- Oni se fokusiraju na rješavanje problema i ograničenja, a ne na algoritme
- Koriste umjetnu inteligenciju i mašinsko učenje
- Još uvijek u razvoju i rjeđi od prethodnih generacija
- Povećana produktivnost programera
- Manje vremena razvoja
- Lakši za održavanje i otklanjanje grešaka koda
- Veća dostupnost za ljude bez duboke tehničke obuke
Utjecaj klasifikacije na razvoj softvera
Odabir pravog jezika za svaki projekat
- Za frontend web razvoj, interpretirani jezici visokog nivoa poput JavaScripta su idealni zbog njihove integracije sa web pretraživačima.
- Za ugrađene sisteme ili softver niskog nivoa, kompajlirani jezici niskog nivoa poput C mogu biti najbolji izbor zbog njihove efikasnosti i kontrole nad hardverom.
- Za analizu podataka i mašinsko učenje, jezici kao što su Python ili R, koji imaju moćne specijalizovane biblioteke, se široko koriste.
Uticaj na performanse i efikasnost
- Prevedeni jezici generalno nude bolje performanse vremena izvođenja.
- Jezici nižeg nivoa omogućavaju precizniju optimizaciju, ali po cijenu sporijeg i složenijeg razvoja.
Utjecaj na produktivnost programera
- Jezici visokog nivoa i 4GL mogu ubrzati razvoj određenih aplikacija.
- Jezici sa jakim sistemom tipova mogu pomoći u sprečavanju grešaka u vremenu kompajliranja, štedeći vrijeme u otklanjanju grešaka.
Održivost i skalabilnost koda
- Jezici sa dobrom modularnošću, poput onih koji podržavaju objektno orijentirano programiranje, mogu olakšati održavanje velikih projekata.
- Funkcionalni jezici mogu biti prikladniji za istovremene i distribuirane sisteme.
Budući trendovi u klasifikaciji programskih jezika
- Multiparadigmski jezici: Sve više jezika usvaja karakteristike iz više paradigmi, brišući granice između tradicionalnih klasifikacija.
- Fokusirajte se na konkurentnost i paralelizamSa porastom višejezgrenih i distribuiranih sistema, jezici koji olakšavaju istovremeno programiranje dobijaju na značaju.
- Specifični jezici za AI i mašinsko učenje: Kako ove tehnologije postaju sve rasprostranjenije, mogli smo vidjeti pojavu novih klasifikacija fokusiranih na AI sposobnosti.
- Kvantno programiranje: Sa razvojem kvantnih računara, vjerovatno ćemo vidjeti pojavu novih klasifikacija za jezike dizajnirane posebno za ovu vrstu hardvera.
- Veća apstrakcija: Trend ka jezicima višeg nivoa će se nastaviti, s fokusom na to da programiranje učini dostupnijim široj publici.
Zaključak o klasifikaciji programskih jezika
Često postavljana pitanja o klasifikaciji programskih jezika
-
Koji je programski jezik danas najčešće korišten?
2. Da li je bolje naučiti kompilirani ili interpretirani jezik?
3. Kako programska paradigma utiče na način razmišljanja programera?
4. Koji jezici se preporučuju za početnike?
5. Kako je klasifikacija programskih jezika evoluirala tokom vremena?
Sadržaj
- Klasifikacija programskih jezika
- Klasifikacija programskih jezika prema njihovom nivou apstrakcije
- Klasifikacija programskih jezika po programskoj paradigmi
- Klasifikacija prema namjeni jezika
- Klasifikacija programskih jezika na osnovu načina na koji se izvode
- Klasifikacija po generacijama
- Utjecaj klasifikacije na razvoj softvera
- Budući trendovi u klasifikaciji programskih jezika
- Zaključak o klasifikaciji programskih jezika
- Često postavljana pitanja o klasifikaciji programskih jezika
