Фортран 90

Posted on by admin
  1. Фортран 90
  2. Фортран 90 Учебник

Попробовать написать здесь свой первый пост меня подтолкнула, где предлагает использовать для обучения C. Да, на данную тему было сломано множество копий. Я, как и наверное большинство школьников на просторах нашей необъятной Родины, начинал постигать азы через синий экран, но не смерти, а Turbo Pascal 7.0. Был конечно и Basic, с котором я впервые столкнулся в дошкольном возрасте на советском компьютере «Электроника».

Встроенные функции Fortran 90. Здесь большое число встроенных функций Fortran 90 и 5 встроенных подпрограмм. Численные и математические подпрограммы рассмотрены очень кратко, поскольку они не заменены по сравнению с Fortran 77 и они могут быть известны. Раздел базируется. Алгоритмический Язык Фортран 90: Учебное пособие. Страница 6Читать бесплатно книгу онлайн без регистрации в электронном виде на сайте полнотекстовой электронной библиотеки Единое окно для учащихся ВУЗов, школ, педагогов и методистов. Каталог книг постоянно обновляется. ISBN 5-86404-113-0. Излагаются базовые свойства Фортрана фирм Compaq и Microsoft, основанные на стандартах Фортран 90 и 95. По существу, пособие является новой, усовершенствованной версией одноименного издания 1998 г. Дополнительно в книгу включены нововведения стандарта Фортран 95.

Тогда он казался странным текстовым редактором, ведь компьютер глазами ребенка создан для игр. Однако уже в институте я познакомился с языком Fortran, познав который, я до сих пор недоумеваю, почему он не используется для обучения. Да, многие скажут, что язык мертвый, не соответствует современным реалиям, а учебники с названием, как на картинке, вызывают лишь улыбку. Я попробую объяснить, чем же так замечателен этот язык и почему я его рекомендую в качестве первого языка. Если заинтересовало, добро пожаловать под кат.

Я считаю, что базис по основам программирования должен закладываться еще в школьные годы, хотя бы в старших классах. Даже если в жизни компьютер будет использоваться только для набора текста в Word'е или для общения в социальных сетях, минимальные знания о том, что такое алгоритм и как структурировать последовательность действий, чтобы получить нужный результат, по крайней мере не повредят молодому отроку во взрослой жизни, а скорей всего помогут сформировать особый склад ума. Для того, чтобы уроки информатики были в радость, а не снились в кошмарных снах, обучаемый должен понимать, что он делает, как он это делает и почему получается так, а не иначе.

Ведь по сути нужно правильно донести информацию о цикле и условном операторе, чтобы человек мог писать программы самостоятельно. При этом, чем проще синтаксис языка, тем легче понять логику написания кода. Если же человек научится составлять правильный алгоритм, то для программирования на других языках, ему понадобится только узнать синтаксис этого языка, а базис уже будет заложен. Чем же так замечателен Фортран? Обратимся к истории создания этого языка.

Появился он в далекие 50-е годы прошлого века, когда компьютеры еще были большие, программистов было мало, а информатика не преподавалась в школе, да и вообще считалась лженаукой. Нужен был простой язык, который помогал бы инженерам и ученым «скармливать» ЭВМ формулы, написанные на бумаге, пусть даже через перфокарты. Отсюда и название самого языка: Formula Translator или же «переводчик формул». Изначально язык был ориентирован на людей без специальной подготовки, а значит должен был быть максимально простым. Что ж, простота создателям удалась. Классическая первая программа выглядит следующим образом: program hw write(.,.) 'Hello, World!' End Синтаксис даже чуть проще Паскаля, нет необходимости ставить в конце строки ';' или ':' перед знаком равенства.

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

Недаром программы, написанные на 77 Фортране, получили из уст моего знакомого емкое название «Брежневский код». Поэтому весь мой текст относится к стандарту языка 90 и новее. Для примера, приведу код для вычисления суммы неотрицательных целых чисел от 1 до n, вводимого с клавиатуры, написанный моей дипломницей при обучении её программированию с нуля. Именно на ней я испытал преподавание Фортрана в качестве первого языка. Надеюсь, что для неё это пошло на пользу, а мой экперимент удался. По крайней мере основы она усвоила за пару занятий, первое из которых ушло на лекцию про язык. Program chisla implicit none!

Variables integer n,i,s! Body of chisla s=0 write (.,.) 'Введите n' read (.,.) n if (n.le.0) then write (.,.) 'Отрицательное или ноль' else do i=1,n s=s+i end do write (.,.) 'Сумма=', s end if end Нетрудно заметить, что как мы думаем, так и записываем код.

Никаких сложностей у обучаемого не может возникнуть в принципе. Внимательный читатель конечно же спросит, что за implicit none и две звездочки в скобках через запятую. Implicit none говорит нам, что мы явно указываем тип переменных, тогда как без данной записи компилятор будет сам угадывать тип. Первая звездочка означает, что ввод и вывод происходят на экран, а вторая говорит о том, что формат ввода-вывода определяется автоматически. Собственно, программы на Фортране выглядит не сложнее, чем написанный выше кусок кода. А что насчет программной среды?

