Пређи на садржај

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

С Википедије, слободне енциклопедије
Садржај обрисан Садржај додат
м Робот: додато {{subst:User:Autobot/sandbox2}}
Поправљена граматика и подигнута јасноћа чланка на виши ниво.
Ред 1: Ред 1:
{{loš seminarski}}
{{loš seminarski}}
У [[Инжењеринг софтвера|софтверском инжењерству]], '''портовање''' је процес прилагођавања софтвера, тако да извршни [[рачунарски програм|програм]] може бити креиран за рачунарско окружење које је различито од оног за који је првобитно пројектовано (нпр. другачији [[процесор]], [[оперативни систем]], или [[библиотека|библиотеке]] трећег лица). Овај термин се такође користи када се софтвер /хардвер мења како би био употребљив у различитим срединама. 
У [[Инжењеринг софтвера|софтверском инжењерству]], '''портовање''' је процес прилагођавања софтвера, тако да извршни [[рачунарски програм|програм]] може бити креиран за рачунарско окружење које је различито од оног за који је првобитно пројектовано (нпр. другачији [[процесор]], [[оперативни систем]], или [[библиотека|библиотеке]] трећег лица). Овај термин се такође користи када се софтвер или хардвер мења како би био употребљив у различитим срединама. 


Софтвер је [[преносиво|преносив]] када су трошкови портовања на нову платформу знатно мањи од цене његовог писања од нуле. Нижи трошкови портирање софтвера, у односу на трошкове имплементације, више преносиво би требало да буде.
Софтвер је [[преносиво|преносив]] када су трошкови портовања на нову платформу знатно мањи од цене његовог писања од нуле. Што је цена портовања програма нижа у односу на цену имплементације, софтвер се сматра више преносивим.


== Етимологија ==
== Етимологија ==
Термин "Порт" је изведен из италијанског [[портаре]], што значи "да носе". Када код није компатибилан са одређеним [[Оперативни систем|оперативним системом]] или [[Архитектура рачунара|архитектуром]], код мора бити "пренешен" на нови систем. 
Термин "Порт" је изведен из италијанског [[портаре]], што значи "да носе". Када код није компатибилан са одређеним [[Оперативни систем|оперативним системом]] или [[Архитектура рачунара|архитектуром]], код мора бити "пренешен" на нови систем. 


Термин се обично не примењује у процесу прилагођавања софтвера који ће покретати са мање меморије на истом процесору и оперативном систему, нити се примењује на поновном писању изворног кода на другом [[Програмски језик|језику]] (тј језик конверзије или превода). 
Термин се обично не примењује у процесу прилагођавања софтвера који ће покретати са мање меморије на истом процесору и оперативном систему, нити се примењује на поновном писању изворног кода на другом [[Програмски језик|језику]] (тј. језик конверзије или превода). 


Програмери често тврде да софтвер који они пишу је [[преносиво|преносив]], што значи да мало напора је потребно да би се прилагодио новој средини. Количина напора која је стварно потребна зависи од неколико фактора, укључујући меру у којој се оригинално окружење ( платформа извора) разликује од новог окружења ( циљна платформа) , искуство оригиналних аутора у знању који [[програмски језик]] да конструишу и треће лице библиотека је неуобичајено да буде преносиво, а количина напора уложена од стране оригиналних аутора је само коришћење преносивих конструкција ( платформе специфичних конструкција често дају јефтиније решење). 
Програмери често тврде да је софтвер који они пишу [[преносиво|преносив]], што значи да је мало напора потребно да би се прилагодио новој средини. Количина напора која је стварно потребна зависи од неколико фактора, укључујући меру у којој се оригинално окружење (изворне платформе) разликује од новог окружења (циљне платформе), искуство оригиналних аутора у знању који [[програмски језик]] да конструишу и треће лице библиотека је неуобичајено да буде преносиво, а количина напора уложена од стране оригиналних аутора је само коришћење преносивих конструкција (платформе специфичних конструкција често дају јефтиније решење). 


