Сообщение Re[4]: Госспади, отправь на пенсию воспитанников фортрана! от 05.01.2026 7:31
Изменено 05.01.2026 8:08 Privalov
Re[4]: Госспади, отправь на пенсию воспитанников фортрана!
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Не было во времена расцвета фортрана ни логики (в нынешнем понимании), ни графики (на чем ? на АЦПУ символами ?), ни парсинга исходных данных (вводили их просто с перфокарт или терминала, при этом на ошибки представления порой не реагировали — нечего тут, вводите все правильно, иначе я ни за что не ручаюсь
. Все это намного позже появилось.
Кое-какая графика всё же была. Правда, как работал Графор на ЕС ЭВМ, я не видел. Но переносил программу, сделанную с его использованием, на MD DOS. Всех делов было правильный драйвер экрана и принтера подкдючить при сборке. А ошибки при вводе я вставками на Сях обрабатывал.
PD>И едва ли фортрановское мышление тут причиной. Мне, например, ничего не стоило отказаться от 6-буквенных имен и перейти к нынешним принципам.
Да, это оказалось очень легко.
PD>А вот что я действительно в себе перестраивал — это создание циклов с помощью GOTO назад. В Фортране-4 иных средств для произвольного цикла нет, есть только для цикла типа i++ или i+=. Умел я их делать прекрасно. И мне еще долго хотелось так писать.
Нормальные циклы и if elsif else ктвша и циклы while завезли в Фортран 77. Я на них почти сразу перешёл. И цикл do i = 1,10 — enddo был лучше do 5 i=1,10. В последнем случае часто ставили точку вместо запятой, тогда компилятор создавал переменную do5i и присваивал ей значение 1.10. А в случае do — enddo выдавалась ошибка: конец цикла есть, а цикла нет.
И ещё активно начал использовать implicit none. Всё-таки обязательное объявление переменных лучше всяких умолчаний и определения по первой букве имени.
PD>Еще одна "вольность" Фортрана — это EQUIVALENCE и COMMON. Что мы только на их основе не делали! Массивы представляли как скаляры, разные размеры массивов указывали, типы смешивали — все с рук сходило. Полная свобода действий. Потом очень не хватало — пришлось привыкать к современной дисциплине обращения с памятью. Кстати, когда С изучал, обнаружил union и обрадовался ему как родному. А потом узнал, что его использование не есть лучшая практика...
А это из серии "Грабли в Фортране". Лет 40 назад такой литературы было не меньше, чем "Изучаем Фортран". За COMMON следить нужно очень строго. Как, кстати, сделано в том же Графоре и в некоторых числодробительных библиотеках. Кто-то один из заполняет, остальные читают. Там обычно хранили всякие мировые константы типа машинного эпсилон. И было удобнее передать в подпрограмму 20 аргументов, чем рисовать COMMON-блок. А за безымянные COMMON-блоки вообще надо дисквалифицировать. Я, кстати, так и не сумел из Си-функции подключиться к такому. Наверное, просто лень было рыться в протоколах и искать имя, которое ему назначается по умолчанию. Но в реальном коде я безымянных COMMON-блоков не видел ни разу.
PD>Не было во времена расцвета фортрана ни логики (в нынешнем понимании), ни графики (на чем ? на АЦПУ символами ?), ни парсинга исходных данных (вводили их просто с перфокарт или терминала, при этом на ошибки представления порой не реагировали — нечего тут, вводите все правильно, иначе я ни за что не ручаюсь
Кое-какая графика всё же была. Правда, как работал Графор на ЕС ЭВМ, я не видел. Но переносил программу, сделанную с его использованием, на MD DOS. Всех делов было правильный драйвер экрана и принтера подкдючить при сборке. А ошибки при вводе я вставками на Сях обрабатывал.
PD>И едва ли фортрановское мышление тут причиной. Мне, например, ничего не стоило отказаться от 6-буквенных имен и перейти к нынешним принципам.
Да, это оказалось очень легко.
PD>А вот что я действительно в себе перестраивал — это создание циклов с помощью GOTO назад. В Фортране-4 иных средств для произвольного цикла нет, есть только для цикла типа i++ или i+=. Умел я их делать прекрасно. И мне еще долго хотелось так писать.
Нормальные циклы и if elsif else ктвша и циклы while завезли в Фортран 77. Я на них почти сразу перешёл. И цикл do i = 1,10 — enddo был лучше do 5 i=1,10. В последнем случае часто ставили точку вместо запятой, тогда компилятор создавал переменную do5i и присваивал ей значение 1.10. А в случае do — enddo выдавалась ошибка: конец цикла есть, а цикла нет.
И ещё активно начал использовать implicit none. Всё-таки обязательное объявление переменных лучше всяких умолчаний и определения по первой букве имени.
PD>Еще одна "вольность" Фортрана — это EQUIVALENCE и COMMON. Что мы только на их основе не делали! Массивы представляли как скаляры, разные размеры массивов указывали, типы смешивали — все с рук сходило. Полная свобода действий. Потом очень не хватало — пришлось привыкать к современной дисциплине обращения с памятью. Кстати, когда С изучал, обнаружил union и обрадовался ему как родному. А потом узнал, что его использование не есть лучшая практика...
А это из серии "Грабли в Фортране". Лет 40 назад такой литературы было не меньше, чем "Изучаем Фортран". За COMMON следить нужно очень строго. Как, кстати, сделано в том же Графоре и в некоторых числодробительных библиотеках. Кто-то один из заполняет, остальные читают. Там обычно хранили всякие мировые константы типа машинного эпсилон. И было удобнее передать в подпрограмму 20 аргументов, чем рисовать COMMON-блок. А за безымянные COMMON-блоки вообще надо дисквалифицировать. Я, кстати, так и не сумел из Си-функции подключиться к такому. Наверное, просто лень было рыться в протоколах и искать имя, которое ему назначается по умолчанию. Но в реальном коде я безымянных COMMON-блоков не видел ни разу.
Re[4]: Госспади, отправь на пенсию воспитанников фортрана!
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Не было во времена расцвета фортрана ни логики (в нынешнем понимании), ни графики (на чем ? на АЦПУ символами ?), ни парсинга исходных данных (вводили их просто с перфокарт или терминала, при этом на ошибки представления порой не реагировали — нечего тут, вводите все правильно, иначе я ни за что не ручаюсь
. Все это намного позже появилось.
Кое-какая графика всё же была. Правда, как работал Графор на ЕС ЭВМ, я не видел. Но переносил программу, сделанную с его использованием, на MS DOS. Всех делов было правильный драйвер экрана и принтера подключить при сборке. А ошибки при вводе я вставками на Сях обрабатывал.
PD>И едва ли фортрановское мышление тут причиной. Мне, например, ничего не стоило отказаться от 6-буквенных имен и перейти к нынешним принципам.
Да, это оказалось очень легко.
PD>А вот что я действительно в себе перестраивал — это создание циклов с помощью GOTO назад. В Фортране-4 иных средств для произвольного цикла нет, есть только для цикла типа i++ или i+=. Умел я их делать прекрасно. И мне еще долго хотелось так писать.
Нормальные циклы и if elsif else endif и циклы while завезли в Фортран 77. Я на них почти сразу перешёл. И цикл do i = 1,10 — enddo был лучше do 5 i=1,10. В последнем случае часто ставили точку вместо запятой, тогда компилятор создавал переменную do5i и присваивал ей значение 1.10. А в случае do — enddo выдавалась ошибка: конец цикла есть, а цикла нет.
И ещё активно начал использовать implicit none. Всё-таки обязательное объявление переменных лучше всяких умолчаний и определения по первой букве имени.
PD>Еще одна "вольность" Фортрана — это EQUIVALENCE и COMMON. Что мы только на их основе не делали! Массивы представляли как скаляры, разные размеры массивов указывали, типы смешивали — все с рук сходило. Полная свобода действий. Потом очень не хватало — пришлось привыкать к современной дисциплине обращения с памятью. Кстати, когда С изучал, обнаружил union и обрадовался ему как родному. А потом узнал, что его использование не есть лучшая практика...
А это из серии "Грабли в Фортране". Лет 40 назад такой литературы было не меньше, чем "Изучаем Фортран". За COMMON следить нужно очень строго. Как, кстати, сделано в том же Графоре и в некоторых числодробительных библиотеках. Кто-то один из заполняет, остальные читают. Там обычно хранили всякие мировые константы типа машинного эпсилон. И было удобнее передать в подпрограмму 20 аргументов, чем рисовать COMMON-блок. А за безымянные COMMON-блоки вообще надо дисквалифицировать. Я, кстати, так и не сумел из Си-функции подключиться к такому. Наверное, просто лень было рыться в протоколах и искать имя, которое ему назначается по умолчанию. Но в реальном коде я безымянных COMMON-блоков не видел ни разу.
PD>Не было во времена расцвета фортрана ни логики (в нынешнем понимании), ни графики (на чем ? на АЦПУ символами ?), ни парсинга исходных данных (вводили их просто с перфокарт или терминала, при этом на ошибки представления порой не реагировали — нечего тут, вводите все правильно, иначе я ни за что не ручаюсь
Кое-какая графика всё же была. Правда, как работал Графор на ЕС ЭВМ, я не видел. Но переносил программу, сделанную с его использованием, на MS DOS. Всех делов было правильный драйвер экрана и принтера подключить при сборке. А ошибки при вводе я вставками на Сях обрабатывал.
PD>И едва ли фортрановское мышление тут причиной. Мне, например, ничего не стоило отказаться от 6-буквенных имен и перейти к нынешним принципам.
Да, это оказалось очень легко.
PD>А вот что я действительно в себе перестраивал — это создание циклов с помощью GOTO назад. В Фортране-4 иных средств для произвольного цикла нет, есть только для цикла типа i++ или i+=. Умел я их делать прекрасно. И мне еще долго хотелось так писать.
Нормальные циклы и if elsif else endif и циклы while завезли в Фортран 77. Я на них почти сразу перешёл. И цикл do i = 1,10 — enddo был лучше do 5 i=1,10. В последнем случае часто ставили точку вместо запятой, тогда компилятор создавал переменную do5i и присваивал ей значение 1.10. А в случае do — enddo выдавалась ошибка: конец цикла есть, а цикла нет.
И ещё активно начал использовать implicit none. Всё-таки обязательное объявление переменных лучше всяких умолчаний и определения по первой букве имени.
PD>Еще одна "вольность" Фортрана — это EQUIVALENCE и COMMON. Что мы только на их основе не делали! Массивы представляли как скаляры, разные размеры массивов указывали, типы смешивали — все с рук сходило. Полная свобода действий. Потом очень не хватало — пришлось привыкать к современной дисциплине обращения с памятью. Кстати, когда С изучал, обнаружил union и обрадовался ему как родному. А потом узнал, что его использование не есть лучшая практика...
А это из серии "Грабли в Фортране". Лет 40 назад такой литературы было не меньше, чем "Изучаем Фортран". За COMMON следить нужно очень строго. Как, кстати, сделано в том же Графоре и в некоторых числодробительных библиотеках. Кто-то один из заполняет, остальные читают. Там обычно хранили всякие мировые константы типа машинного эпсилон. И было удобнее передать в подпрограмму 20 аргументов, чем рисовать COMMON-блок. А за безымянные COMMON-блоки вообще надо дисквалифицировать. Я, кстати, так и не сумел из Си-функции подключиться к такому. Наверное, просто лень было рыться в протоколах и искать имя, которое ему назначается по умолчанию. Но в реальном коде я безымянных COMMON-блоков не видел ни разу.