Principi programskih jezikov 2024/2025

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson
Download our mobile app to listen on the go
Get App

Questions and Answers

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?

False (B)

Kateri so trije vidiki opisa programskega jezika?

Sintaksa, Semantika, Pragmatika

Glede na način opisa problema programske jezike delimo na ______ in deklarativne.

<p>imperativne</p> Signup and view all the answers

Povežite naslednje programerje s programskim jezikom, ki so ga pomagali razviti:

<p>Backus = Fortran McCarthy = Lisp Wirth = Pascal Stroustrup = C++</p> Signup and view all the answers

Kateri od naslednjih dejavnikov ni kriterij za kvaliteto programskega jezika?

<p>Popularnost (D)</p> Signup and view all the answers

Ali je en sam univerzalen programski jezik, ki bi bil primeren za vse naloge, realen cilj pri razvoju programskih jezikov?

<p>False (B)</p> Signup and view all the answers

Na kaj delimo programske jezike glede na namen uporabe?

<p>splošno namenske in domensko specifične</p> Signup and view all the answers

Po zaključku predmeta bo študent sposoben identificirati ______ in prednosti posameznega programskega jezika.

<p>slabosti</p> Signup and view all the answers

Kateri od naštetih jezikov je bil razvit najprej?

<p>Fortran (D)</p> Signup and view all the answers

Samo prisotnost na predavanjih lahko prinese bonus pri končni oceni predmeta.

<p>False (B)</p> Signup and view all the answers

Kateri so pristopi učenja programskega jezika?

<p>pristop s koncepti, semantični pristop, implementacijski pristop, jezik tega tedna</p> Signup and view all the answers

Če je sintaksa dobro zasnovana lahko pripomore k ______ in zanesljivejšim programom.

<p>preglednejšim</p> Signup and view all the answers

Kaj je značilno za imperativne programske jezike?

<p>Uporabljajo stavke ki spreminjajo stanje programa. (D)</p> Signup and view all the answers

Ali je JavaScript interpretiran programski jezik?

<p>True (A)</p> Signup and view all the answers

Kateri pogoj mora doseči študent, da lahko opravi izpit?

<p>zbrati skupaj iz vseh postavk najmanj 50%, polovico predvidenih obveznosti pri izpitu, polovico predvidenih obveznosti pri laboratorijskih vajah</p> Signup and view all the answers

S študijem programskih jezikov spoznamo tudi njihovo ______, kar nam pomaga pri razumevanju programskega jezika.

<p>implementacijo</p> Signup and view all the answers

Kateri od naslednjih programerjev je bil povezan z jezikom Algol?

<p>committee (D)</p> Signup and view all the answers

Je berljivost programa pomemben dejavnik pri kvaliteti programskega jezika?

<p>True (A)</p> Signup and view all the answers

Kaj pomeni, da je programski jezik 'univerzalen'?

<p>omogoča zapis vsake rešljive naloge</p> Signup and view all the answers

Kdo od naštetih je prispeval k razvoju jezika C?

<p>Dennis Ritchie (C)</p> Signup and view all the answers

Če študent zbere 50% vseh točk, je avtomatično opravil izpit.

<p>False (B)</p> Signup and view all the answers

Kakšna mora biti sintaksa programskega jezika?

<p>enostavno razpoznavanje stavkov</p> Signup and view all the answers

Pri programskih jezikih, ki temeljijo na ______ gradimo strukturo in elemente programa, ni opisovanja krmilnega toka.

<p>deklarativnih</p> Signup and view all the answers

Kateri jezik je bil prvi, ki je omogočal reševanje Bernoullijevih enačb?

<p>Prvi program (A)</p> Signup and view all the answers

Ali so domensko specifični jeziki primerni za splošno rabo?

<p>False (B)</p> Signup and view all the answers

Glede na vzorec računanja, kako delimo programske jezike?

<p>proceduralne, objektno usmerjene, funkcijske, logične, paralelne</p> Signup and view all the answers

Ena izmed pomembnih odločitev je ______ programskega jezika.

<p>izbira</p> Signup and view all the answers

Kaj pomeni zapisljivost?

<p>kako enostavno je pisati programe v tem jeziku (D)</p> Signup and view all the answers

Se s študijem programskih jezikov spoznamo tudi z programiranjem?

<p>True (A)</p> Signup and view all the answers

Kateri odbor stoji za jezikom Algol?

<p>committee</p> Signup and view all the answers

Programski jezik mora imeti možnost reševanja naloge na ______ način.

<p>naraven</p> Signup and view all the answers

Glede na nivo in število strojnih inštrukcij, kako delimo programske jezike?

<p>nizke oz. zbirne, visoke in zelo visoke (A)</p> Signup and view all the answers

