Портовање — разлика између измена

Садржај обрисан Садржај додат
м Робот: додато {{subst:User:Autobot/sandbox2}}
Поправљена граматика и подигнута јасноћа чланка на виши ниво.
Ред 1:
{{loš seminarski}}
У [[Инжењеринг софтвера|софтверском инжењерству]], '''портовање''' је процес прилагођавања софтвера, тако да извршни [[рачунарски програм|програм]] може бити креиран за рачунарско окружење које је различито од оног за који је првобитно пројектовано (нпр. другачији [[процесор]], [[оперативни систем]], или [[библиотека|библиотеке]] трећег лица). Овај термин се такође користи када се софтвер /или хардвер мења како би био употребљив у различитим срединама. 
 
Софтвер је [[преносиво|преносив]] када су трошкови портовања на нову платформу знатно мањи од цене његовог писања од нуле. НижиШто трошковије портирањецена софтвера,портовања програма нижа у односу на трошковецену имплементације, вишесофтвер преносивосе бисматра требало давише будепреносивим.
 
== Етимологија ==
Термин "Порт" је изведен из италијанског [[портаре]], што значи "да носе". Када код није компатибилан са одређеним [[Оперативни систем|оперативним системом]] или [[Архитектура рачунара|архитектуром]], код мора бити "пренешен" на нови систем. 
 
Термин се обично не примењује у процесу прилагођавања софтвера који ће покретати са мање меморије на истом процесору и оперативном систему, нити се примењује на поновном писању изворног кода на другом [[Програмски језик|језику]] (тј. језик конверзије или превода). 
 
Програмери често тврде да је софтвер који они пишу је [[преносиво|преносив]], што значи да је мало напора је потребно да би се прилагодио новој средини. Количина напора која је стварно потребна зависи од неколико фактора, укључујући меру у којој се оригинално окружење (изворне платформа извораплатформе) разликује од новог окружења (циљне циљна платформаплатформе) , искуство оригиналних аутора у знању који [[програмски језик]] да конструишу и треће лице библиотека је неуобичајено да буде преносиво, а количина напора уложена од стране оригиналних аутора је само коришћење преносивих конструкција ( платформе специфичних конструкција често дају јефтиније решење). 
 
== Историја ==
 Број значајно различитих процесора и оперативних система који се користе на десктопу данас је много мањи него у прошлости. Доминација [[x86]] [[Скуп инструкција|архитектуре]] значи да се већина десктоп софтвера никада не користи на другом ЦПУ[[Процесор|процесору]]. У том истом тржишту, избор оперативних система је ефективно смањен на три : [[Мајкрософт виндоус|Мајкрософт Виндоус]], [[OS X]] и BSD [[Јуникс]]/[[Линукс]]. Међутим, у [[Уграђени систем|уграђеном систему]] тржишта, [[преносивост]] остаје значајан проблем.
 
Међународни стандарди , попут оних које је прогласио [[Међународна организација за стандардизацију|ИСО]] , у великој мери олакшавају портовање наводећи детаље рачунарског окружења на начин којим се смањује разлика између различитих [[Софтверска платформа|платформи]] стандарда у складу. Писање софтверсофтвера који остаје у границама утврђеним овим стандардима представља практичан, иако нетривијалан напор. ПортиовањеПортовање таквог програма између две платформе за стандардизацију-компатибилну (као што су [[Посикс|POSIX.1]]) може бити само питање учитавања изворног кода и [[Компилатор|рекомпајлирање]] на новој платформи. Међутим , практичари често сматрају да су потребне разне мање корекције, због суптилне разлике платформи. Већина стандарда пати од "сиве зоне" у којој разлике у тумачењу стандарда доводе до малих варијација са платформе на платформу. 
 
Такође постоји све већи број алата за олакшавање портовања, као што је [[ГНУ колекција компајлера|ГНУ Компајлер Колекција]], који обезбеђује доследне програмске језике на различитим платформама, и [[Аутоматска подешавања]], која аутоматизује откривање мањих варијација у окружењу и прилагођавање софтвера сходно томе, пре компилације. 
 
Компајлери за неке високепрограмске нивоејезике програмских језикависоког нивоа(нпр. [[Ајфел]], [[Естерел]] ) добијају преносивост од излаза изворног кода у неком другом високом нивоу [[Међујезик|међујезика]] ( као што је [[C (програмски језик)|Ц]] ) за које компајлерима за многе платформе су доступни многи компајлери
 
Две активности везане за ( али се разликују од ) портирањепортовање су [[Емулатор|емулиране]] и [[косо-састављено|косо-састављене]] 
 
== Портирање компајлера ==
Уместо превођења директно у [[Машински језик|машинском коду]], модерни [[Компилатор|компајлери]] преводе на машински независномнезависан средњемсредњи кодукод у циљу унапређења преносивости компајлера и минимизирања напора дизајна. Средњи језикајезик дефинише виртуелну машину која може да изврши све програме писане у средњем језику (машина дефинисандефинисана са језиком и обратнообрнуто).<ref name="Machinelanguage">{{harvnb|Tanenbaum|1984|p=3}}</ref> Упутства средњих кодова су преведена на еквивалентним машинама кода секвенци од генератора кода за креирање извршног кода. Такође је могуће да прескоче генерацију машинског кода самим спровођењем виртуелне машине у машински код. Ова имплементација виртуелне машина се зове преводиоц, јерзато што пише у кодексу упутства средњег кода један по један и после сваког читања извршава еквивалентну секвенцу машинског кода (интерпретатор) на читању средњих инструкција директно.<ref>{{harvnb|Tanenbaum|1984|p=2}}</ref>
 
Коришћење средњег кода повећава преносивост компајлера, јер само машина зависи код ( тумач или генератор кода) компајлер сам по себи треба да користи на циљној машини. Остатак компајлера може да се увезе као средњи код и онда даље обрађује портовањем кода генератора или тумача , чиме се производи компајлер софтвера или директно извршење средњег кода на преводиоцу. Независни део машина може бити развијен и тестиран на другој машини ( домаћин машина). То у великој мери смањује напоре дизајна, јер је потребно да се независни део машина развија само једном да створе преносни средњи код.<ref>Richards,Whitby-Strevens 1984, Section 7.1 - Introduction. стр. 124, explains compiler portability using intermediate code.</ref>
 
Тумач је мање сложен и самим тим лакши за портовање од генератора кода , јерзато што није у стању да уради кодове оптимизације због ограниченог програмског кода ( само види једну инструкцију у времену и потребан вам је низ да уради оптимизацију). Неки тумачи су изузетно једноставни за портовање, јерзато самошто дају само минималне претпоставке о скупу инструкција о основном хардверу. Као резултат, виртуелна машина је чак једноставнијиједноставнија од циљане ЦПУциљаног [[Процесор|процесора]].<ref>Richards,Whitby-Strevens 1984, Section 7.4 - The bootstrapping process and INTCODE. стр. 133, explains the role of the INTCODE interpreter.</ref>
 
Писање извора компајлера у потпуности у програмском језику компајлер би требало да преведе , чини следећи приступ , познатији као [[Бутстраповање (компајлери)|бутстраповање комплајлера]], изводљив на циљаној машини: