Здравствуйте, Pavel Dvorkin, Вы писали:
PD>И вот такое
PD>X1 = (-B + SQRT(B*B — 4 *A *C)) / (2*A)
Примерно так оно и было. Греческие буквы часот писали alpha или alfa, beta и т. д. Старались, чтобы запись формул в программе на фортране соответствовала тому, что в источниках.
PD>А еще про максимальную длину идентификатора. Не дам пруф, но вроде как в одно машинное слово на той машине, где впервые использовали фортран, помещалось как раз 6 букв
Тут только могу сказать: имя могло быть любой длины, но компилятор (Фортран 4 на ЕС ЭВМ) распознавал первые 6 символов. Проверено на себе. Фортран 77, ЕМНИП, до 32 символов понимал.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Это еще ладно. PD>Вот A2 = A1 * B1 + C2 — C3 действительно нелегко понять.
PD>Но!
PD>Фортран создавался и активно использовался тогда, когда решали в основном математические задачи. Кстати, его название расшиaровывается как Formulae Translation
Когда первична формула — не страшно, это даже логично: формула первична, код вторичен. В дополнение к формулам часто идут пояснения и условия их использования на бумаге.
Однако, когда в коде далеко не формулы, а логика, которая пишется, правится дополняется годами, и где не соблюдается принцип единственной ответственности (в файле одновременно и графика, и логика, и парсинг исходных данных), то понять кто есть кто и кто на ком стоял оказывается весьма непростой задачей — там привычки принесённые из фортрана оказываются абсолютным злом.
Всё сказанное выше — личное мнение, если не указано обратное.
Re[3]: Госспади, отправь на пенсию воспитанников фортрана!
Здравствуйте, Философ, Вы писали:
Ф>Однако, когда в коде далеко не формулы, а логика, которая пишется, правится дополняется годами, и где не соблюдается принцип единственной ответственности (в файле одновременно и графика, и логика, и парсинг исходных данных), то понять кто есть кто и кто на ком стоял оказывается весьма непростой задачей — там привычки принесённые из фортрана оказываются абсолютным злом.
Не было во времена расцвета фортрана ни логики (в нынешнем понимании), ни графики (на чем ? на АЦПУ символами ?), ни парсинга исходных данных (вводили их просто с перфокарт или терминала, при этом на ошибки представления порой не реагировали — нечего тут, вводите все правильно, иначе я ни за что не ручаюсь . Все это намного позже появилось.
И едва ли фортрановское мышление тут причиной. Мне, например, ничего не стоило отказаться от 6-буквенных имен и перейти к нынешним принципам.
А вот что я действительно в себе перестраивал — это создание циклов с помощью GOTO назад. В Фортране-4 иных средств для произвольного цикла нет, есть только для цикла типа i++ или i+=. Умел я их делать прекрасно. И мне еще долго хотелось так писать.
Еще одна "вольность" Фортрана — это EQUIVALENCE и COMMON. Что мы только на их основе не делали! Массивы представляли как скаляры, разные размеры массивов указывали, типы смешивали — все с рук сходило. Полная свобода действий. Потом очень не хватало — пришлось привыкать к современной дисциплине обращения с памятью. Кстати, когда С изучал, обнаружил union и обрадовался ему как родному. А потом узнал, что его использование не есть лучшая практика...
With best regards
Pavel Dvorkin
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-блоков не видел ни разу.