Programavimo kalbos

Programavimo kalbos

Sukurta labai daug ir įvairių programavimo kalbų, tačiau vienos iš jų yra labai populiarios, o kitos buvo sukurtos, bet dabar nebenaudojamos. Kodėl taip yra? Programavimo kalbos sėkmės ar nesėkmės priežastys dalinai yra išorinės pačios kalbos atžvilgiu. Pvz., COBOL sėkmę JAV tikriausiai galima paaiškinti tuo, kad ji buvo rekomenduota naudoti tam tikriems uždaviniams programuoti valstybinėse institucijose. Analogiškai, Fortran ir PL/1 sėkmę dalinai galima paaiškinti stipria parama firmų, gaminančių kompiuterius. Tačiau, nežiūrint į visas išorines priežastis, vis tiktai programuotojai apsprendžia kurios iiš kalbų naudojamos. Panagrinėkime keletą priežasčių. kodėl programuotojai vertina vienas kalbas labiau už kitas.

1. Kalbos sąvokų aiškumas, paprastumas ir suderinamumas. Programavimo kalba turi pateikti programuotojui suderintą sistemą aiškių ir paprastų sąvokų, kurias jis gali panaudoti kaip primityvus kurdamas algoritmą. Pageidautina turėti minimalų kiekį sąvokų, o taisyklės, kuriomis remiantis jos kombinuojamos, turėtų būti kiek galima paprastos ir reguliarios. Reiktų vengti įvairių plonybių bei kaprizingų apribojimų ir, žinoma, kalba neturi būti dviprasmiška. Būtent toks semantinis aiškumas, sąvokų aiškumas tikriausiai yra svarbiausias faktorius aapibrėžiantis kalbos vertę.

2. Programos struktūros aiškumas. Kalbos sintaksė daro didelę įtaką programos parašymo, testavimo, o vėliau jos supratimo ir modifikavimo lengvumui. Daugelis kalbų turi sintaksines konstrukcijas, skatinančias programuotojus apsirikti. Geriausiu atveju rezultate gaunamos trivialios sintaksinės klaidos, blogiausiu – gaunamos sintaksiškai tteisingos konstrukcijos, bet reiškiančios visiškai kitą. Kalba turi būti tokia, kad skirtingus dalykus reiškiančios konstrukcijos ir atrodytų skirtingai. Dar svarbesnė programuotojui yra sintaksės galimybė programos struktūroje atspindėti realizuojamą algoritmą. Programos kūrimui naudojant struktūrinio programavimo metodą, programa konstruojama hierarchiškai – iš viršaus žemyn (nuo pagrindinės programos iki žemiausio lygio paprogramių), kiekviename lygyje naudojant tik ribotą rinkinį valdymo struktūrų: instrukcijų seka, ciklai ir kai kurie sąlyginiai išsišakojimai. Naudojant šį metodą gautų algoritmų struktūrą lengva suprasti, derinti ir modifikuoti. Idealiu atveju mums reikia galimybes tokią programos schemą užrašyti programavimo kalba, tačiau ne visada kalbos sintaksė leidžia tai padaryti. Puikiai sukonstruotas algoritmas gali tapti visai nesuprantamu, jei kalbos sintaksė priverčia jį nenatūraliai užrašyti.

3. Taikymų natūralumas. Kalba turėtų pateikti sprendžiamam uždaviniui tinkamas duomenų struktūras, operacijas, vvaldymo struktūras ir natūralią sintaksę. Kalba ypač gerai tinkama tam tikriems taikymams gali gerokai supaprastinti specialių tokios klasės programų kūrimą. Pavyzdžiui, COBOL orientuotas į ekonominius uždavinius, Snobol 4 – į darbą su simbolių eilutėmis. Kartais netgi tikslinga susikurti savo kalbą, specialiai orientuotą į tam tikrą uždavinių klasę.

4. Praplėtimo lengvumas. Didelę programuotojo darbo dalį galima vertinti kaip kalbos praplėtimą. Pasirinkęs duomenų struktūras, operacijas ir t.t., reikalingas uždavinio sprendimui, jis turi nutarti kaip šias struktūras sumodeliuoti paprastesnėmis priemonėmis, kurias suteikia programavimo kalba. TTuo pačiu jis praplečia programavimo kalbos sąvokų sistemą, įtraukdamas modeliuojamas struktūras. Programavimo kalba gali palengvinti arba pasunkinti tokį praplėtimą. Kalba turi leisti tokį praplėtimą, naudojantis paprastais, natūraliais mechanizmais. Beveik visos kalbos šiam tikslui leidžia apibrėžti paprogrames, tačiau kitais atžvilgiais tokio praplėtimo galimybių daugelyje kalbų trūksta.