В школах, да и в любых госучреждениях, часто встает вопрос о программном обеспечении, в частности об его лицензионности. Потому как деньги на эти нужды особо не выделяются. По крайней мере в мое время, с этим была проблема, может сейчас ситуация изменилась в лучшую сторону.

Для написания программ на Фортране подойдет любой текстовый редактор. Если хочется подсветки синтаксиса, то можно использовать Notepad (поддерживает синтаксис только 77 стандарта) или SublimeText. Программу написали, чем будем компилировать?

Тут все просто, можно использовать свободный GNU Fotran. Если использование планируется некоммерческое, то разрешается замахнуться и на компилятор от Intel, который хорошо оптимизирован под одноименные процессоры и поставляется с минимально необходимым IDE. Порог вхождения весьма льготный.

Лучшей средой разработки под Фортран по мнению многих пользователей остается Compaq Visual Fortran 6.6, последняя версия которого увидела свет в начале 2000-х. Почему же так сложилось, что среда, основанная на Visual Studio 6.0, которая без танцев с бубном заводится максимум на Windows XP 32 bit, и имеет ограничение на используемую память, снискала такую популярность среди фортранщиков. Ответ приведен на рисунке ниже. Это Compaq Array Visualizer, который представляет собой очень удобный инструмент по визуализации 1, 2 и 3-х мерных массивов в процессе отладки программы непосредственно из дебаггера. Как говорится, попробовав раз, ем и сейчас.

Фортран 90

Дело в том, что Фортран сейчас используется в основном в науке (о чем будет сказано позже), в частности в той области, с которой я имею дело, а именно в физике атмосферы. При отладке программ массивы представляют собой различные метеорологические поля, такие как температура, давление, скорость ветра. Искать ошибку в графических полях гораздо проще, чем в наборе цифр, тем более, обычно известно, как примерно должно выглядеть поле, поэтому очевидные ошибки отсекаются моментально. К сожалению, все наработки по компилятору перешли от Compaq к Intel. Intel первоначально поддерживала Array Visualizer, правда, уже те версии были бледным отражением продукта от Compaq, работать с ними было не так удобно, как прежде, но хотя бы минимальная работоспособность поддерживалась.

Увы, Intel перестала разрабатывать новые версии Array Visualizer'а, поставив крест на этом удобнейшем инструменте. Именно поэтому фортрановское сообщество в основной своей массе пишет программы и занимается их отладкой под Compaq Visual Fortran на Windows, а боевые расчеты запускает на серверах под Linux, используя Intel-овские компиляторы. Интел, пожалуйста, услышь мольбы пользователей, верни нормальный инструмент для визуализации массивов в свой дебаггер!

Место Фортрана в современном мире А сейчас мы подошли к той самой теме, которая обычно вызывает бурную дискуссию с моими коллегами, использующими Matlab, которые утверждают, что описанный в данном посте раритетный язык ни на что не годится. Тут я с ними не соглашусь. Дело в том, что Фортран исторически использовался в инженерных или научных расчетах, а потому со временем обрастал множеством готовых библиотек и кодами программ решения той или иной задачи. Код в буквальном смысле передается из поколения в поколение, да еще и хорошо документируется. Можно найти множество готовых решений уравнений математической физики, линейной алгебры (здесь следует отметить удачную реализацию работы с матрицами), интегральных и дифференциальных уравнений и многого-многого другого.

Наверное тяжело найти задачу из области физмат наук, для которой не был бы реализован алгоритм на языке Фортран. А если учесть отличную оптимизацию интеловских компиляторов под интеловские же процессоры, поддержку параллельных вычислений на высокопроизводительных кластерах, то становится понятно почему в научной среде этот язык занимает заслуженное первое место. Думаю, на любом суперкомпьютере можно найти установленный фортрановский компилятор. Большинство серьезных моделей, по крайней мере из области физики атмосферы, написаны именно на Фортране. Да-да, прогноз погоды, которым каждый интересуется время от времени, получается в ходе расчетов моделей, написанных на этом языке. Более того, язык не находится в стагнации, а постоянно совершенствуется. Так, после описанных раннее стандартов 77 и 90, появились новые редакции 95, 2003, 2008, поддержка которых внедрена в актуальные компиляторы.

Последние версии Фортрана несколько освежили старый проверенный временем язык, превнеся поддержку современного стиля, добавив объектно-ориентированное программирование, отсутствие которого было чуть ли не самым главным козырем противников этого языка. Более того, The Portland Group выпустила PGI CUDA Fortran Compiler, позволяющий проводить высокопараллельные расчеты на видеокартах. Таким образом, пациент более чем жив, а значит программисты на Фортран остаются востребованными до сих пор. Вместо послесловия А теперь я хотел бы вернуться к изначально затронутой теме об обучении программированию, и попытаться тезисно сформулировать основные плюсы Фортрана при выборе его в качестве первого языка. Фортран очень прост в обучении, синтаксис понятен неподготовленному человеку. Познав основы, легко переучиться на любой другой язык.

