Tại sao không có thư viện chuẩn fortran?


10

Để trở thành một ngôn ngữ tập trung vào toán học và tính toán khoa học, tôi luôn bị bối rối bởi sự thiếu hoàn toàn các thói quen toán học hữu ích trong thư viện tiêu chuẩn Fortran. Người ta mong đợi nó sẽ được vận chuyển ít nhất với một thói quen để tính độ lệch chuẩn và trung bình, nhưng đây không phải là trường hợp. Đặc biệt với việc giới thiệu Fortran 90 và bổ sung các mô-đun (do đó giảm ô nhiễm không gian tên), tôi không thấy bất kỳ lý do nào khiến việc thiếu dịch vụ quan trọng này.

Tôi muốn nghe kiến ​​thức của bạn về lý do tại sao đây là trường hợp.


Đã 20 năm kể từ khi tôi sử dụng fortran và trong những ngày đó tôi không chú ý nhiều đến những gì các tiêu chuẩn nói rằng tôi chỉ sử dụng những gì xảy ra trên máy. Tôi thấy rằng số lượng thư viện toán học có sẵn là rất lớn và nhất quán trên các máy tôi đã sử dụng. Tôi tự hỏi nếu điều này là bởi vì mặc dù các thư viện không chuẩn là chúng có mặt khắp nơi? (Tôi không có ý tưởng đó là một câu hỏi).
Martin York

Câu trả lời:


17

Quay lại khi FORTRAN được phát triển, không có thứ gọi là tính di động của mã. Việc trình biên dịch FORTRAN trên một máy hoàn toàn chấp nhận một ngôn ngữ hơi khác so với trình biên dịch trên máy khác. Biến thể phổ biến nhất là chiều dài tên. IBM 1130 FORTRAN cho phép năm ký tự, DEC-10 cho phép sáu ký tự, CDC 6600 (máy đầu tiên của tôi, ngôn ngữ lắp ráp thực sự đầu tiên của tôi) cho phép bảy ký tự. Các mảng ba chiều được yêu cầu bởi ngôn ngữ; ít nhất một máy tính mini (Varian 76?) FORTRAN cho phép mảng bảy chiều.

Các công ty thường xuyên mở rộng ngôn ngữ FORTRAN của họ, để làm cho máy của họ hấp dẫn hơn đối với khách hàng và trong khi các tiện ích mở rộng có thể cung cấp chức năng tương tự, chúng không bao giờ giống hệt nhau. Rất nhiều trình biên dịch cung cấp các phần mở rộng để thực hiện quản lý I / O và lớp phủ, và chúng không bao giờ giống nhau. Đôi khi, họ thậm chí không gần gũi.

Chuyển đổi từ FORTRAN sang FORTRAN, chuyển một chương trình từ máy này sang máy khác, là một ngành công nghiệp rất bận rộn và những người có thể làm điều đó luôn có thể tìm được việc. . những dự án như vậy là giống hệt nhau.)

Điều này khiến việc cung cấp các thư viện "chuẩn" trở nên rất khó khăn, mặc dù một vài người đã thử. Thư viện IMSL là lớn nhất, nhưng nó được vận chuyển dưới dạng mã nguồn và khách hàng được yêu cầu phải làm cho nó hoạt động trên hệ thống của mình.

Ngoài ra: Các lập trình viên FORTRAN dự kiến ​​sẽ có một nền tảng hợp lý trong các phương pháp số. Chỉ cần mỗi lập trình viên FORTRAN trên hành tinh trong những ngày đó đã học được cách làm trung bình và độ lệch chuẩn cho bản thân, như một bài tập về nhà. Mọi lập trình viên FORTRAN đều học cách chia đôi và lặp lại Newton-Raphson (ngày nay gọi là "Phương pháp của Newton") ở trường. Các phương pháp Runge-Kutta được dạy, thường là bằng vẹt, và tại thời điểm đó, các nhà tích hợp Runge-Kutta bậc 6 là những ví dụ trong sách giáo khoa. (Sau đó nhiều người đã phát hiện ra rằng Runge-Kutta thứ 4 là "điểm ngọt" trên đường cong hiệu quả chi phí.)

Và: Lập trình viên RARELY thay đổi máy tính mà không thay đổi công việc. Những lập trình viên đã di chuyển xung quanh được mong đợi VÀ BẮT BUỘC sẽ rất giỏi trong việc học cách các hệ thống mới hoạt động và tìm ra sự khác biệt.

Trong môi trường đó, sẽ có rất ít cuộc gọi cho mã STDDEV "tiêu chuẩn", khi đó là thứ mà bất kỳ lập trình viên FORTRAN cấp có thẩm quyền nào cũng có thể viết trong giấc ngủ của mình.


> Ngoài ra: Các lập trình viên FORTRAN dự kiến ​​sẽ có một nền tảng hợp lý về phương pháp số - trái ngược với ngày nay khi dường như kỹ năng đầu tiên của lập trình viên là học cách sử dụng google :-)
AndersK

3
Mọi người đều sử dụng NAG
Martin Beckett

1
@MartinBeckett: Điều này đã lâu trước NAG.
John R. Strohm

1
@Rook, tôi e rằng bạn đang bị thất vọng khủng khiếp.
John R. Strohm 6/2/2015

1
@Rook Tôi chắc chắn có thể thực hiện chúng, nhưng tôi không biết tôi sẽ thực hiện chúng một cách hiệu quả và ổn định về số lượng ngay lần thử đầu tiên.
Ixrec

2

Cá nhân tôi nghĩ rằng thực tế này là do thư viện MKL . Nếu bạn đang tìm kiếm một thư viện toán học hiệu năng cao, thì MKL là thứ bạn cần. Nó không phải là đắt, và một phòng thí nghiệm thực hiện tính toán toán học trong các dự án của nó có thể đủ khả năng.


bạn có thể giải thích về điều này chi tiết hơn - làm thế nào và tại sao nó trả lời câu hỏi được hỏi? "Câu trả lời chỉ liên kết" không được chào đón tại Stack Exchange
gnat

1

cernlib đã làm rất nhiều điều bạn yêu cầu cho những người làm việc trong ngành vật lý năng lượng cao và nó vẫn hữu ích.


0

BLAS và LAPACK là các thư viện Fortran tiêu chuẩn thực tế.


-1

Ngôn ngữ FORmulaTRANslation được thiết kế để giúp bạn dễ dàng viết các công thức của riêng mình. Tại sao Fortran nên xác định hàm trung bình khi bạn có thể viết trong Fortran 90 trở đi

xmean = tổng (x) / max (kích thước (x), 1)?


3
Bạn đang giả sử rằng mảng x có đầy đủ các giá trị. Đây thường là một giả định rất xấu để thực hiện.
John R. Strohm
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.