2 sentim.
Sadece C / C ++ 'dan ziyade, genel olarak bu konuda yazı yazmanın daha kolay olduğunu düşünüyorum. İlk olarak, Python gibi dillerdeki kütüphanelerin bir sonuç olsa bile, hızlı bir fayda sağlamak için kullanılması gerekmez. Sanırım
@David nedenleri oldukça iyi karşıladı .
Dilin başından itibaren dil uygulaması bir dereceye kadar hangi kütüphanelere erişiminiz olduğunu belirler. Bilişim biliminde yaygın olarak kullanılan diller arasında C, C ++, Python, Perl, Java, Fortran ve R sayılabilir. Daha az yaygın örnekler Ocaml ve Common Lisp olabilir. Şimdi, bu dillerin çoğu C dilinde yazıldığından, C'ye doğal bir Yabancı İşlev arayüzüne sahiptirler. Ancak, Python'dan Perl kütüphanesi çağırmak pek de kolay değil. Yani pratikte insanlar ya
Uygulama dilinde yazılmış, genellikle standart kütüphanelerin bir parçası olan veya başka şekilde yaygın olarak bulunan bir kitaplık kullanın veya
Dilleri FFI aracılığıyla bir C / C ++ kütüphanesi arayın. Bu, bir sargının zaten var olmadığını varsayar, çünkü varsa, kolayca ayırt edilemez (1).
(2) genellikle daha zordur, çünkü C / C ++ fonksiyonunu kendiniz sarmanız gerekir. Ayrıca, kitaplığı paketlemeniz veya fazladan bir bağımlılık eklemeniz gerekir. Bu nedenle, insanların örneğin C'deki GSL kullanmak yerine yerleşik dil kitaplıklarını kullanma olasılıkları daha yüksektir.
Çok genel rutinler için, dağılımlardan rasgele örnekler üretmek, ya da integrallerin karesi gibi temel sayısal rutinler oluşturmak için, bazı kitaplıkları yeniden kullanmak kolay ve yaygındır. Birinin uygulamaya koymaya çalıştığı işlev daha karmaşık hale geldikçe, birinin başka bir kütüphanede istediği tam işlevi bulması ve hatta birisinin bile araştırmak ve sonunda işlevi uyarlamak için çok zaman harcayacağı ihtimalinin artması pek mümkün değildir. gerekli (örneğin kod stili / tasarımı bir sorun olabilir). Ve yukarıda tartışıldığı gibi, oradaki kütüphanelerin yalnızca bir alt kümesine erişilebiliyor. Öte yandan, eğer karmaşıksa ve ana odak noktası değilse bir algoritma kullanmak zor olabilir ve elbette bu sinir bozucu hız sorunlarıyla ilgilenmek zorundadır.
Böylece, maliyet / fayda analizinde bir optimizasyon problemi haline gelir. Tecrübelerim, MCMC gibi nispeten standart teknikler için bile, genellikle kendi kodumu yazmaya başladım çünkü genel yazılımı nasıl tasarladığımla daha iyi uyuyor.
Elbette, kodu kullanmasanız bile, başkalarının kodlarından ders almak mümkündür. Yine de, bilim adamlarının bunu yapmak için ne sıklıkla uğraştığını bilmiyorum. Benim izlenimim, başkalarının kodlarını öğrenmek için okumanın daha çok bir yazılım mühendisi olacağı yönünde.