5. Išorinis aprūpinimas. Techninė programavimo kalbos ir jos realizacijos struktūra tėra tik vienas iš faktorių, veikiančių jos panaudojimo efektyvumą. Programų kūrimas nesibaigia jų parašymu, jas reikia kažkur laikyti, testuoti, modifikuoti ir pateikti naudojimui. Tokio tipo priemonės retai yra pačios kalbos dalis. Paprastai jas parūpina operacinė sistema. Turint pakankamai galingas priemones testavimui, redagavimui, saugojimui ir pan., silpna kalba gali būti labiau tinkama naudojimui negu stipri, bet neturinti tokio išorinio aprūpinimo. Kalbos sėkmę apibrėžia ir dokumentacijos ir realizacijos (suderinta, be klaidų) kokybė. Daugelyje didelių programavimo uždavinių svarbi sukurtų programų pernešamumo problema. Paplitusi kalba, kurios apibrėžimas nepriklauso nuo konkretaus kompiuterio ypatumų, sudaro geras sąlygas pernešamų programų kūrimui.

6. Efektyvumas. Efektyvumas žinoma yra pagrindinis kriterijus, vertinant bet kurią programavimo kalbą, tačiau egzistuoja daug šio kriterijaus aspektų:

Programos vykdymo efektyvumas. Tik atsiradus skaičiavimo mašinoms efektyvumo klausimas buvo suprantamas kaip vykdymo efektyvumas. Buvo atlikti svarbūs tyrimai optimizuojančių kompiliatorių kūrimo ir optimalaus registrų paskirstymo srityje. Šis kriterijus tampa ypač svarbiu kuriant dideles gamybines programas, kurios bbus vykdomos daug kartų.

Programos transliavimo efektyvumas. Kai programavimo kalba naudojama mokymui, programos vykdymo efektyvumas tampa ne toks svarbus, o pirmaeilę reikšmę įgauna programos transliavimo efektyvumas. Studentų programos paprastai transliuojamos (kompiliuojamos) daug kartų, o vykdomos nedaug kartų. Tokiu atveju svarbiau turėti greitą ir efektyvų kompiliatorių negu kompiliatorių, duodantį optimalų kodą.

Programos kūrimo, testavimo ir naudojimo efektyvumas. Tai trečias efektyvumo aspektas, kuris daugeliu atveju yra ne mažiau svarbus už kitus tradicinius kriterijus.

Programavimo kalbos

if bReikia then

begin

vykdyti()

end.

Kiekviena programa rašoma viena ar kita programavimo kalba, kuri vėliau verčiama mašininiu kodu, suprantamu kompiuteriui. Nors įmanoma tiesiogiai programuoti mašininiu kodu, aukšto lygio programavimo kalbos žymiai supaprastina kūrimo procesą.

Programavimo kalbų yra daug skirtingų tipų bei skirtingų sudėtingumo lygių, todėl kiekviena kalba labiau tinka tam tikros paskirties uždaviniams spęsti.

Programų kūrimas

Programų kūrimas – sudėtingas procesas ir programavimas tėra nedidelė šio proceso dalis. Pagrindinės ir dažniausiai pasitaikančios kūrimo dalys:

1. Reikalavimų surinkimas bei analizė.

2. Projektavimas ir įrankių (programavimo kalbos, platformos, duomenų bazių ir pan.), tinkamiausių problemai spręsti, parinkimas.

3. Programos rašymas pasirinkta programavimo kalba.

4. Testavimas. Jei testavimo metu paaiškėja, kad nepasiektas norimas kokybės lygis, taisomos problemos (grįžti į 3 žingsnį).

5. Dokumentavimas, jei reikia – vertimas į kitas kalbas.

6. Diegimas.

Programavimo stilius

Pagal tai, kokiais principais remiantis kuriamos programos, skiriami programavimo stiliai:

Imperatyvusis programavimas

