Paskalis, programuotojas ir kompiuteris

Paskalio kalbą sukūrė žymus informatikas ir pedagogas Virtas (Niklaus Wirth) apie 1970 metus. Paskalis, o taip pat ir kitos N. Virto sukurtos programavimo kalbos (Modula-2, Modula-3, Oberonas-2) pasižymi tuo, kad jos yra universalios, t. y. gerai tinka dažniausiai praktikoje pasitaikančių uždavinių programoms užrašyti. Jos paprastos, logiškos, turi nedaug konstrukcijų, o pačios konstrukcijos yra paprastos ir lengvai įsimenamos. Be to turi gerą apsaugą nuo klaidų. Tai savybės naudingos ir besimokančiajam, ir profesionaliam programuotojui. Na, o iš N. Virto sukurtų kalbų pasirinkau Paskalį todėl, kad jis daugiausiai naudojamas ir Lietuvoje, ir užsienyje. Dauguma (virš 70%) pasaulinių informatikos olimpiadų dalyvių programoms rašyti renkasi Paskalio kalbą.

Paskalio žymenys vartojami algoritmams užrašyti. Algoritmus skaito ir nagrinėja žmogus. Taigi Paskalio kalba skiriama ne tik žmogaus bendravimui su kompiuteriu, bet ir žmogaus (programuotojo) bendravimui su kitu žmogumi (programuotoju). Paskalis yra patogi priemonė algoritmavimo idėjoms ir metodams išreikšti, kad su jais galėtų susipažinti kiti bendraminčiai – programuotojai. Todėl į Paskalį reikia žiūrėti visų pirma kaip į algoritminių žymenų sistemą, skirtą žmogui. Informatikoje (konkrečiau algoritmavime ir programavime) jis atlieka analogišką vaidmenį kaip matematiniai žymenys matematikoje, chemijos formulių kalba chemijoje, natų žymenys muzikoje ir pan.

Pateiksiu labai paprastą programos, užrašytos Paskaliu, pavyzdį:

program vidurkis;
  var a, b, vid: real;
begin
 
read(a);
  read(b);
  vid := (a+b)/2;
  writeln(vid: 8: 2)
end.

Net ir menkai išmanančiam programavimą nesunku suvokti, kad ši programa skirta dviejų skaičių aritmetiniam vidurkiui skaičiuoti.

Dabar į programą pažvelkime iš kompiuterio pozicijų. Ar kompiuteris ją supras, ar galės įvykdyti, t.y., suskaičiuoti dviejų skaičių vidurkį?

Kompiuteris gali atlikti tiktai tokias programas, kurios sudarytas iš jam suprantamų komandų, kurios žmogui atrodo kaip beprasmis dvejetainių (arba šešioliktainių) skaičių rinkinys.

Kaip įveikti barjerą tarp žmogaus ir kompiuterio, t.y., kaip padaryti, kad kompiuteris suprastų ir galėtų įvykdyti Paskalio kalba parašytą programą?

Reikia programą iš Paskalio kalbos išversti į kompiuterio kalbą. Šį darbą atlieka programa, vadinama transliatoriumi (angl. translator – vertėjas) (1 pav.). Išverstą programą kompiuteris jau gali vykdyti (2 pav.). Kompiuteriui pateikę programą, o po to pradinius duomenis (du skaičius), iš kompiuterio gausime rezultatą (vieną skaičių – aritmetinį vidurkį).

1 pav. Transliatorius išverčia programą iš Paskalio kalbos į kompiuterio kalbą.

2 pav. Kompiuteris atlieka į jo kalbą išverstą programą.

Pastaruoju metu dažniau vartojami kompiliatoriai (angl. compiler – kompiliatorius). Kompiliatorius ne tik išverčia programos tekstą iš Paskalio kalbos į kompiuterio kalbą, bet ir į programą įjungia (įkompiliuoja) tam tikras iš anksto parengtas programas arba programų fragmentus.

Paskalio kalbos kompiliatorius yra didelė ir sudėtinga programa. Tačiau nesibaiminkime – jos veikimo nereikia žinoti. Jūs būsite tik Paskalio kompiliatoriaus naudotojai. Na, o tiems, kas nori apie kompiliatorių sužinoti daugiau ir giliau – pamatyti jį iš vidaus, galima parekomenduoti Vaivos Grabauskienės knygelę „Susipažinkime – transliatorius“.

