Comments 57
Возможно, Фортран и востребован в некоторых областях. Но если бы у меня был ребенок, я бы не хотел, чтобы он изучал программирование на языке, который востребован лишь в узких областях, типа физики атмосферы.
Которые, похоже, как ни крути, но со сцены сходят не так быстро, как кажется: habrahabr.ru/post/201548/
К сожалению, в этом опросе не участвовал Fortran, но подозреваю, что его место было бы где-то около Basica или Prologa.
Я понимаю, что вам он нравится, вы с ним работаете. Но с точки зрения его перспективности для обучения… Нет, это далеко не лучший вариант.
По крайней мере мне, если я был бы незнаком с программированием, вполне себе было бы понятно, что такое
println("Hello world");
Но не очень понятно, что такое
write (*,*) 'Hello world'
Зачем эти звездочки и скобки?
Понятно, что это ерунда и разобраться — дело минуты. Но вот уже пример того, что Фортран в данном случае не легче Паскаля. А если дальше копать, то может и еще что вскроется.
В Фортране, например, если мне не изменяет память, для этого есть отдельный оператор.
А физика атмосферы вам была приведена как популяризующий пример.
Так что слухи о популярности Fortran явно преувеличенны.
GO TO (320,330,340,350,360), K
Ну и не ясно, почему тогда не C с теми же самыми плюсами (невольный каламбур), что и Фортран, только еще более распространенный, с не меньшим количеством библиотек и значительно более востребованный.
Синтаксис даже чуть проще Паскаля, нет необходимости ставить в конце строки ";" или ":" перед знаком равенства.
К слову, в паскале тоже нет надобности ставить ":" перед знаком равенства, ибо ":=" — это знак присваивания. Равенство и присваивание различны по начертанию в большинстве языков совсем не для того, чтобы усложнить жизнь учащегося.
А тем, кому кажется, что было бы проще обслуживать знаком "=" и присваивание, и сравнение на равенство, так это только кажется…
Синтаксис даже чуть проще Паскаля
Ну как-то не очень все-таки. Взять хотя бы ваш пример:
n.le.0
vs n < 0
write (*,*) 'Отрицательное'
vs println('Отрицательное')
А для вывода можно использовать print *, 'Hello, World!'
А так Fortran был и остаётся любимым языком…
В копилку свободных компиляторов можно добавить OpenWatcom Fortran
P.S. Будьте внимательны, программа на f77 не откомпилируется, если не сделать семь отступов в начале каждой строчки.
Беда нашей системы образования в том, что она плодит теоретиков — людей, который впоследствии только и могут, что преподавать в тех же ВУЗах, где они учились. Зачем учить студентов Фортрану? Пусть рисуют блок-схемы. Еще нагляднее, еще понятнее.
Почему не учить программировать на python, к примеру? Вполне живой язык, имеющий огромное практическое применение, поддерживающий любые парадигмы программирования, с простым порогом вхождения.
Вообщем (с) «Какое низкое коварство. Полуживого забавлять»
Нетрудно заметить, что как мы думаем, так и записываем код
Обратное верно. Программированию стоит учиться, чтобы научиться думать больше и лучше.
Например, лисп, пролог, смолтолк и 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.
Так что дело его живо и процветает.
Своим постом я никак не хотел задеть чувства
Я не призываю обязательно изучать его, а рассматривать, как альтернативу традиционному Паскалю/Бейсику/…
Честно говоря, перед публикацией я опасался, что вернусь в рид-онли, затронув такую холиварную тему, а тем более, влезая с «дедовским» языком. Я рад, что мне удалось хоть чуть-чуть поучаствовать в популяризации Фортрана. Если хотя бы пару человек захотят посмотреть, как это работает, или расскажет друзьям — уже хорошо.
Ведь до прямого контакта с Фортраном я тоже опирался на
смысл звездочек запомнить куда легче, чем форматные ключи в printf() ))
Про printf я вообще ничего не говорил. Или вы уже с ассемблером сравниваете?
У школьников не будет проблем, если они на Фортране будут писать <=, <, > вместо буковок непонятных )
Автор утверждает, что фортран лучше для обучения чем паскаль. А получается, что нет ни одного пункта (точнее не было озвучено), по которому фортран превосходит паскаль.
Конечно, Фортран хорош тем, что он простой, как валенок. В общем-то студенты его осваивают за пару недель, и даже пишут на нем программы, которые затем включаются в эти мифические «библиотеки долгой поддержки». Проблем в том, что качество программ в таких библиотеках ровно такое, какое могут предоставить студенты, изучившие программирование за пару недель. И эти библиотеки все равно приходится переписывать при переходе на новые аппаратные платформы. Сам я на фортране программирую уже лет 15 и повидал на нём всё, что только можно.
Фортран для изучения в качестве первого языка не лучше и не хуже того же Паскаля. А вот его «востребованность» я бы поставил по сильное сомнение.
Информатика никогда не считалась лженаукой. Про кибернетику говорили, что она продажная девка империализма. Но это разные науки.
Современный Фортран – язык, наверное, с самым сложным синтаксисом из всех практически используемых. Описание языка Фортран 2008 от IBM занимает 1106 страниц.
Совершенно невозможно, например, логически объяснить, почему в операторе print *, 'Hello world'
нужна запятая, а в операторе write (*, *) 'Hello world
' – не нужна. Или зачем нужны скобки в операторе if (n <= 0) then...
Или зачем нужны внешние скобки в операторе allocate (a(n))
. Или почему в rewind(1) число в круглых скобках означает индекс элемента массива, параметр функции или часть оператора (неизвестно без контекста), в rewind[1] число в квадратных скобках означает номер чужого адресного пространства, а в rewind=[1] число в квадратных скобках означает конструктор массива. Это всё результаты 70-летнего движения в светлое будущее галсами.
К тому же Фортран приспособлен, по существу, только для написания программ числовых расчётов. Это не самое популярное применение программирования в наши дни.
Так что старичок, конечно, жив, но в качестве первого языка программирования я бы его не рекомендовал. Есть гораздо более простые способы понять программирование.
О бедном Фортране замолвите слово