Podcast
Questions and Answers
Kateri od naslednjih razlogov ni tipičen motiv za učenje več programskih jezikov?
Kateri od naslednjih razlogov ni tipičen motiv za učenje več programskih jezikov?
- Razumevanje osnovnih principov jezikov olajša ocenjevanje jezikov.
- Poznavanje več jezikov omogoča hitrejše učenje novih.
- Različni jeziki so primerni za različne vrste projektov.
- Vedno bomo uporabljali samo en programski jezik skozi celotno kariero. (correct)
Ali je cilj predmeta 'Principi programskih jezikov' seznaniti študente le z objektno usmerjenim programiranjem?
Ali je cilj predmeta 'Principi programskih jezikov' seznaniti študente le z objektno usmerjenim programiranjem?
False (B)
Kateri so trije vidiki opisa programskega jezika?
Kateri so trije vidiki opisa programskega jezika?
Sintaksa, Semantika, Pragmatika
Glede na način opisa problema programske jezike delimo na ______ in deklarativne.
Glede na način opisa problema programske jezike delimo na ______ in deklarativne.
Povežite naslednje programerje s programskim jezikom, ki so ga pomagali razviti:
Povežite naslednje programerje s programskim jezikom, ki so ga pomagali razviti:
Kateri od naslednjih dejavnikov ni kriterij za kvaliteto programskega jezika?
Kateri od naslednjih dejavnikov ni kriterij za kvaliteto programskega jezika?
Ali je en sam univerzalen programski jezik, ki bi bil primeren za vse naloge, realen cilj pri razvoju programskih jezikov?
Ali je en sam univerzalen programski jezik, ki bi bil primeren za vse naloge, realen cilj pri razvoju programskih jezikov?
Na kaj delimo programske jezike glede na namen uporabe?
Na kaj delimo programske jezike glede na namen uporabe?
Po zaključku predmeta bo študent sposoben identificirati ______ in prednosti posameznega programskega jezika.
Po zaključku predmeta bo študent sposoben identificirati ______ in prednosti posameznega programskega jezika.
Kateri od naštetih jezikov je bil razvit najprej?
Kateri od naštetih jezikov je bil razvit najprej?
Samo prisotnost na predavanjih lahko prinese bonus pri končni oceni predmeta.
Samo prisotnost na predavanjih lahko prinese bonus pri končni oceni predmeta.
Kateri so pristopi učenja programskega jezika?
Kateri so pristopi učenja programskega jezika?
Če je sintaksa dobro zasnovana lahko pripomore k ______ in zanesljivejšim programom.
Če je sintaksa dobro zasnovana lahko pripomore k ______ in zanesljivejšim programom.
Kaj je značilno za imperativne programske jezike?
Kaj je značilno za imperativne programske jezike?
Ali je JavaScript interpretiran programski jezik?
Ali je JavaScript interpretiran programski jezik?
Kateri pogoj mora doseči študent, da lahko opravi izpit?
Kateri pogoj mora doseči študent, da lahko opravi izpit?
S študijem programskih jezikov spoznamo tudi njihovo ______, kar nam pomaga pri razumevanju programskega jezika.
S študijem programskih jezikov spoznamo tudi njihovo ______, kar nam pomaga pri razumevanju programskega jezika.
Kateri od naslednjih programerjev je bil povezan z jezikom Algol?
Kateri od naslednjih programerjev je bil povezan z jezikom Algol?
Je berljivost programa pomemben dejavnik pri kvaliteti programskega jezika?
Je berljivost programa pomemben dejavnik pri kvaliteti programskega jezika?
Kaj pomeni, da je programski jezik 'univerzalen'?
Kaj pomeni, da je programski jezik 'univerzalen'?
Kdo od naštetih je prispeval k razvoju jezika C?
Kdo od naštetih je prispeval k razvoju jezika C?
Če študent zbere 50% vseh točk, je avtomatično opravil izpit.
Če študent zbere 50% vseh točk, je avtomatično opravil izpit.
Kakšna mora biti sintaksa programskega jezika?
Kakšna mora biti sintaksa programskega jezika?
Pri programskih jezikih, ki temeljijo na ______ gradimo strukturo in elemente programa, ni opisovanja krmilnega toka.
Pri programskih jezikih, ki temeljijo na ______ gradimo strukturo in elemente programa, ni opisovanja krmilnega toka.
Kateri jezik je bil prvi, ki je omogočal reševanje Bernoullijevih enačb?
Kateri jezik je bil prvi, ki je omogočal reševanje Bernoullijevih enačb?
Ali so domensko specifični jeziki primerni za splošno rabo?
Ali so domensko specifični jeziki primerni za splošno rabo?
Glede na vzorec računanja, kako delimo programske jezike?
Glede na vzorec računanja, kako delimo programske jezike?
Ena izmed pomembnih odločitev je ______ programskega jezika.
Ena izmed pomembnih odločitev je ______ programskega jezika.
Kaj pomeni zapisljivost?
Kaj pomeni zapisljivost?
Se s študijem programskih jezikov spoznamo tudi z programiranjem?
Se s študijem programskih jezikov spoznamo tudi z programiranjem?
Kateri odbor stoji za jezikom Algol?
Kateri odbor stoji za jezikom Algol?
Programski jezik mora imeti možnost reševanja naloge na ______ način.
Programski jezik mora imeti možnost reševanja naloge na ______ način.
Glede na nivo in število strojnih inštrukcij, kako delimo programske jezike?
Glede na nivo in število strojnih inštrukcij, kako delimo programske jezike?
Glavni namen principov programskih jezikov je učenje sintakse različnih jezikov?
Glavni namen principov programskih jezikov je učenje sintakse različnih jezikov?
Katera leta so zaznamovala razvoj jezika Fortran?
Katera leta so zaznamovala razvoj jezika Fortran?
Veliko hitreje se bo naučil novega programskega jezika, če bo poznal ______ principe.
Veliko hitreje se bo naučil novega programskega jezika, če bo poznal ______ principe.
Katere vrste polimorfizma so zajete v predmetniku?
Katere vrste polimorfizma so zajete v predmetniku?
Poznavanje delovanja računalnika je pogoj za uspešnega programerja.
Poznavanje delovanja računalnika je pogoj za uspešnega programerja.
Za kaj se uporablja programski jezik?
Za kaj se uporablja programski jezik?
Če upoštevamo način implementacije programske jezike delimo na ______ in prevedene.
Če upoštevamo način implementacije programske jezike delimo na ______ in prevedene.
Flashcards
Uvod v programske jezike
Uvod v programske jezike
Neformalna definicija, delitve in kratka zgodovina programskih jezikov.
Objektno usmerjeno programiranje
Objektno usmerjeno programiranje
Koncepti objektno usmerjenih in objektno usmerjenih jezikov.
Vrednosti in tipi
Vrednosti in tipi
Delitev tipov, statično in dinamično preverjanje, ekvivalenca in vrste izrazov.
Pomnilnik
Pomnilnik
Signup and view all the flashcards
Povezovanje
Povezovanje
Signup and view all the flashcards
Abstrakcije
Abstrakcije
Signup and view all the flashcards
Ograjevanje
Ograjevanje
Signup and view all the flashcards
Sistemi tipov
Sistemi tipov
Signup and view all the flashcards
Funkcijsko programiranje
Funkcijsko programiranje
Signup and view all the flashcards
Sintaksa
Sintaksa
Signup and view all the flashcards
Semantika
Semantika
Signup and view all the flashcards
Pragmatika
Pragmatika
Signup and view all the flashcards
Razvrščanje programskih jezikov
Razvrščanje programskih jezikov
Signup and view all the flashcards
Splošno namenski jeziki
Splošno namenski jeziki
Signup and view all the flashcards
Domensko specifični jeziki
Domensko specifični jeziki
Signup and view all the flashcards
Jeziki glede na področje uporabe
Jeziki glede na področje uporabe
Signup and view all the flashcards
Jeziki glede na način opisa problema
Jeziki glede na način opisa problema
Signup and view all the flashcards
Jeziki glede na zapis programa
Jeziki glede na zapis programa
Signup and view all the flashcards
Jeziki glede na vzorec računanja
Jeziki glede na vzorec računanja
Signup and view all the flashcards
Jeziki glede na nivo
Jeziki glede na nivo
Signup and view all the flashcards
Jeziki glede na implementacijo
Jeziki glede na implementacijo
Signup and view all the flashcards
Berljivost
Berljivost
Signup and view all the flashcards
Zapisljivost
Zapisljivost
Signup and view all the flashcards
Zanesljivost
Zanesljivost
Signup and view all the flashcards
Strošek
Strošek
Signup and view all the flashcards
Study Notes
Uvodno predavanje: Principi programskih jezikov 2024/2025
- Predavatelj je izr. prof. dr. Tomaž Kosar (G2-2N.36, [email protected]).
- Asistent je Matej Moravec, mag. inž. rač. in inf. tehnol. ([email protected]).
- Tehniški sodelavec je Mario Casar, univ. dipl. inž. rač. in inf. ([email protected]).
- Dostop do materialov je na voljo na https://estudij.um.si/.
Obseg predmeta
- Predavanja obsegajo 30 ur, potekajo ob torkih (13.15-14.45) v predavalnici ALFA.
- Seminarske vaje obsegajo 3 ure, potekajo 25.2.2025 ob 15.00 v predavalnici ALFA.
- Laboratorijske vaje obsegajo 42 ur.
- RV1 poteka ob četrtkih (7.45–10.00) v F-102.
- RV2 poteka ob četrtkih (10.00–12.15) v F-102.
- RV3 poteka ob ponedeljkih (10.00–12.15) v F-102.
- RV4 poteka ob petkih (10.00–12.15) v F-102.
- Samostojno delo obsega 105 ur.
- Predmet ima 6 kreditnih točk ECTS.
Vsebina predmeta
- Vsebina predmeta obsega uvod v programske jezike s poudarkom na neformalni definiciji, delitvah in kratki zgodovini.
- Programski jezik Kotlin bo obravnavan kot poseben primer.
- Predmet vključuje koncept objektno usmerjenega programiranja.
- Obravnavani bodo koncepti objektnih in objektno usmerjenih jezikov.
- Zajete so vrednosti in tipi, vključno z delitvijo tipov, statičnim in dinamičnim preverjanjem, ekvivalenco tipov in vrstami izrazov.
- Obravnavan je pomnilnik, spremenljivke, shranljive vrednosti, življenjska doba spremenljivk, vrste ukazov in izrazi.
- Povezovanje, povezljive vrednosti, statični in dinamični doseg, vrste deklaracij, bločni ukazi in bločni izrazi so del vsebine.
- Abstrakcije, principi abstrakcije, vrste abstrakcij, mehanizmi prenosa parametrov, korespondenčni princip so del predmeta.
- Ograjevanje, paketi, abstraktni tipi, objekti, razredi in generični moduli so zajeti v sklopu ograjevanja.
- Sistemi tipov, monomorfni in polimorfni sistemi, vrste polimorfizma so del učne snovi.
- Funkcijsko programiranje, vključno z značilnostmi funkcijskih jezikov, uvod v lisp/haskell je del vsebine.
Pregled po tednih
-
- teden uvaja programske jezike.
-
- teden uvaja Kotlin.
-
- teden obravnava Kotlin.
-
- teden se osredotoča na objektno usmerjeno programiranje in Jetpack Compose.
-
- teden posvečen vrednostim in tipom.
-
- teden pokriva pomnilnik, vrednosti in ukaze.
-
- teden obravnava povezovanje.
-
- teden namenjen abstrakciji.
-
- teden se osredotoča na sekvencerje.
-
- teden pokriva sisteme tipov.
-
- teden obravnava enkapsuliranje.
-
- in 13. teden sta posvečena funkcijskemu programiranju.
-
- teden tudi zaključi predmet.
Študijski viri
- R. W. Sebesta, "Concepts of Programming Languages," Pearson, 2016.
- M. L. Scott, "Programming Language Pragmatics," Elsevier, 2016.
- M. Mernik, V. Žumer, "Programski jeziki," Univerza v Mariboru, 2003.
- R. Sethi, "Programming Languages: Concepts and Constructions," Addison-Wesley, 1996.
- D. A. Watt, "Programming Language Design Concepts," John Wiley, 2004.
Cilji predmeta
- Cilj je seznaniti študente z osnovnimi koncepti programskih jezikov
- Poudarek je na razumevanju razlik med funkcijskim, proceduralnim in objektno usmerjenim programiranjem.
Pričakovani rezultati
- Študent bo sposoben identificirati slabosti in prednosti programskih jezikov.
- Študent bo znal izbrati primeren jezik za dano nalogo.
- Študent bo razumel koncepte jezikov, kar bo pospešilo učenje novih jezikov.
- Študent bo razumel razlike med statičnim in dinamičnim tipiziranjem.
- Študent bo razumel dodeljevanje pomnilnika in tehnike prenosa parametrov.
- Študent bo poznal različne oblike polimorfizma.
Ocenjevanje
- Ocene se dodelijo glede na dosežen %, od 6 za 50-60% do 10 za nad 90%.
- Ocena je sestavljena iz 50% laboratorijskih vaj in 50% pisnega izpita/vmesnih izpitov.
- Bonus točke so možne za prisotnost na predavanjih (5%) in video opravljenih vaj (2%).
- Obstajata dva kolokvija: prvi v 7. tednu (8.4.2025, Alfa, 13:00) in drugi v 14. tednu (3.6.2025, Alfa, 13:00).
- Za uspešno opravljen izpit je potrebno zbrati najmanj 50% vseh točk.
- Potrebno je doseči vsaj polovico predvidenih obveznosti tako pri izpitu kot pri laboratorijskih vajah.
Zakaj se učiti programske jezike?
- Obstaja preko 3000 programskih jezikov in to število narašča
- Pomembno je poznati principe jezikov za lažjo izbiro in načrtovanje.
- Razumevanje principov programskih jezikov omogoča hitrejše učenje novih jezikov.
Uvod v programske jezike
- Študij programskih jezikov pomaga razumeti njihovo implementacijo in programiranje.
- Različni jeziki imajo različne poglede na algoritme ter podatkovne in krmilne strukture.
- Programski jeziki so temelj računalništva.
- Obstajajo različni pristopi učenja programskega jezika: s koncepti, semantični, implementacijski in pristop "jezika tega tedna".
- Programski jezik je programerjevo orodje in orodje za komunikacijo z računalnikom.
- Jezik mora biti univerzalen, omogočati naravno reševanje nalog in biti učinkovito implementiran.
Opis programskega jezika
- Sintaksa določa obliko jezika.
- Semantika določa pomen jezika.
- Pragmatika določa izvor in razvoj jezika.
- Jezike delimo na splošno namenske in domensko specifične.
- Ločimo jezike za podatkovne baze, spletno programiranje, UI, sistemsko programiranje, itd.
Delitev programskih jezikov
- Programske jezike delimo na imperativne in deklarativne.
- Razdelimo jih na linearne/tekstovne in vizualne.
- Razdelimo jih glede na vzorec računanja: proceduralne, objektno usmerjene, funkcijske, logične, paralelne.
- Ločimo nizke/zbirne, visoke in zelo visoke jezike.
- Glede na implementacijo ločimo intrepretirane in prevedene.
Primeri programski jezikov
- JavaScript
- Fortran
- Lisp
- Prolog
- Pascal
- C++
- Ada
- Java
- Za testiranje na voljo https://www.tutorialspoint.com/codingground.htm
Kvaliteta programskega jezike se definira
- Berljivost (readability): Razumljiv program ali njegov del
- Zapisljivost (writability): Kako enostavno je pisati programe v tem jeziku
- Zanesljivost (reliability): Ali jezik pomaga pri odkrivanju napak
- Strošek (Cost): Kakšna je cena za razvoj in vzdrževanje programov
Zgodovina
- 1830: Prvi program za Babbage stroj (Ada Byron).
- 1933: Lambda calculus (Alonzo Church).
- 1936: Turingov stroj (Alan Turing).
- 1945: Plankalkul (Konrad Zuse).
- 1954-1957: FORTRAN (Backus).
- 1957-1960: Algol-60 (committee).
- 1959-1960: Lisp (McCarthy).
- 1959-1961: COBOL (Hopper).
- 1960: BNF (Backus, Naur).
- 1964 – BASIC (Kurtz, Kemeny)
- 1964-1969 – PL/I (committee)
- 1965-1967 – Simula-67 (Nygaard, Dahl)
- 1965-1968 – Algol-68 (committee)
- 1967 – Axiomatic Semantics (Floyd)
- 1969 – Structured Programming (Dijkstra)
- 1969 – Program verification (Hoare)
- 1971 – Denotational Semantics (Scott)
- 1971 – Pascal (Wirth)
- 1972 – C (Richie)
- 1972 – Smalltalk-72 (Kay)
- 1973 - Prolog (Colmerauer)
- 1974 – CLU (Liskov)
- 1975 – Scheme (Sussman, Steele)
- 1975 – Concurrent Pascal (Brinch-Hansen)
- 1975 – ML (Gordon, Milner, Wadsworth)
- 1976-1980 – Ada (committee)
- 1977 – Modula-2 (Wirth)
- 1977 – FP (Backus)
- 1978 – CSP (Hoare)
- 1980 – Miranda (Turner)
- 1980 – Smalltalk-80 (Goldberg, Kay, Robson)
- 1980-1983 – C++ (Stroustrup)
- 1986 – Eiffel (Meyer)
- 1988 – Oberon (Wirth)
- 1988 – Modula-3 (Cardelli)
- 1990 – Haskell (committee)
- 1991 – Python (Rossum)
- 1994 – Java (Gosling)
- 1994 – JavaScript (Netscape)
- 2003 – Scala (Odersky)
- 2009 – Go (Google)
- 2011 – Kotlin (JetBrains)
- 2012 – TypeScript (Microsoft)
Število programskih jezikov
- Obstaja približno 2500 programskih jezikov (http://www.info.univ-angers.fr/~gh/hilapr/langlist/langlist.htm).
- Tiobe indeks meri popularnost jezikov (https://www.tiobe.com/tiobe-index/programming-languages-definition/#instances).
- Wikipedia navaja 700 pomembnih jezikov (https://en.wikipedia.org/wiki/List_of_programming_languages).
- CodeLani navaja preko 4000 jezikov (https://codelani.com/lists/languages.html).
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.