Бесплатный набор средств позволяет не получать лишних вопросов от правообладателей. Язык знаком преподавателям, так как существует давно, а учителя у нас в основном представители старшего поколения. Широко распространен по всему миру и является кладезем всевозможных библиотек. Стандартизирован, кроссплатформеннен и совместим с более ранее ревизиями. Полезен для студентов технических, а особенно физмат специальностей, ввиду ориетации на научные и инженерные вычисления. Актуален и востребован и по сей день.

Так почему же не Фортран? Метки:. Добавить метки Пометьте публикацию своими метками Метки лучше разделять запятой. Например: программирование, алгоритмы. Если бы у меня был ребенок, я бы хотел, чтобы обучение для него было в радость, и всё было понятно. Чтобы он мог представить алгоритм и вбить код на компьютере, прилагая минимальное количество усилий.

Ведь в программирование главное затянуть. Если с самого начала обучаемый сталкивается с чем-то непонятным, то возможно желание разбираться дальше и не возникнет, да все закончится на первом занятии. Я не говорю, что Фортран — панацея, давайте все перейдем на него. Я говорю, что это один из вариантов затянуть в удивительный мир программирования:). Да я не спорю, что он легкий. Но я так и не увидел его плюсов относительно Паскаля и Дельфей.

Причем как верно ниже заметили, порой Паскаль даже легче или уж точно не сложнее. По крайней мере мне, если я был бы незнаком с программированием, вполне себе было бы понятно, что такое println('Hello world'); Но не очень понятно, что такое write (.,.) 'Hello world' Зачем эти звездочки и скобки? Понятно, что это ерунда и разобраться — дело минуты. Но вот уже пример того, что Фортран в данном случае не легче Паскаля. А если дальше копать, то может и еще что вскроется. Когда пытался использовать gfortran для своих программ (небольших и учебных), меня просто убивала неинформативность выдаваемых компилятором ошибок. Или, как вариант, программа могла откомпилироваться и выдать «segmentation fault» сразу после старта без объяснения причин.

Из отладчиков я пробовал только gdb, но весь процесс отладки оставил впечатление чего-то очень долгого и болезненного. Есть ли более удобные инструменты для поиска ошибок и отладки? Будьте внимательны, программа на f77 не откомпилируется, если не сделать семь отступов в начале каждой строчки.

Статья интересна с общеобразовательной точки зрения. Но: Беда нашей системы образования в том, что она плодит теоретиков — людей, который впоследствии только и могут, что преподавать в тех же ВУЗах, где они учились. Зачем учить студентов Фортрану? Пусть рисуют блок-схемы.

Еще нагляднее, еще понятнее. Почему не учить программировать на python, к примеру? Вполне живой язык, имеющий огромное практическое применение, поддерживающий любые парадигмы программирования, с простым порогом вхождения. Вообщем (с) «Какое низкое коварство. Полуживого забавлять».

Нетрудно заметить, что как мы думаем, так и записываем код Обратное верно. Программированию стоит учиться, чтобы научиться думать больше и лучше.

Например, лисп, пролог, смолтолк и D несут в себе заряды идей, которые меняют во многом сам образ мышления. Пролог ломает голову декларативностью, лисп — макросами, смолтолк — объектами и интерфейсами, D — статическим метапрограммированием.

Поломанная голова срастается и становится крепче, чем была когда-либо до этого. Суть такого обучения понятна и очевидна. Фортран же, равно как и питон и даже С — языки практические и потому неинтересные. Они во многом впитывают чужие идеи, подстраивая их под свой синтаксис и свою инфраструктуру. Плюсы, например, имеют и объекты, и метапрограммирование, и функции как объекты первого рода, но все это намного больше похоже на эмуляцию, чем реализацию. Как говорил Алан Кей: «Я придумал термин „объектно-ориентированный“, и я уверяю вас, что не имел в виду C».

Поэтому может Фортран и годится в качестве первого языка, но разве что первого. С дидактической точки зрения он не так уж ценен. Относительно простоты синтаксиса — даже из приведенных примеров очевидно, что не такой уж синтаксис и простой у Фортрана.

Интуитивность здвесь видят только те, кто уже знает Фортран. Для сравнения, аналогичная (неэффективная) программа для тех же вычислений на Матлабе: n = input('Enter n:'); if n. Я же специально написал, что речь идет о Фортране 90, а никак не 77, о котором ходят только страшилки. Своим постом я никак не хотел задеть чувства верующих приверженцев того или иного языка программирования, а обратить внимание на незаслуженно списанный на пенсию Fotran. Я не призываю обязательно изучать его, а рассматривать, как альтернативу традиционному Паскалю/Бейсику/ Честно говоря, перед публикацией я опасался, что вернусь в рид-онли, затронув такую холиварную тему, а тем более, влезая с «дедовским» языком.

