Table Of ContentLIETUVOS EDUKOLOGIJOS UNIVERSITETAS
GAMTOS, MATEMATIKOS IR TECHNOLOGIJŲ FAKULTETAS
INFORMATIKOS KATEDRA
Marek Oleškevič
Programavimo kalbų naudojimo Lietuvos mokyklose
analizė
Analysis of Programming Languages Usage in Lithuanian schools
Informatikos baigiamasis magistro darbas
Darbo vadovas doc. dr. T. Petkus
Vilnius
2014
ĮVADAS ...................................................................................................................... 3
1. PROGRAMAVIMO KALBŲ ISTORIJA IR RAIDA ........................................................... 5
1.1. Programavimo kalbų raidos apžvalga .......................................................................... 5
1.2. Programavimo kalbų raidos filosofija........................................................................... 9
1.3. Programavimo kalbų populiarumas ........................................................................... 16
1.4. Programavimo kalbų bendrosios savybės .................................................................. 19
2. PROGRAMAVIMO KALBŲ NAUDOJIMAS LIETUVOS MOKYMO ĮSTAIGOSE .............. 22
2.1. Programavimo kalbų atsiradimas informatikos egzamine. .......................................... 24
2.2 Programavimo kalbų per IT VBE pasirinkimo analizė ................................................... 26
2.3. Eksperimentinis tyrimas ............................................................................................ 27
2.4. Eksperimentinio tyrimo apibendrinimas .................................................................... 33
2.5. Apklausos duomenų analizė ...................................................................................... 34
2.6. Apklausos duomenys: „Programavimo kalbų naudojimo Lietuvos mokyklose analizė . 35
3. C++ IR FREE PASCAL TAIKYMO GALIMYBĖS ............................................................ 43
3.1. Free Pascal taikymo galimybės: ................................................................................. 43
3.2. Pagrindinės FPS savybės ir funkcinės galimybės: ........................................................ 43
3.3. C++ taikymo galimybės: ............................................................................................ 44
3.4. Pagrindinės C++ savybės ir funkcinės galimybės[16]: .................................................. 44
3.5. C++ ir FPS programų kodų palyginimai ....................................................................... 45
4. IŠVADOS ............................................................................................................... 47
5. SANTRAUKA ......................................................................................................... 49
6. SUMMARY............................................................................................................ 50
7. LITERATŪROS SĄRAŠAS......................................................................................... 51
2
ĮVADAS
Šiuolaikinėje Lietuvoje su kompiuteriniu programavimu susipažįstama jau mokykloje.
Dėstomų programavimo kalbų įvairovė yra gana didelė, dažniausiai naudojamos kalbos yra
„FPS“, „C++“, „Delphi“, „Python“, „Java“, „PHP“, „Logo“, „Scratch“, „Visual Basic“, „Lego
Mindstrom Education“. Visos išvardintos kalbos turi savo istorijas, jos buvo kurtos skirtingais
laikais bei siekiant skirtingų tikslų. Dėl šių priežasčių programavimo kalbos turi daug skirtumų.
Skirtumai dažniausiai yra ne vien sintaksiniai ar loginiai, gali skirtis programavimo kalbos
paskirtis. Vienos kalbos skirtos struktūriniam programavimui, kitos objektiniam, trečios skirtos
programavimo logikos ugdymui. Be minėtų skirtumų šios kalbos turi ir panašumų, todėl perpratus
vieną kalbą, lengvai galima perprasti ir kitas.
Pagal Švietimo ir mokslo ministerijos nuostatas, programavimas Lietuvos mokyklose yra
privalomas, pasirinkus informacinių technologijų dalyką „A“ lygiu. Mokiniai jau 6 klasėje
susipažįsta su „Komenskio Logo“ arba „Imagine Logo“ programa. Vėliau – 9 klasėje su
informacinių technologojų logika, t. y. su skaičiavimo sistemomis, loginiais operatoriais,
algoritmais. Jau 10 klasėje galima pasirinkti programavimo modulį, kuriame realizuojamos
nesudėtingų algoritmų transformacijos į programas.
Šiame darbe yra apžvelgta programavimo kalbų istorija ir jų raida, pradedant nuo pačios
pirmosios programos ir pirmosios programuotojos ir baigiant šiuolaikinėmis programavimo
kalbomis. Taip pat apžvelgiama programavimo kalbų filosofija ir jų populiarumas šiuo metu,
analizuojamos programų populiarumo pasikeitimo tendencijos. Taip pat yra atlikti anketiniai ir
eksperimentiniai tyrimai, parodantys programavimo kalbų populiarumą mokyklose, pateikti
mokinių gebėjimų įvertinimai mokinantis skirtingas programavimo kalbas. Mokyklinio kurso
lygmenyje išanalizuotos informacinių technologijų valstybiniame brandos egzamine naudojamos
programavimo kalbos, jų struktūra, sintaksė ir galimybės.
3
Darbo tikslas – ištirti programavimo kalbų Lietuvos mokyklose naudojimą ir jų įtaką
tolimesniam programavimo mokymui.
Uždaviniai:
• Apžvelgti programavimo mokymo raidą ir filosofiją;
• Palyginti „C++“ ir „Pascal “ programavimo kalbų galimybes mokyklinio kurso lygmenyje;
• Atlikti programavimo kalbų naudojimo anketinį tyrimą;
• Atlikti praktinį skirtingų programavimo kalbų mokymo eksperimentą su mokiniais.
4
1. PROGRAMAVIMO KALBŲ ISTORIJA IR RAIDA
1.1. Programavimo kalbų raidos apžvalga
Nuo pat programavimo eros pradžios buvo naudojamas paprasčiausias mašininis kodas,
tai 1 ir 0 seka.[1]
Suteikus mašininio kodo eilutėms simbolinius vardus atsirado Asembleris, jis egzistuoja
nuo pat kompiuterių atsiradimo pradžios.
Evoliucionuojant Asembleriui atsirado kitos programavimo kalbos.
1945 m. sukurta pirmoji žinoma programavimo kalba Plankalkül.[2]
Fortran (1954);
Algol 58 (1958);
Lisp (1959);
Cobol (1960);
Simula (1962);
BASIC (1964);
Logo (1967);
Pascal (1971);
C (1972);
C++ (1983);
Perl (1987);
Python (1991);
Java (1995);
PHP (1997);
C# (2000).
Nuo XX a. 6-ojo dešimtmečio vidurio dauguma kalbų kurtos ne iš naujo, o tobulinant ir
jungiant jau sukurtas kalbas [2]. Paveikslėliuose (1-5 pav.) pavaizduota aukšto lygio
programavimo kalbų genealogija ir jų tarpusavio ryšiai, vienų kalbų įtaka kitoms.
5
1 pav. Programavimo kalbų raidos schema[8]
6
2 pav. Programavimo kalbų raidos schema[3]
3 pav. Programavimo kalbų raidos schema[3]
7
4 pav. Programavimo kalbų raidos schema[3]
5 pav. Programavimo kalbų raidos schema[3]
8
1.2. Programavimo kalbų raidos filosofija
Ada Lovelace laikoma pirmąja kompiuterių programuotoja. Ji dirbo kartu su matematiku
Charles Babbage, kai jis kūrė analitinę mašiną. Ada rašė užrašus, skirtus šiai analitinei mašinai,
kuri niekada nebuvo pagaminta. Šie užrašai pripažįstami kaip pirmoji programa.[3]
Ada Lovelace buvo poeto Lord George Gordon Byron dukra. Su Charles Babbage ji
susipažino 1833 m. Babbage buvo pirmasis, kuris turėjo programuojamo kompiuterio idėją. Šią
idėją suprato Ada Lovelace (pavardė pagal vyrą). Gruodžio 10 d. – Ados gimimo diena, laikoma
programuotojų diena.[3]
Kai atsirado pirmos skaičiavimo mašinos ir dar nebuvo šiuolaikinių programavimo kalbų,
tų laikų programuotojai dirbo tiesiogiai su mašininiu kodu. Žinoma, tokie žmonės buvo labai
vertinami, tačiau jiems buvo keliami ir dideli reikalavimai, tokie kaip nepriekaištingos mašininės
kalbos žinios, visos kompiuterių architektūros išmanymas. Tais laikais visa informacija buvo
saugoma ne kietajame diske kaip dabar, o perforuotose kortose.[4]
Tiesioginio mašininio kodo pvz.:
Dviejų skaičių sumavimo operacija atrodo taip:
000000 00001 00010 00110 00000 100000
Pirmasis žingsnis link civilizuoto programavimo buvo perėjimas prie Asemblerio[4].
Asembleris mašininio kodo eilutėms suteikė simbolinius vardus.
(pateikiamas “Hello world” fragmentas Asemblerio kalba [4]):
assume cs:cseg, ds:dseg, ss:sseg
mov ax,dseg
mov ds,ax ;duomenu segmento iniciavimas
lea dx, welcome
mov ah, 09h
int 21h
mov ah,4ch
int 21h
Tai buvo milžiniškas žingsnis į priekį, dabar programuotojui nereikėjo aiškintis, kaip
užrašyti komandą mašininiu lygiu. Programuojant Asembleriu atsirado galimybė naudoti
atžymas, tai gerokai palengvino programų testavimą ir klaidų paiešką. Atsirado galimybė gaminti
9
mašinas vienodu ar suderinamu mašininių komandų rinkiniu, tai galima pavadinti pirmuoju
bandymu padaryti programinį kodą pernešamu. Asembleris leido dar vieną naujovę: atsirado du
programų variantai, tai yra mašininio kodo ir sukompiliuoto pavidalu. Tačiau bėgant laikui ir
tobulėjant šiai kalbai, bei vystantis kompiuteriams, programavimas Asembleriu darėsi vis
sudėtingesnė problema, kol galiausiai tapo išvis beveik neįmanomas[4]. Šiandien Asembleris
naudojamas labai retai, bet vis dar naudojamas situacijose, kur reikalingas išskirtinis greitis ir
optimizavimas, pavyzdžiui, Linux branduolys kernelis parašytas C programavimo kalba (kuris
vadinamas dar ir aukšto lygio asembleriu) ir dalis – Asembleriu, taip pat žaidimuose, šifravimo,
duomenų spaudimo ir panašiuose programavimo uždaviniuose.
Reikėtų paminėti pirmąją programavimo kalbą Plankalkül. Ją sukūrė vokiečių
mokslininkas Konradas Ciuzė (Konrad Zuse) 1945 m. rašydamas daktaro disertaciją. Kalba turėjo
pačius primityviausius duomenų tipus ir nedaug valdymo struktūrų. Kalba nebuvo realizuota – tais
laikais dar tik pradėjo atsirasti pirmieji, labai primityvūs kompiuteriai. Tačiau kalba turėjo
neabejotiną svarbą: parodytas kelias, kaip kurti programavimo kalbas. Kaip istorinę reikšmę
turintis dokumentas, jos aprašas buvo išspausdintas tik 1972m.[14]
Fortran
1954-1958 – FORmula TRANslator. Kalbos kūrėjai – John Backus ir kiti IBM darbuotojai.
Kalba skirta matematiniams skaičiavimams. Fortran II (1958) turėjo paprogrames, funkcijas,
ciklus, primityvų for sakinį. Vardų ilgis buvo ribojamas 6 simboliais. Nors šioje kalboje duomenų
ir valdymo struktūros buvo labai menkos, tačiau kelios pagrindinės programavimo kalbų teorinės
idėjos buvo perteiktos. Čia buvo vartojami loginiai kintamieji – suprasta jų reikšmė
programavime. Buvo įgyvendinta išrinkimo sakinio idėja, nors dar gana netobulai, labai neaiškiai.
Apskritai pirmosios kalbos vis dar tebebuvo labiau skiriamos kompiuteriui, o ne žmogui.[3][4]
Lisp
1958-1960 – LISt Processing. Programos autorius Mac Carthy. Funkcinė kalba sąrašų
apdorojimui. Pilnai rekursinė kalba. Nėra skirtumo tarp kodo ir duomenų.[3][4]
Algol 68
Algol – 1960 / Algol 68 – ALGOrithmic Language. Apibrėžė tarptautinis kompiuterių
mokslo specialistų simpoziumas. Tai pirmoji universali nuo kompiuterio nepriklausoma kalba.
Panaudojo bloko sakinius ir lokalius kintamuosius bloko viduje. Įgyvendinta ribota rekursija, nes
buvo manoma, kad ji nenaudinga. Naudojo dinaminius masyvus, vadinasi vėlesnes kalbos (Pascal,
C), kurios naudojo statinius masyvus dėl efektyvumo, regresavo. Turėjo IF THEN ELSE, :=
10
Description:Analysis of Programming Languages Usage in Lithuanian schools. Informatikos .. Python (nors dažniausiai naudojama objektinė paradigma).