Dažnai sakome, kad duomenis paduodame ne kompiuteriui, bet programai ir rezultatus gauname iš programos. Taip kalbėti patogiau. Nors iš tikrųjų veiksmus atlieka kompiuteris, bet atlieka tik tuos, kurie užrašyti programoje. Taigi, visą kompiuterio darbą apsprendžia programa.

1 ir 2 paveiksluose programos vaizduojamos stačiakampiais, o duomenys – rodyklėmis, jungiančiomis programas (į stačiakampį ateinančios rodyklės vaizduoja pradinius duomenis, o išeinančios – rezultatus). Tie patys duomenys vienai programai gali būti pradiniai duomenys (ateinanti rodyklė), kitai – rezultatas (išeinanti rodyklė). Tai, kad sąveikaujant programoms keičiasi duomenų rolė (rezultatai virsta pradiniais duomenimis) savaime suprantama. Tačiau atidžiau panagrinėję minėtus paveikslus galime pastebėti įdomesnį dalyką: duomenys gali būti laikomi programomis ir atvirkščiai – rezultatai programomis. Žmogaus parašytą Paskalio kalba programą transliatorius laiko pradiniais duomenimis ir ją perdirba į kitus duomenis – rezultatą. Kai šis rezultatas pateikiamas kompiuteriui, kompiuteris jį laiko programa ir ima jį vykdyti. Dabar kompiuteriui reikės pradinių duomenų, kurie nurodyti toje programoje (nagrinėtu atveju – dviejų skaičių) ir atiduos programoje numatytus rezultatus. Tai pavaizduota 3 paveiksle.

3 pav. Programos transliavimas ir vykdymas. Transliavimo rezultatas virsta programa.

Programavimo terpė. Darbo su programomis ir duomenimis schema pateikta 3 paveiksle, yra paprasta ir akivaizdi. Tačiau dirbti pagal šią schemą būtų nelabai patogu: reikia operuoti daugeliu duomenų ir programų bylų. Programos tekstą Paskalio kalba bei jos pradinius duomenis reikia parašyti su kokiu nors tekstų dorokliu. Po to programos tekstą reikia pateikti transliatoriui, iš jo gautą rezultatą (sutransliuotą programą) pateikti kompiuteriui, o kad jis galėtų ją vykdyti – pateikti programos pradinius duomenis, o iš jos gautą rezultatų bylą skaityti vėl su kokiu nors dorokliu. Taigi, reikia atlikti daug veiksmų su bylomis. Šie veiksmai ypač juntami, kai programa yra dar tik rašoma, nes tada ją dažnai tenka taisyti, o pataisius visus tuos veiksmus vėl reikia kartoti.

Tam, kad mažiau rūpesčių keltų darbas su bylomis, programuotojui pateikiamas ne vien transliatorius (kompiliatorius), bet visa programuotojui reikalinga terpė – programavimo sistema. Transliatorius (kompiliatorius) yra svarbiausias sistemos komponentas. Todėl kartais visa programavimo sistema sutapatinama su transliatoriumi (kompiliatoriumi).

Kitas svarbus programavimo sistemos komponentas yra programos tekstų doroklis. (redaktorius). Tada programos tekstui rinkti bei taisyti nereikia atskiro kokio nors kito doroklio. Pradėjus darbą su sistema, iškart įsijungia doroklis ir kompiuterio ekrane galima rinkti programos tekstą. Programavimo kalbos dorokliu su tekstu galima atlikti tokias pat operacijas, kaip ir kitais dorokliais: jį rinkti, taisyti, išbraukti, kopijuoti, įterpti į kitą tekstą, įkelti iš bylos, užrašyti į bylą ir pan.

Programavimo terpė paslepia ir patį transliavimo procesą. Ja naudojantis susidaro įspūdis, kad kompiuteris supranta Paskalio kalba parašytą programą ir čia pat ją atlieka.

Uždaviniai

  1. Programą "vidurkis" pakeiskite taip, kad ji apskaičiuotų trijų skaičių aritmetinį vidurkį. Jis skaičiuojamas pagal formulę (a+b+c) / 3.
  2. Vietoj daugtaškių įterpkite tinkamus žodžius:
             Paskalio kalbos sistemos terpėje esančiu … renkami ir taisomi programų tekstai.
             Paskalio kalbos … arba … išverčia programos tekstą iš … kalbos į … kalbą.