kanály - Porting


z Wikipedie, otevřené encyklopedie

V softwarovém inženýrství , portování je proces přizpůsobení softwaru za účelem dosažení určité formy provedení ve výpočetním prostředí, který je odlišný od toho, který daný program (určeno pro takové provedení) byl původně určen pro (např jiný CPU , operační systém , nebo třetí osoba knihovna ). Termín je také používán, když je software / hardware změnil tak, aby byly použitelné v různých prostředích.

Software je přenosný , kdy náklady na portování na nové platformě, je výrazně nižší než náklady na jeho psaní od nuly. Nižší náklady na přenášení softwaru, vzhledem k jeho ceně implementace je více přenosný, že se říká, že.

Etymologie

Pod pojmem „Port“ je odvozen z latinského portāre , což znamená „carry“. Když kód není kompatibilní s konkrétním operačním systémem či architektury , kód musí být „provedeno“ na nový systém.

Termín není obvykle aplikován na proces přizpůsobení softwaru spustit s méně paměti na stejné CPU a operačního systému, ani není aplikováno na přepisování zdrojového kódu v jiném jazyce (tj konverze jazyk nebo překladu).

Softwaroví vývojáři často tvrdí, že software píší je přenosný , což znamená, že je zapotřebí jen málo úsilí, aby se přizpůsobila novému prostředí. Množství úsilí skutečně zapotřebí, závisí na několika faktorech, včetně rozsahu, v němž původní životní prostředí (dále jen source platforma ) se liší od nové prostředí ( cílová platforma ), zkušenosti z původních autorů dozvědět, který programovací jazyk konstrukty a třetí stranu knihovní volání je nepravděpodobné, aby byly přenositelné a množství úsilí investováno původními autory pouze pomocí přenosných konstruktů (platforma specifické konstrukty často poskytují levnější řešení).

Dějiny

Počet výrazně odlišnými procesory a operační systémy používané na pracovní ploše je dnes mnohem menší než v minulosti. Dominance na x86 architektuře znamená, že většina desktop software se nikdy přenést na jiný procesor. V tom stejném trhu, výběr z operačních systémů účinně byl snížen na tři: Microsoft Windows , MacOS a Linux . Nicméně, v oblasti vestavěných systémů a mobilních trhů, přenositelnost zůstává významným problémem, s ARM je široce používaný alternativa.

Mezinárodní standardy, jako například ty, které vyhlašuje ISO , což značně usnadňuje přenášení zadáním podrobnosti výpočetního prostředí způsobem, který pomáhá snižovat rozdíly mezi různými standardy-přizpůsobovat platformy . Psaní software, který zůstane v mezích stanovených těmito normami představuje praktické Ačkoli netriviální úsilí. Portování takový program mezi dvěma standardizované platformy (například POSIX.1 ) může být jen otázkou načítání zdrojového kódu a rekompilace ji na novou platformu. Nicméně, lékaři často zjišťují, že jsou požadovány různé drobné opravy, díky jemné rozdíly platformy. Většina standardů trpí „šedé zóny“, kde rozdíly ve výkladu norem vedou k malým změnám z jedné platformy na druhou.

Existuje také stále rostoucí počet nástrojů pro snadnější portování, jako je GNU Compiler Collection , která poskytuje konzistentní programovací jazyky na různých platformách a autotools , který automatizuje detekci malých změn v životním prostředí a přizpůsobuje software způsobem před kompilací ,

Kompilátory některých programovacích jazyků vysoké úrovně (např Eiffel , Esterel ) získat přenositelnost by výstup zdrojový kód v jiném vysoké úrovni mezilehlé jazyk (například  C ), u nichž překladače pro jsou obvykle k dispozici mnoho platforem.

Dva činnosti související s (ale odlišné od) přenesení jsou emulovat a cross-kompilace .

portování překladače

Místo toho, aby překlady přímo do strojového kódu , moderní kompilátory přeložit do strojově nezávislé mezikódu s cílem posílit přenositelnost překladače a minimalizovat úsilí designu. Meziprodukt jazyk definuje virtuální stroj , který může spustit všechny programy napsané v přechodném jazyku (stroj je definován svým jazykem a naopak). Mezilehlé instrukce kodexu jsou přeloženy do ekvivalentních strojového kódu sekvencí pomocí generátoru kódů vytvořit spustitelný kód . Je také možné přeskočit generaci strojového kódu by vlastně implementací tlumočníka nebo JIT pro virtuální stroj.

Použití mezikódu zlepšuje přenositelnost kompilátor, protože pouze závislý strojový kód (interpret nebo generátor kódu) překladače sám je třeba přenést do cílového zařízení. Zbývající část překladače lze importovat jako meziprodukt kódu a poté dále zpracovává na přenesené generátoru kódu nebo interpret, tak produkovat kompilátoru software nebo přímo provádění mezikódu na interpretu. Stroj nezávislá část může být vyvinuty a testovány na jiném stroji (dále hostitelského počítače ). Tím se výrazně snižuje úsilí designu, protože stroj Samostatnou částí je třeba rozvíjet pouze jednou vytvořit přenosný mezikódu.

