Lähtekood

Allikas: Vikipeedia
Näide C-s kirjutatud koodist integreeritud arenduskeskkonnas

Lähtekood (kõnekeeles kood) on programmeerimiskeeles kirjutatud tekst, mis kirjeldab arvutile antavaid käske. Lähtekoodi on võimalik kompilaatori või assembleri abil masinkoodiks kompileerida, muutes selle arvutile arusaadavaks programmiks. Samuti on seda võimalik interpretaatori abil otse käivitada. Lähtekoodi all mõistetakse mõnel juhul ka märgistuskeeles kirjutatud teksti, näiteks veebilehe HTML-koodi.

Vabalt kättesaadavat ja muudetavat lähtekoodi nimetatakse avatud lähtekoodiks. Lähtekood on kasulik programmeerija, süsteemiadministraatori või kasutaja jaoks, kelle eesmärk on programmi muuta või mõista, kuidas see täpsemalt toimib.

Töine korraldamine[muuda | muuda lähteteksti]

Versioonihaldustarkvara TortoiseHg

Enamjaolt jagatakse suuremate programmide kood tarkvara loogilisest ülesehitusest lähtudes eraldi failidesse. Seda tehakse selleks, et programmi struktuuris oleks lihtsam orienteeruda ja ei peaks iga väiksegi muudatuse tõttu uuesti kompileerima tervet programmikoodi, vaid ainult muudetud osa. Koodifailid saab omakorda paigutada kaustadesse.

Programmi loomiseks vajalikud failid (sh lähtekood) moodustavad tarkvaraprojekti. Projektil võib lisaks olla faile, mis viitavad projekti kuuluvatele failidele ja kirjeldavad nende kompileerimiseks vajalikke samme. Sellised failid on näiteks Makefile ehitussüsteemis Make või .csproj-fail ehitussüsteemis MSBuild.

Ühe projekti raames võib olla kasutusel mitu erinevat programmeerimiskeelt. Koodifaili laiend näitab, mis keelega on tegu, nt .java (Java), .py (Python), .js (JavaScript). Erinevates keeltes kirjutatud komponente saab kompileerida objektkoodiks ning seejärel ühendada linkuri abil ühtseks programmiks. Ka ühe koodifaili raames saab mõnel juhul kasutada erinevaid keeli, näiteks C kood võib jõudluse parandamiseks sisaldada assemblerit.

Veel üks meetod programmide loomiseks on teha peaprogramm, mis töötleb muus keeles kirjutatud alamprogrammide lähtekoodi. Töödeldav keel võib olla mitme otstarbega või spetsiifiliselt ühe rakenduse jaoks loodud ehk domeenispetsiifiline keel.

Versioonihaldus[muuda | muuda lähteteksti]

Lähtekoodi hoitakse tavaliselt arvuti kõvakettal. Et lihtsustada koodis tehtud muudatuste haldamist, kasutatakse versioonihaldustarkvara. Versioonihaldus lubab mitmel programmeerijal töötada sama koodiga ja laadida kõvakettal tehtud muudatused üles ühtsesse koodihoidlasse, kust saab teiste muudatusi ka alla laadida. Kui tehtavad muudatused satuvad konflikti mõne muu programmeerija muudatustega, siis pakub versioonihaldus võimalusi konfliktide lahendamiseks.

Loetavus[muuda | muuda lähteteksti]

Lähtekoodi loetavus viitab sellele, kui lihtsasti inimene kirjutatud koodi eesmärgist, toimimisest, kontrollist ja struktuurist aru saab. Seega on loetavus tähtis eelkõige inimese, mitte kompilaatori jaoks.

Tihtipeale mõjutab koodi ülesehitus eeltoodud aspektide kvaliteeti, kasutusvõimalust ja püsivust.

Lähtekoodi hea loetavus on tähtis eelkõige programmeerijatele, kes veedavad suurema osa oma ajast koodi lugedes, proovides sellest aru saada ning seejärel eksisteerivat lähtekoodi modifitseerida, selle asemel, et uus kood välja mõelda ning kirjutada. Halvasti loetav kood võib pahatihti põhjustada programmivigu ja koodi duplikaate.

Tagatipuks kõigele järeldasid 1982. aastal James L. Elshoff ja Michael Marcotty oma uurimistöö käigus [Veeb 1], et isegi kõige väiksemad muutused lähtekoodi ülesehituses – selle paar rida lühemaks muutmine – lühendasid drastiliselt aega, mida programmeerija veetis proovides koodist aru saada.

Järjekindla lähtekoodi kirjutamise stiili järgimine on samuti kasulik ning parandab loetavust.

Vaatamata sellele, mis programmeerimiskeel kasutusel on, tuleks arvesse võtta selliseid aspekte nagu näiteks:

  • koodiga kaasnevad ja abistavad kommentaarid/ selgitused programmeerija poolt
  • indentation, tühikute järgimine
  • erinevate koodi osade eraldamine üksteisest (plokkide järgimine)
  • muutujate, määrajate ja protseduuride nimetuste kirjapanemine objektide kasutusele võtmisel


Lähtekoodi tüübid[muuda | muuda lähteteksti]

Linux on näide tarkvarakogust, mis põhineb avatud lähtekoodil, mida kõik kasutajad muuta võivad.

