Presentation is loading. Please wait.

Presentation is loading. Please wait.

Programmēšanas valodu klasifikācija un lietojumsfēra

Similar presentations


Presentation on theme: "Programmēšanas valodu klasifikācija un lietojumsfēra"— Presentation transcript:

1 Programmēšanas valodu klasifikācija un lietojumsfēra
Programmēšanas valodas Lekt. M. Lukjanska

2 Kāpēc tik daudz programmēšanas valodu un to versiju?
Programmēšanas valodu klasifikācija un lietojumsfēra Kopsavilkums Atkārtojums Kas ir programmēšanas valoda? Semantikas uzdošana Kāpēc tik daudz programmēšanas valodu un to versiju? Raksturīgās īpašības Klasifikācija Populārakā programmēšanas valoda šobrīd Programmēšanas valodu nākotne? Nakošajā semestrī... Programmēšanas valodas

3 Programmēšanas valoda - definīcija
Programmēšanas valodu klasifikācija un lietojumsfēra Programmēšanas valoda - definīcija Formālā valoda - kalpo datora programmu aprakstam Formālā valoda ir simbolu secību kopa, ko apraksta ar precīzi formulētu sintakses likumu kopu…) Zīmju sistēma - nodrošina lietotāja saskarsmi ar datoru dažādu problēmu risināšanā Simbolu secība kādam alfabētam, kas apmierina sintakses likumus un uzdod izskaitļojumu secību ar semantikas likumiem Algoritmiska valoda uzdevumu risināšanas procesu formalizētam pierakstam programmu veidā No: J. Bule, RTK kursa “Programmēšanas valodas" lekciju materiāli, RTK, 2010. Programmēšanas valodas

4 Programmēšanas valoda
Programmēšanas valodu klasifikācija un lietojumsfēra Semantikas uzdošana Programmēšanas valoda Darbību apraksta līdzekļi Datu apraksta līdzekļi Darbību apraksta pamatlīdzekļi Datu apraksta pamatlīdzekļi Papildus iespējas Datu abstraktie tipi Programmēšanas valodas

5 Nepieciešamība izlabot kļūdas
Programmēšanas valodu klasifikācija un lietojumsfēra Kāpēc tik daudz programmēšanas valodu un to versiju? Vēlme uzlabot valodu Nepieciešamība izlabot kļūdas Vēlme pielāgot valodu noteikta uzdevuma tipa risināšanai Nespēja realizēt valodu pilnībā noteikta tipa datoram Programmēšanas valodas

6 Programmēšanas valodu izstrāde
Programmēšanas valodu klasifikācija un lietojumsfēra Programmēšanas valodu izstrāde Pamata prasības – (1) iespēja (efektīvi) izpildīt uz datora un (2) lasāmība cilvēkam ir savā starpā konfliktējošas. Mūsdienu programmēšanas valodu izstrāde akcentē lasāmību cilvēkam, piemērotu (ērtu) abstrakciju sistēmu, veidus, kā pārvaldīt sarežģītību. Laba vai ne tik laba valoda: to nosaka ne tikai valoda pati. Ļoti dažādi faktori: C : ieguva popularitāti UNIX sistēmas dēļ COBOL : tiek uzturēts tādēļ, ka tajā uzrakstīts daudz koda ADA : ieguva ietekmi caur ASV Aizsardzības Departamentu JAVA : ieguva popularitāti Internet straujās izplatības iespaidā. Dažādām PV: dažādas pašu valodu īpašības, kas nosaka (noteica) to popularitāti: FORTRAN: efektivitāte COBOL: programmu teksti angļu valodai līdzīgā valodā ALGOL: valoda ar bloku struktūru PASCAL: vienkārša valoda C++: lielāka abstrakcijas iespēja, saglabājot C efektivitāti un savietojamību ar C. No: [3] Programmēšanas valodas

7 Efektivitāte Jauda Līmenis Drošums Lasāmība Pilnība Elastīgums
Programmēšanas valodu klasifikācija un lietojumsfēra Raksturīgās īpašības Efektivitāte Jauda Līmenis Drošums Lasāmība Pilnība Elastīgums Vienkāršums Pārnesamība Programmēšanas valodas

8 Piesaiste datora struktūrai
Programmēšanas valodu klasifikācija un lietojumsfēra Klasifikācija Piesaiste datora struktūrai Lietojumsfēra vai programmēšanas paradigmas Programmēšanas valodas