Я рад, что мне удалось хоть чуть-чуть поучаствовать в популяризации Фортрана. Если хотя бы пару человек захотят посмотреть, как это работает, или расскажет друзьям — уже хорошо.

Ведь до прямого контакта с Фортраном я тоже опирался на мифы и легенды древней Греции слухи. Теперь познакомившись чуть ближе, готов рекомендовать его. Не так он страшен, как о нем говорят.

В защиту старичка родом из 50-х можно сказать, что одно из крупнейших открытий человечества за последние годы (а именно открытие в 2012-м году новой фундаментальной частицы — бозона Хиггса), было сделано при непосредственном участии многих тысяч строк фортрановского кода: Фортран используется для Монте-Карло генерации событий, для моделирования различных их свойств. Которые затем уже проверяются экспериментально. C-ные варианты генераторов событий, конечно, наращивают присутствие в физике элементарных частиц, но пока даже не догнали фортрановские по частоте использования. Фортран — это обыкновенный структурный язык, поэтому как и всякий подобный язык (С например) он хорош только до определенной сложности программ.

В последнее время его используют всё реже, даже привыкшие к нему матерые физматовцы, из-за того, что сложность программ резко выросла, а также из-за того, что поддержка новых аппаратных устройств, таких как GPU, Intel Phi на С сделана лучше: CUDA Fortran по сравнению с CUDA C — продукт вторичный и глючный, а OpenCL и Cilk Plus для фортрана не существуют. Попытки в сложных программах использовать квази ООП-шные фичи фортрана рождают преимущественно страшных неподдерживаемых уродцев. Конечно, Фортран хорош тем, что он простой, как валенок.

В общем-то студенты его осваивают за пару недель, и даже пишут на нем программы, которые затем включаются в эти мифические «библиотеки долгой поддержки». Проблем в том, что качество программ в таких библиотеках ровно такое, какое могут предоставить студенты, изучившие программирование за пару недель. И эти библиотеки все равно приходится переписывать при переходе на новые аппаратные платформы. Сам я на фортране программирую уже лет 15 и повидал на нём всё, что только можно.

Фортран для изучения в качестве первого языка не лучше и не хуже того же Паскаля. А вот его «востребованность» я бы поставил по сильное сомнение.

Это в том числе. Но Фортран сам по себе очень приятный язык, сделанный для людей, без этих монструзных конструкций, так свойственным современным мейнстримовым языкам. Там уже куча всего из под коробки и оно отлично работает, не надо ломать голову над никому не нужным синтаксическим сахаром. Ну и интересный момент — ни раз бывало, что фортрановский скомпилированный код получался на 5-10% быстрее кода на Си, при этом компилятор то один и тот же (интеловский) ну т.е. Для того что бы получить такой же быстрый код на Си надо серьезно поизвращаться. Вот и получается, что по соотношению затраты/производительность, Фортран оказывается самым оптимальным.

За бугром (особенно в США) он куда более распространен чем в РФ (в РФ я бы сказал про него почти никто не знает). Здесь, A, B, C – массивы некоторой размерности (допустим, 10x10x10).

C = A.B даёт нам поэлементное перемножение матриц, если A и B одного размера. Для матричного умножения используется C = matmul(A,B). Почти все внутренние функции Fortran (Sin, Exp, Abs, Floor, и т.д.) принимают массивы в качестве аргументов, что приводит к простому и чистому коду. Похожего кода в C/C просто нет. А почему автор оригинала умалчивает о возможности введения классов и переопределении операторов в C, с помощью которых можно записать векторные и матричные вычисления таким же простым и чистым кодом? Потому, что в C всё это можно сделать тысячей способов, разница в производительности которых может достигать нескольких порядков. Компиляторы фортрана же предлагают достаточно производительное, унифицированное и простое в использовании решение из коробки.

Например вы можете дать коллеге код на фортране и он сразу же заработает. Можете найти на старой ленте программу написанную неизвестно кем в 1970-х и она скомпилируется с кучей ворнингов, но выдаст точный результат. C/C — более универсальный вариант. Вы можете использовать одну из тысяч библиотек, или написать свой велосипед. Но будьте готовы, что у вашего друга интеграция вашего кода может занять некоторое время потому что используемые библиотеки, их версии, или формат хранения могут быть несовместимы. Потому, с точки зрения представления алгоритмов, программы на фортране в разы более переносимы чем на любом другом языке. Язык развивался все эти годы именно в этом направлении и это работает.

Фортран 90 Учебник

Ваша ссылка сама по себе не говорит не о чём. За ВСЕ пакеты для квантовой химии сказать не могу, но вот например популярнейший Gaussian написан в 1970м. CPMD и CP2K — 2000 год. Вся физическая школа связанная с разработкой QM софта сформировались в 70е годы, отсюда и фортран. Это не новый софт. Огромное количество опыта и кода накопленного в этой области исторически связанно с фортраном. Вопреки этому, новые проекты все больше пишут на C/C.

