Изворни код
Извршење програма |
---|
Опште теме |
Специфична дужина трајања |
|
У рачунарству, изворни код (енгл. Source code) је колекција компјутерских инструкција написана на неком људски-читљивом програмском језику.[1] Изворни код програма је специјално дизајниран за рад програмера који прецизира акције које ће обављати са компјутера углавном писањем кодова. Изворни код је често трансформисан од стране програма преводиоца у машински језик ниског нивоа који је разумљив компјутеру. Машински код може бити сачуван за касније извршење. Алтернативно, интерпретатор може да се користи за анализу и извршавање излазног изворног кода програма директно у пролазу.
Већина рачунарских апликација су распоређене у облику који укључује извршне датотеке, али не њиховог изворног кода. Уколико би изворни код био укључен, било би корисно кориснику, програмеру, или администратору система, који би желели да измене програм или да разумеју како ради.
Поред својих машински читљивих облика, изворни код се такође у књигама и другим медијима; често у облику малих code snippets, али повремено комплетан код базе; добро познати случај је изворни код ПГП.
Дефиниције
[уреди | уреди извор]Пројекат линуксних информација дефинише изворни код као:[2]
Изворни код (такође познат као извор или код) је верзија софтвера, као што је првобитно човек написао (т.ј. откуцао на компјутеру) у текстуалном (тј људски читљиви алфанумерички знакови).
Појам изворног кода може се узети шире, да обухвати машински код и ознаке у графичким језицима, од којих ниједан није текстуалан у ствари. Пример из чланка представљен на годишњој конференцији ИЕЕЕ и на Анализи и Манипулацији Изворног Кода:[3]
Ради јасноће ’изворног кода’ се узима да значи било који потпуни извршни опис софтверског система. Због тога се тумачи тако да укључује машински код, језик врло високог нивоа и извршне графичке приказе система.[4]
Често постоји неколико корака програмског превода или смањивање између оригиналног изворног кода који је куцао човек и извршног програма. Док неки тврде да средњи фајл "није прави извор код и не рачуна као изворни код", остали су пронашли за згодно згодно да свака средња датотека буде повезана као изворни код за следећи корак.
Историја
[уреди | уреди извор]Први програми за меморије рачунара су улазили бинарно кроз предње прекидаче на рачунару. Ова прва генерација програмских језика није правила разлику између изворног и машинског језика.
Када је IBM први понудио софтвер за рад са машином, изворни код је обезбеђен без додатних трошкова. У то време, трошкови развоја и подршке софтвера су били укључени у цену хардвера. Деценијама, IBM је дистрибуирао изворни код са лиценцама софтвера производа, све до 1983. године. Већина првих компјутерских часописа је објавило изворни код, као тип програма.[5]
Повремено је објављиван цео изворни код у великом програму разних књига, као што су "Computers & Typesetting, Volume B: Текс: the Program", "ПГП изворни код и интернали", "PC Брза скрипта" и "uC/OS : "The Real-Time Kernel".
Организација
[уреди | уреди извор]Изворни код који представља програм се обично одржава у једном или више текстуалних фајлова који се налазе на хард диску рачунара ; Обично ови фајлови су пажљиво уређени унутар директоријума, познатији као изворно дрво. Изворни код се такође може забележити у базу података (као што је уобичајено за ускладиштене процедуре) или другде.
Изворни код одређеног дела софтвера може бити у једној датотеци или више датотека. Иако је пракса неуобичајена, изворни код програма може бити писан у различитим програмским језицима.[6] На пример, програм написан пре свега у програмском језику C, можда има делове писане на асемблеру за потребе оптимизације. Такође је могуће да неке компоненте делова софтвера буду састављене и написане одвојено, у произвољном програмском језику, а касније интегрисани у софтвер помоћу технике назване библиотекарско повезивање. То је случај у неким језицима, као што је Јава: свака класа је састављена посебно у датотеку.
Још један метод је да се главни програм стави за преводиоца програмског језика, или дизајниран специјално за примену питања или опште намене, а затим написати већи део стварне функционалности корисника као макро-инструкције или других облика додатака на том језику, као приступ на пример текстуалном лектору ГНУ Емакс.
База кодова пројекта програмирања је већа колекција свих изворних кодова свих програма који чине пројекат. Она је постала уобичајена пракса за одржавање кода базе у верзији контролног система. Умерено комплексан софтвер обично захтева компилацију окупљања неколико, понекад десетине или чак стотине, различитих фајлова изворних кодова. У овим случајевима, упутство за компилације, као што је "Мејкфајл", укључени су са изворним кодом. Ово описује односе између кода изворних датотека, а садрже информације о томе како су састављене.
Систем ревизије је још један инструмент који се често користи од стране програмера за одржавање изворног кода.
Намене
[уреди | уреди извор]Изворни код се углавном користи као улаз у процесу који ствара извршни програм (нпр. који је састављен или интерпретиран). Такође се користи као метод комуникације алгоритмима међу људима (нпр. code snippets у књигама).
Програмери често сматрају корисним да се преиспита постојећи изворни код како би се упознали са техникама програмирања. Дељење изворног кода између програмера се често наводи као фактор који доприноси сазревању њихових знања из програмирања. Неки људи сматрају изворни код као експресивни уметнички медији.
Софтвер за портове других платформи није могућ без изворног кода. Без изворног кода за одређени део софтвера, преносивост је скупа. Могуће опције преносивости укључују бинарни превод и имитацију оригиналне платформе.
Декомпилација извршног програма може да се користи за генерисање изворног кода, било у асемблеру или на језику високог нивоа.
Програмери често прилагођавају изворни код из једног дела софтвера за коришћење у другим пројектима. Овај концепт је познат као софтверска употребљивост.
Лиценцирање
[уреди | уреди извор]Софтвер, и пратећи изворни код, обично спадају у једну од две парадигме за издавање лиценци : отворени код и софтвер у власништву.
Уопштено говорећи, софтвер је отворен извор ако је изворни код слободан да се користи, дистрибуира, модификује и проучава, а власништво ако се изворни код чува у тајности, или је у приватном власништву и ограничен. Први софтверска лиценца је објавила и експлицитно дала слободу - ГНУ-ова општа јавна лиценца 1989. године. ГНУ ГПЛ је првобитно био намењен за коришћење са ГНУ оперативним системом.
За софтвер у власништву, одредбе различитих закона о ауторским правима, пословна тајна и патенти су коришћени да би изворни код био затворен. Осим тога, многи делови малопродаје софтвера долазе са уговора о лиценцирању за крајње кориснике (ЕУЛА) која обично забрањује декомпилацију, обрнуто инжењерство, анализе, измене или заобилажење заштите од копирања. Врсте изворног кода заштите - изван традиционалних компилатора на објектни код - укључују шифрирање, маскирање кода или морфоза кода.
Правна питања у Сједињеним Америчким Државама
[уреди | уреди извор]2003. судски поступак у САД је пресудио да изворни код треба сматрати уставом заштићен облик слободе говора. Заговорници слободе говора, су водили расправу о томе како изворни код преноси информације програмерима, пише на разумљивом језику и може се користити за разне уметничке тежње, самим тим је заштићен облик комуникације.
Један од првих судских случајева који се односе на природу изворног кода као слобода говора, био је случај професора математичког универзитета Калифорније, Дена Бернштајна, који је објавио на интернету изворни код за енкрипцију програма који је сам направио. У то време, алгоритми су класификовани као "муниција" од стране Сједињених Америчких Држава; самим тим се њихов извоз другим земљама сматрало проблемом националне безбедности и морали су да буду одобрени од стране Стејт Департмента. Компанија - Фондација за електронске границе је тужила америчку владу у Бернштајново име; Суд је пресудио да је изворни код слобода говора и под заштитом Првог амандмана.
Квалитет
[уреди | уреди извор]Начин на који је програм написан може имати важне последице за његова одржавања. Конвенције кодирања, које наглашавају читљивост и неке конвенције специфичне за језик, имају за циљ одржавање софтвера изворног кода, који подразумева отклањање грешака и ажурирање. Остали приоритети, као што су брзина извршења програма, односно способност да се састави програм за више архитектура, често чине читљивост кода мање важним, јер квалитет кода углавном зависи од његове сврхе.
Види још
[уреди | уреди извор]Референце
[уреди | уреди извор]- ^ „Programming in C: A Tutorial” (PDF). Архивирано из оригинала (PDF) 09. 05. 2008. г. Приступљено 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.
Литература
[уреди | уреди извор]- Goetz, Martin; Schneider, Peter (1988). Computerworld. IDG Enterprise.
Спољашње везе
[уреди | уреди извор]- 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. Приступљено 24. 04. 2009.
- Same program written in multiple languages