Tôi nên học phiên bản nào của Fortran?


17

Tôi là sinh viên ngành Cơ khí quan tâm đến lĩnh vực kỹ thuật hàng không vũ trụ, theo tôi, Fortran vẫn được sử dụng phổ biến.

Phiên bản nào của Fortran tôi nên đầu tư thời gian để tìm hiểu?


Không có giá trị trả lời đầy đủ, nhưng đáng chú ý là hỗ trợ trình biên dịch cho các tính năng gần đây nhất của Fortran đang thiếu trầm trọng . Xem fortranwiki.org/fortran/show/Fortran+2003+statusfortranwiki.org/fortran/show/Fortran+2008+status Tôi sẽ bắt đầu với 90/95 và tiếp tục tiến lên khi cần thiết.
Doug Lipinski

Đã viết một số suy nghĩ về chủ đề này, vui lòng xem stackoverflow.com/questions/953869/ Khăn stackoverflow.com/questions35349702/ nếu nó có thể được sử dụng. Ngoài những điều trên, tôi muốn giới thiệu F90 sau đó học các tính năng vì bạn sẽ cần chúng.
Rook

1
Lưu ý rằng Matlab có nguồn gốc từ Fortran. Dựa trên ý kiến ​​của bạn, tôi sẽ khuyên bạn nên đánh giá tùy chọn này.
Dennis Jaheruddin

2
Bạn thậm chí có nên học Fortran hoàn toàn dừng lại? Điều này có thể được quyết định bởi số lượng mã kế thừa bạn cần sử dụng - cũng sẽ ra lệnh cho phiên bản Fortran bạn nên tìm hiểu.
Damien

Câu trả lời:


27

Đó là một chút sai lầm phổ biến rằng có một "phiên bản" của Fortran để biết. Với ngoại lệ hiếm, các tiêu chuẩn mới nhất của Fortran (và trình biên dịch) vẫn giữ được khả năng tương thích ngược tuyệt vời với các tiêu chuẩn cũ hơn. Đây là lý do chính đáng: không có nhiều người sẽ sử dụng Fortran ngày hôm nay nếu không có số lượng lớn mã di sản vẫn được sử dụng. Điều đó có nghĩa là, một mã Fortran77 tuân thủ tiêu chuẩn sẽ hầu như vẫn luôn hoạt động với các trình biên dịch mới nhất.

Bạn nên học cách sử dụng phiên bản hiện đại nhất của ngôn ngữ có sẵn. F2008 có thể không bổ sung bất cứ điều gì hữu ích khủng khiếp cho người mới bắt đầu, nhưng việc giới thiệu các khái niệm hướng đối tượng của F2003 chắc chắn là một vấn đề lớn. "Giải thích Fortran hiện đại" là một nơi tốt để bắt đầu và "Thiết kế phần mềm khoa học: Cách hướng đối tượng" cũng khá tốt cho việc thực sự học để đưa nó vào thực tế.

Về mặt thực tế, nếu bạn đang làm việc với mã kế thừa (giả sử F77 hoặc sớm hơn), đôi khi bạn sẽ phải tìm hiểu một số điều họ đã làm do thiếu tính năng F90 +. Ví dụ: nếu bạn đang viết mã Fortran cho một cái gì đó, bạn không bao giờ nên sử dụng cái gọi là "khối GIAO TIẾP", nhưng bạn sẽ luôn thấy chúng xuất hiện trong mã F77 mà bạn có thể phải sử dụng.

Tôi sẽ không bao giờ đề nghị ai đó bắt đầu làm việc ở Fortran mà không có ít nhất các bộ tính năng F90 / 95.

Điều đó nói rằng, nếu bạn không thành thạo lập trình bằng một số ngôn ngữ khác, có lẽ bạn sẽ tìm thấy sự đồng thuận rằng Fortran không phải là ngôn ngữ tốt nhất để học như bạn, ngay cả khi bạn theo đuổi ngành hàng không vũ trụ. (Và tôi nói rằng với tư cách là một người trong ngành hàng không vũ trụ sử dụng Fortran thường xuyên và sử dụng nó như ngôn ngữ đầu tiên của tôi).


