Tolong jelaskan mengenai Sejarah dari Porting

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. Pemortaan 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.