C plus plus kui programmeerimiskeel: erinevus redaktsioonide vahel

Allikas: Hinnavaatlus.ee Wiki
Mine navigeerimisribaleMine otsikasti
Rida 61: Rida 61:
  
 
Enamus operatsioonisüsteeme tahavad C++i lähtekoodifailidele laiendeid. Kõige sagedasemini kasutatav on .cpp implementeeritavate ning .h päisefailide (deklaratsioonifailide) jaoks. Muud tuntud variatsioonid on .cc, .C, .cxx ja .c++. Näiteks LingitudNimistu.cpp ja LingitudNimistu.h
 
Enamus operatsioonisüsteeme tahavad C++i lähtekoodifailidele laiendeid. Kõige sagedasemini kasutatav on .cpp implementeeritavate ning .h päisefailide (deklaratsioonifailide) jaoks. Muud tuntud variatsioonid on .cc, .C, .cxx ja .c++. Näiteks LingitudNimistu.cpp ja LingitudNimistu.h
 +
 +
Väiksematel programmidel ei pruugi olla rohkem kui ainult üks lähtekoodi fail kuid suuremad programmid asetsevad laiali mööda paljusid faile. Programmide suurus ei ole aga ainus põhjus miks kood mitme faili vahel ära jagada - võtmeelement on modulaarsuse säilitamine nii strukturiseeritud kui objektiorienteeritud tarkvaradisainis. Kolmas põhjus on see, et kui programm paikneb mitmes failis, on lihtsam erinevad programmeerimisülesanded arendusrühma vahel ära jagada. Seejärel on kompileerimisaeg. Kui on tarvis algkoodi hiljem muuta, siis tuleb kompileerida ainult need failid millesse muutusi tehti.

Redaktsioon: 26. november 2005, kell 12:25

Mis on programmeerimiskeel?

Programmeerimiskeel millest räägime on C++, kõrgkeel. Sellel on võime suhelda otse mäluga ning selle tõttu tundub nagu vahekeel "madalate" ja "kõrg" keelte vahel. Muud kõrgkeeled sisaldavad Javat ja Fortrani.

Madalkeeled

Tuletades sõnast "kõrgkeel" sõna "madalkeel" saame keeled millele viidatakse kui masinkoodile või assemblerile. Vahe on selles, et arvutid suudavad mõista ainult nn "on" ja "off" signaale erinevatest lülititest (näiteks 1'd ja 0'd on binaarkood). Assemblerkeel võimaldab programmeerijatel kasutada sõnu ja sümboleid väljendamaks võrdväärseid binaarlauseid. Näiteks, kasutades sõnu ADD, MUL, JMP jne (selle asemel, et kasutada 0001, 0010, 0011 jne). Otseloomulikult pole olemas sümboleid ja sõnu binaarkoodis, seega peab arvuti transleerima assemblerkoodi binaarkoodiks. Translatsiooniaeg on minimaalne kuna mõlemad keeled on üksteisele üpris lähedased.

Kõrgkeeled

Programmid, mis on kirjutatud kõrgkeeltes, tuleb enne täitmist transleerida. See translatsioon on tihtipeale väga pikk protsess ning tulemuseks on ebatäiuslik kood, võrreldes käsitsi kirjutatud madalkeeltega. Enne kõrgkeelte hülgamist, vaatame lähemalt mõnda positiivset kõrgkeele külge ning mis on kõrgkeeltel mida madalkeeltel pole:

  • Võimas programmistruktuur: tsüklid, funktsioonid ja objektid - piiratud kasutuseda madalkeeltes, kuna nende olemasolu loetakse juba kõrgkeelte osaks. See tähendab seda, et iga struktuuri element tuleb transleerida madalkeelde.
  • Porditavus: kõrgkeeles kirjutatud programme saab täita erinevatel arvutitel võimalikult väheste või mitte ühegi muutuseta. Madalkeeled võivad aga kasutada ainult protsessori spetsiifilisi funktsioone ning viimased tuleb kirjutada ümber et kasutada sedasama programmi teises arvutis.
  • Kasutusmugavus: Paljud tööd mis võivad võtta tohutu hulga ridu assembleris, võivad olla palju lühemad kui kasutada funktsioone kõrgkeelte teekidest. Näiteks kõrgkeel Java on suuteline joonistama täiesti funktsionaalse akna umbes viie rea koodiga ent samasugune ülesanne Assembleris võtaks vähemalt neli korda nii palju.

Enamus kommertsarendajaid eelistavad kõrgkeeli programmi valmistamiseks ning siis optimiseerivad koodi assembleris. Selle peal me aga lähemalt ei peatu.

Programmi transleerimiseks on kaks võimalust - interpreteerimine ja kompileerimine. Interpreteerija on programm mis loeb kõrgkeeles kirjutatud programmi ning teeb mis öeldud. Teisisõnu transleeritakse programmi rida haaval ning seejärel need täidetakse.