9 Programmēšanas valodas
Klasifikācija Atkarībā no piesaistes datora struktūrai Programmēšanas valodas Mašīnneatkarīgas valodas Mašīnatkarīgas valodas Augsta līmeņa valodas Zema līmeņa valodas Mašīnkodi Asambleri Fundamentālās valodas Strukturētās valodas Specializētās valodas Fortran, Cobol Algol, Basic PL/1, Ada Pascal, C APL, Forth Lisp, Snobol Programmēšanas valodas

10 Atkarībā no piesaistes datora struktūrai
Mašīnatkarīgas valodas Mašīnatkarīga valoda ir programmēšanas valoda, kas atkarīga no konkrēta datora īpatnībām Mašīnvaloda (Mašīnkods) programmēšanas valoda, kuras komandas tieši sakrīt ar datora izpildāmajām operācijām Asamblervaloda programmēšanas valoda, kuras komandu struktūru nosaka mašīnvalodas komandu un datu formāti, kā arī datora arhitektūra Programmēšanas valodas 10

11 Mašīnatkarīgas valodas
Atkarībā no piesaistes datora struktūrai Mašīnatkarīgas valodas Mašīnvalodas (Mašīnkoda) piemērs Operāciju specificēšana: Saskaitīt reģistrus 1 un 2 un ierkstīt rezultātu reģistrā 6: Asemblervalodas piemērs Programmēšanas valodas

12 Programmēšanas valodas
Klasifikācija Atkarībā no piesaistes datora struktūrai Programmēšanas valodas Mašīnneatkarīgas valodas Mašīnatkarīgas valodas Augsta līmeņa valodas Zema līmeņa valodas Mašīnkodi Asambleri Fundamentālās valodas Strukturētās valodas Specializētās valodas Fortran, Cobol Algol, Basic PL/1, Ada Pascal, C APL, Forth Lisp, Snobol Programmēšanas valodas

13 Atkarībā no piesaistes datora struktūrai
Mašīnneatkarīgas valodas Mašīnneatkarīga valoda ir programmēšanas valoda, kuras struktūra un izmantojamie līdzekļi nav saistīti ar vienu konkrētu datoru Augsta līmeņa valoda ir datorneatkarīga programmēšanas valoda, kas ir tuva dabīgai valodai Fundamentālās valodas lielas programmu bibliotēkas, plašs pielietojums Strukturētās valodas strukturētās loģiskas konstrukcijas, stingras procedurālās un datu struktūru prasības Specializētās valodas neparastas sintakses formas, ierobežots pielietojums Programmēšanas valodas 13

14 Java Visual Basic Pascal ADA Izvadā: Hello world!
Atkarībā no piesaistes datora struktūrai Mašīnneatkarīgas valodas Dažādas sintakses, vienāda semantika: Java Visual Basic Pascal ADA Izvadā: Hello world! Programmēšanas valodas

15 Piesaiste datora struktūrai
Programmēšanas valodu klasifikācija un lietojumsfēra Klasifikācija Piesaiste datora struktūrai Lietojumsfēra vai programmēšanas paradigmas Programmēšanas valodas

16 Programmēšanas valodas
Klasifikācija Atkarībā no lietojumsfēras Programmēšanas valodas Problēmorientētās Universālās* Zinātniskie un inženiertehniskie aprēķini Teksta informācijas apstrāde Ekonomiskie aprēķini Iesācējiem un datorizētās apmācības sistēmas *ALGOL, *FORTRAN, *PL/1, *PASCAL, *MODULA, *C, C++ *SNOBOL, C, C++, PASCAL, Modula *COBOL, FACT, GECOM, BASIC, PILOT, RĪGA, KONTAKT, COMAL, LOGO, RAPIRA Programmēšanas valodas

17 dBase, FoxBase, FoxPro, PAL, ACCESS, ORACLE,
Klasifikācija Atkarībā no lietojumsfēras (turpinājums) Problēmorientētās Darbs ar DBVS Modelēšana Specifikācijas valoda Mākslīgā intelekta uzdevumi dBase, FoxBase, FoxPro, PAL, ACCESS, ORACLE, MySQL SIMULA, CSL, GPSS, SIMKOM, SIMPAK, BOSS ESTELLE, LOTOS, Clear, GRAPE/Plus PROLOG, POP-2, LISP, PLANER Programmēšanas valodas 17

18 C++, PASCAL, Simula, Quest, Objective C
Klasifikācija Atkarībā no lietojumsfēras (turpinājums) Problēmorientētās Objekt-orientētās C++, PASCAL, Simula, Quest, Objective C Sistēmprog-rammēšana Reālā laika sistēmas PL/1, PL/M, C, C++, FORTH, CPL, BCPL, Modula, ADA CHILL, PL/M, ADA, C, C++ Programmēšanas valodas