Pagrindinis šio stiliaus pprincipas: programa – tai komandų, kurias reikia vykdyti, rinkinys. Komandos keičia programos būseną. Kadangi beveik visa aparatinė įranga dirba šiuo principu, tai didžioji dalis programų yra parašyta būtent šiuo stiliumi. Skiriamos tokios šio stiliaus atšakos:

Nuoseklusis programavimas

Tai programavimas be jokių taisyklių. Priimtinas nedidelėse programose. Jei intensyviai naudojamos goto komandos, gaunamas sunkiai valdomas kodas, dar vadinamas spaghetti kodu. Realizuojančios kalbos: Basic (pradinė versija), Assembler (jei nesilaikoma disciplinos), kitos pirmosios programavimo kalbos

.

Struktūrinis (procedūrinis) programavimas

Struktūrinis programavimas uždeda apribojimus, kad visa programa turi būti suskaidyta į kaip įmanoma mažiau viena nuo kitos priklausomus modulius (gali būti kelių lygių: procedūros, modulio, bibliotekos). Kiekviena tokia dalis gali turėti tik joje matomus kintamuosius. Realizuojančios kalbos:

ir iš jo išsivysčiusios.

Objektinis programavimas

Objektiškai kuriamos programos struktūra suskirstoma į klases, kurios aprašo duomenis ir su jais susijusį funkcionalumą.

Deklaratyvusis programavimas

Deklaratyviojo programavimo principas: programa aprašo kokias sąlygas sprendinys turi tenkinti, tačiau neapibrėžia sprendinio ieškojimo algoritmo. Šį algoritmą kiekviena realizacija gali turėti savo. Skiriamos tokios deklaratyviojo programavimo stiliaus atšakos:

Funkcinis programavimas

Funkciniame programavime sprendinio sąlygoms aprašyti naudojamos funkcijos, neturinčios vidinių būsenų. Dėl šios savybės jos negalinti turėti šalutinių poveikių. Realizuojančios kalbos: Lisp.

Loginis programavimas

Loginiame programavime sprendinio sąlygas aprašo duomenys, su kuriais reikia dirbti ir taisyklės, kaip tie duomenys yra

vieni su kitais susįję. Realizuojančios kalbos: Prolog, SQL.

Žymenų sistema programoms (algoritmams) užrašyti.

Kalbos abėcėlę sudaro skaitmenys, raidės, operacijų ir skyrybos ženklai. Iš abėcėlės ženklų sudaromos programavimo kalbos konstrukcijos: vardai, skaičiai, aprašai, komandos (sakiniai). Konstrukcijų sudarymo taisyklės vadinamos sintakse, o jų prasmę apibrėžiančios taisyklės – semantika.

Programavimo kalba užrašytų programų tiesiogiai kompiuteris negali atlikti. Yra specialios programos – transliatoriai, kurios išverčia programas į kompiuterinę kalbą, susijusią su konkretaus kompiuterio komandų sistema.

Kartais skiriamos žemo lygio (artimos kompiuterinėms kalboms) ir aukšto lygio programavimo kalbos. AAukšto lygio programavimo kalbos dar vadinamos algoritminėmis kalbomis – ypač tokios, kuriomis pateiktus algoritmus patogu skaityti žmogui.

Programavimo kalbų yra daug, dalis jų universalios, kitos – specializuotos, skirtos tam tikrų sričių uždaviniams spręsti. Žinomiausios aukšto lygio universalios programavimo kalbos: Algol, C, Delphi, Java, Pascal, Smaltalk.

Tikslas

Programavimo kalbos sukurtos tam, kad programuotojai galėtų žymiai paprasčiau rašyti programas, nei jie tai darytų programuodami mašinos kodu ar žemo lygio kalbomis (pvz., Asembleris). Dauguma programavimo kalbų palengvina ne tik programinio kodo rašymą, bet ir skaitymą, kas yypač svarbu dirbant komandoje.

Istorija

Kai tik atsirado pirmi (primityvūs) kompiuteriai, jiems pradėtos rašyti programos kalbomis, atitinkančiomis asemblerio kalbą.

1945 m. sukurta pirmoji žinoma kalba Plankalkül.