== Историја ==
== Историја ==
 Број значајно различитих процесора и оперативних система који се користе на десктопу данас је много мањи него у прошлости. Доминација [[x86]] [[Скуп инструкција|архитектуре]] значи да се већина десктоп софтвера никада не користи на другом ЦПУ. У том истом тржишту, избор оперативних система је ефективно смањен на три : [[Мајкрософт виндоус|Мајкрософт Виндоус]], [[OS X]] и BSD [[Јуникс]]/[[Линукс]]. Међутим, у [[Уграђени систем|уграђеном систему]] тржишта, [[преносивост]] остаје значајан проблем.
 Број значајно различитих процесора и оперативних система који се користе на десктопу данас је много мањи него у прошлости. Доминација [[x86]] [[Скуп инструкција|архитектуре]] значи да се већина десктоп софтвера никада не користи на другом [[Процесор|процесору]]. У том истом тржишту, избор оперативних система је ефективно смањен на три: [[Мајкрософт виндоус|Мајкрософт Виндоус]], [[OS X]] и BSD [[Јуникс]]/[[Линукс]]. Међутим, у [[Уграђени систем|уграђеном систему]] тржишта, [[преносивост]] остаје значајан проблем.


Међународни стандарди , попут оних које је прогласио [[Међународна организација за стандардизацију|ИСО]] , у великој мери олакшавају портовање наводећи детаље рачунарског окружења на начин којим се смањује разлика између различитих [[Софтверска платформа|платформи]] стандарда у складу. Писање софтвер који остаје у границама утврђеним овим стандардима представља практичан иако нетривијалан напор. Портиовање таквог програма између две платформе за стандардизацију-компатибилну (као што су [[Посикс|POSIX.1]]) може бити само питање учитавања изворног кода и [[Компилатор|рекомпајлирање]] на новој платформи. Међутим , практичари често сматрају да су потребне разне мање корекције, због суптилне разлике платформи. Већина стандарда пати од "сиве зоне" у којој разлике у тумачењу стандарда доводе до малих варијација са платформе на платформу. 
Међународни стандарди, попут оних које је прогласио [[Међународна организација за стандардизацију|ИСО]], у великој мери олакшавају портовање наводећи детаље рачунарског окружења на начин којим се смањује разлика између различитих [[Софтверска платформа|платформи]] стандарда у складу. Писање софтвера који остаје у границама утврђеним овим стандардима представља практичан, иако нетривијалан напор. Портовање таквог програма између две платформе за стандардизацију-компатибилну (као што су [[Посикс|POSIX.1]]) може бити само питање учитавања изворног кода и [[Компилатор|рекомпајлирање]] на новој платформи. Међутим, практичари често сматрају да су потребне разне мање корекције, због суптилне разлике платформи. Већина стандарда пати од "сиве зоне" у којој разлике у тумачењу стандарда доводе до малих варијација са платформе на платформу. 


Такође постоји све већи број алата за олакшавање портовања, као што је [[ГНУ колекција компајлера|ГНУ Компајлер Колекција]], који обезбеђује доследне програмске језике на различитим платформама, и [[Аутоматска подешавања]], која аутоматизује откривање мањих варијација у окружењу и прилагођавање софтвера сходно томе, пре компилације. 
Такође постоји све већи број алата за олакшавање портовања, као што је [[ГНУ колекција компајлера|ГНУ Компајлер Колекција]], који обезбеђује доследне програмске језике на различитим платформама, и [[Аутоматска подешавања]], која аутоматизује откривање мањих варијација у окружењу и прилагођавање софтвера сходно томе, пре компилације. 


Компајлери за неке високе нивое програмских језика (нпр [[Ајфел]], [[Естерел]] ) добијају преносивост од излаза изворног кода у неком другом високом нивоу [[Међујезик|међујезика]] ( као што је [[C (програмски језик)|Ц]] ) за које компајлерима за многе платформе су доступни. 
Компајлери за неке програмске језике високог нивоа(нпр. [[Ајфел]], [[Естерел]]) добијају преносивост од излаза изворног кода у неком другом високом нивоу [[Међујезик|међујезика]] (као што је [[C (програмски језик)|Ц]]) за које платформе су доступни многи компајлери


