L01 Flashcards
Šta predstavlja teorija programskih jezika?
Teorija programskih jezika je grana informatike koja se bavi dizajnom, implementacijom, analizom i klasifikacijom programskih jezika i njihovim pojedinačnim karakteristikama.
Objasnite realizaciju paradigmi i koncepata u kontekstu programskih jezika
Svaki programski jezik realizuje bar jednu paradigmu, koja se sastoji od jednog ili skupa koncepata.
Koje su faze u razvoju programskih jezika? U koji sloj spadaju asemberski jezici? U koji sloj spada digitalna logika? Gde spadaju jezici kao što je Python?
- mašinski kod
- heksadecimalni zapis mašinskog koda
- asemblerski jezik
- makroasemblerski jezik
- viši programski jezici
- problemski-orijentisani jezici
Koja je razlika između prevodioca i interpretera? Šta je kompajler?
Prevodioc pretvara ceo izvorni kod u mašinski odjednom, a interpreter prevodi liniju po liniju. Kompajler je program koji kod višeg nivoa ceo odjednom pretvara u kod koji računar razume.
Kakav nivo apstrakcije ima Python u odnosu na asemblerske jezike i jezike C, Java i C#?
Python ima viši nivo apstrakcije od svih navedenih jezika.
Koja je glavna podela koncepata programiranja?
Programiranje se deli na imperativno (koje se deli na proceduralno i OOP) i deklarativno (koje se deli na logičko i funkcionalno).
Šta predstavlja imperativno, a šta deklarativno programiranje?
Imperativno programiranje je paradigma koja opisuje proces računanja kao sekvencu izjava kojima se menja stanje programa. Deklarativno programiranje je paradigma koja izražava logiku računanja bez opisivanja njenog kontrolnog toka.
Opisati ukratko i dati neki primer za proceduralne jezike.
Proceduralno programiranje se zasniva na procedurama i njihovom izvršavanju, po principu pozivanja procedura. Program je niz procedura. Procedure se sastoje od sekvence računarskih koraka koji se mogu izvršavati u bilo kojoj tački izvršavanja programa. Proceduralni jezici: C, Basic, Java, FORTRAN.
Šta predstavlja skripting jezik? Kako se izvršava program napisan na skripting jeziku?
Skripting jezici (jezici visokog nivoa) se najčešće koriste za pisanje malih programa (skripti) koji se brzo pišu i služe za obavljanje manjih poslova. Skripte se mogu koristiti za automatizovanje aplikacija, web stranica, ljuske (shell) operacionih sistema i nekih programskih jezika opšte namene. Skripting jezici se uvek implementiraju.
Koje su prednosti i mane skripting jezika?
Prednosti: slab stepen tipiziranja, laki za korišćenje
Mane: mogućnost da se lako preuzme i pokrene maliciozni izvršni kod skripte
Nabrojati osobine skripting jezika.
- interpretiraju se
- poseduju sakupljač smeća (garbage collector)
- uključuju tipove podataka višeg nivoa (liste, asocijativna polja, tuple)
- mogu da pristupe modulima pisanim u nižim jezicima
- često se koriste za administraciju sistema i brzu izradu prototipa
- omogućavaju grupisanje često korišćenih komandi u batch datoteke
- omogućavaju kreiranje novih fleksibilnih i konfigurabilnih alata
Kakvo tipiziranje ima Python? Koje su osobine?
Python je jako tipiziran dinamički programski jezik. Kod jakog tipiziranja promenljive imaju samo jednu vrednost i programski jezik ne dozvoljava pogrešne tipove. Kod dinamičkog tipiziranja nije potrebno definisati promenljivu pre korišćenja jer prevodilac zna koji je korektan tip podatka za zadatu operaciju.
✧ Kako se dele programski jezici?
- funkcionalni i proceduralni
- imperativni i deklarativni
- dinamički i statički
- jaki i slabi
Opisati ukratko i dati neki primer za OOP jezike.
OOP je koncept programiranja koji se zasniva na korišćenju objekata - instanca klasa. Važne tehnike kod OOP su apstrakcija, enkapsulacija, razmena poruka, modularnost, polimorfizam i nasleđivanje. Čisti OOP: Ruby, Emerald, JADE, Scala. Implementiraju OOP: Java, C++, Python.
Opisati ukratko i dati neki primer za logičke jezike.
Logičko programiranje je programska paradigma koja se zasniva na formalnoj logici. Svaki program napisan na jeziku logičkog programiranja predstavlja skup izraza u logičkoj formi koji daju činjenice i pravila za programski domen. Logički jezici: Absys, CHIP, HiLog, PROLOG.