Чужой код
Меня недавно спросили, почему программисты ненавидят работать с чужим кодом. Долго думал, как донести до обычного пользователя всю суть пиздеца. Решил привести небольшую аналогию:
Вот представь, что тебе доверили достроить за другим прорабом лабораторию на острове. Ты приходишь на объект, а там кроме недостроенного здания: огромный вентилятор (размером со здание), большой воздушный шар и комната набитая швабрами. Почесав голову, ты разбираешь этот хлам и доделываешь лабораторию. Сдаешь объект ученным, но через 5 минут они выбегают с криком: "УТЕЧКА ЯДОВИТОГО ГАЗА!!!".
- Как так-то, блять! Должно же работать! - в отчаянии кричишь ты и звонишь прошлому прорабу:
- Вася, у нас ядовитый газ потёк! В чем проблема?
- Не знаю, должно было все работать. Что-то в проекте менял?
- Немного, швабры вынес...
- Швабры потолок держали!
- Что??? Что, блять, извините???
- Говорю, швабры потолок держали. Над ними цистерны с газом были. Очень тяжелые, пришлось в комнату снизу швабры напихать.
- Ты хотя бы записку на двери повесил бы, что швабры для держания потолка! У нас тут ядовитый газ течет! Что нам делать?
- Включай вентилятор. Он сдует газ с острова.
- Я его, блять, демонтировал сразу же!
- Зачем?
- Зачем ты построил 120 тонный вентилятор? Ты не мог положить ящик блядских ПРОТИВОГАЗОВ?
- Ящик противогазов искать нужно, а вентилятор у меня с прошлого заказа оставался.
- Вася, я убрал твой вентилятор! Мы тут задыхаемся!
- Херли вы тогда там делаете? Садитесь на воздушный шар и уебывайте!
Коды
Поиграем в бизнесменов?
Одна вакансия, два кандидата. Сможете выбрать лучшего? И так пять раз.
Зачем так писать код??? (непрограммистам неинтересно)
Сейчас пишу управляющую программу к одной промышленной железке.
Железка сама очень даже замечательная, работает как часы и измеряет что нужно совершенно прекрасно.
Но вот микропрограмма внутри этого устройства, написана мягко говоря "странновато".
Несколько параметров задаются (начало...конец диапазона измерений, например).
Сегодня тестировал свою программу перебирая с маленьким шагом весь диапазон доступных значений этого параметра.
Наблюдаю следующую картину:
-12.1 - нормально принимает значение
-12.15 - ошибка
-12.2 - норма
...
-999 - норма
9999 - норма
-6.231 - ошибка
-6.23 - норма
6.231 - норма
999.2 - норма
999.21 - ошибка
9998.5 - ошибка
Причем "родной", фирменный, конфигуратор этой штуковины вел себя точно так же!
Сбоил на этих же значениях.
Очень несразу до меня дошло, что где-то внутри микропрограммы, полученное число переводят в строку символов, длиной 5 знаков, и минус - тоже знак!
Вот зачем так делать? Все равно потом переводить обратно, для занесения в регистр!
В документации об этом нюансе, естественно, ни слова.