Две активности везане за ( али се разликују од ) портирање су [[Емулатор|емулиране]] и [[косо-састављено|косо-састављене]] 
Две активности везане за (али се разликују од) портовање су [[Емулатор|емулиране]] и [[косо-састављено|косо-састављене]] 


== Портирање компајлера ==
== Портирање компајлера ==
Уместо превођења директно у [[Машински језик|машинском коду]], модерни [[Компилатор|компајлери]] преводе на машински независном средњем коду у циљу унапређења преносивости компајлера и минимизирања напора дизајна. Средњи језика дефинише виртуелну машину која може да изврши све програме писане у средњем језику (машина дефинисан са језиком и обратно).<ref name="Machinelanguage">{{harvnb|Tanenbaum|1984|p=3}}</ref> Упутства средњих кодова су преведена на еквивалентним машинама кода секвенци од генератора кода за креирање извршног кода. Такође је могуће да прескоче генерацију машинског кода самим спровођењем виртуелне машине у машински код. Ова имплементација виртуелне машина се зове преводиоц, јер пише у кодексу упутства средњег кода један по један и после сваког читања извршава еквивалентну секвенцу машинског кода (интерпретатор) на читању средњих инструкција директно.<ref>{{harvnb|Tanenbaum|1984|p=2}}</ref>
Уместо превођења директно у [[Машински језик|машинском коду]], модерни [[Компилатор|компајлери]] преводе на машински независан средњи код у циљу унапређења преносивости компајлера и минимизирања напора дизајна. Средњи језик дефинише виртуелну машину која може да изврши све програме писане у средњем језику (машина дефинисана са језиком и обрнуто).<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.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>
Тумач је мање сложен и самим тим лакши за портовање од генератора кода, зато што није у стању да уради кодове оптимизације због ограниченог програмског кода (само види једну инструкцију у времену и потребан вам је низ да уради оптимизацију). Неки тумачи су изузетно једноставни за портовање, зато што дају само минималне претпоставке о скупу инструкција о основном хардверу. Као резултат, виртуелна машина је чак једноставнија од циљаног [[Процесор|процесора]].<ref>Richards,Whitby-Strevens 1984, Section 7.4 - The bootstrapping process and INTCODE. стр. 133, explains the role of the INTCODE interpreter.</ref>


Писање извора компајлера у потпуности у програмском језику компајлер би требало да преведе , чини следећи приступ , познатији као [[Бутстраповање (компајлери)|бутстраповање комплајлера]], изводљив на циљаној машини: 
Писање извора компајлера у потпуности у програмском језику компајлер би требало да преведе , чини следећи приступ , познатији као [[Бутстраповање (компајлери)|бутстраповање комплајлера]], изводљив на циљаној машини: 

Верзија на датум 2. јун 2016. у 21:25

Шаблон:Loš seminarski У софтверском инжењерству, портовање је процес прилагођавања софтвера, тако да извршни програм може бити креиран за рачунарско окружење које је различито од оног за који је првобитно пројектовано (нпр. другачији процесор, оперативни систем, или библиотеке трећег лица). Овај термин се такође користи када се софтвер или хардвер мења како би био употребљив у различитим срединама. 

Софтвер је преносив када су трошкови портовања на нову платформу знатно мањи од цене његовог писања од нуле. Што је цена портовања програма нижа у односу на цену имплементације, софтвер се сматра више преносивим.

Етимологија

Термин "Порт" је изведен из италијанског портаре, што значи "да носе". Када код није компатибилан са одређеним оперативним системом или архитектуром, код мора бити "пренешен" на нови систем. 

Термин се обично не примењује у процесу прилагођавања софтвера који ће покретати са мање меморије на истом процесору и оперативном систему, нити се примењује на поновном писању изворног кода на другом језику (тј. језик конверзије или превода). 