Glavni namen principov programskih jezikov je učenje sintakse različnih jezikov?

<p>False (B)</p> Signup and view all the answers

Katera leta so zaznamovala razvoj jezika Fortran?

<p>1954-1957</p> Signup and view all the answers

Veliko hitreje se bo naučil novega programskega jezika, če bo poznal ______ principe.

<p>osnovne</p> Signup and view all the answers

Katere vrste polimorfizma so zajete v predmetniku?

<p>različne oblike polimorfizma (B)</p> Signup and view all the answers

Poznavanje delovanja računalnika je pogoj za uspešnega programerja.

<p>True (A)</p> Signup and view all the answers

Za kaj se uporablja programski jezik?

<p>programerjevo osnovno orodje, navodila za izvajanje računskih postopkov, orodje za komunikacijo z računalniki</p> Signup and view all the answers

Če upoštevamo način implementacije programske jezike delimo na ______ in prevedene.

<p>interpretirane</p> Signup and view all the answers

Flashcards

Uvod v programske jezike

Neformalna definicija, delitve in kratka zgodovina programskih jezikov.

Objektno usmerjeno programiranje

Koncepti objektno usmerjenih in objektno usmerjenih jezikov.

Vrednosti in tipi

Delitev tipov, statično in dinamično preverjanje, ekvivalenca in vrste izrazov.

Pomnilnik

Spremenljivke, shranljive vrednosti, življenjska doba in vrste ukazov.

Signup and view all the flashcards

Povezovanje

Povezljive vrednosti, statični in dinamični doseg, deklaracije in bločni ukazi.

Signup and view all the flashcards

Abstrakcije

Vrste abstrakcij, mehanizmi prenosa parametrov in korespondenčni princip.

Signup and view all the flashcards

Ograjevanje

Paketi, abstraktni tipi, objekti v razredih in generični moduli.

Signup and view all the flashcards

Sistemi tipov

Monomorfni in polimorfni sistem tipov, vrste polimorfizma.

Signup and view all the flashcards

Funkcijsko programiranje

Značilnosti funkcijskih jezikov in uvod v Lisp/Haskell.

Signup and view all the flashcards

Sintaksa

Enolično določa obliko programskega jezika.

Signup and view all the flashcards

Semantika

Enolično določa pomen stavkov v programskem jeziku.

Signup and view all the flashcards

Pragmatika

Izvor in razvoj programskega jezika.

Signup and view all the flashcards

Razvrščanje programskih jezikov

Razdelitev jezikov v razrede glede na skupne lastnosti.

Signup and view all the flashcards

Splošno namenski jeziki

Programski jeziki za splošno uporabo.

Signup and view all the flashcards

Domensko specifični jeziki

Programski jeziki, specializirani za določeno domeno.

Signup and view all the flashcards

Jeziki glede na področje uporabe

Jeziki za podatkovne baze, spletno programiranje, AI itd.

Signup and view all the flashcards

Jeziki glede na način opisa problema

Imperativni jeziki spreminjajo stanje, deklarativni gradijo strukturo.

Signup and view all the flashcards

Jeziki glede na zapis programa

Linearni ali tekstovni ter vizualni jeziki.

Signup and view all the flashcards

Jeziki glede na vzorec računanja

Proceduralni, objektno usmerjeni, funkcijski, logični, paralelni itd.

Signup and view all the flashcards

Jeziki glede na nivo

Nizki (zbirni), visoki in zelo visoki jeziki.

Signup and view all the flashcards

Jeziki glede na implementacijo

Interpretirani in prevedeni jeziki.

Signup and view all the flashcards

Berljivost

Kako enostavno je razumeti program ali del programa.

Signup and view all the flashcards

Zapisljivost

Kako enostavno je pisati programe v jeziku.

Signup and view all the flashcards

Zanesljivost

Ali jezik pomaga pri odkrivanju napak.

Signup and view all the flashcards

Strošek

Kakšna je cena za razvoj in vzdrževanje programov.

Signup and view all the flashcards

Study Notes

Uvodno predavanje: Principi programskih jezikov 2024/2025

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

    1. teden uvaja programske jezike.
    1. teden uvaja Kotlin.
    1. teden obravnava Kotlin.
    1. teden se osredotoča na objektno usmerjeno programiranje in Jetpack Compose.
    1. teden posvečen vrednostim in tipom.
    1. teden pokriva pomnilnik, vrednosti in ukaze.
    1. teden obravnava povezovanje.
    1. teden namenjen abstrakciji.
    1. teden se osredotoča na sekvencerje.
    1. teden pokriva sisteme tipov.
    1. teden obravnava enkapsuliranje.
    1. in 13. teden sta posvečena funkcijskemu programiranju.
    1. 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

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

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Related Documents

More Like This

Use Quizgecko on...
Browser
Browser