Даже новые модули старых проектов, бывает, пишут на C. Например PSI переписали с Fortran на С. ORCA, котрая была написана сравнительно недавно, более молодым поколением учёных — написана на C.

Как много я не знал о Фортране! Это я про матричные операции.

Фортран был в институте, но я его забросил в пользу Си. Сейчас всерьез задумался — а не вернуться ли? И даже есть книжки по Куде оказывается. (Загуглил — нашел «CUDA FORTRAN ДЛЯ УЧЕНЫХ И ИНЖЕНЕРОВ»). В общем ничего не мешает попробовать. Спасибо за статью! — mirsev возможности введения классов и переопределении операторов в C, Как ни грустно — шикарные возможности С используются крайне мало.

Вокруг почти все (научные сотрудники-физики) пишут разные программы обработки данных или расчетов на чистом С, не используя плюс-плюсовские плюшки. Есть конечно библиотеки типа Blitz, но ими тоже далеко не все пользуются. Ну потому что чего там циклы есть, условия есть, массивы есть. Что еще надо от языка?

))) — Еще одна мысль — научные программы не предполагают длительного использования. Мы хотим что-то рассчитать — быстренько написали, посчитали, написали статью — можно переходить к новой задаче, а этот код или забросить или модифицировать под новую задачу.

Типичная научная программа не предполагает долгого обдумывания структуры, а значит парадигма велосипедно-костыльного программирования оказывается вполне жизнеспособной. — Бывают исключения — находятся герои которые минимальным коллективом создают программные комплексы которые могут соперничать с программами-монстрами типа Fluent, CFX, Comsol, и т.п Потом этими программами пользуются разные научные группы. Но в этих коллективах как правило люди сильно уклонились от физики в сторону программирования. Для матричного умножения используется C = matmul(A,B) Автор, ты хоть смотрел в эти исходники?

Подсказка: используют ZGEMM хоть в фортране хоть в Си. И да, программы на C физики тоже. В Fortran доступ к элементам массива работает через простой синтаксис Ax,y,z, когда в C/C нужно писать Axyz. Элементы массивов начинаются с 1, что соответствует представлениям физиков о матрицах, а в массивах C/C нумерация начинается с нуля. Ну да, если так записать 3-тензор (как массив массивов ссылок), то его ни одна библиотека с линейной алгеброй (LAPACK,BLAS) ни MPI не примет. Физики, которые их используют, конечно, не в курсе чем.double лучше.double. (Сарказм) Под капотом компилятор Fortran автоматически оптимизирует их передачу для повышения эффективности.

Ага, конечно, только маленькое НО: В Fortran также есть спецификация intent, сообщающая компилятору, является ли передаваемый в функцию аргумент входным, выходным, или одновременно входным и выходным параметром. Это помогает компилятору оптимизировать код и увеличивает его читаемость и надёжность. Да, нужно сообщить компилятору, будешь ли ты изменять массив и нужно ли его обнулять (IN,OUT,INOUT).

А в C ты явно пишешь memcpy. В общем, я не слышал ни об одном случае, чтобы современные студенты писали свои проекты на Fortran. Вся статья ИМХО высосана из пальца. Это я как человек, который так и не осилил Fortran говорю. The University of Texas at Austin, Computational Electromagnetics group.

Код для решения уравнений Максвелла (интегральная формулировка) Сам использую Fortran, конечно больше по историческим причинам. Часть кода нашей группы ведет историю со стародавних времен. Местами плююсь, местами радуюсь синтаксису языка.

До этого использовал C. Примерно так же, местами плевался, местами радовался.

Но как только приходится много работать с матрицами и тензорами — Fortran просто чудо. Он действительно интуитивен и понятен. В C близко подходит только Eigen template library, однако это все равно не настолько удобно.

И требуется регулярно обновлять библиотеку, в которой есть проблемы, особенно когда используется OpenMP/MPI. На современном Fortran можно писать красивый и удобочитаемый код, однако, это не происходит потому что хорошие программисты редко программируют на Fortran, и даже примеров хорошего кода не так много, несмотря на то, что возможности к такому в синтаксисе языке присутствуют. Студентам-физикам изучать Fortran легче, чем C/C Я думаю, что изучать Fortran легче, чем C/C. Fortran 90 и C очень похожи, но на Fortran писать проще. C – язык сравнительно примитивный, поэтому физики, избирающие себе C/C, занимаются объектно-ориентированным программированием. ООП может быть полезным, особенно в крупных программных проектах, но изучать его гораздо дольше.

Нужно изучать такие абстракции, как классы и наследование. Парадигма ООП очень отличается от процедурной, используемой в Fortran. Fortran основан на простейшей процедурной парадигме, более приближенной к тому, что происходит у компьютера «под капотом». Слухи о сложности ООП сильно преувеличены. Этому можно научить любую, извините, макаку.

И успешно учат. А уж физики-то поумнее будут среднестатистического кодера. Напоминаю, что речь о студентах, а не об одногодках этого самого фортрана. У нас в отделе хорошо себя показывает связка C с высокоуровневым языком типа Python.

