Как стать автором
Обновить

Комментарии 34

Да, я динозавр

К своему ужасу скажу, что Fortran 77 проходили в школе, потом в институте. И больше никогда и нигде я его не встречал. Помню учились писать, чтобы было корректное выравнивание. До сих пор у меня вопрос без ответа: зачем мы его учили?

У меня книжка есть. Ни разу не читал

У меня была ЕС ЭВМ, учил фортран по книжкам, написанными когда компьютеры ещё были большими...

Чтобы научиться основам алгоритмизации, а на каком именно языке — вообще неважно (я учитель информатики по диплому, если что). Любой настоящий программист рано или поздно один фиг напишет свой собственный язык программирования, а алгоритмическое мышление пригождается не только в программировании, но и в обыденной жизни.

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

Об этом и говорит комментарий выше.
Что трагедия нашего образования в том, что оно выпускает не программистов, а кодеров, натасканных на определенный синтаксис, и воспринимающих "переучивание" как сложный и болезненный процесс. Вместо того, чтобы учить алгоритмам и общим принципам программирования, чтобы потом можно было без проблем освоить любой синтаксис. Не говоря уже о том, чтобы выучить 3-10 дополнительных языков даже при нулевой любознательности — просто чтобы использовать в работе.

Не. Разница между ПТУ и высшим образованием в том и состоит, что в ПТУ дают профессию, а в высшем образовании — фундаментальные знания, опираясь на которые выпускник может сделать что угодно и как угодно. Конкретный язык или идеология программирования — это быстропроходящая мода, сегодня она есть, завтра её нет. На этом фундаментальные знания не построишь. Настоящий выпускник ВУЗа знает, что учиться нужно каждый день и до конца жизни, потому что мир постоянно меняется тоже каждый день — и он может и хочет это делать.


А выпускник ПТУ выучился на токаря — и остаток жизни не может работать никем, кроме токаря. И да, стать выпускником ПТУ можно и учась в институте.

Фортран не мёртв.

В двух ВУЗах его изучал.

только статические переменные, раздельная компиляция, отсутствие блочных операторов и лапша из меток и GOTO

Теперь я не говнокодю, а использую стандарты Фортран IV

Fortran IV, мой первый язык...

DO1I=1.5 или DO1I=1,5 ?

Фортран, кстати, потому был настолько эффективен, что был почти ассемблером. Скажем, его оператор цикла отображается на системы команд айбиэмовских машин буквально один-к-одному. Как и более поздний case, в котором даже сравнений нет, а только массив указаталей для переходов.

О да. Лучше пояснить для не заставших этот праздник жизни, что первое – присваивание, а второе – заголовок цикла (независимо от расстановки пробелов, которая может быть произвольной).

Но надо сказать, что оптимизирующие компиляторы Фортрана IV могли радикальным образом преобразовывать код программы, в том числе выполняя и раскрутку и расщепление циклов и многое другое.

Этим техникам посвящена выходившая на русском книга Меткалфа "Оптимизация в Фортране".

Лучше пояснить

А я нарочно :-)

Отмечу ещё одну особенность Фортрана на IBM/360, и не только. Вследствие очень простых соглашений о связях было удобно компоновать в одной программе подпрограммы на Фортране и на ассемблере. Например, Colossal Cave Adventure и Super Star Trek были написаны на Фортране, а подпрограммы обмена с дисплеем для них - на ассемблере.

Самый простой способ определить, кто является настоящим программистом - по используемому языку программирования. Настоящие программисты используют Фортран.

http://www.lib.ru/ANEKDOTY/non_pas.txt

Настоящие программисты используют Фортран.

Глубокое заблуждение, коллега. Использование Фортрана не делает из программиста Настоящего Программиста™. Принципиальное различие как раз и заключается не в том, на каком языке пишет программист, а в том, что Настоящий Программист™ на любом языке может написать Фортран-программу.

небольшое дополнение - насколько знаю Джон Бэкус с командой работал в IBM Watson Lab, New York, см. ниже картинку этого уже снесенного здания (590 Madison Av.) - именно там был создан Фортран, также IBM 704 для которой был сделан первый компилятор -

для тех кому интересны детали разработки:

декабрь 1953 - предложения одобрены, начало проекта,

ноябрь 1954 - первый отчет о работе, "Specification for FORmula TRANslating system",

