Вот уже четыре года, как работает мое приложеньице на нескольких пром. предприятиях принадлежащих небезызвестному "голубому" гиганту.
Работает практически 24/7/365. С момента пуска в промышленную эксплуатацию было внесено всего 2 правки.
Не пугайтесь, моя халтура не управляет ничем опасным для жизни. Эта утилитка преобразовывает "приватные" выходные данные промышленного ПО, для их дальнейшей обработки нормальными средствами.
Тех. задание было такое — "хочу что бы работало вот так и желательно вчера". БОльшая часть из "вот так" была получена путем риверс-инженеринга этого самого "промышленного ПО".
Сейчас в сорцы смотреть боюсь — там на 100% Ад! Но работает же.
И главный вопрос — является ли говнокод говнокодом если он работает и как ожидается несколько лет?
Здравствуйте, Evgeniy Skvortsov, Вы писали:
ES>Вот уже четыре года, как работает мое приложеньице на нескольких пром. предприятиях принадлежащих небезызвестному "голубому" гиганту. ES>Работает практически 24/7/365. С момента пуска в промышленную эксплуатацию было внесено всего 2 правки.
Примерно столько же работает моя прошивка CAN BUS адаптера, запускающая цифровой усилок для нештатной гамнитолы. Только там абсолютные 24*7*365 — прошивка работает всегда, если аккумулятор присутствует в машине.
ES>Не пугайтесь, моя халтура не управляет ничем опасным для жизни. Эта утилитка преобразовывает "приватные" выходные данные промышленного ПО, для их дальнейшей обработки нормальными средствами. ES>Тех. задание было такое — "хочу что бы работало вот так и желательно вчера". БОльшая часть из "вот так" была получена путем риверс-инженеринга этого самого "промышленного ПО". ES>Сейчас в сорцы смотреть боюсь — там на 100% Ад! Но работает же.
Вот примерно так же. Всё реверсилось за 2 недели до убытия в отпуск. Когда оказалось что китайский адаптер усилок не включает, и его прошивка закрыта от чтения. А усилок, гадина, включается и выключается серией пакетов. Аналогично происходит изменение громкости — шлются команды по CAN. Аудиопоток идёт в цифре по SPDIF на постоянной громкости.
Прошивка была написана с 0-ля. Методом грубой силы был сдамплен поток CAN пакетов, и проигран в сеть автомобиля. Была попытка разобраться в этих пакетах и уменьшить их число. Но там явно нужно давать правильный ответ с нужным таймаутом — любые попытки выявить "лишнее" приводили к тому, что усилок включаться переставал. Так что если теперь (кто-то, зачем-то) подключит впараллель штатную гамнитолу в CAN сеть — на дисплейчике побегут буковки "Madonna track 01" — или что там играло при дампе. (Штатная гамнитола состоит из 2х физических кусков: самой гамнитолы и экранчика. Рисование в экранчик идёт по CAN шине. И эти пакеты тоже где-то в общей куче дампа.).
Я ещё сорцы китаесам отправил. Не удивлюсь, что моя прошивка уже расползлась по десяткам тысяч авто. Цифровой усилок стоит на всех комплектациях, отличных от "барабан" и "полубарабан"
ES>И главный вопрос — является ли говнокод говнокодом если он работает и как ожидается несколько лет?
Здравствуйте, Evgeniy Skvortsov, Вы писали:
ES>Работает практически 24/7/365. С момента пуска в промышленную эксплуатацию было внесено всего 2 правки.
Когда программа пишется для решения конкретной задачи и не планируется ее развивать и изменять, то совершенно неважно как она написана и важно лишь то, как она работает.
Однако большая часть проектов, во всяком случае, в тех местах, где работал я, не относится к этой категории. Проекты развиваются и поддерживаются многие годы и десятилетия. У них появляются новые версии, которые в некоторый момент начинают лишь отдаленно напоминать первую версию проекта. Причем разработчики предыдущих версий уже давно не работают в компании.
Для проектов такого рода на первый план выходит поддерживаемость и расширяемость. Мне абсолютно наплевать, что версия 1.0 данного проекта работала идеально без единого бага, если программисты, пишущие версию 2.0, имеют сложности с внесением тривиальных изменений.
Что до хороших новостей, то чаще всего выходит так, что программы, которые хорошо написаны и легко читаются и изменяются, также хорошо работают. Прослеживается, так сказать, корреляция. Видимо, хороших программистов отличает то, что результат их работы хорош сразу в нескольких аспектах, а не только в одном.
Здравствуйте, Evgeniy Skvortsov, Вы писали:
ES>Сейчас в сорцы смотреть боюсь — там на 100% Ад! Но работает же.
Угу, ровно до того момента, как придется впиливать еще одну фичу. Вот тогда и работать может перестать, и цена фичи будет космос...
ES>И главный вопрос — является ли говнокод говнокодом если он работает и как ожидается несколько лет?
конечно является.
IID>Я ещё сорцы китаесам отправил. Не удивлюсь, что моя прошивка уже расползлась по десяткам тысяч авто. Цифровой усилок стоит на всех комплектациях, отличных от "барабан" и "полубарабан"
We need to go deeper — я совершенно не удивлюсь, если вышло уже 2-3 новых редакции усилка, в которых всё сделано чтобы отловить именно твой дамп и включиться ибо компонентная база меняется, совместимость с предыдущей версией нужна, а что значит этот набор пакетов никто не знает и в даташитах ни слова о том почему магнитолы шлют усилку именно эту магическую последовательность
wl.>Здравствуйте, Evgeniy Skvortsov, Вы писали: wl.>меня зовут Вова, и я пишу говнокод. Вот. Признался
Клуб анонимных говнокодеров.. А ведь это бизнес идея .
Как много веселых ребят, и все делают велосипед...
Здравствуйте, Evgeniy Skvortsov, Вы писали:
ES>Сейчас в сорцы смотреть боюсь — там на 100% Ад! Но работает же. ES>И главный вопрос — является ли говнокод говнокодом если он работает и как ожидается несколько лет?
зависит от читающего. у всех разные ожидания и разный болевой порог.
да и непонятно, в чём именно там по-твоему говнокод.
Здравствуйте, neFormal, Вы писали:
F>зависит от читающего. у всех разные ожидания и разный болевой порог. F>да и непонятно, в чём именно там по-твоему говнокод.
Идеально оптимизированный код является говнокодом с точки зрения читающего.
Здравствуйте, Evgeniy Skvortsov, Вы писали:
ES>Вот уже четыре года, как работает мое приложеньице на нескольких пром. предприятиях принадлежащих небезызвестному "голубому" гиганту. ES>Работает практически 24/7/365. С момента пуска в промышленную эксплуатацию было внесено всего 2 правки.
Ага. Аналогично 8 лет назад написал тулзу для облегчения работы самому себе и диспетчеров на хлебокомбинате. Всего делов-то — забирать из ящика почту от клиентов, раскладывать по этим клиентам заявки в БД, выгребать счета-фактуры и отправлять их клиентам. Написано было на коленке за пару часов (кстати, на Delphi). Правда, пару раз дорабатывалась для поддержки стандартных форматов обмена. Теперь эта тулза входит в состав этой основной проги для управления хлебокомбинатом в том самом неизменном виде. И ничо, работает, жрать не просит...
Так что, дело не в говнокоде, а в правильности его приготовления и применения.
Здравствуйте, qwertyuiop, Вы писали:
Q>У меня складывается впечатление, что 90% работающего кода, которым заказчик доволен, представляет собой такой же говнокод.
Больше скажу, если у кода вообще есть заказчик, то это обязательно будет говнокод.
Потому что такой код пишется для решения конкретной задачи (дается "проект", у которого есть конкретные сроки)
Ситуация лучше, если у кода нет конкретного заказчика и сроков
(в компаниях, которые создают и поддерживают свои собственные продукты на продажу "для всех")
Здравствуйте, Evgeniy Skvortsov, Вы писали:
ES>Вот уже четыре года, как работает мое приложеньице на нескольких пром. предприятиях принадлежащих небезызвестному "голубому" гиганту. ES>Работает практически 24/7/365. С момента пуска в промышленную эксплуатацию было внесено всего 2 правки.
ES>И главный вопрос — является ли говнокод говнокодом если он работает и как ожидается несколько лет?
Здравствуйте, Evgeniy Skvortsov, Вы писали:
ES>Вот уже четыре года, как работает мое приложеньице на нескольких пром. предприятиях принадлежащих небезызвестному "голубому" гиганту. ES>Работает практически 24/7/365. С момента пуска в промышленную эксплуатацию было внесено всего 2 правки.
Ну так и те поделия, что я делал лет 10-15 назад работают по сей день. Хотя я стараюсь не влезать в эти старые дела.
ES>Не пугайтесь, моя халтура не управляет ничем опасным для жизни. Эта утилитка преобразовывает "приватные" выходные данные промышленного ПО, для их дальнейшей обработки нормальными средствами.
Там, где что-то опасное, будет ещё 100500 различных защит, посему никакой жалкий и глюкавый говнокод там ничего деструктивного не сделает.
Максимум — отрубятся какие-либо сервисные/вспомогательные функции.
ES>Тех. задание было такое — "хочу что бы работало вот так и желательно вчера". БОльшая часть из "вот так" была получена путем риверс-инженеринга этого самого "промышленного ПО".
Это довольно широко распространённая постановка задачи. Особено частая — для промышленников, не сильно разбирающихся в разработке ПО.
ES>Сейчас в сорцы смотреть боюсь — там на 100% Ад! Но работает же.
Работает — это хорошо, но это только часть задачи.
Не секрет, что программное обеспечение, которое не развивается — мёртвое.
ES>И главный вопрос — является ли говнокод говнокодом если он работает и как ожидается несколько лет?
Бесспорно — да!
В тот момент, когда кто-то попробует оживить данный проект, он вспомнит тебя НЕдобрым (возможно даже — НЕцензурным) словом
Если в данный проект не заложены возможности развития и поддержки, то вполне возможно что всё просто выкинут и перепишут с нуля.
Может быть — это уже и произошло, просто тебе ничего НЕ сказали...
P.S. Здесь надо чётко улавливать понятия:
1) НЕ развиваемое ПО == мертвое ПО (как результат говнокодинга)
Да, оно ещё где-то применяется, но его могут выбросить в любую минуту.
2) Развиваемое, с хорошо продуманной архитектурой — это гарантия как возможности поддержки (развитие, bug-fixing);
так и продления жизненного цикла заложенных в проект решений.
Во втором случае — это уже совсем НЕ говнокод!
Здравствуйте, RussianFellow, Вы писали:
ES>>И главный вопрос — является ли говнокод говнокодом если он работает и как ожидается несколько лет?
RF>Не является. Если программа работает и работает правильно.
Сегодня — эта работа воспринимается как правильная, а завтра...
Изменились те или иные условия, вышли новые стандарты, и это уже работает совсем не так, как нужно.
А переделать всё — тяжело, т.к. автор не думал о развитии проекта.
Как результат — завтра другие люди выбрасывают ЭТО ВСЁ на помоечку, переписав ВСЁ С НУЛЯ
Времени и средств потребовалось намного больше, чем предполагал твой бывший Заказчик...
Заказчик — посыпает пеплом лысину и проклинает тот день, когда его свела судьба с предшествующим разрабом...
P.S. Вот поэтому и ходят байки про русских программистов — когда новый разработчик взглянул, ужаснулся и сказал, что всё нужно переписать!