Каким должен быть язык программирования? Анализ и критика Описание языка Компилятор
Отечественные разработки Cтатьи на компьютерные темы Компьютерный юмор Прочее

Предопределенный результат

Начальник говорит: материаловеды просят сообщить им, какой бы выигрыш в весе конструкции могли бы получить, если бы применили новый сплав марки 01420 — гордости отечественной металлургии. Я, мол, завтра с утра в МАП еду, заодно и на эту тему поговорили бы. Оценить выигрыш? Да это мне как два регистра обнулить. У меня, как и у металлургов, тоже гордость имеется — собственная программа определения оптимального сечения элементов продольного силового набора. Стрингерами называются такие элементы. Новый сплав такой же прочный как обычный Д16Т, а удельный вес процентов на 12 меньше. Значит и выигрыш в весе должен быть процентов 10-15. «Щас» сделаю.

            В кино (особенно в голливудском) развернулся бы я во вращающемся кресле к компьютеру, нажал бы несколько любых клавиш, кроме пробела и ввода и сразу же огласил бы результат. Но на дворе начало 80-х, в НПО персональные ЭВМ «Мир-2» уже уступили место многотерминальной работе с БЭСМ-6.

            Поэтому менее пафосно поднимаюсь на этаж выше, где в комнатушке рядом с отлаживаемой СМ-4 стоят два VT-340, подключенные к БЭСМ. Сейчас, сейчас. Ввожу характеристики сплава и вуаля — брюки превращаются… Превращаются брюки… Что? Масса отсека возрастает на 100 кг? Блин, да ты просто мастер поиска оптимальных сечений! Значит, если применить более легкий и такой же прочный материал, то конструкция утяжеляется? Это открытие. Спокойно. Просто не то ввел. Где-нибудь перепутал сантиметры с миллиметрами.

            Заглядывает начальник:
— Ну как? Я уже ухожу.
— Э-э, да щас, опять БЭСМ зависла (наглая ложь, ВЦ работает как часы «Полет»).
— Ну ладно, скажу, что еще не оценивали. Потом сообщим.

            Мое самомнение падает до нуля. А как я хвастался своими поисками экстремумов. Алгоритм действительно имел несколько остроумных решений. Дело в том, что найти наименьшее допустимое сечение стрингера — задача непростая. К тому же в «математический» поиск минимума вмешиваются конструктивные ограничения. Например, вот здесь бы сделать полочку покороче, но заклепочному автомату нужна площадка 22 мм. А здесь бы строительную высоту уменьшить, но внутри именно этого профиля должен идти трубопровод диаметром 100 мм и т.д. и т.п.

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

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

            Начальник отнесся к этому внимательно и предложил пойти к прочнистам и разобраться в чем дело. Но поход получился плачевным. Как молодой специалист я был послан далеко и надолго. Дескать, программист он, права пришел качать. Экстремумы он ищет, щенок, максимальный радиус инерции он нашел, сопляк. Да тебя в проекте еще не было, а мы для Королева корпуса рассчитывали. И все испытания успешно проходили. Мы за это отвечаем. Безо всяких алголов и БЭСМов.

            Через несколько месяцев прибежал к нам другой, правда, сотрудник этого же отдела. Караул, ошибка вышла. Может мой поход и подтолкнул их к перепроверке. Дескать, решение они уже нашли (дополнительный лист обшивки вставить), с конструкторами договорились, только наша, проектантов, виза нужна, подпишите. Жаль, не было меня в тот день. Посмотрел бы я в ясные глаза того, кто меня матом послал. Подписали, конечно. Так и полетела «Энергия» с дополнительными листами в хвостовых отсеках «боковушек».

            А вот теперь и я облажался. Сделал программу, выдающую бредовый результат. Может она нашла локальный экстремум, а не глобальный? Но, ни через час, ни через три, никаких ошибок я не обнаружил, несмотря на кучу вставленных выводов.

            В подавленном состоянии еду домой. И тут доходит. Никаких ошибок и нет. Правильный ответ был получен сразу же: при таких условиях применение нового материала нецелесообразно. Дело в том, что новый сплав легче, но и менее упруг. Модуль упругости у него около 7380, а у обычного алюминия 6900. Значит, при тех же нагрузках у него меньше деформации и он меньше нагрузки передает на обшивку. Ну, как в чуме: жерди и шкуры. Вся нагрузка на жерди, а шкуры просто так висят, ненагруженные. Вот если бы и обшивка была из такого же материала, но, увы, порошковая металлургия делает пока только профили, а не листы.

            Получилось, что обшивка по условию задачи такая же, но на нее нагрузка почти не идет и стрингеры надо делать толще. Поэтому общая масса отсека увеличивается, а не уменьшается. И все цифры, объясняющие это, все время были перед глазами, но я их не видел потому, что был заряжен на предопределенный результат. Дескать, должно быть легче — и точка. Моя же программа оказалась умнее меня. Ну не умнее, просто старательнее как начинающий специалист, который все пытается сделать по инструкции и перепроверить. А сам я типа уже опытный: чего, мол, там считать-то и так ясно!

            После этого удара по самолюбию стараюсь даже предопределенные результаты все же проверять и, главное, анализировать. Так оно надежнее.

