Izvorni kod
Izvršenje programa |
---|
Opšte teme |
Specifična dužina trajanja |
|
U računarstvu, izvorni kod (engl. Source code) je kolekcija kompjuterskih instrukcija napisana na nekom ljudski-čitljivom programskom jeziku.[1] Izvorni kod programa je specijalno dizajniran za rad programera koji precizira akcije koje će obavljati sa kompjutera uglavnom pisanjem kodova. Izvorni kod je često transformisan od strane programa prevodioca u mašinski jezik niskog nivoa koji je razumljiv kompjuteru. Mašinski kod može biti sačuvan za kasnije izvršenje. Alternativno, interpretator može da se koristi za analizu i izvršavanje izlaznog izvornog koda programa direktno u prolazu.
Većina računarskih aplikacija su raspoređene u obliku koji uključuje izvršne datoteke, ali ne njihovog izvornog koda. Ukoliko bi izvorni kod bio uključen, bilo bi korisno korisniku, programeru, ili administratoru sistema, koji bi želeli da izmene program ili da razumeju kako radi.
Pored svojih mašinski čitljivih oblika, izvorni kod se takođe u knjigama i drugim medijima; često u obliku malih code snippets, ali povremeno kompletan kod baze; dobro poznati slučaj je izvorni kod PGP.
Definicije
[uredi | uredi izvor]Projekat linuksnih informacija definiše izvorni kod kao:[2]
Izvorni kod (takođe poznat kao izvor ili kod) je verzija softvera, kao što je prvobitno čovek napisao (t.j. otkucao na kompjuteru) u tekstualnom (tj ljudski čitljivi alfanumerički znakovi).
Pojam izvornog koda može se uzeti šire, da obuhvati mašinski kod i oznake u grafičkim jezicima, od kojih nijedan nije tekstualan u stvari. Primer iz članka predstavljen na godišnjoj konferenciji IEEE i na Analizi i Manipulaciji Izvornog Koda:[3]
Radi jasnoće ’izvornog koda’ se uzima da znači bilo koji potpuni izvršni opis softverskog sistema. Zbog toga se tumači tako da uključuje mašinski kod, jezik vrlo visokog nivoa i izvršne grafičke prikaze sistema.[4]
Često postoji nekoliko koraka programskog prevoda ili smanjivanje između originalnog izvornog koda koji je kucao čovek i izvršnog programa. Dok neki tvrde da srednji fajl "nije pravi izvor kod i ne računa kao izvorni kod", ostali su pronašli za zgodno zgodno da svaka srednja datoteka bude povezana kao izvorni kod za sledeći korak.
Istorija
[uredi | uredi izvor]Prvi programi za memorije računara su ulazili binarno kroz prednje prekidače na računaru. Ova prva generacija programskih jezika nije pravila razliku između izvornog i mašinskog jezika.
Kada je IBM prvi ponudio softver za rad sa mašinom, izvorni kod je obezbeđen bez dodatnih troškova. U to vreme, troškovi razvoja i podrške softvera su bili uključeni u cenu hardvera. Decenijama, IBM je distribuirao izvorni kod sa licencama softvera proizvoda, sve do 1983. godine. Većina prvih kompjuterskih časopisa je objavilo izvorni kod, kao tip programa.[5]
Povremeno je objavljivan ceo izvorni kod u velikom programu raznih knjiga, kao što su "Computers & Typesetting, Volume B: Teks: the Program", "PGP izvorni kod i internali", "PC Brza skripta" i "uC/OS : "The Real-Time Kernel".
Organizacija
[uredi | uredi izvor]Izvorni kod koji predstavlja program se obično održava u jednom ili više tekstualnih fajlova koji se nalaze na hard disku računara ; Obično ovi fajlovi su pažljivo uređeni unutar direktorijuma, poznatiji kao izvorno drvo. Izvorni kod se takođe može zabeležiti u bazu podataka (kao što je uobičajeno za uskladištene procedure) ili drugde.
Izvorni kod određenog dela softvera može biti u jednoj datoteci ili više datoteka. Iako je praksa neuobičajena, izvorni kod programa može biti pisan u različitim programskim jezicima.[6] Na primer, program napisan pre svega u programskom jeziku C, možda ima delove pisane na asembleru za potrebe optimizacije. Takođe je moguće da neke komponente delova softvera budu sastavljene i napisane odvojeno, u proizvoljnom programskom jeziku, a kasnije integrisani u softver pomoću tehnike nazvane bibliotekarsko povezivanje. To je slučaj u nekim jezicima, kao što je Java: svaka klasa je sastavljena posebno u datoteku.
Još jedan metod je da se glavni program stavi za prevodioca programskog jezika, ili dizajniran specijalno za primenu pitanja ili opšte namene, a zatim napisati veći deo stvarne funkcionalnosti korisnika kao makro-instrukcije ili drugih oblika dodataka na tom jeziku, kao pristup na primer tekstualnom lektoru GNU Emaks.
Baza kodova projekta programiranja je veća kolekcija svih izvornih kodova svih programa koji čine projekat. Ona je postala uobičajena praksa za održavanje koda baze u verziji kontrolnog sistema. Umereno kompleksan softver obično zahteva kompilaciju okupljanja nekoliko, ponekad desetine ili čak stotine, različitih fajlova izvornih kodova. U ovim slučajevima, uputstvo za kompilacije, kao što je "Mejkfajl", uključeni su sa izvornim kodom. Ovo opisuje odnose između koda izvornih datoteka, a sadrže informacije o tome kako su sastavljene.
Sistem revizije je još jedan instrument koji se često koristi od strane programera za održavanje izvornog koda.
Namene
[uredi | uredi izvor]Izvorni kod se uglavnom koristi kao ulaz u procesu koji stvara izvršni program (npr. koji je sastavljen ili interpretiran). Takođe se koristi kao metod komunikacije algoritmima među ljudima (npr. code snippets u knjigama).
Programeri često smatraju korisnim da se preispita postojeći izvorni kod kako bi se upoznali sa tehnikama programiranja. Deljenje izvornog koda između programera se često navodi kao faktor koji doprinosi sazrevanju njihovih znanja iz programiranja. Neki ljudi smatraju izvorni kod kao ekspresivni umetnički mediji.
Softver za portove drugih platformi nije moguć bez izvornog koda. Bez izvornog koda za određeni deo softvera, prenosivost je skupa. Moguće opcije prenosivosti uključuju binarni prevod i imitaciju originalne platforme.
Dekompilacija izvršnog programa može da se koristi za generisanje izvornog koda, bilo u asembleru ili na jeziku visokog nivoa.
Programeri često prilagođavaju izvorni kod iz jednog dela softvera za korišćenje u drugim projektima. Ovaj koncept je poznat kao softverska upotrebljivost.
Licenciranje
[uredi | uredi izvor]Softver, i prateći izvorni kod, obično spadaju u jednu od dve paradigme za izdavanje licenci : otvoreni kod i softver u vlasništvu.
Uopšteno govoreći, softver je otvoren izvor ako je izvorni kod slobodan da se koristi, distribuira, modifikuje i proučava, a vlasništvo ako se izvorni kod čuva u tajnosti, ili je u privatnom vlasništvu i ograničen. Prvi softverska licenca je objavila i eksplicitno dala slobodu - GNU-ova opšta javna licenca 1989. godine. GNU GPL je prvobitno bio namenjen za korišćenje sa GNU operativnim sistemom.
Za softver u vlasništvu, odredbe različitih zakona o autorskim pravima, poslovna tajna i patenti su korišćeni da bi izvorni kod bio zatvoren. Osim toga, mnogi delovi maloprodaje softvera dolaze sa ugovora o licenciranju za krajnje korisnike (EULA) koja obično zabranjuje dekompilaciju, obrnuto inženjerstvo, analize, izmene ili zaobilaženje zaštite od kopiranja. Vrste izvornog koda zaštite - izvan tradicionalnih kompilatora na objektni kod - uključuju šifriranje, maskiranje koda ili morfoza koda.
Pravna pitanja u Sjedinjenim Američkim Državama
[uredi | uredi izvor]2003. sudski postupak u SAD je presudio da izvorni kod treba smatrati ustavom zaštićen oblik slobode govora. Zagovornici slobode govora, su vodili raspravu o tome kako izvorni kod prenosi informacije programerima, piše na razumljivom jeziku i može se koristiti za razne umetničke težnje, samim tim je zaštićen oblik komunikacije.
Jedan od prvih sudskih slučajeva koji se odnose na prirodu izvornog koda kao sloboda govora, bio je slučaj profesora matematičkog univerziteta Kalifornije, Dena Bernštajna, koji je objavio na internetu izvorni kod za enkripciju programa koji je sam napravio. U to vreme, algoritmi su klasifikovani kao "municija" od strane Sjedinjenih Američkih Država; samim tim se njihov izvoz drugim zemljama smatralo problemom nacionalne bezbednosti i morali su da budu odobreni od strane Stejt Departmenta. Kompanija - Fondacija za elektronske granice je tužila američku vladu u Bernštajnovo ime; Sud je presudio da je izvorni kod sloboda govora i pod zaštitom Prvog amandmana.
Kvalitet
[uredi | uredi izvor]Način na koji je program napisan može imati važne posledice za njegova održavanja. Konvencije kodiranja, koje naglašavaju čitljivost i neke konvencije specifične za jezik, imaju za cilj održavanje softvera izvornog koda, koji podrazumeva otklanjanje grešaka i ažuriranje. Ostali prioriteti, kao što su brzina izvršenja programa, odnosno sposobnost da se sastavi program za više arhitektura, često čine čitljivost koda manje važnim, jer kvalitet koda uglavnom zavisi od njegove svrhe.
Vidi još
[uredi | uredi izvor]Reference
[uredi | uredi izvor]- ^ „Programming in C: A Tutorial” (PDF). Arhivirano iz originala (PDF) 09. 05. 2008. g. Pristupljeno 01. 01. 2017.
- ^ The Linux Information Project. "Source Code Definition".
- ^ SCAM Working Conference, 2001–2010.
- ^ Why Source Code Analysis and Manipulation Will Always Be Important by Mark Harman, 10th IEEE International Working Conference on Source Code Analysis and Manipulation (SCAM 2010). Timişoara, Romania, 12–13 September 2010.
- ^ Martin Goetz, Peter Schneider. "Object-code only: Is IBM playing fair?". p.
- ^ „Extending and Embedding the Python Interpreter”. docs.python.org.
Literatura
[uredi | uredi izvor]- Goetz, Martin; Schneider, Peter (1988). Computerworld. IDG Enterprise.
Spoljašnje veze
[uredi | uredi izvor]- Source Code Definition by The Linux Information Project (LINFO)
- „Obligatory accreditation system for IT security products (2008-09-22), may start from May 2009, reported by Yomiuri on 2009-04-24.”. MetaFilter.com. Pristupljeno 24. 04. 2009.
- Same program written in multiple languages