2
+1 "Tôi sẽ không bao giờ đề nghị ai đó bắt đầu làm việc ở Fortran mà không có ít nhất các bộ tính năng F90 / 95." . Tôi thứ hai. Bắt đầu với F90, tìm hiểu tất cả các tính năng cơ bản, thực hành một vài chương trình, sau đó chuyển sang các bản phát hành gần đây hơn
Tymric

NẾU không phải Fortran ngôn ngữ nào đáng để học và sẽ thực tế để sử dụng trong kỹ thuật? Matlab thế nào? Tôi cần nó cho một khóa học tôi đang học trong học kỳ tới.
dùng268

@ user26353 Python để lập trình cho mục đích chung, nó có rất nhiều lực kéo trong cộng đồng khoa học. R để phân tích thống kê. MATLAB, Mathicala hoặc Maple (bất cứ thứ gì lớp bạn đang sử dụng) cho điện toán số. SQL cho cơ sở dữ liệu quan hệ. Javascript cho các công cụ web và bởi vì nó đang trở thành ngôn ngữ chung. Tôi sẽ không bận tâm với Fortran cho đến khi một trong những người đó không thể hoàn thành công việc, đó không phải là ngôn ngữ dễ chịu để học như bạn.
Schwern

@Aurelius, tôi đồng ý với đoạn cuối của bạn. Tôi tin rằng cách học lập trình khoa học đúng hoàn toàn ngược lại với trải nghiệm của tôi: python-> C ++ và trong trường hợp bạn cần nó Fortran.
Nicola Cavallini

@ user26353 Matlab là tốt và có lẽ bạn sẽ sử dụng nó rất nhiều ở trường. Python là một nơi tốt để bắt đầu với lập trình có mục đích chung và các mô-đun khó hiểu / khó hiểu có thể thực hiện hầu hết mọi việc bạn có thể làm trong Matlab, và đó là nơi tốt để học các nguyên tắc cơ bản của phần mềm viết. Bạn chắc chắn nên có ít nhất một ngôn ngữ được biên dịch dưới vành đai của bạn; C ++ sẽ là lựa chọn phổ biến nhất.
Aurelius

1

Tôi không đồng ý với cả hai bạn. C ++ và Python vẫn chưa được tối ưu hóa như FORTRAN. Tôi chắc chắn đồng ý rằng FORTRAN 90/95 là mức tối thiểu. Tuy nhiên, nó luôn hữu ích để sử dụng các phiên bản hiện đại khác. Thách thức với FORTRAN là nếu bạn học nó trước khi bạn học các ngôn ngữ hướng đối tượng, điều đó thật dễ hiểu. Sẽ khó hơn nhiều để học nếu bạn quen suy nghĩ với các đối tượng. Tôi dạy lớp siêu máy tính ở đây và tôi buộc học sinh của mình sử dụng FORTRAN. Nó buộc họ phải sử dụng một loại logic khác nhau trong lập trình. Họ không thích nó bởi vì nó không "nghĩ" như Python hay C ++. Tất cả thực sự phụ thuộc vào những gì bạn định làm và mức độ tương đương và hiệu suất.


Chào mừng đến với SciComp.SE. Điều này có vẻ như là một ý kiến ​​hơn là một câu hỏi cho trang web. Nếu bạn cho rằng Fortran "[...] buộc họ phải sử dụng một loại logic khác trong lập trình", bạn nên giải thích lập luận và cho chúng tôi biết lý do tại sao lại như vậy. Ngoài ra, "loại logic" này mà bạn đề cập là gì.
nicoguaro

2
@tmwitten: Câu trả lời này có phải là một nhận xét không? Có lẽ quá dài để bình luận, và ngoài ngữ cảnh, có vẻ như không phải là một sequitur (ví dụ: C ++ và Python không được đề cập trong câu hỏi, "cả hai bạn" dường như đề cập đến Nicola và Aurelius).
Geoff Oxberry
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.