19 Piesaiste datora struktūrai
Programmēšanas valodu klasifikācija un lietojumsfēra Klasifikācija Piesaiste datora struktūrai Lietojumsfēra vai programmēšanas paradigmas Programmēšanas valodas

20 Programmēšanas valodas
Programmēšanas valodu klasifikācija un lietojumsfēra Atkarībā programmēšanas paradigmas Objektorientētā programmēšana Imperatīvā programmēšana Loģiskā programmēšana Funkcionālā programmēšana Programmēšanas valodas Paralēlā programmēšana Vizuālā programmēšana Marķējuma valodas Skriptu programmēšana No: K. Čerāns, LU bakalaura programmas kursa “Programmēšanas valodas" lekciju materiāli, LU, 2006. Programmēšanas valodas 20

21 Imperatīvā programmēšana
Programmēšanas valodu klasifikācija un lietojumsfēra Imperatīvā programmēšana Valodas: PASCAL, BASIC, C, FORTRAN, PL/I, u.c. vēsturiski veidojies kā pirmais no programmēšanas veidiem 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āšanai vā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. Īsumā: Valoda nodrošina operatorus (piemēram, piešķires operatorus), kuri tieši maina datora atmiņas stāvokli. No: [3] Programmēšanas valodas

22 Programmēšanas valodas
Programmēšanas valodu klasifikācija un lietojumsfēra Atkarībā programmēšanas paradigmas Objektorientētā programmēšana Imperatīvā programmēšana Loģiskā programmēšana Funkcionālā programmēšana Programmēšanas valodas Paralēlā programmēšana Vizuālā programmēšana Marķējuma valodas Skriptu programmēšana No: K. Čerāns, LU bakalaura programmas kursa “Programmēšanas valodas" lekciju materiāli, LU, 2006. Programmēšanas valodas 22

23 Funkcionālā programmēšana
Programmēšanas valodu klasifikācija un lietojumsfēra Funkcionālā programmēšana Valodas: ML, LISP, SCHEME, HASKELL, MIRANDA, u.c. programma ir funkcija, izeja = f ( ieeja ); programmas izpilde - dotas funkcijas pielietošana zināmai vērtībai; funkcionālas valodas – aplikatīvas valodas (angl. application) valodas galvenais mehānisms - funkcijas izsaukums: parametru nodošana funkcijai, funkcijas vērtības aprēķināšana, rezultāta iegūšana no funkcijas mainīgie (kā matemātikā), konstantes, operācijas funkciju kompozīcija – pamata strukturizācijas mehānisms 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. Īsumā: Skaitļošana tiek veikta matemātisko funkciju aprēķināšanas veidā. No: [3] Programmēšanas valodas

24 Programmēšanas valodas
Programmēšanas valodu klasifikācija un lietojumsfēra Atkarībā programmēšanas paradigmas Objektorientētā programmēšana Imperatīvā programmēšana Loģiskā programmēšana Funkcionālā programmēšana Programmēšanas valodas Paralēlā programmēšana Vizuālā programmēšana Marķējuma valodas Skriptu programmēšana No: K. Čerāns, LU bakalaura programmas kursa “Programmēšanas valodas" lekciju materiāli, LU, 2006. Programmēšanas valodas 24

25 Loģiskā programmēšana
Programmēšanas valodu klasifikācija un lietojumsfēra Loģiskā programmēšana Valodas: 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 PROLOG 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” PROLOG 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 Izmantota mākslīgā intelekta (AI) aplikācijās un prototipēšanā, kopumā ierobežoti lietojumi Īsumā: Skaitļošana tiek izteikta, izmantojot matemātisko loģiku. No: [3] Programmēšanas valodas

26 Programmēšanas valodas
Programmēšanas valodu klasifikācija un lietojumsfēra Atkarībā programmēšanas paradigmas Objektorientētā programmēšana Imperatīvā programmēšana Loģiskā programmēšana Funkcionālā programmēšana Programmēšanas valodas Paralēlā programmēšana Vizuālā programmēšana Marķējuma valodas Skriptu programmēšana No: K. Čerāns, LU bakalaura programmas kursa “Programmēšanas valodas" lekciju materiāli, LU, 2006. Programmēšanas valodas 26