Програмери често тврде да је софтвер који они пишу преносив, што значи да је мало напора потребно да би се прилагодио новој средини. Количина напора која је стварно потребна зависи од неколико фактора, укључујући меру у којој се оригинално окружење (изворне платформе) разликује од новог окружења (циљне платформе), искуство оригиналних аутора у знању који програмски језик да конструишу и треће лице библиотека је неуобичајено да буде преносиво, а количина напора уложена од стране оригиналних аутора је само коришћење преносивих конструкција (платформе специфичних конструкција често дају јефтиније решење). 

Историја

 Број значајно различитих процесора и оперативних система који се користе на десктопу данас је много мањи него у прошлости. Доминација x86 архитектуре значи да се већина десктоп софтвера никада не користи на другом процесору. У том истом тржишту, избор оперативних система је ефективно смањен на три: Мајкрософт Виндоус, OS X и BSD Јуникс/Линукс. Међутим, у уграђеном систему тржишта, преносивост остаје значајан проблем.

Међународни стандарди, попут оних које је прогласио ИСО, у великој мери олакшавају портовање наводећи детаље рачунарског окружења на начин којим се смањује разлика између различитих платформи стандарда у складу. Писање софтвера који остаје у границама утврђеним овим стандардима представља практичан, иако нетривијалан напор. Портовање таквог програма између две платформе за стандардизацију-компатибилну (као што су POSIX.1) може бити само питање учитавања изворног кода и рекомпајлирање на новој платформи. Међутим, практичари често сматрају да су потребне разне мање корекције, због суптилне разлике платформи. Већина стандарда пати од "сиве зоне" у којој разлике у тумачењу стандарда доводе до малих варијација са платформе на платформу. 

Такође постоји све већи број алата за олакшавање портовања, као што је ГНУ Компајлер Колекција, који обезбеђује доследне програмске језике на различитим платформама, и Аутоматска подешавања, која аутоматизује откривање мањих варијација у окружењу и прилагођавање софтвера сходно томе, пре компилације. 

Компајлери за неке програмске језике високог нивоа(нпр. Ајфел, Естерел) добијају преносивост од излаза изворног кода у неком другом високом нивоу међујезика (као што је Ц) за које платформе су доступни многи компајлери. 

Две активности везане за (али се разликују од) портовање су емулиране и косо-састављене 

Портирање компајлера

Уместо превођења директно у машинском коду, модерни компајлери преводе на машински независан средњи код у циљу унапређења преносивости компајлера и минимизирања напора дизајна. Средњи језик дефинише виртуелну машину која може да изврши све програме писане у средњем језику (машина дефинисана са језиком и обрнуто).[1] Упутства средњих кодова су преведена на еквивалентним машинама кода секвенци од генератора кода за креирање извршног кода. Такође је могуће да прескоче генерацију машинског кода самим спровођењем виртуелне машине у машински код. Ова имплементација виртуелне машина се зове преводиоц, зато што пише у кодексу упутства средњег кода један по један и после сваког читања извршава еквивалентну секвенцу машинског кода (интерпретатор) на читању средњих инструкција директно.[2]

Коришћење средњег кода повећава преносивост компајлера, јер само машина зависи код ( тумач или генератор кода) компајлер сам по себи треба да користи на циљној машини. Остатак компајлера може да се увезе као средњи код и онда даље обрађује портовањем кода генератора или тумача, чиме се производи компајлер софтвера или директно извршење средњег кода на преводиоцу. Независни део машина може бити развијен и тестиран на другој машини (домаћин машина). То у великој мери смањује напоре дизајна, јер је потребно да се независни део машина развија само једном да створе преносни средњи код.[3]

Тумач је мање сложен и самим тим лакши за портовање од генератора кода, зато што није у стању да уради кодове оптимизације због ограниченог програмског кода (само види једну инструкцију у времену и потребан вам је низ да уради оптимизацију). Неки тумачи су изузетно једноставни за портовање, зато што дају само минималне претпоставке о скупу инструкција о основном хардверу. Као резултат, виртуелна машина је чак једноставнија од циљаног процесора.[4]

