Lompat ke isi

Pemortaan: Perbedaan antara revisi

Dari Wikipedia bahasa Indonesia, ensiklopedia bebas
Konten dihapus Konten ditambahkan
Reverted 1 edit by Suparjana (talk): Di referensi memang tidak ada kata tersebut. Per PUEBI, kurung siku digunakan untuk menambah kata yang tidak ada di naskah aslinya
Tag: Pembatalan
merapikan awal kalimat dan beberapa istilah.
Tag: Suntingan perangkat seluler Suntingan peramban seluler
Baris 1: Baris 1:
Dalam [[ilmu komputer]], '''pemortaan''' adalah proses untuk mengadaptasi perangkat lunak sehingga [[program komputer|program]] bisa-laksana (''executable'') dapat dibuat untuk lingkungan komputer yang berbeda dengan lingkungan asli desain. Istilah ini juga digunakan untuk mengacu kepada perubahan terhadap perangkat lunak/perangkat keras untuk menjadikannya dapat digunakan di lingkungan yang berbeda.
Dalam [[ilmu komputer]], '''''porting''''' atau '''pemortaan''' adalah proses untuk menyadur perangkat lunak sehingga [[program komputer|tata olah]] bisa-laksana (''executable program'') dapat dibuat untuk lingkungan komputer yang berbeda dengan lingkungan asli rancangannya. Istilah ini juga digunakan untuk mengacu kepada perubahan terhadap perangkat lunak/perangkat keras untuk menjadikannya dapat digunakan di lingkungan yang berbeda.


Perangkat lunak bersifat ''[[Portabilitas perangkat lunak|portabel]]'' ketika biaya memindahkannya ke platform baru secara signifikan lebih murah daripada biaya penulisannya dari awal. Semakin rendah biaya perangkat lunak porting relatif terhadap biaya implementasinya, dikatakan akan semakin portabel.
Perangkat lunak bersifat ''[[Portabilitas perangkat lunak|mudah alih]]'' (''portable'') ketika biaya memindahkannya ke [[platform komputasi|pelantar]] baru secara signifikan lebih murah daripada biaya penulisannya dari awal. Semakin rendah biaya pemortaan perangkat lunak relatif terhadap biaya implementasinya, dikatakan akan semakin mudah alih.


