Programmeerimiskeeled

MTAT.03.006, 4AP, 60L, xi. Ain Isotamm. 1. Programmeerimiskeelte klassifikatsioon (masinkood, assembler, makroassembler, protseduurorienteeritud (imperatiivsed) keeled, probleemorienteeritud keeled). 2. Mänguarvuti masinkood. 3. Õppearvutid: kolme- ühe- ja kaheaadressiline arvuti. Massiiv ja tsükkel, indekseerimine, baseerimine. 4. Andmete kujutamine arvutis. Alamprogrammid: mõiste, alamprogrammide süsteem, komplekteerimine ja paigaldamine, juhtimise üleandmine, moodulprogrammeerimine. 5. Assembler. Keel ja translaator. 6. Makrokeel. Makrovahendid, makroassemblerkeel. 7. Protseduurorienteeritud keeled. "Ajalooline" ülevaade; keelte põlvnemine. 8. Protseduurorienteeritud keelte erinevad klassifikatsioonid. 9. Translaator. Kompileeritavad ja interpreteeritavad keeled. 10. Virtuaalarvutid. Seostamine ja seostamisaeg. 11. Näiteprogrammid (Fortran, Algol-60, Snobol 4, APL, Lisp, PL\I, COBOL, BASIC, Ada, Modula-2, Forth.) 12. Andmed. Süsteemi ja programmeerija määratud andmed. Elementaarandmed ja struktuurid. Deklaratsioonid, deskriptorid. 13. Operatsioonid: süsteemi ja programmeerija määratavad. Elementaaroperatsioonid, andmestruktuuride loomine, modifitseerimine ja hävitamine. Operatsioonid programmidega. 14. Tegevuste järjekorra juhtimine. Juhtimisstruktuurid. Ilmutatud ja varjatud struktuurid. Avaldised (prefiks- postfiks- ja infikskuju), operaatorid (paralleelsed protsessid, märgendid ja suunamine, goto-diskussioon), tingimused ja valik, tsükkel, alamprogrammid, katkestused, kaasprogrammid (i.k. coroutins), ülesanne (i.k. task), planeeritavad alamprogrammid. Andmestruktuuride, operaatorite ja tegevuste järjekorra seosed. Skännerid ja generaatorid. 15. Andmete juhtimine. Põhimõisted. Nimed ja identifikaatorid Elementaaroperatsioonid: nimetamine, "lahtinimetamine", aktiveerimine, desaktiveerimine, viida töötlemine. Viitade keskkond. Lokaalsed, globaalsed ja mittelokaalsed viidad. Lihtsad parameetriteta alamprog- rammid: lokaalne keskkond ja mittelokaalne keskkond. Rekursiivsed parameetriteta alamprogrammid. Viitade keskkonnad kaasprogrammides, katkestusprogrammides, ülesannetes ja planeeritavates alamprogrammides. Parameetritega alamprogrammid: formaalsed ja tegelikud parameetrid, parameetrite edastamine väärtuse järgi, viida või nime abil. Tegelike parameetrite tüübid: lihtmuutujad, konstandid, avaldised, fikseeritud indeksitega muutujad, andmestruktuurid, alamprogrammid. Alamprogrammi resultaatide tagastamine (funktsioonid, muudetavad para- meetrid, kõrvalefektid). 16. Mälu juhtimine. Mälujaotuse ja keele vastastikused möjud. Täitmisaegne mäluvajadus. Programmeerija võimalused ja juhitamatu mälujaotus (translaatori töö). Mälujaotuse faasid. Staatiline mälujaotus. Magasinmälu. Kuhi (fikseeritud ja muutuva pikkusega elemendid). Praht ja rippuvad viidad. 17. Operatsioonikeskkond. Andmefailid ja programmifailid. Kompilaator, komplek- teerija ja paigaldaja. Pakett-töötlus. Interaktiivne keskkond. 20. Süntaks ja transleerimine. Nõuded süntaksile: loetavus, kirjutamise lihtsus, transleerimise lihtsus, kahemõttelisuse puudumine. Süntaksi elemendid: tähestik, identifikaatorid, operatsioonimärgid, võtme- ja reservsõnad, kommentaarid ja müra, tühikud, eraldajad ja sulud, avaldised, operaatorid, alamprogrammid. Transleerimisetapid: analüüs (leksika-, süntaksi ja semantika analüüs) ja süntees. Optimiseerimine. Formaalne süntaks (BNF ja CBL). Süntaksorienteeritud translaatorid. 21. Fortran (lühiülevaade, näide, andmed, operaatorid, tegevuste järjekord, andmete juhtimine, operatsioonikeskkond, süntaks ja transleerimine, täitmisaegne mälukasutus). 22. Algol-60 (lühiülevaade, näide, andmed, operaatorid, tegevuste järjekord, andmete juhtimine, operatsioonikeskkond, süntaks ja transleerimine, täitmisaegne mälukasutus).

Kirjandus

Ain Isotamm, Programmeerimiskeeled, Tartu 2007 Terrence W. Pratt, Programming Languages, Design and Implementation, University of Texas at Austin, 1975 (venekeelne tõlge T. Pratt, Jazyki programmirovanija: razrabotka i realizatsija, M. 1979) L. B. Wilson, R. G. Clark, Comparative Programming Languages, 1988