Märgistuskeeled ja programmeerimiskeeled on sarnased selle poolest, et mõlemad kirjeldavad ülesandeid, mida arvuti täitma peab. Näiteks märgistuskeeltes HTML ja CSS kirjutatud veebilehe lähtekood määrab, milline on selle veebilehe sisu ja kujundus.

Legaalselt eksisteerib kaks põhimudelit, mis on tihedalt seotud lähtekoodi omandiõiguse ja jaotusega.

Esimene, tasuta avatud lähtekoodil põhinev tarkvara võib olla avalikkusele kättesaadav nii avatud lähtekoodi litsendilepingu all kui ka ilma.

Avatud lähtekoodi litsendilepingu eesmärk on säilitada mõned elementaarsed õigused autori jaoks. Osad selletaolised avatud koodi litsendilepingul põhinevad kokkulepped limiteerivad muutuste ja modifitseerimisvõimaluste hulka, mida saab lähtekoodis läbi viia[Veeb 2].

Teised avatud lähtekoodi litsendilepingu nõuded märgivad ära vaid seda, et iga inimene, kes koodi muuta soovib, peab viitama algsele autorile.

Tasuline ja kinnine lähtekood on teine lähtekoodiga seotud mudel. Privaatse lähtekoodi puhul ei tohi kasutajad dekompileerida käivitatavat faili või rakendust, et näha selle lähtekoodi.

Samuti on neil keelatud seda teiste kasutajatega jagada. Kinnise lähtekoodi põhimõtte on omaks võtnud enamik kommertstarkvara ja riistvara tootjatest, vaatamata sellele, et avatud lähtekoodil põhinevad rakendused ei ole sugugi ebapopulaarsemad ega vähem tulutoovad.

Ajalugu[muuda | muuda lähteteksti]

Matemaatik Ada Lovelace lõi 19. sajandil esimese "arvutiprogrammi" ja lähtekoodi.

Vaatamata sellele, et programmeerimiskeelte ilmumist võib märgata juba 2500 eKr loodud Sumerite abakuses, võib tõelise lähtekoodi teket attribueerida matemaatikule ja ühtlasi esimesele programmeerijale Ada Lovelace'ile.

Lovelace'i arvutiprogrammi, loodud Bernoulli numbrite jada arvutamiseks, avaldati esimest korda 1894. aastal ümberkirjutisena Bibliothèque Universelle de Genève'is. Koodi, sealhulgas lähtekoodi ajaloos on tähtis tegelane John Von Neumann, kes töötas 1945. aastal Institute for Advanced Study jaoks. Von Neumann töötas välja kaks olulist mõistet, mis mõjutavad tänase päevani programmeerimiskeeli. Esimene oli tuntud "jagatud programmi tehnika" mõiste. Eelneva tehnika teoreetiline pool märkis ära, et arvuti riistvara peaks olema lihtne, ning seda ei peaks ja ei tohiks iga programmi jaoks eraldi kirjutama hakkama. Selle asemel tuleks raskemaid juhiseid kasutada lihtsa riistvara kontrollimiseks, mis võimaldab eelnevat palju kiiremini ümber programmeerida.

Neumanni poolt loodud teine mõiste on samuti ääretult tähtis programmeerimiskeelte ajaloos. Von Neumann nimetas seda "tingimisi kontrolli" üleandmiseks, mille mõiste julgustas alamprogrammide loomist, kui ka väikeste koodiplokkide kasutust, kust arvuti loeb informatsiooni korrektselt, kuid eelkõige suvalises järjekorras, läbimata kronoloogilist koodi lugemist.

Tingimisi kontrolli üleandmise idee teine osa märkis, et arvuti kood põhineb loogilistel avaldustel nagu IF (väljend), THEN ja FOR.

Aastaid hiljem, 1970. aastatel ja 1980. aastate alguses töödeldi välja uus programmeerimismeetod, mis sai varakult nimeks objektorienteeritud programmeerimine (Objektorienteeritud programmeerimine, või OOP). Objektorienteeritud programmeerimine kasutab "objekte" – lihtsaid või raskeid andmestruktuure, mis koosnevad andmeväljadest ning meetoditest, nagu näiteks pärimine.

Bjarne Stroustrup'ile meeldis objektorienteeritud programmeerimise idee ning ta arendas välja pikendusi tuntud C programmeerimiskeelele, nimetades neid "klassidega C", seega C++, mis võeti esimest korda kasutusele lähtekoodina aastal 1983.

Objektorienteeritud programmeerimine.

Viimase neljakümne aasta jooksul on tulnud juurde hulganisti uusi programmeerimiskeeli, mis kasutusse võetuna moodustavad kõik lähtekoodi. Näiteid teistest lähtekoodi tüüpidest: Javascript, Python, HTML (mis ei ole programmeerimiskeel, aga kvalifitseerub sellegipoolest lähtekoodina), Perl jt.

Vaata ka[muuda | muuda lähteteksti]

Viited[muuda | muuda lähteteksti]

  1. James L. Elshoff , Michael Marcotty, Improving computer program readability to aid modification, Communications of the ACM, v.25 n.8, p.512-521, Aug 1982.
  2. Hanson, Gregory, and Susan Barwick. "What Are the Different Types of Source Code?" WiseGeek. Conjecture, 06 Dec. 2013. Web.

Välislingid[muuda | muuda lähteteksti]