судьба softupdates
Dec. 8th, 2008 08:32 pmНет неошибающихся программистов, нет программ без ошибок. Редкие
исключения вроде TeX не нарушают это правило и даже подтверждают тем, что
эти ошибки были. Что делает нормальный программист, который знает, что он
ошибётся и хочет как можно быстрее и удобнее найти и устранить последствия
этого? Он строит тесткейсы и разнообразные проверки в рантайме: как
минимум жалобы на нарушение инвариантов. Он добавляет отладочную печать и
даёт ручку для регулировки её уровня и состава. Он даёт сбор статистики и
возможность анализа этой статистики на предмет устойчивости и
осмысленности работы. Он даёт удобную регулировку использования своего
кода, если без него можно обойтись.
Но если код добавлен, работает плохо, а его автор не желает ничего реально
сделать, чтобы он нормально работал, и не предоставляет никаких средств
для диагностики, локализации и устранения проблем? В христианстве это
называется "гордыня", а на луркоморье - ЧСВ, чувство собственного величия:
человек думает о себе существенно лучше и значительнее, чем он есть, и
действует исходя из своего самомнения.
Судьба softupdates - отличный пример воздействия гордыни на результат.
Неплохая и полезная технология убита качеством реализации и заморочкой на
непогрешимость её автора, при непригодном к сопровождению и отладке коде:
- Включение и выключение требует сложных манипуляций с перемонтированием.
- Код ведёт свою ничем не управляемую жизнь. Даже обычный sync на него
не действует, хотя, казалось бы, что может быть проще.
- Рантайм-статистики нет.
- Средств рантайм-диагностики нет (даже просто снять список задержанных
микроопераций с их таймаутами и зависимостями). Так называемые опции
DIAGNOSTICS и DEBUG включают дай бог чтобы 2% необходимых проверок.
- Самоконтроля нет.
- Даже заготовок для подключения всего вышеперечисленного нет, из чего
можно сделать однозначный вывод - если автору потребуется что-то
диагностировать, ему придётся всё вписывать с самого начала.
- Код предельно сложной подсистемы (у которой и собственные нетривиальные
структуры и соотношения данных, и работа в условиях сложной ядерной модели
данных, и работа с нижними уровнями, у которых собственная сложная логика)
написан предельно неструктурно (не в смысле функций, но в смысле блоков и
подсистем). О том, что код такого типа всё-таки можно так писать, чтобы
выделять и тестировать основные блоки ещё до запуска программы - автор
представления не имеет.
Ничего удивительного, что за уже 10 лет практического развития данной
технологии количество отрицательных отзывов о ней не меньше количества
положительных, а сторонники метода журнала метаданных получают выгодные
для себя сравнения на пустом месте.
Хотел бы я обойтись тут без комментариев про определённые личные качества
автора данной реализации, но когда его ближайший друг уже 20 лет всеми
силами избегает элементарного рефакторинга там, где слои реализации
громоздятся друг на друге уже в 4-5 слоёв и отдельные части может понять
только тот, кто работает с этим уже лет десять - не могу обойтись.;)
P.S. А самая большая фигня тут в том, что в соседнем лагере ничуть не
лучше.
исключения вроде TeX не нарушают это правило и даже подтверждают тем, что
эти ошибки были. Что делает нормальный программист, который знает, что он
ошибётся и хочет как можно быстрее и удобнее найти и устранить последствия
этого? Он строит тесткейсы и разнообразные проверки в рантайме: как
минимум жалобы на нарушение инвариантов. Он добавляет отладочную печать и
даёт ручку для регулировки её уровня и состава. Он даёт сбор статистики и
возможность анализа этой статистики на предмет устойчивости и
осмысленности работы. Он даёт удобную регулировку использования своего
кода, если без него можно обойтись.
Но если код добавлен, работает плохо, а его автор не желает ничего реально
сделать, чтобы он нормально работал, и не предоставляет никаких средств
для диагностики, локализации и устранения проблем? В христианстве это
называется "гордыня", а на луркоморье - ЧСВ, чувство собственного величия:
человек думает о себе существенно лучше и значительнее, чем он есть, и
действует исходя из своего самомнения.
Судьба softupdates - отличный пример воздействия гордыни на результат.
Неплохая и полезная технология убита качеством реализации и заморочкой на
непогрешимость её автора, при непригодном к сопровождению и отладке коде:
- Включение и выключение требует сложных манипуляций с перемонтированием.
- Код ведёт свою ничем не управляемую жизнь. Даже обычный sync на него
не действует, хотя, казалось бы, что может быть проще.
- Рантайм-статистики нет.
- Средств рантайм-диагностики нет (даже просто снять список задержанных
микроопераций с их таймаутами и зависимостями). Так называемые опции
DIAGNOSTICS и DEBUG включают дай бог чтобы 2% необходимых проверок.
- Самоконтроля нет.
- Даже заготовок для подключения всего вышеперечисленного нет, из чего
можно сделать однозначный вывод - если автору потребуется что-то
диагностировать, ему придётся всё вписывать с самого начала.
- Код предельно сложной подсистемы (у которой и собственные нетривиальные
структуры и соотношения данных, и работа в условиях сложной ядерной модели
данных, и работа с нижними уровнями, у которых собственная сложная логика)
написан предельно неструктурно (не в смысле функций, но в смысле блоков и
подсистем). О том, что код такого типа всё-таки можно так писать, чтобы
выделять и тестировать основные блоки ещё до запуска программы - автор
представления не имеет.
Ничего удивительного, что за уже 10 лет практического развития данной
технологии количество отрицательных отзывов о ней не меньше количества
положительных, а сторонники метода журнала метаданных получают выгодные
для себя сравнения на пустом месте.
Хотел бы я обойтись тут без комментариев про определённые личные качества
автора данной реализации, но когда его ближайший друг уже 20 лет всеми
силами избегает элементарного рефакторинга там, где слои реализации
громоздятся друг на друге уже в 4-5 слоёв и отдельные части может понять
только тот, кто работает с этим уже лет десять - не могу обойтись.;)
P.S. А самая большая фигня тут в том, что в соседнем лагере ничуть не
лучше.