32
Programmēšanas valodas Datorzinātņu bakalaura programma LU Fizikas un matemātikas fakultāte 4.kurss Kārlis Čerāns, Dr. dat.

pr val 1

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: pr val 1

Programmēšanas valodas

Datorzinātņu bakalaura programmaLU Fizikas un matemātikas fakultāte

4.kurss

Kārlis Čerāns, Dr. dat.

Page 2: pr val 1

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.

Page 3: pr val 1

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

Page 4: pr val 1

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ē.

Page 5: pr val 1

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.

Page 6: pr val 1

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

Page 7: pr val 1

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)

Page 8: pr val 1

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

Page 9: pr val 1

Vienkārša reģistru mašīna

programmēšanas valodu pirmssākumiprogrammēt, kā “saprot” dators

Programmēšanas valodas. Ievads.

Page 10: pr val 1

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).

Page 11: pr val 1

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)

Page 12: pr val 1

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

Page 13: pr val 1

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

Page 14: pr val 1

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.

Page 15: pr val 1

Jēdzieni (konstrukcijas) programmēšanas valodās

Programmēšanas valodas. Ievads.

Page 16: pr val 1

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 ..

Page 17: pr val 1

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.

Page 18: pr val 1

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.

Page 19: pr val 1

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.

Page 20: pr val 1

Kā tas var darboties?

Ieskats realizācijā.

Programmēšanas valodas. Ievads.

Page 21: pr val 1

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)?

Page 22: pr val 1

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.

Page 23: pr val 1

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

Page 24: pr val 1

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)

Page 25: pr val 1

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).

Page 26: pr val 1

Programmēšanas paradigmas

Programmēšanas valodas. Ievads.

Page 27: pr val 1

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.

Page 28: pr val 1

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.

Page 29: pr val 1

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

Page 30: pr val 1

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

Page 31: pr val 1

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)

Page 32: pr val 1

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ā