Raalprojekteerimine
Euroopa struktuurfondide logo
Automatiseerimise viide Mehhatroonikaseadmete viide Pneumoautomaatika viide Siemens LOGO! viide Siemens S7-1200 viide
(osa 2)

PROGRAMMEERIMINE

Programmeerimiskeeled

Programmeerimiskeeletest üldiselt

Programmeerimiskeel on nö tehiskeel, mis võimaldab inimesel arvutile instruktsioone anda selle kohta, mida ja kuidas arvuti tegema peab. Kuna üheks osapooleks on arvuti, siis on iga programmeerimiskeele kohta üsna ranged reeglid keele ülesehituse ja struktuuri ehk süntaksi osas ja samuti ka keele lausete tähenduse ehk semantika kohta. Programmeerimiskeeled on enamasti tekstipõhised kuid tööstuasutomaatikas ja signaalitöötluse valdkonnas kasutatakse palju ka visuaalseid programmeerimiskeeli.

Programmeerimiskeelt võib vaadelda kui kokkulepitud reeglistikku, mis on selleks, et kõik seda ühtselt mõistaks. Selle olemuse ja eripärad määravad kaks osa:

Süntaks (Syntax) on reeglistik, mis määrab ära mingi programmeerimiskeele ülesehituse ja struktuuri. See määrab ära erinevate sümbolite ja tähemärkide tähenduse olenevalt sellest, kuidas need on programmikoodis paigutatud teiste sümbolite ja tähemärkide suhtes. Süntaksi alla kuuluvad ka reeglid, mis kontrollivad käsu nimede õigsust, muutujate nimede õigsust jne.

Semantika (Semantics) on reeglistik, mis määrab ära erinevate avaldiste, stringide ja muude võtmesõnade tähenduse. Semantika toimimise eelduseks on õige süntaks. Semantika reeglid kontrollivad näiteks kas õige süntaksi puhul õige nimega käsu väljakutsumisel antud kontekstis ka mingi mõte on ja kas seda on võimalik täita olgugi, et lause oli ülesehituselt õigesti püstitatud.

Enamasti on programmeerimiskeelte kohta olemas dokumendi kujul spetsifikatsioon, kus on antud programmeerimiskeele süntaksi ja semantika reeglid kirja pandud. Spetsifikatsioonidokumendiks on enamasti ametlik standard. Samas võib programmeerimiskeelte reegleid kirjeldada ka vabamas vormis referentsdokumentides.

Programmeerimiskeelte tüübid

Programmeerimiskeeled võib üldjoones jaotada põhitüüpideks või ka paradigmadeks järgnevalt:

  • Imperatiivsed
    • Protseduurilised (Procedural) (Fortran, Pascal, C, Ada) -
      on programmeerimiskeeled, kus kirjeldatakse tegevused ja nende täitmise kord ning jagatakse need tegevused gruppidesse (alamprogrammideks). Protseduuridest kujunevad omamoodi koodi struktuurid, mida on võimalik korduvalt kasutada. [2]

    • Objektorienteeritud (Object-oriented) (Smalltalk, C++, Java) -
      on programmeerimiskeeled, kus teostatakse lahendus klassides (class) kirjeldatud funktsioonide ja andmestruktuuride abil. Igast klassist on võimalik moodustada objekte, millel on mingi hulk omadusi ja/või meetodeid. Omadused on väärtused, mida objekt suudab hoida ja mis võivad mõjutada objekti käitumist. Näiteks klassi "konsooliaken" põhjal saab moodustada objekti "konsool1" mis kasutajale paistab lihtsalt ühe konsooliaknana. Sellel objektil on mitmeid omadusi (nähtav, mittenähtav, laius, kõrgus, teksti värv konsooliaknas, taustavärv jne), neid omadusi muutes muutub konkreetsel juhul objekti välimus. [2]

  • Deklaratiivsed
    • Funktsionaalsed (Functional) (Scheme, ML, Haskell) -
      on programmeerimiskeeled, kus kirjeldatakse kogu lahendus funktsioonide abil. [2]

    • Loogilised (Logic) (Prolog, Parlog, Gödel, Mercury)

Üks programmeerimiskeel võib (aga ei pruugi) võimaldada mitme paradigma kasutamist, lastes programmeerial valida selle, mis tema ülesande jaoks kõige paremini sobib.


Olenevalt sellest, kas programm tõlgitakse masinkoodiks läbi kompilaatori või jooksvalt läbi interpretaatori võivad keeled olla:

  • kompileeritavad (C, Pascal, Fortan) - kompilaator võtab sisendiks mingis keeles kirjutatud programmi ja tõlgib selle mõnda teise keelde, enamasti lõpuks masinkoodiks. Tihtipeale võib tulemus minna edasi ka mõnele teisele kompilaatorile või interpretaatorile.
  • interpreteeritavad (Python, Perl, PHP) - interpretaator võtab sisendiks mingis keeles kirjutatud programmi ja täidab neid instruktsioone jooksvalt. Programmi käivitamiseks ei ole vaja seda eelnevalt eraldi kompileerida.
  • nii kompileeritavad kui interpreteeritavad

Kuigi enamus programmeerimiskeeli on algselt mõeldud kasutamiseks kas eelkõige kompileerimise või eelkõige interpreteerimise teel, siis tegelikult oleneb keele kompileeritavus ja interpreteeritavus sellest, kas keegi on sellele kompilaatori või interpretaatori kirjutanud. Iseasi küsimus on see, kui mõtekas üks või teine mõne keele puhul on (teostus võib olla raske ja tulemus ebaefektiivne, kui keel selleks algselt ette nähtud ei ole).


Esitusviisi või programmi kirjapanemise viisi järgi võivad keeled olla:

  • Sümboolsed (Symbolic) - programmeerimine toimub koodi kirjutamise teel.
    Eelised: paindlikud võimalused, efektiivsus, kirjutamise kiirus, lihtne töödeldavus arvuti poolt.
    Puudused: raske õppida, nõuab süntaksi ja paljude keele elementide meelde jätmist, ei ole pealevaadates ülevaatlik ega keelt tundmata mõistetav.
  • Visuaalsed (Visual) - programmeerimine toimub praktiliselt ilma koodi kirjutamiseta. See võib toimuda näiteks erinevate visuaalsete plokkide paigutamise ja joontega ühendamise teel.
    Eelised: Lihtne õppida, ei nõua paljude asjade meelde jätmist, on pealevaadates ülevaatlik ja enamasti keelt tundmata mõistetav.
    Puudused: piiratud võimalused, tihti ebaefektiivne, keerukama programmi loomine ebamugav ja aeganõudev, raske töödeldavus arvuti poolt.
Creative Commons Licence
"Raalprojekteerimine" by Eduard Brindfeldt and Urmo Lepiksoo is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Estonia License .