Кіріспе

Бағдарламалық жасақтаманы басқа есептеу орталарында жұмыс істеуі үшін бейімдеу процесі. Бағдарламалық инженерияда, порттау – бұл белгілі бір бағдарламаның (осындай орындау үшін) бастапқыда жобаланған ортадан (мысалы, басқа процессор, операциялық жүйе немесе үшінші тараптың кітапханасы) өзгеше есептеу ортасында орындалуын қамтамасыз ету мақсатында бағдарламалық жасақтаманы бейімдеу процесі. Бұл термин бағдарламалық және аппараттық құралдарды түрлі орталарда пайдалануға қолайлы ету үшін өзгерту кезінде де қолданылады. Бағдарламалық жасақтама жаңа платформаға көшірудің құны, оны бастапқыдан жазу құнынан әлдеқайда төмен болса, портативті болып саналады. Бағдарламалық жасақтаманы көшіру құны оның жасалу құнына қарағанда неғұрлым төмен болса, ол соғұрлым портативті деп есептеледі.

Этимология

"Порт" термині латын тіліндегі portāre сөзінен шыққан, ол "тасу" деген мағынаны білдіреді. Код белгілі бір операциялық жүйемен немесе архитектурамен үйлесімсіз болған жағдайда, оны жаңа жүйеге "көшіру" қажет. Бұл термин, әдетте, бір процессор мен операциялық жүйеде бағдарламалық құралды аз жадты пайдаланып жұмыс істеуге бейімдеу процесіне қолданылмайды. Бағдарламалық құралды жасаушылар өздерінің жасаған бағдарламалық құралының портативті екенін жиі айтады, яғни оны жаңа ортаға бейімдеу үшін көп еңбек қажет емес. Бірақ, шын мәнінде қажетті еңбек мөлшері бірнеше факторға байланысты: бастапқы ортаның (көз платформасы) жаңа ортадан (мақсатты платформасы) қаншалықты өзгешелігі, бастапқы авторлардың қандай бағдарламалау тілі құрылымдары мен үшінші тарап кітапханаларын портативті емес екенін білу тәжірибесі, сондай-ақ бастапқы авторлардың тек портативті құрылымдарды пайдалануға жұмсаған еңбегі (платформаға арналған құрылымдар көбінесе арзан шешім ұсынады).

Тарих

Бүгінгі таңда үстелдерде қолданылатын процессорлар мен операциялық жүйелердің айқын ерекшеленетін саны бұрынғыға қарағанда әлдеқайда аз. x86 архитектурасының үстемдігі, көптеген үстел бағдарламалық жасақтамалардың басқа процессорға портталмауына себеп болады. Осы нарықта операциялық жүйелердің таңдауы үш жүйеге дейін шектелді: Microsoft Windows, macOS және Linux. Дегенмен, кіріктірілген жүйелер мен мобильді нарықтарда тасымалдау маңызды мәселе болып қала береді, ал ARM кеңінен қолданылатын балама болып табылады. ISO сияқты халықаралық стандарттар, порттауды жеңілдетіп, есептеу ортасының егжей-тегжейін нақты көрсетеді, бұл әртүрлі стандарттарға сәйкес келетін платформалар арасындағы айырмашылықтарды азайтуға көмектеседі. Осы стандарттармен белгіленген шектеулерде жұмыс істейтін бағдарламалық жасақтаманы жасау – практикалық, бірақ оңай емес күш-жігерді қажет етеді. Мұндай бағдарламаны екі стандартқа сәйкес платформалар арасында (мысалы, POSIX.1) порттау, көзінің кодын жүктеу және жаңа платформада қайта компиляциялау арқылы жүзеге асырылуы мүмкін. Алайда, тәжірибелі мамандар платформаның ұсақ-түйек айырмашылықтарына байланысты түрлі шағын түзетулер қажет екенін жиі байқайды. Көптеген стандарттарда "сұр аймақтар" бар, онда стандарттарды түсіндірудегі айырмашылықтар платформалар арасында шағын өзгерістерге алып келеді. Порттауды жеңілдету үшін, GNU Compiler Collection сияқты, әртүрлі платформаларда біркелкі бағдарламалау тілдерін ұсынатын және Autotools сияқты, компиляция алдында ортадағы ұсақ өзгерістерді автоматты түрде анықтап, бағдарламалық жасақтаманы сәйкестендіретін құралдардың саны артып келеді. Кейбір жоғары деңгейдегі бағдарламалау тілдерінің компиляторлары (мысалы, Eiffel, Esterel) тасымалдану мүмкіндігін арттыру үшін, бастапқы кодты басқа жоғары деңгейдегі аралық тілде (мысалы, C) шығарады, ал осы тілге көптеген платформалар үшін компиляторлар қолжетімді. Порттаумен байланысты, бірақ одан ерекше екі қызмет – эмуляция және кросс-компиляция.

Видеоойындардың портталуы

