пятница, 7 января 2022 г.

Шеркало 05.04: любимые системы программирования (Алгол-60 ч.3, Фортран-IV)

 - Так вот, я и говорю: Алгол, на котором нас учили писать учебные программы, стал мне постепенно надоедать...

- ОЙ!!! КТО здесь?!!

- Тихо, Шеркало, чего ты испугалось? Это же я, Ёж.

- Ааа, Ёж... А то я спросонья напугалось было. Несколько дней мочал, как попугай об лёд, а тут, вдруг, опять... Ну, ладно,  рассказывай, я уже проснулось.

- Ближе к концу 9-го класса школы, в 3-й четверти, я чем-то, уж не помню чем, серьёзно заболел. Меня целую неделю с хвостиком, может даже полторы недели, не выпускали из дома в школу, да и температура около 39-40 градусов держалась. Мне было очень скучно лежать большую часть времени под одеялом, да и мозги при температурах, близких к точке свёртываемости крови, работают совсем иначе, чем в прохладе. В итоге, я схватил попавшийся под руку учебник по языку Фортран-IV - это весьма древняя версия Фортрана, примерно начало 1960-х годов, но именно она тогда чаще всего использовалась учёными в ИОА. 

Я очень внимательно изучил этот учебник насквозь. Компьютера у меня дома возле кровати под рукой никакого конечно не было, даже программируемого микрокалькулятора не было, но возбуждённое повышенной температурой состояние мозга, на которое ещё накладывалось то, что в качестве жаропонижающих мне давали не только обычный парацетамол, но и, для разнообразия, димедрол с молоком (тогда - общепринятая практика), позволяло мне писать достаточно сложные программы (для начального учебного уровня конечно, "сложные") прямо в уме, в собственной памяти, даже без записи в тетрадь. Позже, после выздоровления, я в ИОА получил возможность реально набрать (или заказать на перфокартах) некоторые из моих "бредовых" фортрановских программ, и запустить их на БЭСМ-6 или на М4030. После исправления незначительных ошибок, они оказались вполне работоспособными.

- Ну и какое было впечатление о "настоящем, промышленном" языке программирования?

- Какое моё основное впечатление о Фортране (подчеркну, о ранних версиях Фортрана, до конца 70-х годов)? Впечатление очень простое: Фортран - очень IBMовский язык! Фирма IBM изначально ведь делала не компьютеры! Она прежде всего прославилась своими табуляторами и сопутствующим перфокарточным оборудованием. Как в анекдоте: "Что бы не делали в СССР, гречневую кашу или, например, туалетную бумагу, а всё равно на выходе автомат Калашникова получается". 

Так вот, что бы не делала фирма IBM, вплоть до почти середины 1970-х годов, у неё всё равно в итоге получался табулятор, ориентированный на работу с перфокартами. Язык Фортран - он исходно весь сплошь перфокарточный. Там единица языка отнюдь не оператор. Единица языка - строка в 80 символов, разбитая на зоны колонок (читай - ПЕРФОКАРТА!). я даже не хочу здесь картинку типичной фортрановской программы приводить. 5 колонок отведено под метку (она же - тупо номер строки). Одна колонка - признак строки-продолжения предыдущей. Далее идёт сам оператор (или информация), в идеале - один оператор = одна перфокарта. Последние 8 символов строки(карты) транслятор игнорирует - теоретически это место предназначено для маааленького комментария, но на практике, некоторые ранние модели перфосчитывателей/перфораторов просто часто допускали сбои чтения/записи в этих колонках (карта на выходе из тракта механически плохо удерживалась, вихлялась) проще было эти колонки тупо принудительно пропустить, чем потом ошибки ввода/вывода отлавливать. 

Весь ввод и вывод такой же - таблицы, представляющие собой отформатированные по колонкам перфокарты. Многочисленные операторы FORMAT, определяющие форму ввода/вывода отдельных строк в общей структуре таблицы. Отдельные извращения с текстовыми константами в этих форматах - константы Холлерита, ага, прекрасный решение костыль.

Структура программы? Что? Какая структура? А ЗАЧЕМ она?! Зачем какая-то структура, если вся программа построчно УЖЕ заранее пронумерована (ну, или она МОЖЕТ быть вся пронумерована, поскольку каждая перфокарта в колоде заведомо уже имеет свой уникальный номер по определению). Просто говорим, какой номер строки будет следующим оператором, и всё, без особых изысков. Типичное наследие ранних компьютеров с 3-х адресной системой команд - там третий адрес как раз был адресом следующей выполняемой операции...


- Ой, Ёж, я заслушалось. прости. Так какой вывод? Традиционный вопрос, что там у тебя было к Фортрану насчёт любви?

- Нет, Шеркало, к Фортрану никакой любви у меня ни чуть-чуть не было. Да и программы я на нём почти не писал - не представлялось никакого смысла. А вот УВАЖЕНИЕ к этому языку, я получил на полную катушку. Ещё раз напомню, изначально выбор между двумя возможными языками обучения школьников, Алголом-60 и Фортраном-IV, для меня был очевиден: конечно же современный Алгол на порядок лучше заведомо устаревшего Фортрана! А вдруг оказалось, что всё не так очевидно.

Преимущества Алгол - современная структура программы, структурное программирование. Недостатки Алгол - да там же уши мартовского зайца-шизофреника из каждой строки торчат!!! Какое там структурное программирование, если в документации через абзац упоминаются переключатели и метки, если передачу параметров в процедуры проектировали те же шизофреники, если вместо внятной работы с арифметикой есть куча слабо определённых неявных преобразований?!

Преимущества Фортран - никакой шизофрении, всё чётко определено и предсказуемо (правда, только до следующей версии, но это же другое. не так ли?). Железная логика программы. Качественно прописанный (хотя и жутко тяжеловесный, ну, так поищите лучше!) табличный ввод/вывод. Куча готовых вычислительных подпрограмм на научную тематику. Недостатки Фортран - никакого структурного программирования! Забудьте о современных парадигмах программирования вообще!!! Только перфокарты  Если у вас вдруг уже есть терминалы для непосредственного доступа к компьютеру- значит эти ваши терминалы будут просто эмулировать устройства чтения или печати перфокарт. Забудьте о функциональном программировании, забудьте о рекурсиях вообще!

Ну, о работе с символьной информацией ещё более отдельный вопрос. Ни в Алголе, ни в Фортране этого не было совсем! Потом добавлялось, но опять же, смотри ниже итог... А символы и строки были реально нужны и интересны.

Итог? Ничья, 1:1. Алгол-60 и Фортран-IV оказались примерно шилом с мылом в одном мешке. То, что наши преподаватели предпочли Алгол - совершенно нормально. Структурное программирование в плане обучения школьников перевесило достоинства Фортрана. Однако, вряд ли такое решение было принято легко и единогласно. То, что учёные ИОА в большинстве тогда предпочитали Фортран - тоже абсолютно нормально. Им ведь формулы быстрее считать надо было и таблички рисовать, а не шашечки на полировке структурного программирования разглядывать. А готовых библиотек для расчёта разных формул у Фортрана было явно больше, да и табличный ввод/вывод - вполне развитОй.

Комментариев нет:

Отправить комментарий