январь 1955 - начало работы над компилятором, состав группы порядка 9-10 человек, разделение работы на модули, типа лексический анализ, стандартные программы, I/O, генерация кода, оптимизация, и пр., согласование интерфейсов между частями,

осень 1955 - уточнение приоритетов, в том числе большое внимание на оптимизацию циклов и использование регистров, решение о встроенной симуляции компилятором выполнения целевой программы для сбора статистики использования регистров, циклов, и пр. методом monte carlo,

лето 1956 - начало сборки и тестирования всех модулей компилятора,

15 октября 1956 - первая версия документации пользователя,

начало 1957 - компилятор более-менее работает,

февраль 1957 - доклад о проделанной работе на конференции в LA,

20 апреля 1957 - первая поставка пользователю (westinghouse bettis lab) и удачное тестирование,

осень1958 - из 66 установленных к этому времени IBM 704, примерно половина использует FORTRAN до 80% машинного времени, снежный шар покатился

программа на FORTRAN 1954 из "Specification for FORmula TRANslating system", типа примера, за пару лет до появления компилятора, заметьте "8 GO TO 2" просто переход к следующей итерации цикла "DO", так было в этой версии

Судя по спецификации здесь, GOTO лишний. Кроме того, такое свободное обращение с массивом, как в строке 2, появилось намного позже. Спецификация ни о чём таком не упоминает. Поэтому думаю, что это просто написанная из головы программа с ошибками.

А 3 метки в DO и условие в IF (по спецификации) – это, конечно, мощно.

Поправил текст статьи.

> думаю, что это просто написанная из головы программа с ошибками

приятно, что Вы так внимательны и возможно правы, конечно мне надо было более внимательно читать спецификации (типа поверил Donald Knuth), см. "Early Development of Programming Languages" Donald Knuth, Trabb Pardo, p.62, 63, статья широко известная, типа классическая, что Вы думаете?

Я думаю, этот документ про FORTRAN 0 – это их ранние прикидки в уме, пока ещё компилятор не был написан. Своего рода псевдокод.

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

А оператор GOTO 2 делает бессмысленной метку 8 в заголовке цикла (и недостижимым сам оператор с меткой 8), да и по логике непонятно, как этот GOTO работает. Вне контекста, переход на метку 2 из любого места программы должен начинать новый цикл. Вряд ли GOTO в 8-й строчке чем-то в этом смысле мог отличаться от GOTO в любом другом месте (например, если бы мы заменили STOP на ещё один такой же GOTO 2).

> оператор GOTO 2 делает бессмысленной метку 8 в заголовке цикла (и недостижимым сам оператор с меткой 8),

смотрите на "8 PRINT I,Y" мы попадаем только при выполнении условия IF (стр.6), так что это утверждение не совсем верно, действительно как пишет Knuth "GO TO 2" (стр.8) переход к следующей итерации без "PRINT I,Y"

ps

конечно спецификация FORTRAN 0 написана за пару лет до компилятора, и форматы I/O там не определены (см. р.26)

Да, верно.

Тогда по логике там вместо GOTO 2 должен быть переход на какое-нибудь CONTINUE в конце. Но возможно, что до CONTINUE тогда ещё не додумались.

вероятно GOTO 3 в этой версии не даст нового значения J, т.е. нового цикла

> вместо GOTO 2 должен быть переход на какое-нибудь CONTINUE

согласен конечно :)

Когда-то писал небольшие программы для математических расчетов. Сейчас помню только одну рекомендацию от "матерых" программистов того времени: "вставляйте пустой оператор после ..." и далее небольшой список операторов и их комбинаций - иначе будут сбои при выполнении.

На дипломе писал на фортране БЭСМ-6 драйвер для графического пакета "Графор" , реализующий вывод изображения в файл формата CGM (Computer Graphics Metafile). Потом с трудом перешёл на сложный и непонятный Си, чтобы в Юниксе на СМ-4 реализовать вывод из этого метафайла на векторный графический дисплей.

По поводу неявного типа переменных в ранних версиях была шутка: "GOD is REAL, unless explicitly declared as INTEGER".

Спасибо. Видно, что автор в совершенстве владеет множеством языков, причем не в последнюю очередь — русским (что, к сожалению, редкость на Хабре).

Спасибо! Дай бог понять Фортран 2018 :) Во второй части напишу, это уже жесть.

Для ухода за пожилым программистом требуется сиделка, знающая Фортран и Кобол.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории