Upload
kaspars-rinkevics
View
2.644
Download
7
Tags:
Embed Size (px)
DESCRIPTION
Citation preview
Programmēšanas valodas
Datorzinātņu bakalaura programmaLU Fizikas un matemātikas fakultāte
4.kurss
Kārlis Čerāns, Dr. dat.
Programmēšanas valodas – kursa raksturojums
Kursa mērķis:
• Dot priekšstatu par programmēšanas valodu tipiskajām konstrukcijām un to realizāciju dažādās programmēšanas valodās.
• Padziļināti iepazīt dažādus programmēšanas veidus (programmēšanas paradigmas) - imperatīvo, funkcionālo, loģisko, objekt-orientēto, paralēlo, u.taml. un tiem raksturīgos programmu veidošanas līdzekļus
• Apgūt (atkārtot) pamata konstrukcijas konkrētās programmēšanas valodās, spēt tās lietot vienkāršu uzdevumu risināšanā.
Metode: Lekcijas, atbalsta materiāli (t.sk. patstāvīgi apgūstami), pārbaudījumi, iespēja rakstīt referātu
Pārbaudījumi: mājas darbi, kļūdu labojumi, eksāmens
Izpilde uz datora: nepieciešama lielākajai daļai uzdevumu.
Eksāmens: mājas darbu atbildēšana, kļūdu labojumi, teorijas jautājumi
Literatūra: K.Louden, Programming Languages Principles and Practice, 2nd edition, konkrēto valodu dokumentācija, u.c.
Kontaktinformācija
Lektors: Kārlis Čerāns, Dr. dat., asoc. prof.email: [email protected]. 67 213 716LU MII, Raiņa bulv. 29, 421. istaba
Darbu labošana: Elīna Kalniņa, Mg. dat. email: [email protected]. 67 213 716LU MII, Raiņa bulv. 29, 420. istaba
Kursa e-informācija:
MOODLE vidē e-kurss “Programmēšanas valodas”
- kursa administratīvā informācija (prasības, u.c.)
- mājas darbu uzdevumi
- papildmateriāli (lekciju slaidi (.ppt), citi materiāli)
- norādes uz programmēšanas vidēm (atsevišķām valodām)
Papildus resursi, t.sk. studentu referāti:
http://www.ltn.lv/~karlisc/stud.htm
Vērtēšana
6 mājas darbi, no tiem obligāti 3., 4., 5. un divi no 1., 2., 6.
Par katru mājas darbu līdz 20p. Termiņos neiesniegtus darbus, kā arī kļūdu labojumus jāatrāda eksāmenā.
Ja kāds obligāts darbs nav izpildīts vismaz par 50%, tad mīnus 10p, zaudē tiesības uz vienu teorijas jautājumu, u.c. papildus punktiem.
Eksāmens: max 20p (divi teorijas jautājumi).
Papildus uzdevumi, referāti – neobligāti.
Atzīme “9” – 106p, “8” – 93p, “7” – 80p, “6” – 67p, “5” – 54p, “4” – 41p.
Sīkāka informācija – vērtēšanas sadaļā kursa lapā MOODLE vidē.
Plānotais kursa saturs
1. Ievads. Programmēšanas valodas jēdziens. Realizācijas piezīmes. Programmēšanas paradigmas. Vēsturiskā attīstība. Īpašības.
2. Sintakse un semantika.
3. Imperatīvā programmēšana. C++ un C#.
4. Konstrukcijas programmēšanas valodās: Simbolu tabula. Mainīgie. Datu tipi. Vadības struktūras. Apakšprogrammas. Atmiņas organizācija. Izņēmuma situācijas.
5. Funkcionālā programmēšana (ML, SCHEME, HASKELL).
6. Loģiskā programmēšana, PROLOG.
7. Objektorientētā programmēšana. C# un EIFFEL.
8. Paralēlā programmēšana, ADA.
9. Jaunās programmēšanas valodas.
Programmēšanas valodas jēdziens
Programma - datu apstrādes procesa (diskrētā procesa, algoritma) apraksts
Programma: - izpildāmība (uz dažādiem datoriem)- saprotamība (lasīt, rakstīt, modificēt, analizēt, ...)
Programmēšanas valoda - līdzekļu, konstrukciju kopums (sistēma) programmu uzdošanai (diskrēto procesu aprakstam, …)
Programmēšanas valoda – veids, kā cilvēkam “sazināties” ar datoru.
• Nepieciešams nodrošināt programmu izpildāmības un saprotamības prasības.
• Vēsturiskais aspekts: orientācija uz datoru orientācija uz cilvēku.
• Valoda programmu inženierijas procesā: abstrakcija, precizitāte, modularitāte, drošība pret kļūdām, ...
Dažādas programmēšanas valodas – dažādas konstrukciju sistēmas. Vēsturiskās tradīcijas, dažādi uzdevumi, dažādas gaumes, savstarpēja ietekmēšanās
Ne gluži (augsta līmeņa) programmēšanas valodas:
(1) Pseidokods, valoda kā līdzeklis, lai apmainītos ar informāciju par algoritmiem
(2) Reģistru mašīnas – ierobežota lasāmība
Programmēšanas valodas uzdošanaProgrammēšanas valodas apraksts:
(1) Sintakse: Konstrukciju formēšanas un attēlošanas likumi
Lai būtu iespējama izpilde uz datora: noteikti strikti likumi, kā uzdot programmas.
Programmēšanas valoda – formāla valoda (noteikti formēšanas likumi).Bet: programmēšanas valoda nav tikai “vārdu kopa” (kā automātu teorijā).
Nozīme ir arī programmas struktūrai: (1) struktūra ir svarīga lietotājam, (2) pirms izpildes uz datora programmā tiek identificēti strukturālie bloki.
(2) Semantika: Asociācija: valodas konstrukcijas <-> datu apstrādes procesi
Kāds diskrētais process, vai kādas šī procesa īpašības tiek saistītas ar katru konkrētu dotajā valodā uzrakstītu programmu?
Diskrētais process – “soļu virkne”, dažādi līdzekļi lai aprakstītu: (1) statisko izpildes laika struktūru un (2) tās dinamiku programmas izpildes laikā.
(3) Pragmatika: Kā valodas konstrukcijas izmantot uzdevumu risināšanā?
Piedāvātās bibliotēkas – nosaka konkrētu programmu veidošanas iespējas valodā.
(4) Izstrādes vide: atbalsta programmu izstrādes procesu (būtiski to nosaka)
Programmēšanas valodas šajā kursā
Programmēšanas valoda: vairs ne tikai programmu uzdošanas sistēma, bet daļa no programmatūras izstrādes vides, kas veicina un nosaka konkrētu programmatūras izstrādes metodoloģiju.
Izstrādes vide: - iespēja rakstīt, izpildīt programmas noteiktā valodā (vai arī var būt viena izstrādes vide, kas piedāvā iespēju strādāt ar dažādām valodām); - līdzekļi programmu failu manipulācijai, izmaiņu fiksēšanai un versiju pārvaldībai, - skaņošanas, testēšanas un analīzes līdzekļi.
Programmu izstrādes līdzekļi – būtiska programminženierijas priekšmeta komponente.
Šajā kursā: aplūkosim programmēšanas valodu “valodniecisko”, konstrukciju aspektu.
Pamatā aplūkosim: semantika (konstrukciju nozīme), pragmatika (kā konstrukcijas lietot).
Sintakse – cik nepieciešams (uzdošanas principi, konkrētā sintakse konkrētām valodām).
Izstrādes vide – līdzeklis mājas darbu izpildei
Vienkārša reģistru mašīna
programmēšanas valodu pirmssākumiprogrammēt, kā “saprot” dators
Programmēšanas valodas. Ievads.
Von Neumann mašīna: programmēšana kodos
1936. Tjūringa mašīnas (teorētisks modelis):
galīgs automāts: galīga vadības struktūra + bezgalīga lenta.Čerča tēze: ar TM var visu, ko vispār var algoritmiski.Universālā TM: dati un programma uz tās pašas lentas.
1948. Von-Neumann mašīna, praktiski uzbūvēta.
Atmiņa sadalīta šūnās. Katrā šūnā: komanda vai datu vērtība.
Komandas izpildās noteiktā secībā.
Komanda var mainīt datu šūnas saturu (un arī programmas “tekstu”).
Datori šodien: pēc tā paša principa!
Imperatīvā programmēšana:
Atmiņas šūnām piešķirti simboliski vārdi, atmiņas šūnas apvienotas struktūrās,
komandu izpildes princips nav mainījies (komandu secība - virkne, iespēja mainīt datu šūnas saturu).
von Neumann mašīnas arhitektūra
Vadības bloka reģistrā V - 10 biti, kārtējās komandas numurs (adrese)
Aritmētiskā bloka reģistrā A - 20 biti
Uz lentas (atmiņā) - 1024 šūnas, katra pa 20 bitiem
Šūna, kas kodē komandu: 10 biti instrukcijai + 10 biti adresei
Instrukcijas kods: “000000” + 4 bitu kods
Datu ievads: šūnu vērtību uzstādīšana sākumā
Datu izvads: šūnu vērtību nolasīšana beigās
Komandas: LOAD, SAVE, ADD, SUB, u.c.
Komanda MODIFY ciklu organizēšanai (saglabā šūnā adreses informāciju)
von Neumann mašīnas komandas
LOAD i 0001 A:=M[i] (M[i] - i-tā atmiņas šūna, i = 0..1023)
SAVE i 0010 M[i]:=A
ADD i 0011 A:=A+M[i]
SUB i 0100 A:=A-M[i]
SIGN 0101 A:=-A
ABS 0110 A:=|A|
JUMP i 0111 V:=i Vadības pārvietošana uz i-to komandu
COND i 1000 if A>=0 then V=i
MODIFY i 1001 M[i] pēdējiem 10 bitiem piešķir aritmētiskā reģistra A pēdējos 10 bitus (adreses informāciju)
STOP 1111 apstāties
CONST i (i binārais pieraksts) mnemonisks apzīmējums
datu vērtībai
von Neumann mašīnas programmas piemērs
0 load 801 ielādē 801. šūnas saturu
1 save 901 saglabā 901. šūnā. 901. šūnā glabā līdz katram brīdim atrasto lielāko skaitli
2 load 802 ielādē nākošās kārtējās šūnas saturu (vērtību maina programmas darba gaitā).
3 sub 901 atņem no ielasītā kārtējā skaitļa līdz šim atrasto lielāko skaitli
4 cond 6 Ja kārtējais ielasītais skaitlis ir bijis lielāks par līdz šim atrasto, pāriet uz 6.
5 jump 8 pāriet uz 8. komandu (ja 6. un 7. komandas nav jāizpilda).
6 add 901 pieskaita atpakaļ atņemto
7 save 901 saglabā jauno ielasīto skaitli
8 load 17 ielādē 17. šūnas saturu
9 add 18 pieskaita soli
10 save 17 jauno numuru saglabā atpakaļ
Uzdevums: No 801.-900. šūnās esošajām vērtībām lielāko ierakstīt 901. šūnā.
11 sub 19 atņemam 19. šūnas saturu - apskatāmo šūnu numuru cikla beigu vērtību
12 cond 16 Ja rezultāts ir lielāks vai vienāds par 0, 17. šūnas skaitlis ir lielāks vai vienāds par 19. šūnā ierakstīto; programma ir beigusi apskatīt visas paredzētās šūnas
13 load 17 atjauno reģistrā A kārtējās aplūkojamās šūnas numuru
14 modify 2 izmaina 2. komandas adresi atbilstoši reģistrā A esošajai vērtībai.
15 jump 2 uz nākamās šūnas apstrādi
16 stop programma ir izpildīta
17 const 802 kārtējās ielasāmās šūnas numurs (802, 803, …, 900, 901)
18 const 1 solis par kādu 1 cikla apgriezienā jāpalielina šūnas numurs
19 const 901 cikla indeksa beigu vērtība
Von Neumann mašīna: vingrinājums
Vingrinājums: cikla pa datu šūnām organizācija von Neumann
mašīnās
Uzrakstīt programmu von Neumann mašīnai, kas ieraksta mašīnas
73. šūnā summu no tiem skaitļiem, kas programmas darba
sākumā ierakstīti uz lentas no 401. līdz 700. šūnai (galu šūnas
ieskaitot), un kas pēc absolūtās vērtības nepārsniedz 100.
Ņemt vērā, ka programma darbu sāk no šūnas ar numuru 0, tajā ir
jābūt izpildāmai komandai.
Nav iesniedzams mājas darbs.
Jēdzieni (konstrukcijas) programmēšanas valodās
Programmēšanas valodas. Ievads.
Jēdzienu sistēmas
Jēdzienu (abstrakciju) sistēmas – izcelt būtiskās detaļas,
atstāt otrā plānā pakārtotās.
Lai būtu ērti lietot.
Abstrakcijas – plaši izmantotas dabaszinātnēs (materiāls
punkts, ideāla gāze, utt.)
Programmēšanas valodās:
programmu aprakstam būtiskie jēdzieni
otrā plānā: 0 un 1 manipulācija
otrā plānā: reģistru mašīnas priekšstats
Dažādas valodas – dažādas jēdzienu sistēmas.
Tomēr virkne kopēju iezīmju ..
Jēdzieni programmēšanas valodās
Jēdzienu (abstrakciju) veidi:
(1) Datu jēdzieni:informācija par datu vērtībām, datu tipiem, u.tml. (statiskā programmas stāvokļa un komunikācijas ar ārējo vidi aprakstam)
(2) Vadības plūsmas jēdzieni:instrukciju izpildes secība programmā, u.tml. (programmas izpildes dinamikas aprakstam)
Jēdzienu (abstrakciju) līmeņi (nosacīts iedalījums):
- pamata jēdzieni: pamata konstrukcijas,
- struktūras jēdzieni: programmas struktūra,
- moduļu jēdzieni: moduļu organizācija.
Datu abstrakcijas programmēšanas valodās
Pamata līmenis: mainīgā un datu tipa jēdziens
Abstrahējamies no konkrētā datu vērtību attēlojošā datora atmiņas apgabala satura.
Operācijas ar datu vērtībām (piemēram, saskaitīšana, reizināšana, u.c.) pieejamas abstraktās izpratnes terminos.
Katram mainīgajam tiek dots vārds. Mainīgajam ir datu tips, kas var tikt saistīts ar noteiktu matemātisku kopu (ir vēl klāt apjoma ierobežojumi).
Struktūras līmenis: datu struktūras
Ieraksti (vienāda vai dažāda tipa lauki grupēti kopā), masīvi.
Lietotāja definēto tipu deklarācija: strukturētie tipi:
typedef int Intarray[10];
Moduļa līmenis: datu enkapsulācija, informācijas paslēpšana, abstraktie datu tipi.
Klase: var tikt klasificēta gan kā struktūras, gan moduļa līmeņa abstrakcija.
Atkārtotas lietojamības (reuse) aspekts, komponenšu un konteineru bibliotēkas, saskarnes (interfeisa) standarti, t.sk. neatkarīgi no konkrētām valodām.
Vadības plūsmas abstrakcijasPamata līmenis: piešķiršanas operators, pieejams daudzās programmēšanas
valodās.
GOTO operators (reģistru mašīnas JUMP operācijas abstrakcija). Mūsdienās GOTO tiek uzskatīta par pārāk zema līmeņa abstrakciju – GOTO neņem vērā programmas struktūru.
Struktūras līmenis (1): zarošanās un cikla operatori.
Zarošanās: If, case (PASCAL), switch (C).
Cikli: while, for, do (C), repeat (PASCAL), loop (ADA)
Būtiski: zarošanās un cikla operatori var tikt iekļauti viens otra iekšienē.
Struktūras līmenis (2): apakšprogrammas, apakšprocedūras, funkcijas
Procedūra vai funkcija tiek deklarēta (aprakstīta) atsevišķi, tā var tikt izsaukta (aktivēta) no citas vietas programmas tekstā.
Procedūrai vai funkcijai ir argumenti – formālie parametri. Izsaukuma (aktivācijas) laikā tiek norādīti faktiskie parametri, kas stājas šo formālo parametru vietā.
Dažādi parametru nodošanas mehānismi apakšprogrammām dažādās programmēšanas valodās.
Funkcijas: procedūras paveids vai īpašs strukturizācijas līdzeklis (funkcionālajās programmēšanas valodās).
Citi līmeņi: paralēlā programmēšana.
Kā tas var darboties?
Ieskats realizācijā.
Programmēšanas valodas. Ievads.
Datora uzbūves shēma (vienkāršota)
Fetch - decode - execute cikls:1. Ielādē nākamo instrukciju2. Nosaka (atkodē) instrukcijas tipu3. Atrod un ielādē vajadzīgajos reģistros
instrukcijas izmantotos datus4. Izpilda instrukciju
CPUGalven
ā atmiņa
Ārējā atmiņa
I / O iekārtas
Komunikācijas šina
Reģistri
Aritmētikas un
loģikas bloks
Vadības
bloks
- t.sk. instrukcijas reģistrs- t.sk. programmas skaitītājs
Programmas izpilde uz datora: kādi līdzekļi pieejami (kāds ir dators)?
Abstrakciju (jēdzienu sistēmu) hierarhija datorā
Varam skatīties uz datoru dažādos veidos. “Skatījumu” hierarhija, augstāks līmenis izmanto operācijas, kas realizētas zemākā līmenī.
(a) Dators kā lietotāja tekstu un tabulu apstrādes līdzeklis, uz datora iespējams izpildīt lietojamas programmas (Word, Excel, u.c.)
(b) Dators kā vide programmēšanai (valodā C++, PASCAL, PROLOG, u.c.)
(c) Dators kā bināras simbolu virknes apstrādājoša iekārta (viss sastāv no 0 un 1, baits – 8 biti, Kbaits – 1024 baiti, u.tml.)
(d) Dators kā fizikāli realizētu mikroshēmu sistēma, sastāv no diodēm, tranzistoriem, u.c. elementiem.
Starp (b) un (c) vēl (nosacīti) 3 līmeņi:
(b1) asemblera valoda (instrukcijas darbam ar reģistriem, atmiņas šūnām)
(b2) operētājsistēmas kodols (vada uzdevumu plūsmu datorā)
(b3) mikroprogrammas (procesora instrukciju realizācija loģisko operāciju līmenī).
Augstāks līmenis realizēts uz zemāka līmeņa primitīvu bāzes.
Programmēšanas valodu realizācija (klasika)
Interpretācija:
Kompilācija:
Programmas teksts
KOMPILATORS:Leksiskā analīze
Sintaktiskā analīzeStarpkoda ģenerēšana
OptimizācijaKoda ģenerēšana
Ielādesmodulis
Izpildāms kods
Ieejas dati
Rezultāts
Saišu veidotājs Izpildāmskods
Citi moduļi,sistēmas bibliotēkas
INTERPRETATORSIeejas dati
Programmas tekstsRezultāts
Kompilēti moduļi, bibliotēkas
PV realizācija, turpināts
Hibrīdāimplementācija:
Hibrīdāimplementācijaar JIT
kompilāciju:
Ieejas dati
Preprocesors:Leksiskā analīze
Sintaktiskā analīzeStarpkoda ģenerēšana
Programmas teksts
Starpkods
RezultātsInterpretators
(virtuālā mašīna)
Citi moduļi (kods), sistēmas bibliotēkas
Ieejas dati
Preprocesors:Leksiskā analīze
Sintaktiskā analīzeStarpkoda ģenerēšana
Programmas teksts
Starpkods
Rezultāts
Virtuālā mašīnaCiti moduļi (kods),
sistēmas bibliotēkasJIT Kompilators
Kods (fragments)
Kods (fragments)
Programmēšanas valodu realizācija: piezīmes
Realizācijai svarīga programmu struktūra: lai programmu varētu “izpildīt” ir “jāatšifrē” tās struktūra.
Viena valoda - dažādas realizācijas (interpretatori, kompilatori, u.c.).Kompilators – ātrāks kods.Interpretators – vieglāki servisi izstrādes laikā.Dažādi optimizācijas līmeņi kompilatoros.
Valodas definīcija – vēlams, no realizācijas neatkarīga
Standarti: sintakse un semantika.
Teorētiski var būt iespējams pierādīt kompilatora atbilstību valodas
definīcijai (ja valodas definīcija ir dota formāli).
Programmēšanas paradigmas
Programmēšanas valodas. Ievads.
Paradigmas (1) – Imperatīvā programmēšana
Imperatīvā programmēšana (PASCAL, BASIC, C, FORTRAN, PL/I, u.c.):
• vēsturiski pirmais programmēšanas veids, imitē datorā pieejamās operācijas,
• atbilst datora arhitektoniskajai organizācijai: viens centrālais procesors pēc kārtas izpilda instrukcijas ar datiem, kas glabājas atmiņā (sk. von Neumann mašīna)
• programmas modelis: apgabals datora atmiņā datu glabāšanaivārdi mainīgajiem (datu apgabala komponentēm)piešķiršana: darba gaitā maina “vērtību” mainīgajam
• vadības plūsma: if-then-else, while, go to, ...
• ievada / izvada operācijas kopējā operāciju secībā
• apakšprogrammas, parametri
Strikta secība instrukciju izpildei ierobežo iespējas norādīt, ka kādas darbības būtu veicamas paralēli (vienlaicīgi attiecībā uz vairākām datu komponentēm), vai arī kādu darbību izpildei secība nav svarīga.
Iespēja mainīt “mainīgā” vērtību neļauj izmantot intuīciju par mainīgo, kas nāk no matemātikas, kur mainīgais apzīmē patvaļīgu, bet vienu un fiksētu vērtību.
Paradigmas (2) – Funkcionālā programmēšana
Funkcionālā programmēšana (ML, LISP, SCHEME, HASKELL, MIRANDA, u.c.):
• programma ir funkcija, izeja = f ( ieeja );
• programmas izpilde – funkcijas pielietošana vērtībai;
funkcionālas valodas – aplikatīvas valodas (angl. application)
• funkcijas izsaukums: parametru nodošana funkcijai, funkcijas vērtības
aprēķināšana, rezultāta iegūšana no funkcijas
• funkciju kompozīcija – pamata strukturizācijas mehānisms
• mainīgie (kā matemātikā), konstantes, operācijas
• zarošanās iespējas funkcijas izpildē, rekursija
fun fac n = if n = 0 then 1 else n * fac (n-1)
• augstākas kārtas funkcijas (funkcija, kuras arguments arī ir funkcija),
funkcijas kā “pirmās šķiras objekti” programmēšanas valodā.
• “blakus efekti” funkcijām (piemēram ievads / izvads)
Funkcionālā programmēšana (tīrā veidā): nav piešķiršanas operatora, nav ciklu,
utt.
Pastāv iespējas programmēt funkcionālā stilā arī atsevišķās imperatīvās
programmēšanas valodās.
Paradigmas (3) – Loģiskā programēšanaLoģiskā programmēšana (PROLOG, arī CLP, OBJ3, u.c.):
Programma – zināšanu bāze, apgalvojumi par to, kas ir zināms par iegūstamo rezultātu (par problēmu apgabalu, kas ietver sevī ziņas par šo rezultātu).
tēvs(jānis, māris) “Jānis ir tēvs Mārim” tēvs(māris, juris) vectēvs(A,B) :- tēvs(A,C), tēvs(C,B) “A ir vectēvs B, ja A ir tēvs C un C ir tēvs B”?- vectēvs(jānis,X) “Kam Jānis ir vectēvs?” ?- vectēvs(X,juris) “Kas ir vectēvs Jurim?”
PROLOG programma - zināšanu bāze (p1, p2, …, pn) un mērķa predikāts q
Programmas uzdevums: atrast X vērtību (vērtības), ar kurām q(X) ir patiess
Iespējama vienas programmas izpilde “dažādos virzienos”
Programmas izpilde: loģisko seku meklēšana no zināšanām dotajā bāzē, plus iespējas organizēt / ierobežot meklēšanas procesu, konstrukcijas, kas izskaidrojamas tikai meklēšanas stratēģijas terminos;
PROLOG interpretatora pamata mehānismi: termu salīdzināšana / unifikācija, rezolūciju metode (efektīva Horna klauzulu gadījumā)
Izmantota mākslīgā intelekta (AI) aplikācijās un prototipēšanā, kopumā tomēr ierobežoti lietojumi
Paradigmas(4) - Objektorientētā programmēšana
Objektorientētā programmēšana (C++, JAVA, C#, Eiffel, Smalltalk,
u.c.):
- Mūsdienās viena no visnozīmīgākajām, plašāk lietotajām
programmēšanas paradigmām
- Objekta jēdziens: datu (atmiņas šūnu) kopums strukturizēts kopā ar
operācijām, kas var mainīt vērtības šajās šūnās
- Klases jēdziens: objekti ar vienāda veida īpašībām tiek grupēti klasēs;
īpašības: atribūti, metodes
- Objekts – klases instance, iespēja dinamiski radīt objektu programmas
izpildes gaitā
- Klašu hierarhija: Mantošana, virtuālās funkcijas, u.c.; veicina
programmatūras koda atkārtotas izmantošanas iespēju
- Papildina iepriekš aplūkotās paradigmas
Paradigmas (5) – Paralēlā programmēšana
Paralēlā programmēšana (valodas: ADA, JAVA, Concurrent ML u.c.; principi: CCS, CSP, LOTOS)
• process – atsevišķa programmas (sistēmas) komponente ar savu vadības (darbību izpildes, aktivitāšu, u.taml.) plūsmu
• paralēla programma – programma, kurā vienlaicīgi (paralēli) darbojas vairāki procesi (pavedieni):
– vienā programmā vairāki procesi
– procesu (programmas daļu) paralēla izpilde
• informācijas apmaiņa (kopējs atmiņas apgabals / kopēji mainīgie, sinhronizācija, ziņojumu apmaiņa)
• fiziskais un / vai loģiskais paralēlisms
• ADA: Task-i, JAVA: pavedieni (threads)
Programmēšanas paradigmas – turpinājums
Vizuālā programmēšana (Visual BASIC, Visual C++, Visual C#, JavaBeans u.c.):
• vizuālie objekti un to klases
• lietotāja saskarne un datu ievads caur formām un vizuālām kontrolēm
• procedūru izpilde, reaģējot uz notikumiem
• saistītas ar konkrētām programmatūras izstrādes vidēm
• var tikt aplūkotas sīkāk lietotāja saskarnes vai programmbūves kursā
Skriptu programmēšana (Perl, Ruby, JavaScript, Tcl, PHP, u.c.):
• iekļauj programmās utilītas, bibliotēkas, operāciju sistēmas komandas
• plaši lietotas tīmekļa aplikācijās
Marķējuma valodas (HTML, XML, SGML, u.c.)
• plaši lietotas tīmekļa lappušu nodrošināšanā
• pieaugoši citi lietojumi
• varētu būt speciāls šāds kurss par šīm valodām tīmekļa lapu veidošanas un tīmekļa programmēšanas kontekstā