ทำไมไม่มีห้องสมุดมาตรฐานของ Fortran?


10

ในการเป็นภาษาที่เน้นเรื่องคณิตศาสตร์และการคำนวณทางวิทยาศาสตร์ฉันรู้สึกงุนงงกับการขาดการคำนวณทางคณิตศาสตร์ที่มีประโยชน์ในห้องสมุดมาตรฐาน Fortran หนึ่งคาดว่าจะจัดส่งอย่างน้อยพร้อมรูทีนเพื่อคำนวณค่าเบี่ยงเบนมาตรฐานและค่าเฉลี่ย แต่นี่ไม่ใช่กรณี โดยเฉพาะอย่างยิ่งการแนะนำ Fortran 90 และการเพิ่มโมดูล (ซึ่งช่วยลดมลภาวะในเนมสเปซ) ฉันไม่เห็นเหตุผลใด ๆ ว่าทำไมการขาดการบริการที่สำคัญนี้

ฉันต้องการฟังความรู้ของคุณเกี่ยวกับสาเหตุที่เป็นเช่นนี้


เป็นเวลา 20 ปีแล้วที่ฉันใช้ Fortran และในสมัยนั้นฉันไม่ได้ใส่ใจอะไรมากกับสิ่งที่มาตรฐานบอกว่าฉันเพิ่งใช้สิ่งที่เกิดขึ้นกับเครื่อง ฉันพบว่าจำนวนไลบรารีทางคณิตศาสตร์ที่มีอยู่นั้นมีขนาดใหญ่และสม่ำเสมอในเครื่องที่ฉันใช้ ฉันสงสัยว่านี่เป็นเพราะแม้ว่าห้องสมุดจะไม่ได้มาตรฐานหรือไม่ (ฉันไม่รู้ว่าเป็นคำถาม)
Martin York

คำตอบ:


17

ย้อนกลับไปเมื่อ FORTRAN ได้รับการพัฒนาไม่มีสิ่งใดที่สามารถพกพาไปได้ของโค้ด มันเป็นกิจวัตรประจำวันสำหรับคอมไพเลอร์ FORTRAN ในเครื่องหนึ่งเพื่อยอมรับภาษาที่แตกต่างกันเล็กน้อยที่คอมไพเลอร์ในเครื่องอื่น รูปแบบที่พบบ่อยที่สุดคือความยาวชื่อ IBM 1130 FORTRAN อนุญาตให้ใช้อักขระได้ห้าตัว, DEC-10 อนุญาตให้หกตัว, CDC 6600 (เครื่องแรกของฉัน, ภาษาแอสเซมบลีแรกของฉัน) อนุญาตเจ็ดตัว จำเป็นต้องใช้อาร์เรย์สามมิติ อย่างน้อยหนึ่งมินิคอมพิวเตอร์ (Varian 76?) FORTRAN อนุญาตให้มีอาร์เรย์เจ็ดมิติ

บริษัท ขยายภาษาของ FORTRAN เป็นประจำเพื่อให้เครื่องดึงดูดลูกค้ามากขึ้นและในขณะที่ส่วนขยายอาจมีฟังก์ชั่นที่คล้ายกันพวกเขาไม่เคยเหมือนกัน คอมไพเลอร์จำนวนมากให้ส่วนขยายสำหรับการทำไฟล์ I / O และการจัดการการซ้อนทับและพวกเขาก็ไม่เคยเหมือนกัน บางครั้งพวกเขาก็ไม่ได้ปิด

การแปลง FORTRAN-to-FORTRAN การย้ายโปรแกรมจากเครื่องหนึ่งไปยังอีกเครื่องหนึ่งเป็นอุตสาหกรรมที่ยุ่งมากและคนที่สามารถทำได้ก็มักจะหางานทำ (ฉันทำงานสองอย่างจากการแปลง: ฉันช่วยจัดพอร์ตเกม Matusze-Reynolds-McGehearty-Cohen ดั้งเดิม "Star Trek" จาก CDC 6600 ถึง DEC-10 และฉันส่งโปรแกรมการวิเคราะห์ EKG จาก Varian 76 ถึง TI 990 โครงการดังกล่าวเหมือนกัน)

สิ่งนี้ทำให้ยากมากในการจัดหาไลบรารี่ "มาตรฐาน" ถึงแม้ว่าจะมีคนลองใช้บ้าง ห้องสมุด IMSL นั้นใหญ่ที่สุด แต่ถูกจัดส่งในรูปแบบซอร์สโค้ดและลูกค้าจำเป็นต้องใช้เพื่อให้ระบบของเขาทำงานได้

