ปัจจุบันฉันใช้ C และ FORTRAN บางตัวเพื่อแก้ระบบเชิงตัวเลขของสมการเชิงอนุพันธ์
ฉันเบื่อกับทั้งสองภาษา แต่ฉันต้องมีรหัสที่มีประสิทธิภาพ (ค่อนข้าง) บางอย่าง ... ฉันกำลังคิดที่จะเปลี่ยนเป็น OCaml
มันคุ้มหรือไม่
ปัจจุบันฉันใช้ C และ FORTRAN บางตัวเพื่อแก้ระบบเชิงตัวเลขของสมการเชิงอนุพันธ์
ฉันเบื่อกับทั้งสองภาษา แต่ฉันต้องมีรหัสที่มีประสิทธิภาพ (ค่อนข้าง) บางอย่าง ... ฉันกำลังคิดที่จะเปลี่ยนเป็น OCaml
มันคุ้มหรือไม่
คำตอบ:
ผู้คนที่Jane Street Capitalคิดอย่างนั้น พวกเขาพูดคุยกับ CMU ในปี 2009เกี่ยวกับการใช้ OCaml
ข้อเสียเปรียบอย่างเดียวที่ฉันนึกได้ก็คือเมทริกซ์ไม่ใช่พลเมืองชั้นหนึ่ง
ก่อนอื่นฉันต้องการสร้างข้อความที่ผิดปกติว่าสำหรับการคำนวณเชิงตัวเลขภาษาระดับสูงมีประโยชน์มากกว่าในระยะยาวมากกว่าภาษาระดับต่ำ ผมขออ้างนักวิจัยจาก Fraunhofer Institut ที่ทำงานในแบบจำลองเชิงตัวเลขที่ใช้ในการพยากรณ์อากาศ
ในทศวรรษที่ผ่านมาซีพียูเร็วขึ้น 1,000 เท่าในขณะที่อัลกอริธึมกลายเป็น 1,000 * 1,000 เร็วขึ้น ซึ่งหมายความว่าอัลกอริทึมของวันนี้ที่ทำงานบนซีพียูของเมื่อวานนี้จะเอาชนะอัลกอริทึมของเมื่อวานที่ทำงานบนซีพียูในปัจจุบันได้ 1,000 ตัว
เห็นได้ชัดว่ามีพารามิเตอร์อีกมากที่ต้องคำนึงถึงความเร็วของซีพียูและอัลกอริธึมเช่นดิสก์หรือแรม แต่คำสั่งนั้นช่วยให้เราสามารถยกเลิกการทดสอบได้หากคุณเลือกภาษาที่มีระดับต่ำคุณจะมุ่งเน้นไปที่ปัจจัยผิด ๆ 1000 * 1000)
แน่นอนว่าเมื่อใช้อัลกอริธึมเฉพาะกับตัวเลขใด ๆเราสามารถคาดหวังให้ C หรือ Fortran เอาชนะ OCaml หรือ Common LISP ได้ด้วยปัจจัยขนาดใหญ่ แต่ถ้าคุณสนใจปัญหาเชิงตัวเลขและเต็มใจที่จะปรับปรุงอัลกอริธึมคุณควรเลือกภาษาระดับสูงที่จะช่วยให้คุณสามารถแสดงความคิดเห็นในระดับสูงและเพื่อปรับปรุงอัลกอริทึมได้อย่างง่ายดาย
ในฐานะที่เป็นบันทึกด้านข้างหากคุณพิจารณาการเขียนรหัสตัวเลขใน OCaml คุณควรรู้อย่างแน่นอนเกี่ยวกับวิธีที่ OCaml ส่งผ่านพารามิเตอร์ไปยังฟังก์ชั่นฟังก์ชั่นอินไลน์และ unbox ลอย ทั้งหมดนี้เป็นรายละเอียดในบันทึกของซาเวียร์เลอรอย
ก่อนอื่นto solve numerically systems of differential equations
คุณต้องมีห้องสมุดที่เหมาะสมทั้งหมดก่อน ดังนั้นการตรวจสอบที่จำเป็นคือ: ภาษาการเขียนโปรแกรมx
สนับสนุนพวกเขาหรือไม่
ส่วนตัวผมชอบที่จะเขียนรหัสระดับที่สูงกว่าC
หรือFortran
ดังนั้นฉันได้ใช้Matlab
, ,Octave
numpy\scipy
ฉันชอบ OCaml อย่างน้อยก็จนกว่าฉันจะดูการเขียนโปรแกรมแบบมัลติเธรด