Apakah kode ilmiah suatu ranah yang cukup berbeda untuk mengabaikan standar pengkodean yang umum?
Tidak, tidak.
Kode penelitian sering kali "dibuang" dan ditulis oleh orang-orang yang bukan pengembang berdasarkan latar belakang, betapapun kuatnya kepercayaan akademis mereka. Beberapa kode penelitian yang saya tulis akan membuat saya menangis . Tapi berhasil!
Satu hal yang perlu dipertimbangkan adalah penjaga gerbang untuk proyek mendorong apa yang dimasukkan. Jika sebuah proyek besar dimulai sebagai proyek kode akademik / penelitian, berakhir bekerja, dan sekarang berantakan, seseorang harus mengambil inisiatif untuk memperbaikinya.
Dibutuhkan banyak pekerjaan untuk memperbaiki kode yang ada yang tidak menyebabkan masalah. Terutama jika itu sama sekali spesifik domain atau tidak memiliki tes. Anda akan melihat bahwa OpenCV memiliki panduan gaya yang sangat komprehensif, bahkan jika tidak sempurna. Menerapkan ini secara surut ke semua kode yang ada? Itu .. bukan untuk yang lemah hati.
Ini bahkan lebih sulit jika semua kode itu berfungsi. Karena itu tidak rusak. Mengapa memperbaikinya?
Namun proyek-proyek ini berhasil, dikelola dan digunakan secara luas!
Inilah jawabannya, dalam arti tertentu. Kode kerja masih berguna dan jadi lebih mungkin dipertahankan.
Mungkin berantakan, terutama pada awalnya. Beberapa proyek ini mungkin dimulai sebagai proyek satu kali yang "tidak perlu digunakan kembali dan dapat dibuang."
Juga pertimbangkan bahwa jika Anda menerapkan algoritma yang kompleks mungkin lebih masuk akal untuk memiliki metode yang lebih besar karena Anda (dan orang lain yang akrab dengan sisi ilmiah) secara konseptual dapat memahami algoritma dengan lebih baik. Pekerjaan tesis saya terkait dengan optimasi. Memiliki logika algoritma utama sebagai salah satu metode jauh lebih mudah dipahami daripada mencoba memecahkannya. Itu tentu saja melanggar aturan "7 baris per metode" tetapi itu juga berarti bahwa peneliti lain dapat melihat kode saya dan lebih cepat memahami modifikasi saya pada algoritma.
Jika implementasi ini disarikan dan dirancang dengan baik, transparansi ini akan hilang bagi yang bukan programmer .
Kepada sesama penjawab: Pertanyaan ini merujuk pada basis kode perpustakaan sumber terbuka untuk tugas intensif komputasi dalam satu atau lebih domain ilmiah. Pertanyaan ini bukan tentang kode sekali pakai. Harap jeda sejenak untuk memastikan Anda memahami setiap aspek yang disorot sebelum menulis jawaban.
Saya pikir orang sering memiliki ide ini bahwa semua proyek open source dimulai dengan, "hei saya punya ide bagus untuk perpustakaan yang akan sangat populer dan digunakan oleh ribuan / jutaan orang lain" dan kemudian setiap proyek terjadi seperti itu.
Kenyataannya adalah banyak proyek dimulai dan mati. Persentase proyek yang sangat kecil "berhasil" ke tingkat OpenCV atau VTK dll.
OpenCV dimulai sebagai proyek penelitian dari Intel. Wikipedia menggambarkannya sebagai bagian dari "serangkaian proyek." Rilis non-beta pertamanya adalah 2006, atau tujuh tahun setelah pertama kali dimulai. Saya menduga bahwa tujuan awalnya adalah rilis beta yang bermakna, bukan kode yang sempurna.
Selain itu, "kepemilikan" OpenCV telah berubah secara signifikan. Ini membuat standar berubah, kecuali semua pihak yang bertanggung jawab mengadopsi standar yang sama persis dan mempertahankannya selama proyek berlangsung.
Saya juga harus menunjukkan bahwa OpenCV ada selama beberapa tahun sebelum Agile Manifesto yang mendapatkan inspirasi dari Clean Code diterbitkan (dan VTK hampir 10). VTK dimulai 17 tahun sebelum penerbitan Kode Bersih (OpenCV "hanya" 9 tahun sebelumnya).