== Etimologi ==
== Etimologi ==
Istilah "port" berasal dari bahasa Latin ''[[wikt:port#Etymology_3|portāre]]'', artinya "membawa".<ref>{{Cite web|title=port, v.2|url=http://www.oed.com/view/Entry/148098|website=Oxford English Dictionary (OED Online)|publisher=Oxford University Press|access-date=December 21, 2017|quote=Origin: Of multiple origins. Partly a borrowing from French. Partly a borrowing from Latin. Etymons: French ''porter''; Latin ''portāre''. ... 1. ''trans.'' To carry, bear, or convey; to bring.|url-access=subscription}}</ref> Ketika kode tidak kompatibel dengan [[sistem operasi]] atau [[Arsitektur komputer|arsitektur]] tertentu, kode harus "dibawa" ke sistem baru.
Istilah "''port''" berasal dari bahasa Latin ''[[wikt:port#Etymology_3|portāre]]'', artinya "membawa".<ref>{{Cite web|title=port, v.2|url=http://www.oed.com/view/Entry/148098|website=Oxford English Dictionary (OED Online)|publisher=Oxford University Press|access-date=December 21, 2017|quote=Origin: Of multiple origins. Partly a borrowing from French. Partly a borrowing from Latin. Etymons: French ''porter''; Latin ''portāre''. ... 1. ''trans.'' To carry, bear, or convey; to bring.|url-access=subscription}}</ref> Ketika kode tidak kompatibel dengan [[sistem operasi]] atau [[Arsitektur komputer|arsitektur]] tertentu, kode harus "dibawa" ke sistem baru.


Istilah ini umumnya tidak diterapkan pada proses mengadaptasi perangkat lunak agar berjalan dengan lebih sedikit memori pada CPU dan sistem operasi yang sama, juga tidak diterapkan pada penulisan ulang kode sumber dalam [[Bahasa pemrograman|bahasa]] yang berbeda (yaitu konversi atau terjemahan bahasa).
Istilah ini umumnya tidak diterapkan pada proses menyadurkan perangkat lunak agar berjalan dengan lebih sedikit memori pada CPU dan sistem operasi yang sama, juga tidak diterapkan pada penulisan ulang kode sumber dalam [[Bahasa pemrograman|bahasa]] yang berbeda (yaitu konversi atau terjemahan bahasa).


Pengembang perangkat lunak sering mengklaim bahwa perangkat lunak yang mereka tulis itu ''[[Portabilitas perangkat lunak|portabel]]'', Artinya, diperlukan sedikit upaya untuk menyesuaikannya dengan lingkungan baru. Jumlah upaya yang benar-benar diperlukan bergantung pada beberapa faktor, termasuk sejauh mana lingkungan asli (''platform sumber'') berbeda dari lingkungan baru (''platform target''), pengalaman penulis asli dalam mengetahui konstruksi [[bahasa pemrograman]] dan panggilan perpustakaan pihak ketiga mana yang tidak mungkin portabel, dan jumlah upaya yang diinvestasikan oleh penulis asli hanya dengan menggunakan konstruksi portabel (konstruksi khusus platform sering kali memberikan solusi yang lebih murah).
Pengembang perangkat lunak sering mengklaim bahwa perangkat lunak yang mereka tulis itu ''[[Portabilitas perangkat lunak|mudah alih]]'', Artinya, diperlukan sedikit upaya untuk menyesuaikannya dengan lingkungan baru. Jumlah upaya yang benar-benar diperlukan bergantung pada beberapa faktor, termasuk sejauh mana lingkungan asli (''pelantar sumber'') berbeda dari lingkungan baru (''pelantar sasaran''), pengalaman penulis asli dalam mengetahui konstruksi [[bahasa pemrograman]] dan panggilan pustaka pihak ketiga mana saja yang tidak mungkin mudah alih, dan jumlah upaya yang diinvestasikan oleh penulis asli hanya dengan menggunakan konstruksi mudah alih (konstruksi khusus pelantar sering kali memberikan solusi yang lebih murah).


== Sejarah ==
== Sejarah ==
Jumlah CPU dan sistem operasi yang digunakan pada desktop saat ini jauh lebih kecil daripada sebelumnya. Dominasi [[Instruction set architecture|arsitektur]] [[x86]] berarti bahwa sebagian besar perangkat lunak desktop tidak pernah di-porting ke CPU yang berbeda. Di pasar yang sama, pilihan sistem operasi telah dikurangi menjadi tiga: [[Microsoft Windows]], [[macOS]], dan [[Linux]]. Namun, dalam [[Sistem terbenam|sistem tertanam]] dan pasar seluler, [[Portabilitas perangkat lunak|portabilitas]] tetap menjadi masalah yang signifikan, dengan [[ARM architecture|ARM]] menjadi alternatif yang banyak digunakan.
Jumlah CPU dan sistem operasi yang digunakan pada desktop saat ini jauh lebih kecil daripada sebelumnya. Dominasi [[Instruction set architecture|arsitektur]] [[x86]] berarti bahwa sebagian besar perangkat lunak desktop tidak pernah diportakan ke CPU yang berbeda. Di pasar yang sama, pilihan sistem operasi telah dikurangi menjadi tiga: [[Microsoft Windows]], [[macOS]], dan [[Linux]]. Namun, dalam [[Sistem terbenam|sistem tertanam]] dan pasar seluler, [[Portabilitas perangkat lunak|portabilitas]] tetap menjadi masalah yang signifikan, dengan [[ARM architecture|ARM]] menjadi alternatif yang banyak digunakan.


Standar internasional, seperti yang ditetapkan oleh [[International Organization for Standardization|ISO]], sangat memfasilitasi porting dengan menentukan detail lingkungan komputasi dengan cara yang membantu mengurangi perbedaan antara berbagai [[Platform komputasi|platform]] yang sesuai standar. Menulis perangkat lunak yang tetap dalam batas-batas yang ditentukan oleh standar ini merupakan upaya praktis meskipun tidak sepele. Porting program semacam itu antara dua platform yang sesuai standar (seperti [[POSIX|POSIX.1]]) hanya masalah memuat kode sumber dan [[Compiler|mengompilasinya kembali]] di platform baru. Namun, praktisi sering menemukan bahwa berbagai koreksi kecil diperlukan, karena perbedaan platform yang tidak kentara. Sebagian besar standar mengalami "area abu-abu" di mana perbedaan interpretasi standar menyebabkan variasi kecil dari platform ke platform.
Standar mancanegara, seperti yang ditetapkan oleh [[International Organization for Standardization|ISO]], sangat memfasilitasi pemortaan dengan menentukan perincian lingkungan komputasi dengan cara yang membantu mengurangi perbedaan antara berbagai [[Platform komputasi|pelantar]] yang sesuai standar. Menulis perangkat lunak yang tetap dalam batas-batas yang ditentukan oleh standar ini merupakan upaya praktis meskipun tidak sepele. Pemortaam tata olah semacam itu antara dua pelantar yang sesuai standar (seperti [[POSIX|POSIX.1]]) hanya masalah memuat kode sumber dan [[Compiler|mengompilasinya kembali]] di pelantar baru. Namun, praktisi sering menemukan bahwa berbagai koreksi kecil diperlukan, karena perbedaan pelantar yang tidak kentara. Sebagian besar standar mengalami "area abu-abu" atau tidak pasti di mana perbedaan penafsiran standar menyebabkan variasi kecil dari pelantar ke pelantar.


Ada juga jumlah alat yang terus meningkat untuk memfasilitasi porting, seperti [[GNU Compiler Collection]], yang menyediakan bahasa pemrograman yang konsisten di berbagai platform, dan [[GNU Autotools|Autotools]], yang mengotomatiskan pendeteksian variasi kecil di lingkungan dan menyesuaikan perangkat lunak sesuai sebelum kompilasi.
Ada juga jumlah alat yang terus meningkat untuk memfasilitasi pemortaan, seperti [[GNU Compiler Collection]], yang menyediakan bahasa pemrograman yang konsisten di berbagai pelantar, dan [[GNU Autotools|Autotools]], yang mengotomatiskan pendeteksian variasi kecil di lingkungan dan menyesuaikan perangkat lunak sesuai sebelum kompilasi.


Kompiler untuk beberapa [[bahasa pemrograman tingkat tinggi]] (misalnya, [[Eiffel (bahasa pemrograman)|Eiffel]], [[Esterel]]) mendapatkan portabilitas dengan mengeluarkan kode sumber dalam [[Representasi menengah|bahasa perantara]] tingkat tinggi lainnya (seperti [[C (bahasa pemrograman)|C]]) di mana kompiler untuk banyak platform umumnya tersedia.
Kompilator untuk beberapa [[bahasa pemrograman tingkat tinggi]] (misalnya, [[Eiffel (bahasa pemrograman)|Eiffel]], [[Esterel]]) mendapatkan portabilitas dengan mengeluarkan kode sumber dalam [[Representasi menengah|bahasa perantara]] tingkat tinggi lainnya (seperti [[C (bahasa pemrograman)|C]]) di mana kompilator untuk banyak pelantar umumnya tersedia.


Dua aktivitas yang terkait dengan (tetapi berbeda dari) porting adalah [[Emulator|emulasi]] dan [[Kompiler silang|kompilasi silang]].
Dua aktivitas yang terkait dengan (tetapi berbeda dari) pemortaan adalah [[Emulator|emulasi]] dan [[Kompiler silang|kompilasi silang]].


== Kompiler porting ==
== Kompilator pemortaan ==
Alih-alih menerjemahkan langsung ke [[kode mesin]], [[kompiler]] modern menerjemahkan ke [[Bytecode|kode perantara]] mesin independen untuk meningkatkan portabilitas kompiler dan meminimalkan upaya desain. Bahasa perantara mendefinisikan ''[[mesin virtual]]'' yang dapat menjalankan semua program yang ditulis dalam [[Intermediate representation|bahasa perantara]] (sebuah mesin yang ditentukan oleh bahasanya dan sebaliknya).<ref name="Machinelanguage">{{harvnb|Tanenbaum|1984|p=3. §1.1 Languages,Levels, and Virtual Machines}} describes the terms and their relations.</ref> Instruksi kode perantara diterjemahkan ke dalam urutan kode mesin yang setara oleh sebuah ''generator'' ''kode'' untuk membuat [[Executable|kode yang dapat dieksekusi]]. Dimungkinkan juga untuk melewati pembuatan kode mesin dengan benar-benar menerapkan [[interpreter]] atau [[Just-in-time compilation|JIT]] untuk mesin virtual.<ref>{{harvnb|Tanenbaum|1984|p=2. Ch. 1 Introduction}} explains translation and interpretation.</ref>
Alih-alih menerjemahkan langsung ke [[kode mesin]], [[kompiler|kompilator]] modern menerjemahkan ke [[Bytecode|kode perantara]] mesin independen untuk meningkatkan portabilitas kompilator dan meminimalkan upaya desain. Bahasa perantara mendefinisikan ''[[mesin virtual]]'' yang dapat menjalankan semua program yang ditulis dalam [[Intermediate representation|bahasa perantara]] (sebuah mesin yang ditentukan oleh bahasanya dan sebaliknya).<ref name="Machinelanguage">{{harvnb|Tanenbaum|1984|p=3. §1.1 Languages,Levels, and Virtual Machines}} describes the terms and their relations.</ref> Instruksi kode perantara diterjemahkan ke dalam urutan kode mesin yang setara oleh sebuah ''code generator'' untuk membuat [[Executable|kode yang dapat dieksekusi]]. Dimungkinkan juga untuk melewati pembuatan kode mesin dengan benar-benar menerapkan [[interpreter]] atau [[Just-in-time compilation|JIT]] untuk mesin virtual.<ref>{{harvnb|Tanenbaum|1984|p=2. Ch. 1 Introduction}} explains translation and interpretation.</ref>


Penerjemah tidak terlalu rumit dan oleh karena itu lebih mudah untuk di-port daripada generator kode, karena tidak dapat melakukan pengoptimalan kode karena tampilan kode programnya terbatas (itu hanya melihat satu instruksi pada satu waktu, dan Anda memerlukan urutan untuk melakukan optimasi). Beberapa interpreter sangat mudah untuk di-port, karena mereka hanya membuat asumsi minimal tentang set instruksi dari perangkat keras yang mendasarinya. Hasilnya, mesin virtual bahkan lebih sederhana daripada CPU target.<ref>{{harvnb|Richards|Whitby-Strevens|1984|p=133. §7.4 The bootstrapping process and INTCODE}} explains the role of the INTCODE interpreter.</ref>
Penerjemah tidak terlalu rumit dan oleh karena itu lebih mudah untuk di-port daripada generator kode, karena tidak dapat melakukan pengoptimalan kode karena tampilan kode programnya terbatas (itu hanya melihat satu instruksi pada satu waktu, dan Anda memerlukan urutan untuk melakukan optimasi). Beberapa interpreter sangat mudah untuk di-port, karena mereka hanya membuat asumsi minimal tentang set instruksi dari perangkat keras yang mendasarinya. Hasilnya, mesin virtual bahkan lebih sederhana daripada ''CPU target''.<ref>{{harvnb|Richards|Whitby-Strevens|1984|p=133. §7.4 The bootstrapping process and INTCODE}} explains the role of the INTCODE interpreter.</ref>


Menulis sumber kompiler seluruhnya dalam bahasa pemrograman yang seharusnya diterjemahkan oleh kompiler, membuat pendekatan berikut, lebih dikenal sebagai''[[Bootstrapping (kompiler)|compiler bootstrapping]]'', layak di mesin target:
Menulis sumber kompilator seluruhnya dalam bahasa pemrograman yang seharusnya diterjemahkan oleh kompilator, membuat pendekatan berikut, lebih dikenal sebagai''[[Bootstrapping (kompiler)|compiler bootstrapping]]'', layak di mesin sasaran:


# Port penerjemah. Ini perlu dikodekan dalam [[Bahasa rakitan|kode rakitan]], menggunakan [[assembler]] yang sudah ada di target.
# Pemortaan penerjemah. Ini perlu dikodekan dalam [[Bahasa rakitan|kode rakitan]], menggunakan [[assembler]] yang sudah ada di sasaran.
# Sesuaikan sumber generator kode ke mesin baru.
# Sesuaikan sumber pembuat kode (''code generator'') ke mesin baru.
# Eksekusi sumber yang diadaptasi menggunakan penerjemah dengan sumber pembuat kode sebagai input. Ini akan menghasilkan kode mesin untuk generator kode.
# Eksekusi sumber yang disadurkan menggunakan penerjemah dengan sumber pembuat kode sebagai masukan. Ini akan menghasilkan kode mesin untuk pembuat kode.


Bagian yang sulit dari pengkodean rutinitas pengoptimalan dilakukan dengan menggunakan bahasa tingkat tinggi alih-alih bahasa rakitan target.
Bagian yang sulit dari pengkodean rutinitas pengoptimalan dilakukan dengan menggunakan bahasa tingkat tinggi alih-alih bahasa rakitan sasaran.


Menurut para desainer bahasa [[BCPL]], kode yang diinterpretasikan (dalam kasus BCPL) lebih ringkas daripada kode mesin; biasanya dengan faktor dua banding satu. Namun kode yang diinterpretasikan berjalan sekitar sepuluh kali lebih lambat daripada kode yang dikompilasi pada mesin yang sama.<ref>{{harvnb|Richards|Whitby-Strevens|1984|p=136. §7.4.3 Example}} gives an example translation of a BCPL program into INTCODE for the interpreter.</ref>
Menurut para perancang bahasa [[BCPL]], kode yang ditafsirkan (dalam kasus BCPL) lebih ringkas daripada kode mesin; biasanya dengan faktor dua banding satu. Namun kode yang ditafsirkan berjalan sekitar sepuluh kali lebih lambat daripada kode yang dikompilasi pada mesin yang sama.<ref>{{harvnb|Richards|Whitby-Strevens|1984|p=136. §7.4.3 Example}} gives an example translation of a BCPL program into INTCODE for the interpreter.</ref>


Para perancang [[bahasa pemrograman Java]] mencoba memanfaatkan kekompakan kode yang diinterpretasikan, karena program Java mungkin perlu dikirim melalui Internet sebelum eksekusi dapat dimulai pada [[Mesin Virtual Java]] target.
Para perancang [[bahasa pemrograman Java]] mencoba memanfaatkan kekompakan kode yang ditafsirkan, karena program Java mungkin perlu dikirim melalui Internet sebelum eksekusi dapat dimulai pada [[Mesin Virtual Java]] sasaran.


== Porting permainan video ==
== Pemortaan permainan video ==
Porting juga merupakan istilah yang digunakan saat permainan video dirancang untuk berjalan di satu platform, baik itu [[arkade]], [[konsol permainan video]], atau [[komputer pribadi]], dikonversi untuk berjalan di platform yang berbeda. Dari awal permainan video hingga tahun 1990-an, "ports", pada saat itu sering dikenal sebagai "conversions", sering kali bukan port yang benar, melainkan versi permainan yang dikerjakan ulang. Namun, banyak permainan video abad ke-21 yang dikembangkan menggunakan perangkat lunak (sering kali dalam format [[C++]]) yang dapat mengeluarkan kode untuk satu atau lebih konsol serta untuk PC tanpa perlu port yang sebenarnya (alih-alih mengandalkan port umum dari [[Pustaka (perangkat lunak)|pustaka]] komponen individu).
Pemortaan atau ''porting'' juga merupakan istilah yang digunakan saat permainan video dirancang untuk berjalan di satu pelantar, baik itu [[arkade|dingdong]], [[konsol permainan video]], atau [[komputer pribadi]], dikonversi untuk berjalan di pelantar yang berbeda. Dari awal permainan video hingga tahun 1990-an, ''"ports"'', pada saat itu sering dikenal sebagai ''"conversions"'', sering kali bukan porta yang benar, melainkan versi permainan yang dikerjakan ulang. Namun, banyak permainan video abad ke-21 yang dikembangkan menggunakan perangkat lunak (sering kali dalam format [[C++]]) yang dapat mengeluarkan kode untuk satu atau lebih konsol serta untuk PC tanpa perlu porta yang sebenarnya (alih-alih mengandalkan porta umum dari [[Pustaka (perangkat lunak)|pustaka]] komponen individu).


Porting permainan arkade ke sistem rumah dengan perangkat keras yang lebih rendah itu sulit. Versi porting dari [[Pac-Man|Pac-man]] untuk [[Atari 2600]] menghilangkan banyak fitur visual dari permainan asli untuk mengimbangi kurangnya ruang [[ROM]] dan perangkat keras bermasalah ketika beberapa hantu muncul di layar menciptakan efek yang berkedip-kedip. Kinerja yang buruk dari [[Pac-Man (Atari 2600)|Pac-Man porting]] dikutip oleh beberapa ahli sebagai penyebab [[crash permainan video tahun 1983]].<ref>{{cite journal|last1=Nicoll|first1=Benjamin|date=2015|title=Bridging the Gap: The Neo Geo, the Media Imaginary, and the Domestication of Arcade Games|journal=Games and Culture|doi=10.1177/1555412015590048|s2cid=147981978}}</ref>
Pemortaan permainan dingdong ke konsol rumah dengan perangkat keras yang lebih rendah itu sulit. Versi pemortaan dari [[Pac-Man|Pac-man]] untuk [[Atari 2600]] menghilangkan banyak fitur visual dari permainan asli untuk mengimbangi kurangnya ruang [[ROM]] dan perangkat keras bermasalah ketika beberapa hantu muncul di layar menciptakan efek yang berkedip-kedip. Kinerja yang buruk dari [[Pac-Man (Atari 2600)|pemortaan Pac-Man]] dikutip oleh beberapa ahli sebagai penyebab ''crash'' atau [[crash permainan video tahun 1983|jatuhnya permainan video tahun 1983]].<ref>{{cite journal|last1=Nicoll|first1=Benjamin|date=2015|title=Bridging the Gap: The Neo Geo, the Media Imaginary, and the Domestication of Arcade Games|journal=Games and Culture|doi=10.1177/1555412015590048|s2cid=147981978}}</ref>


Banyak port awal mengalami masalah kualitas permainan yang signifikan karena komputer sangat berbeda.{{r|bunten198412}} [[Richard Garriott]] menyatakan pada tahun 1984 di [[Origins Game Fair]] bahwa [[Origin Systems]] mengembangkan permainan komputer untuk [[seri Apple II]] terlebih dahulu kemudian memportnya ke [[Commodore 64]] dan [[Atari 8-bit]], karena [[Sprite (grafika komputer)|sprite]] mesin yang terakhir dan fitur canggih lainnya membuat porting dari mereka ke Apple "jauh lebih sulit, bahkan mungkin tidak mungkin".<ref name="cgw198410">{{cite magazine|title=The CGW Computer Game Conference|magazine=Computer Gaming World|date=October 1984|access-date=31 October 2013|url=http://www.cgwmuseum.org/galleries/index.php?year=1984&pub=2&id=18|pages=30|type=panel discussion}}</ref> Ulasan mengeluhkan porting yang menderita dari "Konversi Apple",<ref name="info198701c64">{{Cite magazine|last1=Dunnington|first1=Benn|last2=Brown|first2=Mark R.|last3=Malcolm|first3=Tom|date=January–February 1987|title=64/128 Gallery|url=https://archive.org/stream/info-magazine-13/Info_Issue_13_1987_Jan-Feb#page/n13/mode/2up|magazine=Info|pages=14–21}}</ref> mempertahankan "suara jelek dan grafis hitam-putih-hijau-ungu" Apple;<ref name="aw1984">{{cite book|year=1984|url=https://archive.org/stream/Atari_Software_1984#page/n21/mode/2up|title=The Addison-Wesley Book of Atari Software|publisher=Addison-Wesley|isbn=0-201-16454-X|editor1=Stanton, Jeffrey|pages=12,21,44,126|editor2=Wells, Robert P.|editor3=Rochowansky, Sandra|editor4=Mellid, Michael}}</ref><ref name="bernstein198505">{{cite news|author=Bernstein, Harvey|date=May 1985|title=Beyond Castle Wolfenstein|url=https://archive.org/stream/1985-05-anticmagazine/Antic_Vol_4-01_1985-05_New_Super_Ataris#page/n81/mode/2up|work=Antic|pages=83|access-date=8 January 2015}}</ref> setelah pernyataan Garriott, ketika [[Dan Bunten]] bertanya "orang-orang Atari dan Commodore di antara penonton, apakah Anda senang dengan penulisan ulang Apple? "teriak penonton "Tidak! "Garriott menjawab," [jika tidak] versi Apple tidak akan pernah selesai. Dari sudut pandang penerbit, itu bukanlah uang yang bijaksana".{{r|cgw198410}}
Banyak porta awal mengalami masalah kualitas permainan yang signifikan karena di komputer sangat berbeda.{{r|bunten198412}} [[Richard Garriott]] menyatakan pada tahun 1984 di [[Origins Game Fair]] bahwa [[Origin Systems]] mengembangkan permainan komputer untuk [[seri Apple II]] terlebih dahulu kemudian memortakannya ke [[Commodore 64]] dan [[Atari 8-bit]], karena ''[[Sprite (grafika komputer)|sprite]]'' mesin yang terakhir dan fitur canggih lainnya membuat pemortaan dari mereka ke Apple dikatakan "jauh lebih sulit, bahkan mungkin tidak mungkin".<ref name="cgw198410">{{cite magazine|title=The CGW Computer Game Conference|magazine=Computer Gaming World|date=October 1984|access-date=31 October 2013|url=http://www.cgwmuseum.org/galleries/index.php?year=1984&pub=2&id=18|pages=30|type=panel discussion}}</ref> Ulasan mengeluhkan porting yang menderita dari "Konversi Apple",<ref name="info198701c64">{{Cite magazine|last1=Dunnington|first1=Benn|last2=Brown|first2=Mark R.|last3=Malcolm|first3=Tom|date=January–February 1987|title=64/128 Gallery|url=https://archive.org/stream/info-magazine-13/Info_Issue_13_1987_Jan-Feb#page/n13/mode/2up|magazine=Info|pages=14–21}}</ref> mempertahankan "suara jelek dan grafis hitam-putih-hijau-ungu" Apple;<ref name="aw1984">{{cite book|year=1984|url=https://archive.org/stream/Atari_Software_1984#page/n21/mode/2up|title=The Addison-Wesley Book of Atari Software|publisher=Addison-Wesley|isbn=0-201-16454-X|editor1=Stanton, Jeffrey|pages=12,21,44,126|editor2=Wells, Robert P.|editor3=Rochowansky, Sandra|editor4=Mellid, Michael}}</ref><ref name="bernstein198505">{{cite news|author=Bernstein, Harvey|date=May 1985|title=Beyond Castle Wolfenstein|url=https://archive.org/stream/1985-05-anticmagazine/Antic_Vol_4-01_1985-05_New_Super_Ataris#page/n81/mode/2up|work=Antic|pages=83|access-date=8 January 2015}}</ref> setelah pernyataan Garriott, ketika [[Dan Bunten]] bertanya "orang-orang Atari dan Commodore di antara penonton, apakah Anda senang dengan penulisan ulang Apple? "teriak penonton "Tidak! "Garriott menjawab," [jika tidak] versi Apple tidak akan pernah selesai. Dari sudut pandang penerbit, itu bukanlah uang yang bijaksana".{{r|cgw198410}}


== Catatan ==
== Catatan ==

Revisi per 30 November 2022 00.36

Dalam ilmu komputer, porting atau pemortaan adalah proses untuk menyadur perangkat lunak sehingga tata olah bisa-laksana (executable program) dapat dibuat untuk lingkungan komputer yang berbeda dengan lingkungan asli rancangannya. Istilah ini juga digunakan untuk mengacu kepada perubahan terhadap perangkat lunak/perangkat keras untuk menjadikannya dapat digunakan di lingkungan yang berbeda.

Perangkat lunak bersifat mudah alih (portable) ketika biaya memindahkannya ke pelantar baru secara signifikan lebih murah daripada biaya penulisannya dari awal. Semakin rendah biaya pemortaan perangkat lunak relatif terhadap biaya implementasinya, dikatakan akan semakin mudah alih.

Etimologi

Istilah "port" berasal dari bahasa Latin portāre, artinya "membawa".[1] Ketika kode tidak kompatibel dengan sistem operasi atau arsitektur tertentu, kode harus "dibawa" ke sistem baru.

Istilah ini umumnya tidak diterapkan pada proses menyadurkan perangkat lunak agar berjalan dengan lebih sedikit memori pada CPU dan sistem operasi yang sama, juga tidak diterapkan pada penulisan ulang kode sumber dalam bahasa yang berbeda (yaitu konversi atau terjemahan bahasa).

Pengembang perangkat lunak sering mengklaim bahwa perangkat lunak yang mereka tulis itu mudah alih, Artinya, diperlukan sedikit upaya untuk menyesuaikannya dengan lingkungan baru. Jumlah upaya yang benar-benar diperlukan bergantung pada beberapa faktor, termasuk sejauh mana lingkungan asli (pelantar sumber) berbeda dari lingkungan baru (pelantar sasaran), pengalaman penulis asli dalam mengetahui konstruksi bahasa pemrograman dan panggilan pustaka pihak ketiga mana saja yang tidak mungkin mudah alih, dan jumlah upaya yang diinvestasikan oleh penulis asli hanya dengan menggunakan konstruksi mudah alih (konstruksi khusus pelantar sering kali memberikan solusi yang lebih murah).

Sejarah

Jumlah CPU dan sistem operasi yang digunakan pada desktop saat ini jauh lebih kecil daripada sebelumnya. Dominasi arsitektur x86 berarti bahwa sebagian besar perangkat lunak desktop tidak pernah diportakan ke CPU yang berbeda. Di pasar yang sama, pilihan sistem operasi telah dikurangi menjadi tiga: Microsoft Windows, macOS, dan Linux. Namun, dalam sistem tertanam dan pasar seluler, portabilitas tetap menjadi masalah yang signifikan, dengan ARM menjadi alternatif yang banyak digunakan.

Standar mancanegara, seperti yang ditetapkan oleh ISO, sangat memfasilitasi pemortaan dengan menentukan perincian lingkungan komputasi dengan cara yang membantu mengurangi perbedaan antara berbagai pelantar yang sesuai standar. Menulis perangkat lunak yang tetap dalam batas-batas yang ditentukan oleh standar ini merupakan upaya praktis meskipun tidak sepele. Pemortaam tata olah semacam itu antara dua pelantar yang sesuai standar (seperti POSIX.1) hanya masalah memuat kode sumber dan mengompilasinya kembali di pelantar baru. Namun, praktisi sering menemukan bahwa berbagai koreksi kecil diperlukan, karena perbedaan pelantar yang tidak kentara. Sebagian besar standar mengalami "area abu-abu" atau tidak pasti di mana perbedaan penafsiran standar menyebabkan variasi kecil dari pelantar ke pelantar.

Ada juga jumlah alat yang terus meningkat untuk memfasilitasi pemortaan, seperti GNU Compiler Collection, yang menyediakan bahasa pemrograman yang konsisten di berbagai pelantar, dan Autotools, yang mengotomatiskan pendeteksian variasi kecil di lingkungan dan menyesuaikan perangkat lunak sesuai sebelum kompilasi.

Kompilator untuk beberapa bahasa pemrograman tingkat tinggi (misalnya, Eiffel, Esterel) mendapatkan portabilitas dengan mengeluarkan kode sumber dalam bahasa perantara tingkat tinggi lainnya (seperti C) di mana kompilator untuk banyak pelantar umumnya tersedia.

Dua aktivitas yang terkait dengan (tetapi berbeda dari) pemortaan adalah emulasi dan kompilasi silang.

Kompilator pemortaan

Alih-alih menerjemahkan langsung ke kode mesin, kompilator modern menerjemahkan ke kode perantara mesin independen untuk meningkatkan portabilitas kompilator dan meminimalkan upaya desain. Bahasa perantara mendefinisikan mesin virtual yang dapat menjalankan semua program yang ditulis dalam bahasa perantara (sebuah mesin yang ditentukan oleh bahasanya dan sebaliknya).[2] Instruksi kode perantara diterjemahkan ke dalam urutan kode mesin yang setara oleh sebuah code generator untuk membuat kode yang dapat dieksekusi. Dimungkinkan juga untuk melewati pembuatan kode mesin dengan benar-benar menerapkan interpreter atau JIT untuk mesin virtual.[3]

Penerjemah tidak terlalu rumit dan oleh karena itu lebih mudah untuk di-port daripada generator kode, karena tidak dapat melakukan pengoptimalan kode karena tampilan kode programnya terbatas (itu hanya melihat satu instruksi pada satu waktu, dan Anda memerlukan urutan untuk melakukan optimasi). Beberapa interpreter sangat mudah untuk di-port, karena mereka hanya membuat asumsi minimal tentang set instruksi dari perangkat keras yang mendasarinya. Hasilnya, mesin virtual bahkan lebih sederhana daripada CPU target.[4]

Menulis sumber kompilator seluruhnya dalam bahasa pemrograman yang seharusnya diterjemahkan oleh kompilator, membuat pendekatan berikut, lebih dikenal sebagaicompiler bootstrapping, layak di mesin sasaran:

  1. Pemortaan penerjemah. Ini perlu dikodekan dalam kode rakitan, menggunakan assembler yang sudah ada di sasaran.
  2. Sesuaikan sumber pembuat kode (code generator) ke mesin baru.
  3. Eksekusi sumber yang disadurkan menggunakan penerjemah dengan sumber pembuat kode sebagai masukan. Ini akan menghasilkan kode mesin untuk pembuat kode.

Bagian yang sulit dari pengkodean rutinitas pengoptimalan dilakukan dengan menggunakan bahasa tingkat tinggi alih-alih bahasa rakitan sasaran.

Menurut para perancang bahasa BCPL, kode yang ditafsirkan (dalam kasus BCPL) lebih ringkas daripada kode mesin; biasanya dengan faktor dua banding satu. Namun kode yang ditafsirkan berjalan sekitar sepuluh kali lebih lambat daripada kode yang dikompilasi pada mesin yang sama.[5]

Para perancang bahasa pemrograman Java mencoba memanfaatkan kekompakan kode yang ditafsirkan, karena program Java mungkin perlu dikirim melalui Internet sebelum eksekusi dapat dimulai pada Mesin Virtual Java sasaran.

Pemortaan permainan video

Pemortaan atau porting juga merupakan istilah yang digunakan saat permainan video dirancang untuk berjalan di satu pelantar, baik itu dingdong, konsol permainan video, atau komputer pribadi, dikonversi untuk berjalan di pelantar yang berbeda. Dari awal permainan video hingga tahun 1990-an, "ports", pada saat itu sering dikenal sebagai "conversions", sering kali bukan porta yang benar, melainkan versi permainan yang dikerjakan ulang. Namun, banyak permainan video abad ke-21 yang dikembangkan menggunakan perangkat lunak (sering kali dalam format C++) yang dapat mengeluarkan kode untuk satu atau lebih konsol serta untuk PC tanpa perlu porta yang sebenarnya (alih-alih mengandalkan porta umum dari pustaka komponen individu).

Pemortaan permainan dingdong ke konsol rumah dengan perangkat keras yang lebih rendah itu sulit. Versi pemortaan dari Pac-man untuk Atari 2600 menghilangkan banyak fitur visual dari permainan asli untuk mengimbangi kurangnya ruang ROM dan perangkat keras bermasalah ketika beberapa hantu muncul di layar menciptakan efek yang berkedip-kedip. Kinerja yang buruk dari pemortaan Pac-Man dikutip oleh beberapa ahli sebagai penyebab crash atau jatuhnya permainan video tahun 1983.[6]

Banyak porta awal mengalami masalah kualitas permainan yang signifikan karena di komputer sangat berbeda.[7] Richard Garriott menyatakan pada tahun 1984 di Origins Game Fair bahwa Origin Systems mengembangkan permainan komputer untuk seri Apple II terlebih dahulu kemudian memortakannya ke Commodore 64 dan Atari 8-bit, karena sprite mesin yang terakhir dan fitur canggih lainnya membuat pemortaan dari mereka ke Apple dikatakan "jauh lebih sulit, bahkan mungkin tidak mungkin".[8] Ulasan mengeluhkan porting yang menderita dari "Konversi Apple",[9] mempertahankan "suara jelek dan grafis hitam-putih-hijau-ungu" Apple;[10][11] setelah pernyataan Garriott, ketika Dan Bunten bertanya "orang-orang Atari dan Commodore di antara penonton, apakah Anda senang dengan penulisan ulang Apple? "teriak penonton "Tidak! "Garriott menjawab," [jika tidak] versi Apple tidak akan pernah selesai. Dari sudut pandang penerbit, itu bukanlah uang yang bijaksana".[8]

Catatan

  1. ^ "port, v.2"Perlu langganan berbayar. Oxford English Dictionary (OED Online). Oxford University Press. Diakses tanggal December 21, 2017. Origin: Of multiple origins. Partly a borrowing from French. Partly a borrowing from Latin. Etymons: French porter; Latin portāre. ... 1. trans. To carry, bear, or convey; to bring. 
  2. ^ Tanenbaum 1984, hlm. 3. §1.1 Languages,Levels, and Virtual Machines describes the terms and their relations.
  3. ^ Tanenbaum 1984, hlm. 2. Ch. 1 Introduction explains translation and interpretation.
  4. ^ Richards & Whitby-Strevens 1984, hlm. 133. §7.4 The bootstrapping process and INTCODE explains the role of the INTCODE interpreter.
  5. ^ Richards & Whitby-Strevens 1984, hlm. 136. §7.4.3 Example gives an example translation of a BCPL program into INTCODE for the interpreter.
  6. ^ Nicoll, Benjamin (2015). "Bridging the Gap: The Neo Geo, the Media Imaginary, and the Domestication of Arcade Games". Games and Culture. doi:10.1177/1555412015590048. 
  7. ^ Kesalahan pengutipan: Tag <ref> tidak sah; tidak ditemukan teks untuk ref bernama bunten198412
  8. ^ a b "The CGW Computer Game Conference". Computer Gaming World (panel discussion). October 1984. hlm. 30. Diakses tanggal 31 October 2013. 
  9. ^ Dunnington, Benn; Brown, Mark R.; Malcolm, Tom (January–February 1987). "64/128 Gallery". Info. hlm. 14–21. 
  10. ^ Stanton, Jeffrey; Wells, Robert P.; Rochowansky, Sandra; Mellid, Michael, ed. (1984). The Addison-Wesley Book of Atari Software. Addison-Wesley. hlm. 12,21,44,126. ISBN 0-201-16454-X. 
  11. ^ Bernstein, Harvey (May 1985). "Beyond Castle Wolfenstein". Antic. hlm. 83. Diakses tanggal 8 January 2015. 

Refrensi