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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Опубликовано: 2018.08.26, последняя правка: 2019.01.29    14:26

ОценитеОценки посетителей
   ████████████ 4 (28.5%)
   █████████ 3 (21.4%)
   █████████ 3 (21.4%)
   ████████████ 4 (28.5%)

Добавить свой отзыв

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

Авторизация

Регистрация

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

Карта сайта


Содержание

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

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

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

Компилятор

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

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

●  О превращении кибернетики в шаманство

●  Про лебедей, раков и щук

●  О замысле и воплощении

●  О русском ассемблере

●  Арифметика синтаксиса-3

●  Концепция владения в Rust на примерах

●●  Концепция владения в Rust на примерах, часть 2

●●  Концепция владения в Rust на примерах, часть 3

●  Суть побочных эффектов в чисто функциональных языках

●  О неулучшаемой архитектуре процессоров

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

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

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

●  О создании языков

●●  Джоэл Спольски о функциональном программировании

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

●  Программирование исчезнет. Будет дрессировка нейронных сетей

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

●  Десятка худших фич C#

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

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

●  ЕС ЭВМ — это измена, трусость и обман?

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

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

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

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

●  Программисты-профессионалы и программирующие инженеры

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

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

●●  В защиту PL/1

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

●●  Опыт самостоятельного развития средства программирования в РКК «Энергия»

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

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

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

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

●●  О размещении переменных в стеке

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

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

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

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

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

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

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

●●  Особенности реализации структурной обработки исключений в Win64

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

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

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

●●  Заметки о выходе из функции без значения и зеркальности get и put

●●  Модификация исполняемого кода как способ реализации массивов с изменяемыми границами

●●  Ошибка при отсутствии выполняемых действий

●●  О PL/1 и почему в нём не зарезервированы ключевые слова

●●  Не поминайте всуе PL/1

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

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

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

●●  Поддержка профилирования кода программы на низком уровне

●●  К вопросу о парадигмах

●  Следующие 7000 языков программирования

●●  Что нового с 1966 года?

●●  Наблюдаемая эволюция языка программирования

●●  Ряд важных языков в 2017 году

●●  Слоны в комнате

●●  Следующие 7000 языков программирования: заключение

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

Новости и прочее




Последние отзывы

2024/11/21 11:02 ••• Автор сайта
Продолжение цикла и выход из него

2024/11/12 20:24 ••• Вежливый Лис
Правила языка: строки, комментарии

2024/11/12 13:10 ••• Вежливый Лис
Новости и прочее

2024/11/12 00:32 ••• Автор сайта
Оценка надёжности функции с несколькими реализациями

2024/11/06 02:50 ••• Иван
Энтузиасты-разработчики компиляторов и их проекты

2024/11/05 23:51 ••• Борис К.
Изменение приоритетов операций

2024/11/05 23:38 ••• Борис К.
Шестнадцатиричные и двоичные константы

2024/11/04 12:50 ••• Неслучайный читатель
Русский язык и программирование

2024/11/01 12:11 ••• ИванАс
Русской операционной системой должна стать ReactOS

2024/10/27 14:01 ••• Автор сайта
О русском ассемблере

2024/09/29 23:40 ••• Автор сайта
Десятка худших фич C#

2024/09/29 13:10 ••• Автор сайта
ЕС ЭВМ — это измена, трусость и обман?

2024/09/22 21:08 ••• Вежливый Лис
Бесплатный софт в мышеловке