2 เซนต์ของฉัน
ฉันคิดว่ามันง่ายที่จะเขียนโดยทั่วไปเกี่ยวกับเรื่องนี้ไม่ใช่แค่เกี่ยวกับ C / C ++ ก่อนอื่นไลบรารี่ในภาษาเช่น Python นั้นไม่จำเป็นต้องใช้เพื่อให้ได้รับผลประโยชน์ด้านความเร็วแม้ว่าจะเป็นผลลัพธ์ก็ตาม ฉันคิดว่า
@Davidกล่าวถึงเหตุผลที่ค่อนข้างดี
การนำมาใช้จากด้านบนการใช้ภาษาในระดับหนึ่งจะกำหนดว่าห้องสมุดใดที่คุณสามารถเข้าถึงได้ ภาษาที่ใช้กันทั่วไปในวิทยาศาสตร์การคำนวณ ได้แก่ C, C ++, Python, Perl, Java, Fortran และ R ตัวอย่างที่พบน้อยกว่าอาจเป็น Ocaml และ Common Lisp ตอนนี้เนื่องจากภาษาเหล่านี้ส่วนใหญ่เขียนด้วยภาษา C พวกเขาจึงมีฟังก์ชั่นอินเตอร์เฟซตามธรรมชาติเป็นภาษาซีอย่างไรก็ตามมันไม่ง่ายนักที่จะโทรพูดห้องสมุด Perl จาก Python หรือในทางกลับกัน ดังนั้นในทางปฏิบัติผู้คนมักจะทำเช่นกัน
ใช้ไลบรารีที่เขียนด้วยภาษาที่ใช้งานของพวกเขาสิ่งที่เป็นประโยชน์โดยทั่วไปที่เป็นส่วนหนึ่งของไลบรารีมาตรฐานหรือมีให้ใช้อย่างกว้างขวางหรือ
เรียกไลบรารี C / C ++ ผ่านทางภาษา FFI สิ่งนี้อนุมานว่าไม่มี wrapper อยู่เนื่องจากถ้ามีมันจะไม่สามารถแยกแยะได้ง่ายจาก (1)
(2) มักจะยากกว่าเพราะคุณต้องห่อฟังก์ชัน C / C ++ ด้วยตัวคุณเอง นอกจากนี้คุณต้องมัดห้องสมุดหรือเพิ่มการพึ่งพาพิเศษ ด้วยเหตุผลดังกล่าวผู้คนมีแนวโน้มที่จะใช้ไลบรารีภาษาในตัวมากกว่าใช้ GSL เช่นซึ่งอยู่ใน C
สำหรับรูทีนที่ทั่วไปมากพูดการสร้างกลุ่มตัวอย่างแบบสุ่มจากการแจกแจงหรือรูทีนตัวเลขขั้นพื้นฐานเช่นการสร้างพื้นที่สี่เหลี่ยมจัตุรัสของอินทิกรัลมันเป็นเรื่องง่ายและเป็นเรื่องธรรมดาที่จะนำไลบรารีบางส่วนมาใช้ซ้ำ ในขณะที่ฟังก์ชันการทำงานที่พยายามนำมาใช้มีความซับซ้อนมากขึ้นมันจะเพิ่มขึ้นอย่างไม่น่าเป็นไปได้ที่จะหาฟังก์ชั่นที่แน่นอนที่เราต้องการในห้องสมุดอื่นและแม้จะทำเช่นนั้น จำเป็น (ตัวอย่างรูปแบบ / การออกแบบอาจเป็นปัญหา) และตามที่กล่าวไว้ข้างต้นเราสามารถเข้าถึงไลบรารีได้เพียงบางส่วนเท่านั้น ในทางกลับกันการใช้อัลกอริทึมด้วยตนเองหากมันซับซ้อนและไม่ใช่จุดสนใจหลักที่อาจเป็นปัญหาและแน่นอนว่าเราต้องจัดการกับปัญหาความเร็วที่น่ารำคาญเหล่านั้น
ดังนั้นนี่จะกลายเป็นปัญหาการเพิ่มประสิทธิภาพในการวิเคราะห์ต้นทุน / ผลประโยชน์ ประสบการณ์ของฉันคือแม้สำหรับเทคนิคมาตรฐานแบบเปรียบเทียบเช่น MCMC ฉันมักจะปิดท้ายการเขียนโค้ดของตัวเองเพราะมันเหมาะกับวิธีการออกแบบซอฟต์แวร์โดยรวมของฉัน
แน่นอนแม้ว่าคุณจะไม่ได้ใช้รหัสก็เป็นไปได้ที่จะเรียนรู้จากรหัสของคนอื่น ฉันไม่รู้ว่านักวิทยาศาสตร์มักจะสนใจทำสิ่งนี้บ่อยแค่ไหน ความประทับใจของฉันคือการอ่านรหัสของผู้อื่นเพื่อเรียนรู้เป็นเรื่องของวิศวกรซอฟต์แวร์มากกว่า