Портлау – бұл бір платформада іске қосылуға арналған бейне ойынды басқа платформада іске қосылуы үшін түрлендіру, мүмкін кейбір шағын айырмашылықтармен. Бейне ойындардың пайда болған сәттен бастап 1990 жылдарға дейін «порттар» (сол кезде көбінесе «конверсиялар» деп аталған) көбінесе нағыз порттар емес, әртүрлі жүйелердің шектеулеріне байланысты ойынның қайта жасалған нұсқалары болды. Мысалы, 1982 жылғы The Hobbit ойыны, графикалық кескіндермен толықтырылған мәтіндік оқиға, оның порттары жасалған дербес компьютерлердің әртүрлі түрлерінде әртүрлі графикалық стильдерге ие болды. Дегенмен, көптеген 21-ғасырлық бейне ойындар бағдарламалық жасақтаманы (әдетте C++ тілінде) пайдалана отырып жасалады, ол нақты порттау қажеттілігінсіз бір немесе бірнеше консольдер үшін, сондай-ақ ПК үшін кодты шығара алады (оның орнына жеке компоненттер кітапханаларын жалпы порттауға сүйенеді). Көптеген ерте порттар ойын сапасының маңызды мәселелеріне тап болды, себебі компьютерлердің өнімділігі күрт өзгеше болды. Ричард Гарриот 1984 жылы Origins Game Fair-де Origin Systems компаниясы алдымен Apple II сериясы үшін компьютерлік ойындар жасағанын, содан кейін оларды Commodore 64 және Atari 8 бит компьютерлеріне порттағанын айтты, себебі соңғы машиналардың спрайттары және басқа да күрделі мүмкіндіктері олардан Apple-ге порттауды «әлдеқайда қиын, тіпті мүмкін емес» етеді. Сарапшылар «Apple conversionitis» ауруынан зардап шеккен порттарға шағымданып, Apple-дің «жаман дыбысын және қара, ақ, жасыл, қызғылт түсті графикасын» сақтады; Гарриоттың мәлімдемесінен кейін, Дэн Бантен «Көрермендерден Atari және Commodore қолданушылары, сіздер Apple-дің қайта жасалған нұсқасынан ләззат аласыз ба?» деп сұрағанда, зал «Жоқ!» деп шу шығарды. Гарриотт: «[әйтпесе] Apple нұсқасы ешқашан аяқталмайды. Баспасөз тарапынан қарағанда, бұл ақшаға қатысты тиімсіз». Басқалары басқаша жұмыс істеді. Мысалы, Ozark Softscape, ең алдымен Atari үшін M.U.L.E. ойынын жасады, себебі ол ең озық компьютерлер үшін жасауды жөн көрді, порттау кезінде қажетті функцияларды алып тастады немесе өзгертті. Мұндай саясат әрқашан мүмкін болмады; Бунтен «M.U.L.E. Apple үшін жасалмайды» деп мәлімдеді және «Жеті алтын қала» ойынының Atari емес нұсқалары нашар болды. Compute! журналы 1986 жылы «Atari» компьютерінен «Commodore» компьютеріне порттау кезінде түпнұсқаның көбінесе артық екенін жазды. 1983 жылдың соңында жаңа бағдарламалық жасақтама жасап бастағаннан кейін ойынның сапасы жақсарды, деді журнал. Аркадалық ойындарды порттау кезінде «аркадалық кемелділік» немесе «аркадалық дәлдік» терминдері жиі қолданылды, олар портталған нұсқадағы ойын, графика және басқа да элементтердің аркадалық нұсқаға қаншалықты сәйкес келетінін сипаттау үшін. 1980 жылдардың басындағы көптеген аркадалық порттар аркадалық кемелділіктен алыс болды, себебі үй консольдары мен компьютерлерінде аркадалық ойындардағы күрделі аппараттық жабдықтар болмады, бірақ ойындар әлі де ойын ойнауға жақын бола алды. Атап айтқанда, Atari VCS-дегі Space Invaders өзінің айырмашылықтарына қарамастан консольдің ең танымал ойынына айналды, ал кейінірек Pac Man порты аркадалық нұсқадан ауытқулары үшін танымал болды. Аркадалық дәл ойындар 1990 жылдары үй консольдары аркадалық жүйелердің қуатына жеткеннен кейін кең таралды. Атап айтқанда, SNK-нің Neo Geo жүйесі, көп ойындық аркада жүйесі ретінде ұсынылып, сондай-ақ сол ерекшеліктері бар үй консолі ретінде де ұсынылды. Бұл үйде аркадалық кемелділіктегі ойындарды ойнауға мүмкіндік берді. «Консольдық порт» – бұл бастапқыда консоль үшін жасалған, ал жеке компьютерде ойнауға болатын бірдей нұсқасы жасалмастан бұрын жасалған ойын. Бұл термин ойын қауымдастығында кеңінен қолданылады. Ойынды консольдан ПК-ға порттау процесі көбінесе компьютерлердің жалпы алғанда аз пайдаланылатын жоғары өнімділік деңгейіне байланысты теріс қабылданады, ішінара консоль аппараттары олардың жұмыс істеу кезеңінде (ойын консольдық ерекшеліктері үшін жасалғандықтан) бекітіледі, ал ПК-лер аппараттық жабдықтың дамуымен күшейеді, сонымен қатар портталған ойындар кейде ПК-ге нашар оптимизацияланады немесе асығыс портталады. Жалпы алғанда ұқсас болғанымен, консольдегі біріктірілген жадты пайдалану сияқты архитектуралық айырмашылықтар болуы мүмкін.