Мы занимаемся как раз физическим моделированием. Идея такая: на C/C пишем вычислительное ядро программы. Всё остальное пишется на Python: I/O, пользовательский интерфейс, скрипты для запуска C ядра, всякие предварительные расчеты, пост-обработка данных и т.д. Здесь, конечно, квалификацию программиста надо повыше иметь, но тоже ничего архисложного нет. Python до необходимого уровня учится за два месяца, ресурсов море. С биндингом тоже разобраться можно, хотя самостоятельно будет уже не так легко. Зато потом скорость разработки и модификации кода сильно возрастает, а удовольствие от процесса увеличивается вообще многократно.

Эмм, мне кажется вы сами себе выдумали легенду, что если в IT платят больше, то значит там люди умнее. Скажите еще, что фронтендер с 3-месячных курсов с з/п 50, умнее кандидата наук с зарплатой 30.

Я сисадмин, я работал и в IT-компаниях. Мое мнение основано на моем личном опыте общения и с программистами, и с учёными. И интеллектуальное сравнение чаще не в пользу первых, а вот «синдромом Бога» и чрезмерно завышенной самооценкой страдает каждый второй. Мнение же окружающих, что программисты умнее исходит из того, что большинство из них пытается козырнуть какая он интеллектуальная элита, как угодно, но доказать, что он умнее окружающих. Среди ученых такого меньше. Да дело не в том, что учёному выучить ООП сложно. Дело в том, что учёному ООП, как правило, не нужно.

Учёному, как правило, нужно быстренько написать небольшую программу для своих рассчётов, взять результат и, забив на программу (возможно, даже навсегда), углубиться в то, ради чего этот учёный, в конечном итоге, функционирует — написание статьи и пристраивание её в журналы/конференции. Возможно, он ещё раз-другой вернётся к этой программе, чтобы чего-нибудь модифицировать и высосать результатов ещё на пару статей, после чего, исчерпав тему, забросит её уже точно навсегда (и слава богу, ибо к тому времени ужасность его быдлокодерского поделия возрастёт настолько, что любым дополнительным «улучшением» он уже рискует пробить дыру в пространство отрицательного интеллекта, откуда вылезет Ктулху или ещё кто похуже).

Если же вдруг в его коде таки присутствует потенциальное reusability, то, чтобы превратить его в реальное, надо много думать, анализировать, проектировать, в итоге, скорее всего, написать библиотеку, и, вероятно, даже с ООП. Подобных примеров тоже полно, но, как правило, у нашего сферического учёного нет на это ни времени, ни желания, и платят ему не за это.

И если он таки нахватался где-то баззвордов, кое-как выучил ООП и пытается применять — обычно выходит только хуже. Из коробки — никак. По умолчанию инт четырёхбайтный. Можно задать от INTEGER(1) до INTEGER(16) (иногда только 8).На экзотических архитектура не определено. Автоматического установщика как в новых средах нет. На чём угодно, нематиматическую часть нет ни малейшего смысла писать на фортране, а в новых стандартах (а по факту и в старых) фортрановские объектники линкуются с C/C-ными. Так что вполне можно использовать GTest.

Теоретически в новых стандартах есть всё для работы с юникодом. Практически — не видел ни единого случая, когда бы это использовалось.

Область применения фортрана бесконечно далека от обработки текстов. У Си есть что-то подобное.

Называется ldd. И всё остальное, сверху — dpkg/rpm, etc. Когда мне нужны готовые бинарники — ими управляет ldd, когда мне нужны хидеры — есть пакет libfoobar-dev, который ставит хидеры для бинарных пакетов libfoobar, который содержит файлы so'шек для ldd. Система управления зависимостями в Си настолько встроена в современные операционные системы, что не все осознают её всеохватность. Только в Си можно ожидать «сишную DLL/so» в системе. Никто в своём уме не будет ожидать в целевой системе «разделяемую библиотеку pascal» или «модуль go», а так же присутствующего менеджера для этих библиотек. У фортрана есть гигантский недостаток — код на нём не выполняется на GPU.

В большинстве случаев лучше взять любую хорошую обёртку над OpenCL для любого любимого ЯП, хоть питона, и получить почти бесплатное распараллеливание. Так как математические и физические алгоритмы и в большинстве случаев формулируются терминах тензоров, матриц, и прочих линейноалгебраических структур и операций над ними, и эти операции хорошо параллелятся, более того gpu и были созданы специально чтобы выполнять на них линейно-алгебраические операции, то переписать это на класс-обёртку не должно составить труда, и получить более понятный и более параллельный и производительныйкод. Так что fortran — это чистой воды ретроградство. Это несколько э холиварно. Программирование — это инструмент. Скажем композитор оценивается по красоте созданного произведения, а не потому как он сам хорошо играет на рояле. Хотя да — бывает и то и то в одном флаконе.

Экспериментальная лаборатория. Приезжает парень из Германии. Я ему — Мартин — а ты можешь сам сделать термопару?

Я: — как же так? Ты ж экспериментатор! Мартин: — А зачем?

