Ustawy w Smalltalku
-
- Jakub Chabik,
- 28.06.2004
W felietonie Gehenna mobilnych opisywałem horror, jaki przeżywa każdy obywatel, który zmienia miejsce zamieszkania i musi dopełnić wszystkich związanych z tym formalności. Nietrudno się domyślić, że jeszcze nie dopełniłem wszystkich i tylko czekać, jak pewnego dnia zastaną Państwo tę szpaltę pustą. Będzie to znaczyło, że w końcu zostałem aresztowany i surowo skazany za uporczywe naruszanie ustawowych terminów, w których fakt przeniesienia się z miejsca na miejsce trzeba zgłosić jakiejś Ważnej Instytucji.
W felietonie Gehenna mobilnych opisywałem horror, jaki przeżywa każdy obywatel, który zmienia miejsce zamieszkania i musi dopełnić wszystkich związanych z tym formalności. Nietrudno się domyślić, że jeszcze nie dopełniłem wszystkich i tylko czekać, jak pewnego dnia zastaną Państwo tę szpaltę pustą. Będzie to znaczyło, że w końcu zostałem aresztowany i surowo skazany za uporczywe naruszanie ustawowych terminów, w których fakt przeniesienia się z miejsca na miejsce trzeba zgłosić jakiejś Ważnej Instytucji.
Mam z tych nierównych bojów kolejne spostrzeżenie, tym razem związane z Zakładem Ubezpieczeń Społecznych oraz Programem Płatnika. Otóż jednym z licznych dokumentów, które trzeba złożyć (i to osobiście), jest druk ZUS ZFA. Ponieważ jestem człowiekiem racjonalnie gospodarującym czasem, otworzyłem odpowiedni druk w Programie Płatnika, wpisałem nowy adres (jako jedyną informację, która się zmienia), sprawdziłem poprawność dokumentu i wydrukowałem stosowny formularz.
Jakież było moje zdziwienie, gdy w dzień po złożeniu go w oddziale ZUS w Gdańsku-Wrzeszczu dowiedziałem się, że jednak dokument ZUS ZFA jest niepoprawny, bo nie zawiera daty rozpoczęcia działalności. Co prawda data ta ZUS-owi nie jest potrzebna (ma ją przecież!), a formularz został zweryfikowany przez Program Płatnika jako poprawny, ale bez daty nie da się go "wciągnąć" do centralnego systemu ZUS.
Algorytm walidacji dokumentu w systemie centralnym jest więc inny niż użyty w Programie Płatnika - bo gdyby były takie same, to nie dawałyby sprzecznych komunikatów. W efekcie powstaje jednak kuriozalna sytuacja, w której prawo sobie, a algorytmy sobie. Rzeczywistość zaś kształtowana jest nie przez zdania zapisane w Dziennikach Ustaw, a przez informatyków budujących algorytmy w aplikacjach te ustawy obsługujących.
Wiele mówi się o neutralności prawa wobec technologii. Proponuję wprowadzić nowy termin - jasność prawa wobec technologii. Fragmenty rozporządzeń mogłyby być pisane od razu w języku programowania, aby precyzyjnie opisać rzecz taką, jak np. warunki wejściowe jakiejś akcji, proces zatwierdzeń albo uprawnienia decyzyjne. Byłoby to znacznie prostsze i zwięźlejsze niż uporczywe pisanie potworków językowych w rodzaju weryfikacja wymaga umieszczenia w polu oznaczonym "Dzień" numeru dnia miesiąca, w polu "Miesiąc" numeru miesiąca, a w polu "Rok" oznaczenia roku. Nie prościej napisać np. Data.ValidateFormat("DD-MM-YYYY"), skoro przy okazji rozwiązałoby się kwestię formatu daty i liczby cyfr w zapisie roku? Ze swej strony, jako narzędzie pisania prawa, proponuję Smalltalk - język prosty, przejrzysty, dzięki któremu zwięźle można opisać obiekty i reguły rządzące ich zachowaniem, a jednocześnie na tyle prosty, że nawet prawnicy powinni sobie poradzić z jego zrozumieniem. Ustawy pisane w języku programowania - dziś brzmi to jak fantazja, ale za lat 10 może być już rzeczywistością!
Na razie napisałem ZUS-owi, że nie interesuje mnie, w którym programie są błędy (czy w Płatniku, czy w systemie centralnym), bo oba są dostarczone przez niego i ewentualne niespójności algorytmów to problem ZUS-u, a nie mój. Może on albo poprawić system centralny, tak by czytał poprawnie z punktu widzenia Programu Płatnika dokumenty, albo zapłacić mi za godzinę mojej pracy, podczas której przygotuję nowy dokument ZFA pisany na potrzeby jego systemu (tj. zawierający datę). Niektórzy co prawda uważają mnie za niepoprawnego Don Kichote'a, ale ja myślę, że na końcu mojej nierównej walki jest ważny cel - pisania prawa w jakimś języku programowania.