นอกจากนี้: โปรแกรมเมอร์ FORTRAN คาดว่าจะมีพื้นหลังที่เหมาะสมในวิธีการเชิงตัวเลข โปรแกรมเมอร์ของ FORTRAN เกือบทุกคนบนโลกในสมัยนั้นได้เรียนรู้วิธีการทำค่าเฉลี่ยและส่วนเบี่ยงเบนมาตรฐานให้กับตัวเองเพื่อทำการบ้าน โปรแกรมเมอร์ FORTRAN ทุกคนเรียนรู้การแบ่งส่วนและการวนซ้ำของนิวตัน - ราฟสัน (ปัจจุบันเรียกว่า "วิธีการของนิวตัน") ในโรงเรียน มีการสอนวิธี Runge-Kutta โดยปกติแล้วโดยการท่องจำและในเวลานั้นผู้รวบรวม Runge-Kutta ลำดับที่ 6 เป็นตัวอย่างตำราเรียน (ในเวลาต่อมามีคนมากมายที่คิดว่าลำดับที่ 4 Runge-Kutta คือ "จุดที่น่าสนใจ" ในกราฟต้นทุน - ประสิทธิผล)

และ: โปรแกรมเมอร์ผู้เขียน RARELY เปลี่ยนคอมพิวเตอร์โดยไม่เปลี่ยนงาน โปรแกรมเมอร์เหล่านั้นที่เคลื่อนไหวไปมาคาดว่าจะได้รับและต้องการที่จะเรียนรู้ได้ดีว่าระบบใหม่ทำงานอย่างไรและรับความแตกต่าง

ในสภาพแวดล้อมนั้นจะมีการเรียกรหัส STDDEV "มาตรฐาน" น้อยมากเมื่อเป็นสิ่งที่โปรแกรมเมอร์ FORTRAN ระดับเริ่มต้นที่มีความสามารถใด ๆ สามารถเขียนในโหมดสลีปของเขาได้


>: ผู้เขียนโปรแกรมของ FORTRAN นั้นมีพื้นหลังที่เหมาะสมในวิธีการเชิงตัวเลขซึ่งต่างจากในปัจจุบันที่ดูเหมือนว่าทักษะแรกของโปรแกรมเมอร์คือการเรียนรู้วิธีใช้ google :-)
AndersK

3
ทุกคนใช้ NAG อยู่ดี
Martin Beckett

1
@MartinBeckett: นี่นานก่อน NAG
John R. Strohm

1
@ โกงฉันกลัวว่าคุณจะถูกกำหนดให้ผิดหวังอย่างน่ากลัว
John R. Strohm

1
@ Rook ฉันสามารถทำมันได้อย่างแน่นอน แต่ฉันไม่รู้ว่าฉันจะทำมันด้วยวิธีที่มีประสิทธิภาพและเสถียรในการลองครั้งแรก
Ixrec

2

โดยส่วนตัวฉันคิดว่านี่เป็นความจริงเนื่องจากห้องสมุดMKL หากคุณกำลังมองหาห้องสมุดคณิตศาสตร์ที่มีประสิทธิภาพสูง MKL คือสิ่งที่คุณต้องการ มันไม่แพงเลยและห้องปฏิบัติการที่ใช้การคำนวณทางคณิตศาสตร์ในโครงการสามารถจ่ายได้


คุณจะอธิบายเกี่ยวกับเรื่องนี้ในรายละเอียดเพิ่มเติมได้อย่างไร - ทำไมมันถึงตอบคำถามที่ถาม? "เชื่อมโยงเท่านั้นคำตอบ"ไม่ได้ค่อนข้างต้อนรับที่กองแลกเปลี่ยน
ริ้น

1

cernlibได้ทำสิ่งที่คุณถามหาคนที่ทำงานด้านฟิสิกส์พลังงานสูงและมันก็ยังมีประโยชน์



-1

ภาษา FORmulaTRANslation ถูกออกแบบมาเพื่อให้ง่ายสำหรับคุณในการเขียนสูตรของคุณเอง เหตุใด Fortran จึงควรกำหนดฟังก์ชั่นเฉลี่ยเมื่อคุณสามารถเขียนใน Fortran 90 เป็นต้นไป

xmean = ผลรวม (x) / สูงสุด (ขนาด (x), 1)?


3
คุณสมมติว่าอาร์เรย์ x เต็มไปด้วยค่า นี่เป็นข้อสันนิษฐานที่แย่มาก
John R. Strohm
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.