Какую версию Fortran я должен изучить?


17

Я студент машиностроения, интересующийся аэрокосмической техникой, где, как мне сказали, Фортран все еще широко используется.

Какую версию Fortran я должен потратить на изучение своего времени?


Не стоит давать полный ответ, но стоит отметить, что поддержка компилятора для самых последних функций Fortran остро отсутствует. См. Fortranwiki.org/fortran/show/Fortran+2003+status и fortranwiki.org/fortran/show/Fortran+2008+status. Я начну с 90/95 и буду продвигаться по мере необходимости.
Дуг Липински

Написав некоторые мысли по этому вопросу, пожалуйста, смотрите stackoverflow.com/questions/953869/… stackoverflow.com/questions/3549702/… если это может быть полезным. Помимо вышесказанного, я бы порекомендовал F90, а затем изучать функции по мере необходимости.
Ладья

1
Обратите внимание, что Matlab происходит из Фортрана. Исходя из ваших комментариев, я бы порекомендовал вам оценить этот вариант.
Деннис Джаэруддин

2
Стоит ли вообще изучать фортран ? Это может быть продиктовано количеством унаследованного кода, который вам нужно использовать, что также будет определять версию Fortran, которую вы должны изучить.
Дэмиен

Ответы:


27

Это немного популярное заблуждение, что есть «версия» Фортрана, которую нужно знать. За редким исключением последние стандарты Fortran (и компиляторы) сохраняют превосходную обратную совместимость со старыми стандартами. На это есть веская причина: не многие люди сегодня использовали бы Fortran, если бы не большое количество устаревшего кода, который все еще используется. То есть, совместимый со стандартами код Fortran77 почти всегда будет работать с новейшими компиляторами.

Вы должны научиться использовать самую современную версию языка. F2008, возможно, не добавил ничего страшного для новичка, но введение объектно-ориентированных концептов в F2003, безусловно, имеет большое значение. «Modern Fortran Explained» - неплохое место для старта, а «Научное проектирование программного обеспечения: объектно-ориентированный путь» также очень хорош для того, чтобы научиться применять его на практике.

Прагматично: если вы собираетесь работать с унаследованным кодом (скажем, F77 или более ранним), в какой-то момент вам придется изучить некоторые вещи, которые они сделали из-за отсутствия функций F90 +. Например, если вы пишете код на Фортране для чего-то, вы никогда не должны использовать то, что называется «ОБЩИМ блоком», но вы обязательно увидите, что они появляются в коде F77, который вам, возможно, придется использовать.

Я бы никогда не порекомендовал кому-то начать работать в Fortran без, по крайней мере, набора функций F90 / 95.

Тем не менее, если вы не очень хорошо разбираетесь в программировании на каком-либо другом языке, вы, вероятно, найдете согласие с тем, что Fortran не лучший язык для изучения в качестве вашего первого, даже если вы собираетесь в аэрокосмической отрасли. (И я говорю это, как кто-то в аэрокосмической отрасли, который регулярно использует Фортран и использует его как мой родной язык).


2
+1 «Я бы никогда не порекомендовал кому-то начать работать в Фортране по крайней мере без набора функций F90 / 95». , Я второй это. Начните с F90, изучите все основные функции, попрактикуйтесь в нескольких программах, затем переходите к более поздним выпускам
Tymric

Если не Фортран, какой язык стоит изучать и будет ли практичным использовать его в технике? Как поживает Матлаб? Мне нужно это для курса, который я беру в следующем семестре.
user26358

@ user26358 Python для программирования общего назначения, он очень популярен в научном сообществе. R для статистического анализа. MATLAB, Mathematica или Maple (что бы ни использовал ваш класс) для численных вычислений. SQL для реляционных баз данных. Javascript для веб-контента и потому, что он становится языком общения. Я не стал бы беспокоиться о Фортране, пока один из них не сможет выполнить свою работу, это не приятный язык для изучения в качестве первого.
Шверн

@ Аврелий, я согласен с твоим последним абзацем. Я считаю, что правильный путь изучения научного программирования - это совершенно противоположное, что я испытал: python-> C ++ и, в случае необходимости, Fortran.
Никола Каваллини

@ user26358 Matlab хорош, и вы, вероятно, будете его использовать чертовски много в школе. Python - это хорошее место для начала с программирования общего назначения, и его модули numpy / scipy могут выполнять большую часть того, что вы, вероятно, будете делать в Matlab, и это хорошее место для изучения основ написания программного обеспечения. У вас обязательно должен быть хотя бы один скомпилированный язык под вашим поясом; C ++ будет самым популярным выбором.
Аврелий

1

Я не согласен с вами обоими. C ++ и Python все еще не так оптимизированы, как FORTRAN. Я бы определенно согласился с тем, что FORTRAN 90/95 - это минимум. Однако всегда полезно использовать другие, более современные версии. Проблема с FORTRAN заключается в том, что если вы изучите его до изучения объектно-ориентированных языков, его легко понять. Гораздо сложнее учиться, если вы привыкли мыслить объектами. Я преподаю здесь класс суперкомпьютеров и заставляю своих учеников использовать Фортран. Это заставляет их использовать другую логику в программировании. Им это не нравится, потому что оно «не думает», как Python или C ++. На самом деле все сводится к тому, что вы намерены делать, и насколько важны парализация и производительность.


Добро пожаловать в SciComp.SE. Это выглядит скорее как мнение, чем вопрос для сайта. Если вы считаете, что Фортран «[...] заставляет их использовать другую логику в программировании», вы должны разработать аргумент и рассказать нам, почему это так. А также, что это за «логика», которую вы упоминаете.
Никогуаро

2
@tmwitten: этот ответ должен быть комментарием? Вероятно, это слишком долго, чтобы быть комментарием, и вне контекста выглядит не секвестром (например, C ++ и Python не упоминаются в вопросе, «вы оба», похоже, относятся к Никола и Аврелию).
Джефф Оксберри
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.