L01 Flashcards

1
Q

Šta predstavlja teorija programskih jezika?

A

Teorija programskih jezika je grana informatike koja se bavi dizajnom, implementacijom, analizom i klasifikacijom programskih jezika i njihovim pojedinačnim karakteristikama.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Objasnite realizaciju paradigmi i koncepata u kontekstu programskih jezika

A

Svaki programski jezik realizuje bar jednu paradigmu, koja se sastoji od jednog ili skupa koncepata.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

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?

A
  1. mašinski kod
  2. heksadecimalni zapis mašinskog koda
  3. asemblerski jezik
  4. makroasemblerski jezik
  5. viši programski jezici
  6. problemski-orijentisani jezici
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Koja je razlika između prevodioca i interpretera? Šta je kompajler?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Kakav nivo apstrakcije ima Python u odnosu na asemblerske jezike i jezike C, Java i C#?

A

Python ima viši nivo apstrakcije od svih navedenih jezika.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Koja je glavna podela koncepata programiranja?

A

Programiranje se deli na imperativno (koje se deli na proceduralno i OOP) i deklarativno (koje se deli na logičko i funkcionalno).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Šta predstavlja imperativno, a šta deklarativno programiranje?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Opisati ukratko i dati neki primer za proceduralne jezike.

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Šta predstavlja skripting jezik? Kako se izvršava program napisan na skripting jeziku?

A
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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Koje su prednosti i mane skripting jezika?

A

Prednosti: slab stepen tipiziranja, laki za korišćenje
Mane: mogućnost da se lako preuzme i pokrene maliciozni izvršni kod skripte

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Nabrojati osobine skripting jezika.

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Kakvo tipiziranje ima Python? Koje su osobine?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

✧ Kako se dele programski jezici?

A
  • funkcionalni i proceduralni
  • imperativni i deklarativni
  • dinamički i statički
  • jaki i slabi
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Opisati ukratko i dati neki primer za OOP jezike.

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Opisati ukratko i dati neki primer za logičke jezike.

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Opisati ukratko i dati neki primer za funkcionalne jezike.

A

Funkcionalno programiranje tretira program kao skup funkcija koje se primenjuju za dobijanje rezultata. Funkcije se definišu kao stabla izraza (trees of expressions) koja mogu da vrate povratnu vrednost. Funkcionalni jezici: Lisp, Wolfram Mathematica, Haskell/ Jezici sa funkcionalnim elementima: SQL, Python, C++, Perl, PHP

17
Q

Kako se dele skripting jezici?

A
  • jezik za upravljanje poslovima (job control) i ljuske (shell)
  • GUI jezici
  • specifični jezici za aplikacije
  • jezici za procesuiranje teksta
  • dinamički jezici opše namene
  • ugrađeni jezici (embeddable languages)