Download presentation
Presentation is loading. Please wait.
Published byTerence Cobb Modified over 6 years ago
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
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.