Писање извора компајлера у потпуности у програмском језику компајлер би требало да преведе , чини следећи приступ , познатији као бутстраповање комплајлера, изводљив на циљаној машини: 

  1.  Портовање преводиоца. Ово треба да буде кодирано у асемблеру кода, користећи већ постојећу асемблер на мету.
  2.  Прилагодите извор генератора кода на нову машину.
  3.  Покрените прилагођени извор помоћу преводиоца са изворног кода генератора као улаз. Ово ће генерисати машински код за генератор кода.

Тежи део кодирања оптимизације рутине се врши помоћу језика на високом нивоу уместо језика асемблер мете

 Према дизајнерима БЦПЛ језика , код који се тумачи (у случају БЦПЛ) је компактнији од машинског кода ; типично за фактор два према један. Интерпретатор кода међутим ради десетак пута спорије него код састављен на истој машини.[5]

 Дизајнери програмског језика Јава покушавају да искористе компактност преведеног кода, јер у Јава програму мора да се пренесе преко Интернета пре извршења да би могло да се почне на мети Јава виртуелне машине.

Портовање видео игара

Портовање је такође термин који се користи када дизајн видео игре је заснован на једној платформи, било да је аркада, конзола за видео игре или персонални рачунар, претварајући покретање на другој платформи. Раније "портовање" видео игара често није било право портовање, него прерађене верзије игара. Међутим , многе игре 21. века су развијене користећи софтвер који може да избаци код за једну или више конзола као и за ПС, без потребе за стварном променом оператера. 

 Многе ране портовања претрпела су значајне проблеме у погледу квалитета играња, јер компјутери увелико разликују. Рецензије су се жалиле на портовање Епл 2 серије игара попут краш, крамбл и чомп које не користе супериорне Атари 8 - битне функције.[6] Лорд Бритиш изјавио је 1984. да Оригин систем развио компјутерске игрица за Епл 2 први пре портовања њих на Комодер 64 и Атари , јер касније машине спрајтоване и друге софистициране функције су портовале њих на Епл " далеко теже, можда чак и немогуће. Епл верзија никада неће бити урађена" .[7] Други су радили другачије. Озарк Софтскејп је, на пример , написао М. У. Л. Е. за Атари прво, зато што је преферирао развој за напредније рачунаре, уклањањем или мењањем функција као што је потребно током портовања. Таква политика није увек била могућа; Дани Бунтен је изјавио да "М. У. Л. Е. не може да се уради за Аппле ".[8]

 Аркаде савршених видео игрица су оне које су пренесене из верзије аркада на другу платформу , као што су конзоле или рачунара, без икаквих измена рада у игри. То значи да графика, звук и играње, заједно са осталим карактеристикама игре (укључујући и грешке), су идентичне верзије аркаде

" ( Конзола ) портовања " је игра која је првобитно направљен за конзолу (као што је Вии или Иксбокс 360), пре идентичне верзије створене где се може играти на личном рачунару или било која друга конзола. Овај термин је широко коришћен од стране заједнице игара. Процес портовање игре из конзоле на ПС се често сматра негативним због виших нивоа перформанса које рачунари обично недовољно користе, делимично због конзоле хардвера током њиховог рада (са играма се развијају за конзоле спецификације), док рачунари постају моћнији и хардвер се развија, али и због пренетих игара понекад се лоше оптимизују за рачунаре, или споро портују. 

Види још

Референце

  1. ^ Tanenbaum 1984, стр. 3
  2. ^ Tanenbaum 1984, стр. 2
  3. ^ Richards,Whitby-Strevens 1984, Section 7.1 - Introduction. стр. 124, explains compiler portability using intermediate code.
  4. ^ Richards,Whitby-Strevens 1984, Section 7.4 - The bootstrapping process and INTCODE. стр. 133, explains the role of the INTCODE interpreter.
  5. ^ Richards,Whitby-Strevens 1984, Section 7.4.3 - Example. стр. 136, gives an example translation of a BCPL program into INTCODE for the interpreter.
  6. ^ Stanton, Jeffrey; Wells, Robert P. Ph.D.; Rochowansky, Sandra; Mellid, Michael Ph.D., ed. (1984).
  7. ^ "The CGW Computer Game Conference".
  8. ^ Bunten, Dan (December 1984).

Литература