Все юристы работают с текстами. Читают, пишут, изучают, трактуют, убеждают в своих трактовках. Программисты — работают с текстами. Читают, пишут. Убеждают компилятор в своей правоте. Я — разработчик. Я пишу много текста, вроде такого:
class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
Этот текст пишется по некоторым правилам, а потом компилятор его разбирает. Хорошо бы знать правила, чтобы компилятор понял всё правильно. При составлении иска в суд тоже хорошо бы знать правила. К сожалению, в праве нет такие четких правил, как у компилятора, но есть всё-таки какие-то общие правила, которых придерживаются интерпретаторы.
Иногда мне приходится писать или читать тексты юридические — заявления, жалобы, иски. Писать жалобы про парковки на газоне или готовить тридцатистраничные иски в суд. В процессе погружения в право я подмечаю некие аналогии с программированием. О них-то я и хочу рассказать.
Переменные
В программировании всё начинается с переменных. В тексте юридическом обычно значение слов известно заранее (а кстати, значений у них может быть много, но это другая история), но можно вводить и переменные:
Статья 24.7 Федерального закона от N89-ФЗ "Об отходах производства и потребления" (далее — закон N89-ФЗ) предполагает, что региональные операторы заключают договоры на оказание услуг по обращению…
...На основании закона N89-ФЗ прошу того-то и того-то.
В данном случае мы в начале текста вводим переменную — закон N89-ФЗ (такие переменные всегда final), и можем её использовать дальше.
В пользоветльском соглашении habr.com все переменные объявляются в первом разделе перед основным текстом:
1.1. В настоящем документе и вытекающих или связанных с ним отношениях Сторон применяются следующие термины и определения:
Соглашение — настоящий документ со всеми дополнениями, изменениями и указанными в нем обязательными документами, а также договор, заключенный на его основании.
Пользователь — дееспособное физическое лицо старше 18 лет, присоединившееся к настоящему Соглашению в собственном интересе либо выступающее от имени и в интересах представляемого им юридического лица.
И так далее.
Если переменные не определены, то могут возникнуть проблемы:
public static void main(String[] args) throws IOException {
System.out.println(hello);
}
java: cannot find symbol
symbol: variable hello
В примере выше нам везёт — нам об ошибке скажет компилятор. Но в праве нет компилятора:
УК РФ Статья 43. Понятие и цели наказания:
1. Наказание есть мера государственного принуждения, назначаемая по приговору суда. Наказание применяется к лицу, признанному виновным в совершении преступления, и заключается в предусмотренных настоящим Кодексом лишении или ограничении прав и свобод этого лица.
2. Наказание применяется в целях восстановления социальной справедливости, а также в целях исправления осуждённого и предупреждения совершения новых преступлений.
Когда читаешь этот текст, сразу возникает неоднозначность, ведь используется неопределённая переменная: социальная справедливость. Что это? Убийство за убийство? Зуб за зуб? А может, посчитаем справедливость в рублях? Есть ли уверенность, что два интерператотора будут понимать это одинаково?
Кстати, тут есть ещё кое-что интересное: предупреждение совершения новых преступлений. Самый простой и гарантированный способ предупреждения совершения новых преступлений — смертная казнь. Тогда цель выполняется полностью: процент рецедивов будет нулевым. Но то ли имелось ввиду при написание текста закона? Ведь используются другие методы предупреждения, и причины их использования остаются вне этого текста.
Плагины и бланкетные нормы
Бланкетная норма — это норма, предоставляющая государственным органам, должностным лицам право самостоятельно устанавливать правила поведения в определённых рамках. К примеру, Федеральный закон N 196-ФЗ "О безопасности дорожного движения" устанавливает полномочия государственных органов, давая им право устанавливать правила дорожного движения (определим в этом тексте переменную, будем называть правила дорожного движения покороче — ПДД). В свою очередь, постановлением правительства (то есть уже не законодательного, а исполнительного органа) устанавливаются ПДД. Ещё есть глава 12 КоАП, которая устанавливает санкции (и процедуру их применения) за нарушения ПДД. Таким образом, имея закон N 196-ФЗ и КоАП, можно менять ПДД хоть каждый день, не меняя при этом тексты законов (постановление правительства законом не является).
То есть не надо менять и компилировать тексты чтобы поменять логику поведения. Собственно говоря, это не что иное как подключение плагинов!
Версионирование
В мире разработки ПО мы всё время работаем с разными версиями программ, библиотек, API и так далее. В мире права тоже всё время идёт работа с версиями. Только там всё очень продвинуто — всегда используются самые последние версии законов, постановлений, регламентов и прочего! Никакого legacy. Релизим новую версию, и всё, она сразу везде применяется!
Есть аналогия. К примеру, в Android SDK есть класс Context, у которого есть метод:
public abstract int checkSelfPermission (String permission)
Однако, в документации отмечено, что он добавлен в версии SDK 23. Это значит, что если приложение работает на устройстве с версией Android < 23 (Android 6.0), то мы его использовать не можем.
А теперь давайте взглянем на этот документ:
Да, это постановление о производстве обыска по делу Rambler & nginx. В тексте мы читаем:
В соответсии со ст. 1295 ГК РФ, программа для ЭВМ «энджиникс» является служеюным произведением, и исключительное право на нёё, а именно в соовтесии со ст. 1229 ГК РФ право использовать распоряжатться ей, принадлжеит ООО «Рамблер Интернет Холдинг».
Однако, постановление описыват событие, имевшее место в 2004 году, когда ст. 1295 и 1229 ещё не существовало! NoSuchMethodError!
Diff
А что, если нам нужно старый закон заменить новым? Но не целиком, а внести небольшие правки? В данном случае всё просто:
git checkout -b new_law
git commit -m "new speed limit"
git push origin new_law
Да, с правками в текст законов работают также как и с правками в исходные коды. Их можно сравнивать:
А сам диф (в данном случае диф называется Федеральный закон от 24.07.2007 N 210-ФЗ (ред. от 31.12.2014) "О внесении изменений в Кодекс Российской Федерации об административных правонарушениях") при этом выглядит примерно так:
в статье 12.9:
а) утратил силу с 1 сентября 2013 года. - Федеральный закон от 23.07.2013 N 196-ФЗ;
б) в части 2: в абзаце первом слова "от 20 до 40" заменить словами "более 20, но не более 40";
---
А какие аналогии подмечали вы?