Ada beberapa perpustakaan, yang tersedia dalam versi mereka yang ditulis dalam banyak bahasa pemrograman yang berbeda, seperti misalnya Lucene , yang ditulis dalam Java (seperti yang mereka katakan, 100% Java murni), tetapi juga memiliki versinya dalam C ++, C, Perl , Ruby, Lisp dan beberapa bahasa lainnya. Dan saya berbicara tentang implementasi dalam bahasa ini, bukan hanya antarmuka FFI .
Mengapa orang melakukan itu? Saya dapat melihat satu alasan yang jelas: penyebaran dan distribusi (dan mungkin pengembangan juga) lebih mudah ketika sebuah proyek memiliki lebih sedikit ketergantungan. Tetapi apakah ada hal lain? Dalam situasi apa itu sepadan?
programming-languages
libraries
mik01aj
sumber
sumber
Jawaban:
Beberapa alasan saya telah melakukannya (menulis ulang kode C di Haskell, dalam kasus saya):
sumber
Biasanya menerapkan kembali perpustakaan menjadi "asli" untuk platform tertentu memungkinkan untuk:
Sebagai contoh, saya memulai proyek Noda Time sebagai pelabuhan Joda Time . Ini tidak praktis untuk menggunakan Joda Time langsung dari dalam. NET ... Anda benar-benar tidak ingin harus memutar JVM hanya untuk melakukan perhitungan tanggal dan waktu, serta mencari cara melakukan interop antara keduanya Port otomatis (ala J #) mungkin layak, tetapi hasil akhirnya tidak akan menjadi API yang menyenangkan dan idiomatis untuk digunakan dari C #.
sumber
Beberapa orang melakukannya untuk membantu mempelajari bahasa baru. Mereka memilih lib yang mereka kenal dalam bahasa sebelumnya, melihat bahwa ada kebutuhan untuk itu dalam bahasa baru, dan mulai memindahkannya.
Porting sesuatu yang akrab adalah cara terbaik untuk fokus hanya pada bagian bahasa dari bahasa baru, dan tidak benar-benar khawatir tentang masalah domain.
Ini juga memiliki manfaat tambahan, setelah selesai, tidak membuang kode seperti banyak proyek sampel yang ditemukan dalam buku atau tutorial, itu sebenarnya bisa menjadi sesuatu yang dapat digunakan masyarakat, menambahkan, refactor, mendiskusikan, dll.
sumber
Terkadang Anda mengembangkan untuk platform di mana alat perangkat lunak itu ditulis (Java dalam kasus Lucene) bukan pilihan. Jika Anda ingin fitur tanpa harus merekayasa ulang kode dari awal, Anda port kode.
sumber