XX a. 6-ame dešimtmetyje susidarius palankioms sąlygoms, sukurta sąlyginai nemažai kalbų, tame tarpe Fortran (1954), Algol 58 (1958), LLisp (1959).

Vėliau prikurta dar daugiau įvairių tipų ir paskirties kalbų, žinomesnės: Cobol (1960), Simula (1962), BASIC (1964), (1968), Pascal (1971), C (1972), C++ (1983), Perl (1987), Java (1995), PHP (1997), C# (2000).

Nuo XX a. 6-ojo dešimtmečio vidurio dauguma kalbų kurtos ne iš naujo, o patobulinant prieš tai sukurtas kalbas.

Skirstymas

Programavimo kalbas galima skirstyti keletų būdų. Čia išvardinti kai kurie jų.

Pagal vykdymo tipą

Vykdymo tipas – būdas, kaip programos kodas paverčiamas kompiuteriui suprantamomis instrukcijomis ir vykdomas.

• Teorinės kalbos (nevykdomos)

• Kompiliuojama kalba

• Interpretuojama kalba

• Mišrios kalbos – naudojamas ir kompiliatorius ir interpretatorius

Pagal abstrakcijos lygį

Kuo kalba abstraktesnė, tuo aukštesnio lygio ji skaitoma.

• Mašininis kodas

• Žemo lygio kalbos

• Sisteminės kalbos

• Objektinės kalbos

Pagal tipą

• Funkcinės kalbos

• Procedūrinės kalbos

• Objektinės kalbos

• Loginės kalbos

• Skriptų kalbos

Pagal paskirtį

Kai kurios kalbos ggeriausiai tinka:

• Operacinių sistemų ir kompiliatorių programavimui

• Interneto svetainių programavimui

• Matematiniams skaičiavimams Realaus laiko programoms

1.1 Programavimo kalbos

Borland kompanija sukūrė C ir C++ programavimo kalbu kompiliatorių. Borland C++ kompiliatoriumi galima kurti programas, kurios skirtos darbui MS-DOS, Windows arba Windows NT operaciniu sistemų aplinkoje.

Kompiuteriuose yra naudojama dvejetaine skaičiavimo sistema. Vieni dvejetainiai skaičiai yra duomenys, kiti – komandos.

Komandų seka, kuria vykdo kompiuteris, yra vadinama programa.

Programos kuriamos naudojant programavimo kalbas. Pirmųjų programavimo kalbu komandos vadinamos „mašininiu kodu“, nes kompiuteris suprasdavo jas ttiesiogiai. Toks programavimas varginantis ir labai lėtas.

Žmogus lengvai supranta aukštojo lygio programavimo kalbas. Tačiau kompiuteris tiesiogiai nesupranta aukštojo lygio kalbu komandų. Jas reikia pervesti i kompiuterio komandų sistemą. Tam buvo sukurtos specialios programos – kompiliatoriai.

Kompiliatorius – tai programa, kuri programos pradini tekstą parašyta aukštojo lygio programavimo kalba, perveda i kompiuterio komandų sistema.

Kompiliatoriui baigus darbą, gaunama byla su plėtiniu .exe. Šis plėtinys reiškia vykdomąja byla. Vykdomoji byla – tai sukompiliuota ir paruošta vykdymui programa.

1.2 Žemojo lygio programavimo kalbos

Žemojo lygio programavimo kalbu komandos panašios i kompiuterio komandų sistema. Tokias programas yra sunku suprasti, kadangi net kelios eilutes gali buti skirtos tik vienam simboliui spausdinti. Tačiau programos, parašytos šiomis kalbomis, gali buti labai efektyvios. Žemojo lygio kalbos yra suderintos su tam tikro mikroprocesoriaus tipu.

1.3 Aukštojo lygio programavimo kalbos

Žmogus lengvai supranta aukštojo lygio programavimo kalbas. Aukštojo lygio programos mažiau priklauso nuo technines įrangos.

Programavimo kalbos yra kuriamos pagal ANSi standartus. Pvz.: FORTRAN, COBOL, Pascal.

1.4 C++ programavimo kalba

C++ – tai objektinio programavimo kalba, kuria sukūrė Bjornas Straustrupas. Ji gali buti naudojama tiek procedūrinėms, tiek ir objektinėms programoms kurti.

Borland C++ aplinkoje dirbama su projektais. Projektas – tai visos bylos, kurios sudaro programos vykdomąja byla.