У нас же каждый и швец, и жнец, и на дуде игрец. Хотя плюсы есть в каждом подходе.

— Свой код я предпочитаю настоящим программистом не показывать — берегу их хрупкую психику. Да дело не в том, что кому-то не понравится, дело в том, что код надо обслуживать, развивать и просто в нем не путаться, то есть в нем должно быть. здравое разбиение на блоки, объекты. невозможность перепутать типы и так далее. возможность расширять под новые задачи без ломания задач предыдущих.

ясная логика построения. удобство совместной работы над кодом то есть инструмент должен использоваться вместе с навыками эффектиыной работы, которая собственно и страдает, когда человек вместо использования кода должен неделями в нем просто разбираться(!) и когда рефакторинг опять-таки длится неделями и ломает предыдующую версию кода, отчего код начинает плодиться в копиях 'для того', 'для этого'.

ЦАГИ научно исследовательский институт. В том числе решает обычные инженерные задачи. Что и написано по ссылке: В работе представлены результаты численного моделирования обтекания одиночной лопасти несущего винта. Полученные результаты сравниваются с экспериментальными данными и результатами моделирования Показано удовлетворительное, а в некоторых случаях и хорошее согласование расчетных данных, полученных по разным методикам, с экспериментальными. Ничего общего с фундаментальной наукой, никаких открытий не делается и не предполагается, рассматривается один из инструментов сокращения периода испытаний.

Да и написали ANSYS не ватага хипстеров-фронтендщиков решивших показать учёным как правильно расчехлять IDE. И кстати Не знаю как там Fluent, а ядро ANSYS SFX написано на чистейшем F95. Ну наверное тем, что рассматривает более общие вещи, очень далёкие от непосредственного практического применения. Я не писал кандидатских и не смогу объяснить за объект, предмет и методологию исследований, но на бытовом уровне всё просто:. Когда учёный пишет программу для обсчёта взаимодействия π-мезонов с протонами, это фундаментальная наука. Когда я заряжаю ANSYS на расчёт (очень похожий на тот, что в статье) — я занимаюсь инженерным делом. Если я вдруг решу обобщить миллион расчётов ANSYS и сотню тысяч экспериментов, то это будет уже наука Только в области статистики, а не аэродинамики.

Наукой занимаются те, кто пишут ANSYS и расчётные модели для него. Как-то странно читать «скорость программы на С». Вот например, MATLAB раньше под Windows в качестве дефолтного С компилятора Microsoft Windows SDK 7.1, а в последних версиях рекомендует MinGW 4.9.2. И я полностью поддерживаю выбор MathWorks, потому что в моих приложениях разница в скорости скомпилированных mex-модулей была в 3 раза (!!!) в пользу MinGW. К слову, gcc под Linux давал очень близкие результаты. А если при этом еще побаловаться ключами -march=native, то можно и еще процентов 20-30 выжать. Так о какой такой сферической в вакууме «скорости программы на С» можно говорить и с чем-то сравнивать?

Так фортран компилируется тем же самым gcc. Потому что gfortran это всего лишь один из бекендов gcc, а Intel Fortran один из бекендов Intel Compilers. Все опции кодогенерации, доступные для C/C доступны и для фортрана. Суть в том, что математическая программа написанная в лоб на фортране с использованием стандартных средств, как правило будет быстрее программы написанной на С/С с использованием%вашейлюбимойбиблиотеки% даже после небольшой оптимизации. После серьёзной оптимизации разница будет скорее в пользу С/С. Дешевле докупить железа, чем связываться с «программистом-оптимизатором». Простите, не соглашусь с вами.

