Все юристы работают с текстами. Читают, пишут, изучают, трактуют, убеждают в своих трактовках. Программисты — работают с текстами. Читают, пишут. Убеждают компилятор в своей правоте. Я — разработчик. Я пишу много текста, вроде такого: Этот текст пишется по некоторым правилам, а потом компилятор его разбирает. Хорошо бы знать правила, чтобы компилятор понял всё правильно. При составлении иска в суд тоже хорошо бы знать правила. К сожалению, в праве нет такие четких правил, как у компилятора, но есть всё-таки какие-то общие правила, которых придерживаются интерпретаторы. Иногда мне приходится писать или читать тексты юридические — заявления, жалобы, иски. Писать жалобы про парковки на газоне или готовить тридцатистраничные иски в суд. В процессе погружения в право я подмечаю некие аналогии с программированием. О них-то я и хочу рассказать. В программировании всё начинается с переменных. В тексте  юридическом обычно значение слов известно заранее (а кстати, значений у них может быть много, но это другая история), но можно вводить и переменные: Статья 24.7 Федерального закона от N89-ФЗ "Об отходах производства и потребления" (далее — закон N89-ФЗ) предполагает, что региональные операторы заключают договоры на оказание услуг по обращению…...На основании закона  N89-ФЗ прошу того-то и того-то.В данном случае мы в начале текста вводим переменную — закон N89-ФЗ (такие переменные всегда final), и можем её использовать дальше. В пользовательском соглашении habr.com все переменные объявляются в первом разделе перед основным текстом:1.1. В настоящем документе и вытекающих или связанных с ним отношениях Сторон применяются следующие термины и определения:Соглашение — настоящий документ со всеми дополнениями, изменениями и указанными в нем обязательными документами, а также договор, заключенный на его основании. — дееспособное физическое лицо старше 18 лет, присоединившееся к настоящему Соглашению в собственном интересе либо выступающее от имени и в интересах представляемого им юридического лица.И так далее.  Если переменные не определены, то могут возникнуть проблемы: В примере выше нам везёт — нам об ошибке скажет компилятор. Но в праве нет компилятора: УК РФ Статья 43. Понятие и цели наказания:1. Наказание есть мера государственного принуждения, назначаемая по приговору суда. Наказание применяется к лицу, признанному виновным в совершении преступления, и заключается в предусмотренных настоящим Кодексом лишении или ограничении прав и свобод этого лица.2. Наказание применяется в целях восстановления социальной справедливости, а также в целях исправления осуждённого и предупреждения совершения новых  преступлений. Когда читаешь этот текст, сразу возникает неоднозначность, ведь используется неопределённая переменная: социальная справедливость. Что это? Убийство за убийство? Зуб за зуб? А может, посчитаем справедливость в рублях? Есть ли уверенность, что два интерператотора будут понимать это одинаково?Кстати, тут есть ещё кое-что интересное: предупреждение совершения новых преступлений. Самый простой и гарантированный способ предупреждения совершения новых преступлений — смертная казнь. Тогда цель выполняется полностью: процент рецедивов будет нулевым. Но то ли имелось ввиду при написание текста закона? Ведь используются другие методы предупреждения, и причины их использования остаются вне этого текста. Бланкетная норма — это норма,  предоставляющая государственным органам, должностным лицам право самостоятельно устанавливать правила поведения в определённых рамках. К примеру, Федеральный закон N 196-ФЗ "О безопасности дорожного движения" устанавливает полномочия государственных органов, давая им право устанавливать правила дорожного движения (определим в этом тексте переменную, будем называть правила дорожного движения покороче — ПДД). В свою очередь, постановлением правительства (то есть уже не законодательного, а исполнительного органа) устанавливаются ПДД. Ещё есть глава 12 КоАП, которая устанавливает санкции (и процедуру их применения) за нарушения ПДД. Таким образом, имея закон N 196-ФЗ и КоАП, можно менять ПДД хоть каждый день, не меняя при этом тексты законов (постановление правительства законом не является). То есть не надо менять и компилировать тексты чтобы поменять логику поведения. Собственно говоря, это не что иное как подключение плагинов! В мире разработки ПО мы всё время работаем с разными версиями программ, библиотек, API и так далее. В мире права тоже всё время идёт работа с версиями. Только там всё очень продвинуто — всегда используются самые последние версии законов, постановлений, регламентов и прочего! Никакого legacy. Релизим новую версию, и всё, она сразу везде применяется! Есть аналогия. К примеру, в Android SDK есть класс Context, у которого есть метод: Однако, в документации отмечено, что он добавлен в версии SDK 23. Это значит, что если приложение работает на устройстве с версией Android < 23 (Android 6.0), то мы его использовать не можем.  А теперь давайте взглянем на этот документ: Да, это постановление о производстве обыска по делу Rambler & nginx. В тексте мы читаем:  В соответствии со ст. 1295 ГК РФ, программа для ЭВМ «энджиникс» является служебным произведением, и исключительное право на неё, а именно в соответствии со ст. 1229 ГК РФ право использовать распоряжаться ей, принадлежит ООО «Рамблер Интернет Холдинг».Однако, постановление описыват событие, имевшее место в 2004 году, когда ст. 1295 и 1229 ещё не существовало! NoSuchMethodError!  А что, если нам нужно старый закон заменить новым? Но не целиком, а внести небольшие правки? В данном случае всё просто: Да, с правками в текст законов работают также как и с правками в исходные коды. Их можно сравнивать: А сам диф (в данном случае диф называется Федеральный закон от 24.07.2007 N 210-ФЗ (ред. от 31.12.2014) "О внесении изменений в Кодекс Российской Федерации об административных правонарушениях") при этом выглядит примерно так:  в статье 12.9:а)     утратил силу с 1 сентября 2013 года. -     Федеральный закон     от 23.07.2013 N 196-ФЗ; б)     в части     2:  в     абзаце     первом     слова "от 20 до 40" заменить словами     "более 20, но не более 40"; А какие аналогии подмечали вы? Инженер-программист