Projektą sudaro šios bbylos:

.cpp – pradiniai programų tekstai;

.rc – resursu;

.def – apibrežciu;

.ide – projektas;

.h – pavadinimo;

.exe – vykdomasis.

C++ PROGRAMOS KŪRIMAS

2.1 Algoritmo sudarymo budai

Labai svarbi programavimo dalis yra algoritmo sudarymas. Naudojami du programų sudarymo būdai struktūrinis programavimas ir objektinis programavimas.

Struktūrinis programavimas:

• Suformuluojamas uždavinys, kuri turi atlikti kompiuteris.

• Nustatoma programos išvestis (išvedimas).

• Programa skirstoma i loginius žingsnius.

• Surenkamas programos tekstas.

• Programa kompiliuojama ir testuojama, ar dirba, kaip buvo planuota.

Objektinis programavimas:

• Suformuluojamas uždavinys, kuri turi atlikti kompiuteris.

• Apibrėžiami unikalieji objektai (meniu, langai, mygtukai ir t.t.).

• Nustatomi ryšiai tarp objektu.

• Sukuriamos objektu klases, apibrėžiami kintamieji, nurodantys visas galimas objektu būsenas.

• Apibrėžiami pranešimai, kuriuos gaus objektas ir paprogrames, kurias įvykdys objektas, gavęs atitinkamus pranešimus.

• Šiuos pranešimus valdančios paprogrames prijungiamos prie objektu klasių kaip funkcijos nariai.

• Kiekviena klase yra testuojama.

• Skelbiami šių klasių objektai.

• Apibrėžiamą pradine sistemos būseną.

• Kompiliuojama, komponuojama ir vykdoma programa.

2.2 Borland C++ tekstu redaktorius

Programos tekstas yra vadinamas programos pradiniu tekstu. I kompiuterio atminti jis yra įvedamas tekstu redaktoriumi. Prieš kompiliuojant pradinis tekstas turi buti užrašytas diske kaip byla su plėtiniu .cpp.

2.3 Borland C++ kompiliatorius

Įvestas programos tekstas turi bbuti sukompiliuotas. Kompiliavimo metu yra sukuriama vykdomoji programos byla su plėtiniu .exe.

C++ nuo kitu programavimo kalbu skiriasi tuo, kad prieš kompiliavimą programos tekstą apdoroja preprocesorius. Jei pradiniame programos tekste yra komandos, vadinamieji nurodymai preprocesoriui, tai jie vykdomi prieš kompiliavimą. Baigus programa kompiliuoti, gali buti programa komponuojama. I viena vykdomąja byla yra komponuojamos kelios, iš anksto sukomponuotos bylos.

Kompiliatoriaus rastos klaidos parodomos atskirame lange.

2.4 C++ programos formatas

Bendrasis programos formatas:

#include //nurodymai preprocesoriui

.

main () //pagrindinė procedūra

{ //bloko pradžia

. //programos kamienas

} //bloko pabaiga

2.5 C++ programos rašymo stilius

1. Programa turi būti lengvai skaitoma, tuomet ją lengviau taisyti.

2. Programos tekstą galima pradėti rašyti bet kuria pozicija.

3. Programos dalys viena nuo kitos skiriamos tuščiomis eilutėmis.

4. Pirmosios programos eilutės pradedamos rašyti pirmąja pozicija, o visas programos kamienas pastumiamas į dešinę.

5. Visi rezervuoti žodžiai ir didesnė programos dalis yra rašoma mažosiomis raidėmis.

6. Globaliųjų kintamųjų ir konstantų vardai yra rašomi didžiosiomis raidėmis.

7. Tik klasių, funkcijų – konstruktorių ir funkcijų – destruktorių vardų pirmoji raidė yra didžioji.

2.6 Funkcija main() ir figūriniai skliausteliai

C++ programos tekste privalo būti šios eilutės:

main()

{

}

Programos dalis, kuri rašoma už funkcijos main() atidarančiojo figūrinio skliaustelio, yra

vadinama pagrindine funkcija. C++ programoje gali būti ir kitų funkcijų, kurios rašomos prieš funkciją main(). Programos dalis, ribota figūriniais skliausteliais, vadinama bloku. Visi programos sakiniai baigiami kabliataškiu.