Полный цикл расчётной программы считается месяц (чистого времени, календарного — вдвое больше) на самом мощном суперкомпьютере на который хватило денег у организации. Только переговоры о доступе к другому компьютеру (если деньги свалятся с неба) займут до полугода, а потом ещё очередь. За какие деньги и какого железа вы предлагаете 'докупить'? (-: Не путайте веб-сервисы для редактирования картинок и расчёты для изделий стоимостью в десятки мегафранклинов. Доброшу еще немного до кучи: 1. В OpenMP при редукции (reduction) только в Fortran можно использовать функции min и max, в C/C такой возможности не предусмотрено.

Некоторые на Fortran веб-серверы пишут: Это почти как на ассемблере, только на Fortran. И наверное тоже «полезно и приятно». Самому проверять не приходилось, но говорят, кроме мира x86 есть еще мир супер-компьютеров на основе альтернативных архитектур, для которых компиляторы Fortran выдают более производительный код по сравнению с компиляторами C.

И никакой ifort вам под Cray код не сгенерирует. Чего реально не хватает в Fortran, так это интринсиков. Я уже несколько раз встречал программы на Fortran, в которых критическая часть переписана на C с использованием интринсиков под Xeon Phi или AVX512. А виной этому, видимо, гарантированная (насколько это возможно) переносимость кода между разными платформами.

Года 4 назад у нас был курс вычислительной математики (очень интересный и полезный курс, хотя, к сожалению, многое уже забылось). В ходе курса нужно было написать программку, которая моделирует какой-то физический процесс.

Чтобы мы не закопались, нам разрешили пользоваться библиотекой с реализацией типовых алгоритмов (например, для численного решения диффуров). Библиотека была в 3 вариантах: Fortran 66 (оригинальный вариант), C и Pascal.

Народ в группе решил не рисковать и взять привычную сишечку, а во мне взыграло любопытство — почему бы не попробовать новый язык, Fortran? В целом, эксперимент удался. Язык оказался очень простым и удобным для моих задач, хотя и весьма своеобразным. Пока остальные подключали библиотеку к Visual Studio и возились с указателями, у меня уже всё работало. Писал я на современном Fortran 95, что вообще ни капли не мешало использовать старую библиотеку. Матричные операции — отличная штука, хотя не сказать, чтобы я активно ими пользовался.

Фортран

Больше всего проблем было с I/O — нужно было вывести матрицу в файл, и почему-то не получалось отключить перенос строки в операторе вывода. С одной стороны, если бы был нормальный порт библиотеки на C, с ООП и всеми делами, то может быть на плюсах было бы и удобнее. Но в случае математических библиотек в большинстве случаев порт — это просто адаптация под синтаксис другого языка. Так что даже если под C или другой язык будет подходящая библиотека, далеко не факт, что решить задачу на нем будет быстрее, чем на Fortran. В 1986 году в здательстве «Финансы и статистика» вышла книга Орлов В.Н. «Комплексирование программ в ОС ЕС». Книга была посвящена проблеме организации сязей между программами, написанными на различных языках программирования.

Рассмотрены общие соглашения о связях и особые соглашения, принятые в различных трансляторах. Основное внимание уделено теоретическим и практическим аспектам связи программ, написанных на разных языках (Ассемблере, Фортране, ПЛ/1) с учетом специфики транслятора ПЛ/1, уровня F и оптимизирующего транслятора ПЛ/1. Был бы здорово может и сегодня выпустить аналогичную книгу с учетом реалий. Прежде всего это не ПЛ/1, а естественно C/C. Да и ассемблер совсем другой. Заменить оглавление с учетом этих замечаний. А вот если FORTRAN приспособить для расчёта процессов в организме человека?

Сразу, целиком. А то всё как то по отдельности: Пакеты прикладных программ по биомоделированию.

Hpc.icc.ru/software/libraries.php Systems Biology Markup Language (SBML) - формат представления, основанный на XML, для сообщения и хранения вычислительных моделей биологических процессов. В 1986 году в здательстве «Финансы и статистика» вышла книга Орлов В.Н. «Комплексирование программ в ОС ЕС». Книга была посвящена проблеме организации сязей между программами, написанными на различных языках программирования. Рассмотрены общие соглашения о связях и особые соглашения, принятые в различных трансляторах. Основное внимание уделено теоретическим и практическим аспектам связи программ, написанных на разных языках (Ассемблере, Фортране, ПЛ/1) с учетом специфики транслятора ПЛ/1, уровня F и оптимизирующего транслятора ПЛ/1. Был бы здорово можеть и сегодня выпустить аналогичную книгу с учетом реалий.

Прежде всего это не ПЛ/1, а естественно C/C. Да и ассемблер совсем другой. Заменить оглавление с учетом этих замечаний.

Никто в здравом уме, будучи знаком с C и Matlab не выбирает Matlab — все от него шарахаются. В С физику не нужно думать о кучках и указателях — вы имеете ввиду C. Vstплагины valhalla shimmer lyrics.

Писать софт в Математике, наверное, можно, но что-то я его особо не видал. Графики — да, матан — да. Но научный софт (не скрипты до 500 строк) пишут на C либо Python. Остальное используется от безысходности (legacy, отсутствие желания знакомится с python/c или наоборот желание попробовать «новый» для учёного язык типа Haskell, C# или Java). Исключения бывают, наверное, но всё же в подавляющем большинстве случаев выбор физика сегодня падает на C/Python.

Странно, но в институте физики имени Л.В. Киренского почти все пользуются MatLab для моделирования, по крайней мере в области квантовой механики. Я сам пробовал сравнивать скорость работы кода на MatLab, C и Python/Scipy (который, внезапно, использует для вычислений LAPACK/BLAS написанный на Fortran). Код выкладывать не буду, ибо стыдно. Но смысл в том что неплохо зная Python я смог написать код который был в 3-4 раза медленнее чем на MatLab, для моделирования движения квантовой частицы в оптической решетке. Я пробовал заменить BLAS на ATLAS, но не сильно помогло. И даже попытавшись тоже самое написать на С я потратил около месяца в попытках оптимизировать скорость вычислений с помощью boost/uBLAS, и все равно не приблизился к скорости MatLab.

Поэтому научиться писать код на С не трудно, а вот научится его писать быстрым уже не так просто, да и зачем если за тебя уже написали, пусть и на очень неудобном MatLab.