4698
Кажется, я знаю название софтинки из истории про сущности. Мы тоже берём файл из P-CAD, перегоняем его в *.dxf, который скармливаем простенькой старенькой софтине для генерации управляющей программы в G-кодах. Каждое действие занимает секунды три, а поворот всей модели — около десяти. Что на десктопе с Атлоном 3000+ и двумя гигами оперативки, что на ноутбуке с Core 2 Duo и четыремя гигами. Обычно обе этих машины легко вращают тяжелые солидворксовские сборки из десятков деталей. Немало удивившись, начинаем думать, как же оно всё вообще работало в начале двухтысячных. Взяли со склада старый третий «пень» с WinXP, поставили программу — никаких тормозов. В чём разница? В видеокарте. Старая и слабая дискретная видяшка на 16 метров для творения сумеречных гениев предпочтительнее, чем любая из современных встроенных.
А уж после того, как мы выяснили, что при наличии в чертеже элементов с координатой, большей 255, тысячные дюйма автоматически начинают интерпретироваться как миллиметры, мне стало страшно. Индия ведь член ядерного клуба — мало ли что.
4695
Говорите, индийский код? Фамилии длинные? А вы когда-нибудь видели творения российских жёлтых программистов? Вот примеры из реальных конфигураций, работающих в достаточно больших фирмах:
Сумма = Документ.Сумма;
Если Сумма = Сумма Тогда
СуммаНовая = Сумма;
Иначе
Сумма = Сумма;
КонецЕсли;
Пока "Сообщение на экране" = "Сообщение на экране" Цикл
[...]
КонецЦикла;
Все мы хороши.
4686
Не так давно выяснилось, что некоторые корейцы — очень даже индусы.
Приобрели в организацию для собственных нужд станок, предназначенный для изготовления небольших по размеру печатных плат из фольгированных заготовок. Алгоритм работы таков: в P-CAD выполняется трассировка, производится импорт в файлы, содержащие данные о контуре платы, печатных проводниках и отверстиях, затем это дело обрабатывается софтом, который генерит файл, через флешку передаваемый на станок.
Всё шло очень неплохо, пока платы делали по одной. Но потом кто-то из любознательных обнаружил, что можно задать изготовление нескольких одинаковых плат одновременно, эдаким двумерным массивом. Лучше бы он этого не делал. Все платы, кроме самой первой, при этом шли вкривь и вкось. Сначала ничего не могли понять: замеряли вибрацию станка во время работы, прикручивали стол к полу, даже усиливали подручными средствами крепление заготовок. Потом кто-то обратил внимание на схожесть ошибок.
На софт из комплекта поставки были натравлены лучшие программисты из имеющихся. Оказалось, что при «размножении» рисунка платы только имеющая индекс (1, 1) получала нормальные координаты всех технологических элементов, а у остальных они умножались на соответствующее порядковому номеру число.
4617
Прислали от одной госконторы-монополиста программку для учёта и создания всероссийской базы кое-каких данных. Программа даже не сетапится, а просто запускается экзешником. Собственно, делает простое: из заполненных табличек формирует XML-файл. Сама программа весит полметра. Но, блин, чтобы её запустить, надо установить .NET-фреймворк 3.5, который весит 240 метров и загружает проц чуть ли не на 100%. И как после такого назвать человека, что писал этот код? Индусы нервно курят в сторонке и завидуют.
4608
Мудрость наших отцов и дедов гласила: «Нет такой программы, которую нельзя было бы сократить хотя бы на один оператор». Учитывая, что вводить код приходилось с перфокарт, индийский подход был нежизнеспособен. Те времена прошли, но «мышечная память» всё ещё жива в некоторых преподавателях программирования.
История эта произошла со мной, когда я учился на первом курсе МИРЭА. Очередная лаба по программированию: матрица N×N с рандомными числами, задающими расстояние, в которой надо было провести расчет кратчайшего пути из {1; 1} в {N; N}. Первая версия программы была напичкана циклами и массой условий. Работала быстро — ну, насколько это позволял третий «пень». Тётечка-преподаватель, оценив код, сказала, что надо бы оптимизировать. Почесав репу, я изрядно переписал код: количество циклов сократилось вдвое, а условий — втрое. «Всё равно много», — сказала тетечка.
Десятая версия выглядела примерно так:
i := 0;
while ((48 условий) and (i <= N*N)) do inc(i);
Только после этого я получил зачёт и фразу, которая вьелась мне в мозг: «Памяти много не бывает!»
4490
Работаю программистом на производстве. Есть у нас софтина, написанная, похоже, высокопородистыми индусами. Каждый раз, когда меняется производственный процесс, начинается веселуха у всех от мала до велика: никогда на 100% не знаешь, как изменение одной циферки в конфиге (если её можно поменять, то это уже праздник) повлияет на всё остальное. То, что от цвета пластика может зависеть количество болтов, уже никого не удивляет.
Оператору, готовя производственное задание, приходится каждый раз тыкать в три менюшки и в них отмечать кучу галок. Иногда он что-то пропускает по запарке, и получается брак. Непорядок! Неделя ушла на то, чтобы перерыть все конфиги и скрипты (хуже не пишут даже студенты в лабах, сделанных на коленке за час до сдачи) — ничего и близко похожего не нашёл, зато обнаружил в недрах настроек окошко, где отмечен дефолтный набор этих галок, и всё задисейблено. Ещё пару дней искал, откуда этот список туда попадает, но тщетно. Позвонил в техподдержку. Там официально заявили: список жёстко зафиксирован в программе и защищён. Сбилдить с нужными галками и выслать патч они тоже не могут.
Сижу в расстроенных чувствах, медитирую на задисейбленный предмет моих изысканий. Осеняет мысль. Качаю Window Scanner, раздисейбливаю. Запускаю Аrtmoney, потыкав по галкам, нахожу адреса. Проверяю вне окошка с настройками — работает! За двадцать минут пишу трейнер, как для игрушки, который щёлкает эти галки, и батник, который всё это запускает. Задача решена.
4476
Только что помогал какому-то (или каким-то?) индусам на cplusplus.com. Эти удивительные «программисты» решили написать 3D-игруху на «плюсах», только начиная осваивать их. Но дело не в этом. Они упорно спрашивали, «как сделать GUI», а на мой вопрос, какой: виндоусный (а вдруг настройщик, снаружи валяющийся) или игровой, они лишь дали ссылку: «Как в этой игре». Мой вопрос про движок был проигнорирован — видимо, у них сейчас важное заседание на тему этого движка. Сначала мне хотелось смеяться, потом плакать. Жду не дождусь их нового сообщения.
4471
Работаю сметчиком. Ежедневно пользуюсь программой одной из фирм-гигантов данной области. Недавно столкнулась с проблемой. При запросе поиска по шифру строительного материала программа писала: «Введн недопустимый символ», — и намертво висла. Проверила, не запала ли какая клавиша. Терпение кончилось, и я позвонила в службу поддержки.
Озвучиваю проблему. Специалист отправляет меня на диск С: и просит посмотреть количество места. Первая мысль: наверное, думает, что свободное место закончилось, вот прога и виснет. Ехидно отвечаю: «Свободно 264 ГБ». И тут слышу невозмутимое: «Ну, тогда всё ясно. Программа не ищет по шифру материалы, когда свободное место на диске С: кратно четырём. Фильм какой-нибудь скачайте, и всё заработает».
Положила трубку, теперь думаю, как оправдаться перед нашими сисадминами за трафик, когда я скачаю гиговый хлам из интернета. Производственная необходимость?
263 ГБ свободного места — всё работает в штатном режиме.
4459
Дословные выдержки из инструкции по установке приобретённой за большие деньги глубоко специализированной программы:
Внимание! Для проведения всех операций по установке и настройке рекомендуется привлечение квалифицированного программиста.
1. Система устанавливается только на Windows XP.
2. Язык операционной системы — любой (английский или немецкий).
3. Основная системная папка Windows — требуется C:\WINNT.
4. Система автоматического обновления Windows должна быть выключена.
5. Перед установкой отключить все режимы сохранения энергии и заставку.
6. Жёсткий диск должен иметь определенную структуру разделов: C: — 10 ГБ, D: — 100 МБ, E: — 20 ГБ, F: — 30 ГБ, а также требуется не менее 6 ГБ неразмеченного пространства.
7. Метки дисков должны обязательно иметь следующие имена: ...
8. Для установки запустите файл setup.bat. Если из-за этого компьютер сразу сам перезагрузится, ничего страшного, запустите ещё раз.
9. Ставить программу следует только под именем пользователя «%brandname%».
10. Программа установки может сама назначить учётной записи пароль «password».
11. К выбору языка программы требуется отнестись с максимальной ответственностью: потом переключить будет почти невозможно.
12. В процессе установки Windows может несколько раз зафиксировать «замену системных файлов неизвестными версиями». Это нормально.
13. По окончании установки ПК будет перезагружен.
14. Возможно, после перезагрузки вы не сможете открыть ни проводник Windows, ни какие-либо папки. В этом случае через диспетчер задач убейте процесс %processName%, затем запустите с диска файл xxx.reg, и всё будет работать.
Заставить работать это пока не удалось.
4434
Недавно я, программист старой закалки, увидел, откуда берутся современные программисты.
Молодой человек (очень молодой, лет восьми) покупает молоко. Сам, своим ходом, что похвально. Два пакета, итого 84 рубля. Услышав сумму, молодой человек протягивает стольник и требует... вы правильно заподозрили неладное: 26 рублей сдачи. Забыл перенос в старший разряд сделать, бывает в его возрасте. Продавщица улыбается и указывает ему на ошибку. Молодой человек, ничтоже сумняшеся, апеллирует: у него-де пять по математике.
...И вспомнилось мне, как на работе ткнутый носом в очевидную ересь программист вместо того, чтобы пожать плечами и исправить случайный огрех, как сделал бы любой нормальный человек, стал махать IT-сертификатами и кричать, что он кандидат технических наук.