Автор: Д.Ю.Караваев. 05.02.2017

Последняя правка: 2018-10-29    16:02

Оцените

Написать отзыв

Написать автору можно на электронную почту mail(аt)compiler.su

Авторизация

Регистрация

Выслать пароль

Карта сайта


Каким должен быть язык программирования?

Анализ и критика

Описание языка

Компилятор

Отечественные разработки

Cтатьи на компьютерные темы

Двадцать тысяч строк кода, которые потрясут мир?

Почему владение/заимствование в Rust такое сложное?

Масштабируемые архитектуры программ

Почему Хаскелл так мало используется в отрасли?

Бесплатный софт в мышеловке

Исповедь правового нигилиста

Русской операционной системой должна стать ReactOS

Почему обречён язык Форт

Программирование без программистов — это медицина без врачей

Электроника без электронщиков

Статьи Дмитрия Караваева

●  Идеальный транслятор

●  К вопросу о совершенствовании языка программирования

●  О реализации метода оптимизации при компиляции

●  О реализации метода распределения регистров при компиляции

●  О распределении памяти при выполнении теста Кнута

●  Опыты со стеком или «чемпионат по выполнению теста Кнута»

●  Сколько проходов должно быть у транслятора?

●  Чтение лексем

●  Экстракоды при синтезе программ

●  Об исключенных командах или за что «списали» инструкцию INTO?

●  Типы в инженерных задачах

●  Непрерывное компилирование

●  Об одной реализации специализированных операторов ввода-вывода

●  О русском языке в программировании

●  Формула расчета точности для умножения

●  Права доступа к переменным

●  Скорость в попугаях

●  Крах операции «Инкогнито»

●  Предопределенный результат

Компьютерный юмор

Прочее

Последние комментарии

2018/11/12 14:18 ••• Попов Михаил
✎ Программирование без программистов — это медицина без врачей

2018/11/11 23:39 ••• Автор сайта
✎ Изменение длины объекта в стеке во время исполнения

2018/11/11 14:29 ••• Александр Коновалов aka Маздайщик
✎ Помеченные комментарии

2018/11/11 14:01 ••• Александр Коновалов aka Маздайщик
✎ Нерабочий код

2018/11/11 13:39 ••• Александр Коновалов aka Маздайщик
✎ О русском языке в программировании

2018/11/11 12:57 ••• Александр Коновалов aka Маздайщик
✎ Об одной реализации специализированных операторов ввода-вывода

2018/11/03 22:43 ••• rst256
✎ Непрерывное компилирование

2018/11/02 23:23 ••• Неслучайный читатель
✎ Сколько проходов должно быть у транслятора?

2018/11/01 19:10 ••• Автор сайта
✎ Об исключенных командах или за что «списали» инструкцию INTO?

2018/10/31 06:01 ••• kt
✎ Чтение лексем

2018/10/30 18:30 ••• Александр Коновалов aka Маздайщик
✎ Экстракоды при синтезе программ

2018/10/29 13:17 ••• Автор сайта
✎ Каким должен быть язык программирования?