Pull to refresh

Comments 57

Так я не понял, чем это будет лучше, чем Паскаль? Сейчас и Паскаль то во многих вузах и школах заменяют на другие языки, а вы предлагаете использовать еще более мертвый, чем Паскаль, язык.
Так как раз в своем посте я и пытался донести, что язык вовсе не мертв, а очень и очень востребован в научной среде. Паскаль же практически не используется. А Делфи — это уже другая история.
под Паскалем я имел в виду и сам Паскаль и Дельфи. Даже когда я учился в школе, мы изучали и то, и другое. Теперь, я думаю, тем более не Паскалем единым…

Возможно, Фортран и востребован в некоторых областях. Но если бы у меня был ребенок, я бы не хотел, чтобы он изучал программирование на языке, который востребован лишь в узких областях, типа физики атмосферы.
Если бы у меня был ребенок, я бы хотел, чтобы обучение для него было в радость, и всё было понятно. Чтобы он мог представить алгоритм и вбить код на компьютере, прилагая минимальное количество усилий. Ведь в программирование главное затянуть. Если с самого начала обучаемый сталкивается с чем-то непонятным, то возможно желание разбираться дальше и не возникнет, да все закончится на первом занятии. Я не говорю, что Фортран — панацея, давайте все перейдем на него. Я говорю, что это один из вариантов затянуть в удивительный мир программирования :)
Но ведь с этой задачей прекрасно справляется Pascal/Delphi.
Которые, похоже, как ни крути, но со сцены сходят не так быстро, как кажется: habrahabr.ru/post/201548/

К сожалению, в этом опросе не участвовал Fortran, но подозреваю, что его место было бы где-то около Basica или Prologa.

Я понимаю, что вам он нравится, вы с ним работаете. Но с точки зрения его перспективности для обучения… Нет, это далеко не лучший вариант.
Я работаю не только с Фортраном, более того, впервые я с ним серьезно начал взаимодействовать только после института. И как раз только после знакомства с ним, я осознал, что вся прелесть его в простоте, хотя до этого также скептически относился. Впрочем переубедить трудно, если самостоятельно не попробовать.
Да я не спорю, что он легкий. Но я так и не увидел его плюсов относительно Паскаля и Дельфей. Причем как верно ниже заметили, порой Паскаль даже легче или уж точно не сложнее.
По крайней мере мне, если я был бы незнаком с программированием, вполне себе было бы понятно, что такое
println("Hello world");


Но не очень понятно, что такое
write (*,*) 'Hello world'

Зачем эти звездочки и скобки?
Понятно, что это ерунда и разобраться — дело минуты. Но вот уже пример того, что Фортран в данном случае не легче Паскаля. А если дальше копать, то может и еще что вскроется.
Это не звёздочки и скобки, это сова. Что вы имеете против сов?
А как бы вы, например, перемножили матрицы в Паскале?
В Фортране, например, если мне не изменяет память, для этого есть отдельный оператор.
это здорово. Но какое это имеет отношение к обучению азам программирования? Повторюсь, для своих целей Фортран — наверняка хорош, не спорю.
Я бы не сказал, что он востребован в узкой области. Область как раз таки очень себе даже ничего — научные и инженерные расчеты, симуляции, численные вычисления.

А физика атмосферы вам была приведена как популяризующий пример.
Насчет области, в которой востребован Фортран, далее по тексту есть замечательный пример с hh.ru
Этот пример, возможно, справедлив только для России. Но мы о ней вроде как и говорим.
Научная среда — это очень-очень узкая ниша. На hh.ru по запросу Fortran — 8 вакансий, С++ — 700, c# — 550.

