December 17th, 2018

404

Начал читать gitbook

Пока два главных открытия:

git log -S - показывает коммиты с заданным словом внутри diff'а
git log --grep - ищет коммиты по описанию по заданному паттерну.
404

factorio

Всё-таки это очень депрессивная игрушка. Примерно такого же класса депресии, как и теорема о неполноте Геделя. Убираем все "мешающие" факторы и оставляем человека с чистой проблемой собственного рукожопия без возможности на кого-либо пожаловаться. Для того, чтобы исключить "я художник, я так вижу", имеем объективные показатели автоматизации - время, которое тратится на тупой механический грайнд.

Плюс творческие страдания из-за проблем рефакторинга, радости и боли от локальных оптимизаций, etc.

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

Она реально показывает настоящие проблемы рефакторинга: попытка поменять любую достаточно сложную систему сталкивается с тем, что нужно учесть слишком много факторов, чтобы сохранить работоспособность существующей системы. Не то, чтобы каждый из факторов был сложный (в factorio всё просто - приползла деталька, щастье, не приползла - всё стоит), но описание проблематики на более высоком уровне становится необъятно большим, и надо думать об интерфейсе для рефакторинга ДО начала реализации самого рефакторинга.

... А ещё эта вечная боль, потому что не справляющаяся с нагрузкой центральная часть настолько эффективная и безумно удачная, что просто невозможно себе представить, как её можно заменить, ведь замена потребует подвинуть вот это и убрать вот это... И дальше см code refactoring cat: https://coub.com/view/ap5pc

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

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