27 Objektorientēta programmēšana
Programmēšanas valodu klasifikācija un lietojumsfēra Objektorientēta programmēšana Valodas: C++, Eiffel, Smalltalk, JAVA, 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 Īsumā: Ar datu struktūrām, kas tiek sauktas par objektiem, tiek asociēta konkrēta uzvedība, objekti pieder klasēm, kas parasti ir struktūrētas hierarhijās. No: [3] Programmēšanas valodas

28 Programmēšanas valodas
Programmēšanas valodu klasifikācija un lietojumsfēra Atkarībā programmēšanas paradigmas Objektorientētā programmēšana Imperatīvā programmēšana Loģiskā programmēšana Funkcionālā programmēšana Programmēšanas valodas Paralēlā programmēšana Vizuālā programmēšana Marķējuma valodas Skriptu programmēšana No: K. Čerāns, LU bakalaura programmas kursa “Programmēšanas valodas" lekciju materiāli, LU, 2006. Programmēšanas valodas 28

29 Paralēlā programmēšana
Programmēšanas valodu klasifikācija un lietojumsfēra 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) No: [3] Programmēšanas valodas

30 Programmēšanas valodas
Programmēšanas valodu klasifikācija un lietojumsfēra Atkarībā programmēšanas paradigmas Objektorientētā programmēšana Imperatīvā programmēšana Loģiskā programmēšana Funkcionālā programmēšana Programmēšanas valodas Paralēlā programmēšana Vizuālā programmēšana Marķējuma valodas Skriptu programmēšana No: K. Čerāns, LU bakalaura programmas kursa “Programmēšanas valodas" lekciju materiāli, LU, 2006. Programmēšanas valodas 30

31 Programmēšanas valodu klasifikācija un lietojumsfēra
Citas paradigmas Vizuālā programmēšana: Visual BASIC, Visual C++, C# 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 Skriptu programmēšana: Perl, 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, CSS u.c. plaši lietotas tīmekļa lappušu nodrošināšanā pieaugoši citi lietojumi No: [3] Programmēšanas valodas

32 Populārākās programmēšanas valodas šobrīd
Programmēšanas valodu klasifikācija un lietojumsfēra Populārākās programmēšanas valodas šobrīd No: [4] Programmēšanas valodas

33 Programmēšanas valodu nākotne?
Programmēšanas valodu klasifikācija un lietojumsfēra Programmēšanas valodu nākotne? 1960.gadu programmētāju sapnis - “universāla” programmēšanas valoda visiem dzīves gadījumiem. Mēģinājums to uzbūvēt: PL/1, cieta neveiksmi. Sapnis 1970./80. gados - izveidot specifikāciju valodu, aprakstīt tajā vēlamo rezultātu, lai sistēma pati atrod veidu, kā izveidot implementāciju un sasniegt risinājumu. Programmēšanas automatizācijas (t.sk. automātiska koda ģenerēšanas) jomā ir sasniegumi, bet tie ir ļoti tāli no tā, lai programmēšanu padarītu nevajadzīgu. Programmēšanas nepieciešamība mūsdienās: ļoti plaša, no asemblera valodas, līdz pat specifikāciju valodām. Arī attīstoties datoriem, prasības uz programmām arvien pieaug, t.sk. vajadzīgs nodrošināt koda portēšanas un atkārtotas lietošanas iespējas, vajadzīgas sistēmas, kas uzlabo programmētāja darba produktivitāti. Tehnoloģijas attīstās, un programmēšanas valodām jāattīstās līdzi. … … Programmēšanas valodas

34 C -> C++ (objektorientētā programmēšana) Visual Basic (macros)
Programmēšanas valodu klasifikācija un lietojumsfēra Nākošajā semestrī C -> C++ (objektorientētā programmēšana) Visual Basic (macros) Asemblers Prolog Lisp Programmēšanas valodas

35 Paldies par uzmanību! Jautājumi?
Programmēšanas valodu klasifikācija un lietojumsfēra Paldies par uzmanību! Jautājumi? Programmēšanas valodas

36 TIOBE software indekss: saite
Programmēšanas valodu klasifikācija un lietojumsfēra Izmantotie resursi R. Zaks, Introduction to Pascal: Including Turbo Pascal, 2nd ed., Sybex, 1986, p. 464. J. Bule, RTK kursa “Programmēšanas valodas" lekciju materiāli, RTK, 2010. K. Čerāns, LU bakalaura programmas kursa “Programmēšanas valodas" lekciju materiāli, LU, 2006. TIOBE software indekss: saite Programmēšanas valodas


Download ppt "Programmēšanas valodu klasifikācija un lietojumsfēra"

Similar presentations


Ads by Google