Interpret je méně složité, a proto snadněji portu než generátor kódu, protože není schopen dělat kód optimalizace vzhledem ke své omezené vzhledem k programového kódu (to vidí jen jednu instrukci v době, a je třeba sekvenci dělat optimalizace). Někteří tlumočníci jsou velmi snadno do přístavu, protože oni dělají jen minimální předpoklady o instrukční sady podkladové hardwaru. Výsledkem je, že virtuální stroj je ještě jednodušší než cílový procesor.

Psaní zdroje kompilátoru výhradně v programovacím jazyce kompilátor má přeložit, je následující postup, lépe známý jako překladač bootstrappingu proveditelné na cílovém počítači:

  1. Port tlumočníka. To musí být kódovány do kódu shromáždění , za použití již přítomný assembler na cíl.
  2. Přizpůsobit zdroj generátoru kódů na novém stroji.
  3. Spusťte upravený zdroj pomocí interpret se zdrojem kód generátoru jako vstup. To bude generovat strojový kód pro generátor kódu.

Nejtěžší kódování optimalizační rutiny se provádí pomocí jazyka na vysoké úrovni namísto assembleru terče.

Podle návrhářů BCPL jazyk, interpretovaný kód (v případě BCPL) je mnohem kompaktnější než strojovém kódu; typicky o faktor dva ku jedné. Vykládán kód však běží asi desetkrát pomalejší než zkompilovaný kód na stejném stroji.

Konstruktéři z programovacího jazyka Java se snaží využít kompaktnosti interpretovaný kód, protože program Java může být nutné přenášen přes internet, než poprava může spustit na cílovém je Java Virtual Machine .

Přenos videoher

Přenos je také termín používaný, když videohra navržený pro běh na jedné platformě, ať už jde o pasáž , herní konzole , nebo osobní počítač , je převeden k útoku na jiné platformě. Dříve videohry „porty“ byly často nejsou pravdivé porty, ale spíše přepracovaný verze hry. Nicméně, mnoho 21. století videohry jsou vyvíjeny s použitím softwaru (často v C ++ ), který může výstup kód pro jeden nebo více konzolí i na PC bez nutnosti skutečné přenesení (namísto spoléhání se na společném přenesení jednotlivých dílčích knihoven ).

Mnoho časných porty utrpěl značné problémy s kvalitou hry, protože počítače se velmi lišily. Richard Garriott uvedla v roce 1984 na Origins Game Fair že Origin Systems vyvinula počítačové hry pro Apple II první pak přenést je do Commodore 64 a Atari 8-bit , protože ten strojů skřítci a další sofistikované funkce vyrobena portování z nich Apple " mnohem obtížnější, možná dokonce nemožné“. Recenze stěžoval portů, které trpěly „Apple conversionitis“, zachování Apple „mizerný zvuk a černo-bílo-zeleno-fialové slovy“; Po prohlášení Garriott je, když Dan Bunten zeptal „Atari a Commodore lidi v publiku, jste spokojeni s Apple přepisuje?“ publikum vykřikl: „Ne!“ Garriott odpověděl: „[jinak] verze Apple nebude nikdy hotovo. Z pohledu majitele je úhel pohledu, že to není moudré peníze“.

Jiní pracovali jinak. Ozark Softscape například napsal mulu pro Atari první, protože je výhodné vytvořit pro nejmodernějších počítačů, odstranění nebo poškození funkce podle potřeby během přenášení. Taková politika není vždy možné; Bunten uvedl, že „MULE nelze provést pro Apple“, a že non-Atari verze Sedm měst zlata byly horší.

Je-li hra označuje jako „pasáž dokonalý“, to znamená, že zápas byl portován z arkádové verze na jinou platformu, jako je například konzole nebo počítače, a to bez jakýchkoli významných změn na fungování této hry. To znamená, že grafika, zvuk a hratelnost spolu s dalšími vlastnostmi ve hře (včetně chyby), jsou věrni verzi pasáže. To je termín, většinou používají profesionální kritiky a někdy, ale ne vždy znamená, že hra je 100% identická. To obvykle znamená, že rozdíly mohou být menší (například načítání trvat déle), nebo prostě, že port může být ten, který zachoval zážitek původní hry nejvíc.

„(Console) port“ je hra, která byla původně vyroben pro konzoli (například Wii nebo Xbox 360 ) před identické verze je vytvořen, které lze přehrát na osobním počítači nebo jakékoliv jiné konzole. Tento termín byl široce používán herní komunity. Proces portování her z konzole a PC se často pohlíží negativně kvůli vyšším úrovním výkonu, že počítače mají obecně je nevytížených, částečně kvůli konzole hardware je upevněn na celém svém běhu (s hrami vyvíjeny pro konzole specifikace) zatímco osobní počítače stávají silnější as hardware vyvíjí, ale také kvůli přenesených hrám je někdy špatně optimalizovaných pro PC, nebo líně přenesených. Zatímco v zásadě podobný, architektonické rozdíly mohou existovat jako je například použití jednotného paměti na konzole.

viz též

Poznámky

Reference

  • Martin Richards a Colin Whitby-Strevens (1984): BCPL, jazyk a jeho kompilátor. ISBN  0-521-28681-6 .
  • Andrew S. Tanenbaum (1984): Strukturovaný počítač organizace 10. Print. ISBN  0-13-854605-3 .