Отложим приятные воспоминания об уик-энде на попозже (да и ни одной хорошей литературной мысли пока в голову не пришло из-за текущих проблем), а пока напишу об одном сегодняшнем впечатлении.
Сегодня начал свое знакомство с еще одной штукой, с которой знакомы Настоящие Программисты. Не такие, как я, которые пишут что-то там для чего-то там, а такие, которые "профессионально разрабатывают программные продукты". Много лет я имел с ними конфликты на почве того, что для Настоящего Программиста (НП) является очень неприятным делом внесение любых изменений в свой продукт, особенно если они частые или значительные. Это приводило к тому, что, при сопряжении моих программ и их программ в какой-либо единой программно-аппаратной системе, мне приходилось соглашаться на определенные извраты в своих программах, что зачастую было единственным способом хоть как-то добиться получения некоего общего эффекта. Потому что НП согласен на любой абсурд и даже на любую ошибку в своей программе, лишь бы по возможности не менять ничего в том, что уже сделано - проще было самому просунуть голову между пальцев ног, чем его заставить поковыряться в носу. Я конечно все всегда понимал, ибо мне тоже приходилось содержать зоопарк различных версий своих программ, однако, в принципе, я не видел такой уж большой проблемы в том, чтобы в любой момент времени взять из нужной папочки нужную версию определенной части некоей общей программы. Для этого нужна лишь стройная система папочек и человек, который в данный момент времени в этих папочках разбирается. Конечно же я всегда знал о репозиториях и системах управления версиями, но никогда с ними не работал.
Небольшое лирическое отступление на тему "почему же ты, свинота, не пользовался системами управления версиями?". Поясняю - в соответствии с моим "Человеко-Машинным Правилом №2" человек является главным генератором бардака в любой технической системе, и он же является единственным "устройством", способным сей бардак упорядочить в реальном времени. Здесь надо сразу пояснить, что мое "Человеко-Машинное Правило №2" прямо следует из моего же "Человеко-Машинного Правила №1", в соответствии с которым человек не в состоянии качественно исполнить даже самое пустяковое задание (а значит его надо доверить машине), но при этом все сколько-нибудь значимые дела следует доверять исключительно человеку. Почему же значимые дела надо доверять человеку а не машине? А потому, что машина - творение человека, причем основная идея разработки и конструирования технических систем состоит в разложении одной большой сложной задачи на ряд мелких и простых. И, как следует из "Человеко-Машинного Правила №1", человек смачно косячит при выполнении ряда мелких и простых задач. Часть косяков устраняется при отладке и наладке, но часть остается навсегда, и может пережить и саму систему, и породившего ее человека. Поэтому - человек и только человек должен принимать значимые финальные решения, при этом будучи устраненным от самых примитивных операций. Например решение о том, где и какие версии надо взять, что с ними надо сделать, как проверить результат перед выдачей в эксплуатацию - дело человека. А на компьютер можно возложить задачи хранения версий в структурированной системе каталогов, поиска по именам файлов, дате их изменения и их содержимому - это могут почти все файловые менеджеры, процесс этот настолько отлажен и настолько интегрирован в операционнуе системы, что вряд ли человек сможет составить конкуренцию этому сервису. И он не требует наличия каких-то там систем управления версиями.
Но ни один НП не будет так рассуждать. И вот - на арене цирка появляются разнообразные хитроумные системы. И я в первом ряду трибун, вынужденный обстоятельствами к применению оных в своей работе (пусть лишь немного, с самого краю, и то - по прямому принуждению руководства). Решил я с ними чуть-чуть разобраться - что такое, зачем и где, неужели тупо для сохранения отличающихся копий файлов? Оказалось, что нет. Оказалось, что системы управления версиями - это целая вселенная. Уйма малопонятного функционала, куча английских слов, обязательно язык командной строки (любой настоящий НП знает, что язык командной строки - это круче, чем кнопочки, потому что кнопочки делают для девочек, а крутые НП пишут батники). Обязательно ветвление версий - на случай, если кому-то захочется сделать с текущей версией что-то объемное параллельно с другими пользователями репозитория, при этом генеря кучу недоработанных промежуточных версий, с последующим слиянием чего-то из полученного с какими-то результатами других участников. Говоря по-русски - абракадаброгенератор А самое главное - систем управления версиями существует как минимум несколько. И между адептами различных систем идет война, в которой противоборствующие стороны обмениваются аргументами в стиле "а в нашей системе проще, чем в вашей, обрабатывать такие вот косяки". Ооо, куллл, основная задача системы - генерить косяки при сохранении, хранении и извлечении версий, и чем меньше она их генерит, тем, лучше. Или вот еще - "мы в нашей системе смогли произвести слияние ветвей версий всего за сутки, а вы колупались две недели, хаха!". Что??? Сутки??? Речь не о изменениях, их может целый месяц делали (а может и целый час), а о совмещении изменений вместе. Они просто усердно будут совмещать ваши файлы, а когда они нагенерят кучу ошибок при их совмещении, то вам остается лишь провести у компьютера от 1 до 14 суток. И потом сесть и задуматься - а может перейти на новую систему? Говорят вон та система лучше. Один автор в интернете однако заявил, что для перехода с системы на систему ему потребовалось три месяца - так уж они отличаются, что ну никак не перейти быстрее (и это, судя по всему остальному, был далеко не самый тупой человек). ОМГ, три месяца потратить на изучение очередной фигни, которая занимается созданием папочек и дальнейшим их абракадабрингом? Определенно - мне далеко до НП. Я пока морально не готов изучить и использовать систему, смысл использования которой лишь в ее использовании, ибо соотношение полезность/объем_бессмысленных_действий у нее близко к нулю.
Хотя, конечно же, изучать весь этот бред как-то надо - как никак стандартом уже стало. Обленился народ, папочки заводить не хочет... Систему им подавай...