Так что слухи о популярности Fortran явно преувеличенны.
8 вакансий даже много. Сравните количество людей, пишущих на Fotran и на C.
Тем более в нашей стране наука сейчас не в выигрышном положении по финансам, это уж тогда в США смотреть надо.
Меня в США в научной среде застравили выучить Фортран прежде С.
Все, что я хочу сказать по поводу Фортрана:
GO TO (320,330,340,350,360), K
Ну и не ясно, почему тогда не C с теми же самыми плюсами (невольный каламбур), что и Фортран, только еще более распространенный, с не меньшим количеством библиотек и значительно более востребованный.
GO TO — это все-таки 77 стандарт, я же не предлагаю его использовать. А 90 стандарт вполне себе ничего.
Насчет С. Всё-таки начинающим не столь ясен синтаксис языка, как в случае с Фортраном. Сталкиваешься с непониманием.
Синтаксис даже чуть проще Паскаля, нет необходимости ставить в конце строки ";" или ":" перед знаком равенства.

К слову, в паскале тоже нет надобности ставить ":" перед знаком равенства, ибо ":=" — это знак присваивания. Равенство и присваивание различны по начертанию в большинстве языков совсем не для того, чтобы усложнить жизнь учащегося.
А тем, кому кажется, что было бы проще обслуживать знаком "=" и присваивание, и сравнение на равенство, так это только кажется…
Синтаксис даже чуть проще Паскаля


Ну как-то не очень все-таки. Взять хотя бы ваш пример:

n.le.0
vs
n < 0


write (*,*) 'Отрицательное'
vs
println('Отрицательное')

Оба варианта записи неравества допустимы.
А для вывода можно использовать print *, 'Hello, World!'
Я верно понимаю, что less/equivalent нуля вы называете отрицательным числом?
Или вы имели в виду n.lt.0?

Кроме того, синтаксис PRINT * разве не легче, чем WRITE (*, *)?
Конечно lt, моя ошибка.
Согласен, print может и легче, но write дает больше возможностей, через него в файлы можно писать.
UFO just landed and posted this here
Про звездочки, кстати, в тексте написано.
UFO just landed and posted this here
Код приведен просто для иллюстрации синтаксиса.
На многих суперкомпьютерах (на этом точно, номер восемь в top 500, и еще на двух поменьше, о которых я знаю) есть компиляторы только для C, C++, Fortran. Для всего остального нет. Так что пациент более чем жив, судя по всему--но в областях, отстоящих от бизнес-приложений, игр и сайтов.
по моему для начинающих в Fortran один большой минус — это консольный язык, сделать красивое приложение на нем можно, да и то в основном в Win версии
А так Fortran был и остаётся любимым языком…

В копилку свободных компиляторов можно добавить OpenWatcom Fortran
Когда пытался использовать gfortran для своих программ (небольших и учебных), меня просто убивала неинформативность выдаваемых компилятором ошибок. Или, как вариант, программа могла откомпилироваться и выдать «segmentation fault» сразу после старта без объяснения причин. Из отладчиков я пробовал только gdb, но весь процесс отладки оставил впечатление чего-то очень долгого и болезненного. Есть ли более удобные инструменты для поиска ошибок и отладки?

P.S. Будьте внимательны, программа на f77 не откомпилируется, если не сделать семь отступов в начале каждой строчки.
Если под Linux, то можно попробовать еще Интеловский дебагер
Статья интересна с общеобразовательной точки зрения. Но:

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

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

Вообщем (с) «Какое низкое коварство. Полуживого забавлять»
Можно учить и питону, если найдутся преподаватели в ВУЗах, которые его знают.
Судя по онлайновым курсам на edx, coursera в штатах учат именно на питоне.

Ну, кроме всякой специфики типа opengl, которое на c++, или вороченья матриц, которое на matlab.
Нетрудно заметить, что как мы думаем, так и записываем код

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

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

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

Поэтому может Фортран и годится в качестве первого языка, но разве что первого. С дидактической точки зрения он не так уж ценен.
Относительно простоты синтаксиса — даже из приведенных примеров очевидно, что не такой уж синтаксис и простой у Фортрана. Интуитивность здвесь видят только те, кто уже знает Фортран. Для сравнения, аналогичная (неэффективная) программа для тех же вычислений на Матлабе:
n = input('Enter n:');
if n<0
    error('Negative');
end
s = sum(0:n);
fprintf('Sum=%d\n',s);