Interpreteerimine on analoogne veebibrauseri ja HTML vahekorraga. Veebibrauser avab HTML faili ning seejärel joonistab rida-realt kõik ekraanile, transleerides HTML sildid käskudeks mis muudavad väljundit. Paljud skriptikeeled kasutavad interpreteerijaid.

C++ aga nõuab kompileerimist, kus terve programm konverteeritakse masinkoodi. See töö võtab kaua aega kuid tulemus on sõltumatu ükskõik millisest interpreeterist ning palju kiirem.

Java on nende kahe kombinatsioon (hübriid?), kompileerides algkoodi vahekoodiks mida kutsutakse "baitkood" ning viimane on seejärel suurema kiirusega interpreteeritud teise programmi poolt.

Kuigi need ülesanded võivad tunduda keerukad, enamuses programmeerimiskeskkondades (arenduskeskkonnad) on need sammud automatiseeritud. Tavaliselt tuleb ainult programm valmis kirjutada ning sisestada ainult üks käsk et programm kompileerida ning täita. Teisest küljest on jällegi hea teada mis taustal toimub. Kui midagi peaks valesti minema, saad välja nuputada mis see oli.

Mis on programm?

Programm on korraldustejada mis ütlevad arvutile kuidas mida teha. Juhendid võivad öelda arvutile kuidas matemaatikaprobleeme lahendada, saata e-maili või hoopis olla juhendid kuidas tegelane arvutimängus saab pihta. Arvuti järgib neid juhiseid ridahaaval algusest lõpuni.

Programmide tüübid

Tänapäeval on kasutuses palju erinevaid tüüpi programme ning kõik on valmistatud kirjutades arvuti jaoks juhiseid. Näiteks:

operatsioonisüsteem
See programm vastutab selle eest, et kõik töötaks nagu peab. MS Windows, Linux ja Mac OS on kõgest paar näidet.
tekstiredaktor
Võimaldab trükkida ja väljundada kirju jms, näiteks OpenOffice.org Writer või MS Word.
veebibrauser
Loeb veebilehti ning kuvab neid ekraanil, Firefox ja Internet Exploiter/Exploder
arvutimängud
palju erinevaid mänge arvutile, mario, solitaire, unreal tournament...

Juhiste tüübid

Juhised (või käsud) on erinevad sõltuvalt programmeerimiskeelest kuid mõned lihtsad funktsioonid ilmnevad pea igas keeles:

sisend
Hangib infot, kas klaviatuurilt, failist või mõnest seadmest.
väljund
Kuvab andmeid ekraanil või saadab nad mõnda seadmesse.
matemaatika/algoritmid
Sooritab lihtsaid matemaatilisi operatsioone nagu liitmine ja korrutamine.
testimine
Kontrollib konkreetseid olukordi ning käivitab vastava jada lauseid.
kordus
Kordab mõnda ülesannet, tavaliselt erinevustega.

Usu või ära usu, see on põhimõtteliselt kõik! Ükskõik milline programm mida sa oled eales kasutanud, ükskõik kui keerukas, on ehitatud üles funktsioonidele mis näevad välja enamvähem sellised. Seega, üks viis programmeerimist kirjeldada on kui suure, keeruka ülesande järjest väiksemateks ülesanneteks jagamine kuniks alamülesanded on piisavalt lihtsad et neid sooritada ühega nendest lihtsatest funktsioonidest.

Algkoodi organiseerimine

Iga programmeerimiskeele puhul on üks ühine punkt - programmeerimine sisaldab endas nii abstraktsete kontseptsioonide ümberkorraldamist töötavateks mudeliteks ning nonde mudelite konversiooni lähtekoodi failiks mida saab seejärel kasutada kompileerijaga ning salvestada hilisemaks muutmiseks.

Lähtekood

Lähtekood on tekst lähtekoodifailis. C++ algkood on tõstutundlik. Sellest aga hiljem.

Lähtekoodifail

Enamus operatsioonisüsteeme tahavad C++i lähtekoodifailidele laiendeid. Kõige sagedasemini kasutatav on .cpp implementeeritavate ning .h päisefailide (deklaratsioonifailide) jaoks. Muud tuntud variatsioonid on .cc, .C, .cxx ja .c++. Näiteks LingitudNimistu.cpp ja LingitudNimistu.h

Väiksematel programmidel ei pruugi olla rohkem kui ainult üks lähtekoodi fail kuid suuremad programmid asetsevad laiali mööda paljusid faile. Programmide suurus ei ole aga ainus põhjus miks kood mitme faili vahel ära jagada - võtmeelement on modulaarsuse säilitamine nii strukturiseeritud kui objektiorienteeritud tarkvaradisainis. Kolmas põhjus on see, et kui programm paikneb mitmes failis, on lihtsam erinevad programmeerimisülesanded arendusrühma vahel ära jagada. Seejärel on kompileerimisaeg. Kui on tarvis algkoodi hiljem muuta, siis tuleb kompileerida ainult need failid millesse muutusi tehti.