Bilimsel kod, ortak kodlama standartlarını göz ardı etmek için yeterince farklı bir alan mıdır?
Hayır değil.
Araştırma kodu genellikle "atılmaktır" ve geçmişe göre geliştirici olmayan insanlar tarafından yazılmış, ancak akademik referansları güçlüdür. Yazdığım araştırma kodlarından bazıları beni ağlatıyor . Ama işe yaradı!
Dikkate alınması gereken bir şey, projelere kapı açanların dahil olanı yönlendiren projelerdir. Büyük bir proje bir akademik / araştırma kodu projesi olarak başladıysa , çalışmaya başlar ve şimdi bir karmaşa ise, birisinin onu yeniden yapılandırmak için inisiyatif alması gerekir.
Sorun yaratmayan mevcut kodu yeniden düzenlemek çok fazla zaman alıyor. Özellikle de belirli bir alanda ise veya testler yoksa. OpenCV'nin mükemmel olmasa bile çok kapsamlı bir stil rehberine sahip olduğunu göreceksiniz . Geriye dönük olarak mevcut tüm koda uygulamak? Bu .. kalbin zayıflığı için değil.
Tüm bu kod çalışırsa bu daha da zor. Çünkü kırılmadı. Neden tamir ettin?
Yine de bu projeler başarılı, sürdürüldü ve yaygın olarak kullanılıyor!
Bir anlamda cevap budur. Çalışma kodu hala kullanışlıdır ve bu nedenle de sürdürülmesi daha olasıdır.
Özellikle başlangıçta bir karışıklık olabilir. Bu projelerden bazıları muhtemelen “hiç yeniden ele geçirilmesine gerek kalmayacak ve atılabilecek” bir ilk proje olarak başladı.
Ayrıca, karmaşık bir algoritma uyguluyorsanız, daha büyük yöntemlere sahip olmanın daha mantıklı olabileceğini göz önünde bulundurun, çünkü siz (ve bilimsel tarafa aşina olanlar) algoritmayı kavramsal olarak daha iyi anlayabilirsiniz. Tez çalışmamın optimizasyonla ilgisi vardı. Ana algoritma mantığını bir yöntem olarak kullanmak, onu parçalamaya çalışmaktan çok daha kolay anlaşılıyordu. Kesinlikle "yöntem başına 7 satır" kuralını ihlal etti, ancak aynı zamanda başka bir araştırmacının koduma bakabileceği ve algoritmadaki değişiklikleri daha hızlı anlayabileceği anlamına geliyordu.
Bu uygulama soyutlanmış ve iyi tasarlanmışsa, bu şeffaflık programcı olmayanlar için kaybedilir .
Cevaplayıcılar için: Bu soru, bir veya daha fazla bilimsel alandaki hesaplama yoğun görevler için açık kaynaklı kütüphanelerin kod tabanını ifade eder. Bu soru fırlatma kodu ile ilgili değil. Bir cevap yazmadan önce vurgulanan her yönü kavradığınızdan emin olmak için lütfen bir süre duraklayın.
İnsanların sık sık tüm açık kaynaklı projelerin “hey, çılgınca popüler olacak ve binlerce / milyon insan tarafından kullanılacak bir kütüphane için harika bir fikrim var” diye başladığını düşündüklerini düşünüyorum.
Gerçek şu ki, birçok proje başlatıldı ve öldü. Gülünç derecede küçük projelerin yüzdesi OpenCV veya VTK vb. Seviyelere "yapar".
OpenCV, Intel'den bir araştırma projesi olarak başladı. Wikipedia bunu "bir dizi projenin" parçası olarak nitelendirdi. İlk beta olmayan sürümü 2006 ya da ilk başlatılmasından yedi yıl sonraydı. Amaç başlangıçta mükemmel beta değil anlamlı beta sürümleri olduğundan şüpheleniyorum.
Ek olarak, OpenCV'nin "mülkiyeti" önemli ölçüde değişmiştir. Bu, tüm sorumlu taraflar aynı standartları kabul etmedikçe ve bunları proje süresince tutmadıkça standartların değişmesini sağlar.
Ayrıca OpenCV'nin Temiz Kod'dan ilham alan Çevik Manifesto'dan yayınlanmasından önce birkaç yıl civarında olduğunu da belirtmeliyim (ve VTK neredeyse 10). VTK, Temiz Kod'un yayınlanmasından 17 yıl önce başlatıldı (OpenCV, 9 yıl önce "sadece" idi).