Заметьте: никаких объявлений, никаких непонятных знаков препинания, разве что в команде fprintf.

Для «честности игры» можно сумму вычислить и в виде цикла, тогда получится:

s = 0;
for i=1:n
    s = s+i;
end


При этом я не спорю с тем, что Фортран занимает важное место в научных вычислениях. Связано это в первую очередь с богатым наследием прошлого. Также в пользу Фортрана в этой области тот факт, что в нем изначально была реализована работа с комплексными числами, которые так часто появляются при научных вычислениях. До появления перегрузки операторов в языках типа C++ реализация работы с комплексными числами приводила к большим трудностям понимания кода с комплексной арифметикой. Еще можно отметить компилируемость. Пусть Матлаб синтаксически мощнее Фортрана, пусть в нем векторные и матричные вычисления лаконично записываются в одну строку, но скорость у Матлаба очень страдает. В десятки и сотни раз медленнее, чем если писать на Си, за исключением алгоритмов, основное время работы которых тратится в компилированных библиотечных функциях наподобие fft.
Вы как матлаб на кластере запустить собираетесь?
Есть же Parallel Computing Toolbox. Но даже и до того, как она появилась, были средства. Я лично не запускал кластер на матлабе, но сотрудники этим занимались, когда им нужно было. Использовали под Линуксом какое-то бесплатное кластерное ПО. Естественно, потребуется много лицензий. Матлаб дорог — это еще один его недостаток по сравнению с Фортраном.
Вопрос не в том жив ли он сейчас, а в том что будет через несколько лет?
Да ничего не изменится. Модели, написанные на фортране никто переписывать не будет.
все переписывают рано или поздно
Не надо фортрана начинающим, пожалуйста. У нас в универе были лабы на нем, с обязательным использованием именно 77 стандарта и open watcom. Более неудобной IDE и языка я в жизни не видел. Чего стоит один только форматированный вывод. А на вопрос, чем все-таки фортран лучше тех же C/C++, препод так и не дал внятного ответа, не считая того, что «на нем написано много всего и это один из самых старых языков».
Мы в институте полгода учили Фортран 77 :)
Так что дело его живо и процветает.
Я же специально написал, что речь идет о Фортране 90, а никак не 77, о котором ходят только страшилки.
Своим постом я никак не хотел задеть чувства верующих приверженцев того или иного языка программирования, а обратить внимание на незаслуженно списанный на пенсию Fotran.
Я не призываю обязательно изучать его, а рассматривать, как альтернативу традиционному Паскалю/Бейсику/…
Честно говоря, перед публикацией я опасался, что вернусь в рид-онли, затронув такую холиварную тему, а тем более, влезая с «дедовским» языком. Я рад, что мне удалось хоть чуть-чуть поучаствовать в популяризации Фортрана. Если хотя бы пару человек захотят посмотреть, как это работает, или расскажет друзьям — уже хорошо.
Ведь до прямого контакта с Фортраном я тоже опирался на мифы и легенды древней Греции слухи. Теперь познакомившись чуть ближе, готов рекомендовать его. Не так он страшен, как о нем говорят.
Прочитал статью. Но так и не понял, чем он лучше. Паскаль по английски читается лучше (implicit none — неявный отсутствует, лолшто), смысл le может понять далеко не каждый программист, не говоря уже о школьнике, которого впервые обучают программированию. А смысла звездочек без пояснения никогда бы не понял.
le = low or equal. сейчас так не пишут уже, просто пишут <=
смысл звездочек запомнить куда легче, чем форматные ключи в printf() ))
Вы читали мой комментарий? le я знаю, потому что сталкивался ранее. У школьников тут будут проблемы.
Про printf я вообще ничего не говорил. Или вы уже с ассемблером сравниваете?
Нет, я с С сравниваю разумеется. В фортране всего 2 функции вывода write и print, которые в общем-то идентичны по функционалу. И их легко запомнить. Ну хотя бы одну из них )
У школьников не будет проблем, если они на Фортране будут писать <=, <, > вместо буковок непонятных )
А я кажется с паскалем сравнивал. Write и Read в паскале.
Автор утверждает, что фортран лучше для обучения чем паскаль. А получается, что нет ни одного пункта (точнее не было озвучено), по которому фортран превосходит паскаль.
Есть на самом деле. Навскидку: работа с массивами и адаптированные mpi/openmp для высокопроизводительных вычислений на кластерах. Но это вряд ли будет сильно нужно человеку, который только учится программировать
ААААААА БОЖЕ МОЙ. ДЛЯ ОБУЧЕНИЯ ПРОГРАММИРОВАНИЮ НИЧЕГО НЕ ПОНИМАЮЩИХ ДЕТЕЙ. ААААААААААА
Простите, вырвалось.
В защиту старичка родом из 50-х можно сказать, что одно из крупнейших открытий человечества за последние годы (а именно открытие в 2012-м году новой фундаментальной частицы — бозона Хиггса), было сделано при непосредственном участии многих тысяч строк фортрановского кода: Фортран используется для Монте-Карло генерации событий, для моделирования различных их свойств. Которые затем уже проверяются экспериментально. C++-ные варианты генераторов событий, конечно, наращивают присутствие в физике элементарных частиц, но пока даже не догнали фортрановские по частоте использования.
Извините, но вроде бы библиотеку CERNLIB (Fortran 77) с 2003 года заменили на ROOT (C++). На хабре есть статьи с разбором кода библиотеки Geant4 из ЦЕРНа. Возможно, вы имели в виду какую-то другую библиотеку (LAPACK или ещё что-то)?
Фортран — это обыкновенный структурный язык, поэтому как и всякий подобный язык (С например) он хорош только до определенной сложности программ. В последнее время его используют всё реже, даже привыкшие к нему матерые физматовцы, из-за того, что сложность программ резко выросла, а также из-за того, что поддержка новых аппаратных устройств, таких как GPU, Intel Phi на С сделана лучше: CUDA Fortran по сравнению с CUDA C — продукт вторичный и глючный, а OpenCL и Cilk Plus для фортрана не существуют. Попытки в сложных программах использовать квази ООП-шные фичи фортрана рождают преимущественно страшных неподдерживаемых уродцев.
Конечно, Фортран хорош тем, что он простой, как валенок. В общем-то студенты его осваивают за пару недель, и даже пишут на нем программы, которые затем включаются в эти мифические «библиотеки долгой поддержки». Проблем в том, что качество программ в таких библиотеках ровно такое, какое могут предоставить студенты, изучившие программирование за пару недель. И эти библиотеки все равно приходится переписывать при переходе на новые аппаратные платформы. Сам я на фортране программирую уже лет 15 и повидал на нём всё, что только можно.
Фортран для изучения в качестве первого языка не лучше и не хуже того же Паскаля. А вот его «востребованность» я бы поставил по сильное сомнение.
Не могу молчать!

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

Современный Фортран – язык, наверное, с самым сложным синтаксисом из всех практически используемых. Описание языка Фортран 2008 от IBM занимает 1106 страниц.

Совершенно невозможно, например, логически объяснить, почему в операторе print *, 'Hello world' нужна запятая, а в операторе write (*, *) 'Hello world' – не нужна. Или зачем нужны скобки в операторе if (n <= 0) then... Или зачем нужны внешние скобки в операторе allocate (a(n)). Или почему в rewind(1) число в круглых скобках означает индекс элемента массива, параметр функции или часть оператора (неизвестно без контекста), в rewind[1] число в квадратных скобках означает номер чужого адресного пространства, а в rewind=[1] число в квадратных скобках означает конструктор массива. Это всё результаты 70-летнего движения в светлое будущее галсами.

К тому же Фортран приспособлен, по существу, только для написания программ числовых расчётов. Это не самое популярное применение программирования в наши дни.

Так что старичок, конечно, жив, но в качестве первого языка программирования я бы его не рекомендовал. Есть гораздо более простые способы понять программирование.

Sign up to leave a comment.

Articles