Programski jezik (čitati udžbenik, glava 4) ANSI: “Programski jezik je jezik koji se koristi za pripremanje računarskih programa” Definicija vs. Klasifikacija
Programski jezik(čitati udžbenik, glava 4)
ANSI: “Programski jezik je jezik koji se koristi za pripremanje računarskih programa”
Definicija vs.
Klasifikacija
Programski jezik - klasifikacija
Mašinski zavisni jezici – prednosti i nedostaci Mašinski nezavisni jezici – prednosti i nedostaci
Programski jezik – klasifikacija- paradigma (način programiranja)
Imperativna paradigma (C, Pascal, Fortran,...) Objektno orijentisana paradigma (Java, C++, C#,...) Funkcionalna paradigma (Lisp, Scheme, Haskell, ...) Logička paradigma (Prolog) Kombinacije...
Programski jezik – klasifikacija- nivo opisa
Proceduralni jezici Deklarativni jezici
Programski jezici FORTRAN FORmula TRANslating system (1954-57, IBM, Džon
Bakus; proračuni parametara u nuklearnoj elektrani); imperativni, proceduralni
LISP LISt Processing (projektovan 1958., Džon Makarti); funkcionalni, proceduralni
COBOL COmmon Business-Oriented language, 1959; CODASYL; imperativni, proceduralni; od 2002 - OO
60-te ALGOL , … 70-te C, Pascal, Smalltalk 80-te C++ 90-te Haskell, Python, Visual Basic, Ruby, JAVA, PHP, JavaScript
- skript jezici (veb) C#, Scala, F# - MS -multiparadigme
Razvojni ciklus programa
Pisanje programa za rešavanje problema
Izbor metode
Izbor ili razvoj algoritma
Zapis algoritma na programskom jeziku - kodiranje
Unošenje u računar, prevođenje: iz izvornog u objektni kod
Povezivanje: iz objektnog u izvršni kod
Izvršavanje: testiranje, otkrivanje grešaka – programski alati
Ispravljanje grešaka – novi program, algoritam ili metoda
Korišćenje i održavanje programa
Leksika, sintaksa, semantika
jezika
Šta su ispravne rečenice srpskog jezika? Šta su ispravne reči srpskog jezika? Šta je značenje ispravnih rečenica? Primer: „Bezbojne zelene ideje besno spavaju„ (N. Čomski) Sta su ispravni programi nekog programskog jezika? Šta je značenje pojedinih naredbi?
Leksika: osnovni gradivni elementi jezika Sintaksa: kombinovanje osnovnih elemenata u ispravne
jezičke konstrukcije Semantika: značenje (rečenice, programa)
Leksika, sintaksa, semantika
jezika Primer: if (a < 3) x1 = 3+4*a;
Leksički analizator
Leksema Kategorija Leksema Kategorija
if ključna reč = operator
( zagrada 3 celobrojnalkonstanta
a identifikator + Operator
< operator 4 celobrojnakonstanta
3 celobrojnakonstanta
* Operator
) zagrada a identifikator
x1 identifikator ; interpunkcija
Leksika, sintaksa, semantika
jezika
Sintaksa definiše formalne odnose između elemenata jezika
Daje opis strukture ispravnih rečenica jezika Sintaksa se bavi samo formom i strukturom jezika Sintaksa ne razmatra značenje rečenica Na osnovu sintakse – generisanje i prepoznavanje
Leksika, sintaksa, semantika
jezika
Sintaksička struktura rečenica ili programa se može predstaviti u obliku stabla
Sintaksički analizator
Leksika, sintaksa, semantika
jezika
Semantika – značenje; U programskom jeziku: izračunavanje opisano
programom if (a < 3) x1 = 3+4*a; Semantička korektnost programa
Tokom prevođenja programa (npr.tipovi) Tokom izvršavanja programa (npr. deljenje nulom)
Formalna definicija semantike - samo za neke programske jezike
Za ostale jezike - neformalno, prirodnim jezikom
Jezički procesori - vrste
Jezički procesori:
Sintaksna ispravnost programa
Prevođenje na mašinski jezik
Kompilatori
Interpreteri
Vreme analize, prevođenja i izvršavanja
Interpreteri: izvršavanje programa
Kompilatori: izvorni – ciljni jezik -
izvršavanje programa
Interpreteri: prednosti i nedostaci
Neposredni pristup korisnika procesu računanja, izvornom programu i podacima
Pogodni u vreme razvoja programa
Neefikasno izvršavanje
Jezici u sastavu tekst editora, operativnih sistema, problemski orijentisani jezici, jezici sa slabom strukturom – PROLOG, BASIC, LISP
Kompilatori: prednosti i nedostaci
Brzina izvršavanja programa
Prevedeni program gubi svaku vezu sa izvornim programom
Svaka (i najmanja) izmena u izvornom programu zahteva ponovno prevođenje celog programa
Programi sa intenzivnom numeričkom obradom –važna brzina
Jezici sa izraženom strukturom i tipiziranošću
Mešoviti pristup