Prawo w formie programistycznej

1

Zainspirowany wpisem na mikroblogu: Gdy myślisz, że kod który na...

Czy nie uważacie, że prawo pisane na papierze to zaszłość nie przystająca do dzisiejszych czasów? Przecież podobieństwa między prawem a programami komputerowymi są uderzające. Jedno i drugie korzysta z definicji i opisują jakąś logikę. Technologia daje ogromne możliwości stworzenia "automatu prawnego", generującego natychmiast decyzje w oparciu o dane w sposób jednoznaczny. I nie mówię tu o metodach sztucznej inteligencji, które ostatnio stosuje się w tym celu, ale które uważam za złe podejście do tematu, ale o klasycznym podejściu w ujęciu Niklausa Wirtha: algorytmy + struktury danych. Tymczasem analiza "papierowego prawa" przypomina analizę kodu bez kompilatora i debuggera.

Konkretnie widzę 2 drogi podejścia do tego problemu:

  1. Przepisania jakiegoś aktu prawnego na jakiś funkcjonujący język programowania, dająca właśnie szukany "automat prawny". Należałoby sformułować API takiego automatu, pozwalające formułować problemy prawne do rozpatrzenia, oraz model wyjścia. Sam problem stworzenia modelu opisu problemów prawnych jest już wyzwaniem. Warto by też się zastanowić, jaki język najlepiej nadawałby się do tego celu. W mikroblogu zaproponowałem Konstytucję jako pierwszy akt prawny, który powinno się w ten sposób napisać. Jest to dość oczywisty wybór, gdyż wszystkie inne akty prawne są osadzone w kontekście prawnym stworzonym przez Konstytucję i inne akty prawne, jedynie Konstytucja, jako akt pierwotny, jest tego kontekstu pozbawiona, co znacznie ułatwia sprawę. Dodatkowo Konstytucja jest dość krótka, nie jest rozszerzana, praktycznie się nie zmienia.

  2. Stworzenie języka do opisu prawa. W tym ujęciu, nie przepisywałoby się konkretnego prawa na język programowania, tylko można by stworzyć generyczny model interpretatora prawnego. Prawo dostarczałoby się ustalonym formacie, zrozumiałym dla człowieka, jako dane wejściowe, automat generowałby binarny "model prawny", a następnie w oparciu o ten model, interpreter działałby tak jak opisany automat w punkcie 1.

Zachęcam do dyskusji: czy to dobry pomysł, jak widzicie możliwość jego realizacji, na co jeszcze należałoby zwrócić uwagę.

11

Idea piękna ale w ogólności niemożliwa do wdrożenia bowiem podstawy prawa nie są zero jedynkowe. U podstaw prawa leżą uwarunkowania kulturowe, historyczne, religijne, moralne ... Nie wszystko da się zapisać "ifami". W praktyce wnioskowanie w prawie bardziej przypomina wnioskowanie sieci neuronowej niż deterministycznego analitycznego algorytmu.

5

Podam kilka punktów startowych, mniej lub bardziej relewantnych (dorzecznych).

Zwykły język programowania

Tutaj byłyby problemy jak podczas zwykłego programowania, czyli:

  • programowanie wymaga pewnego doświadczenia, by pisać porządny kod. Porządny czyli czytelny, zwięzły (w ramach rozsądku oczywiście), odporny na szereg rodzajów błędów, testowalny, rozszerzalny, modularny, itp itd
  • skoro programowanie zabiera dużo czasu na doszkolenie się w nim to jest mniej czasu na poznanie domeny biznesowej. Z tego powodu jest podział zadań na programowanie dla jednego człowieka i ogarnianie w pełni domeny biznesowej dla drugiego człowieka. Ci ludzie muszą się dogadać implementując wymaganie biznesowe w kodzie źródłowym, a wszyscy wiemy ile jest niedomówień i chodzenia na skróty podczas takiego dogadywania się.
  • wynikowy kod jest i tak nieczytelny dla nieprogramistów. Językiem, który miał być czytelny dla nieprogramistów jest COBOL. Oto co Wiki zawiera na jego temat:

COBOL (an acronym for "common business-oriented language") is a compiled English-like computer programming language designed for business use.
Academic computer scientists were generally uninterested in business applications when COBOL was created and were not involved in its design; it was (effectively) designed from the ground up as a computer language for business, with an emphasis on inputs and outputs, whose only data types were numbers and strings of text.

Prolog

Prolog to język do którego wstawia się logiczne reguły oraz zapytania, a kompilator dokonuje wnioskowania. Dodatkowo ma jednak rzeczy nieoparte o logikę formalną:

In Prolog, program logic is expressed in terms of relations, and a computation is initiated by running a query over these relations. Relations and queries are constructed using Prolog's single data type, the term.[4] Relations are defined by clauses. Given a query, the Prolog engine attempts to find a resolution refutation of the negated query. (...) It has a purely logical subset, called "pure Prolog", as well as a number of extralogical features.

Czytałem kiedyś, że Prolog gdy powstawał (wczesne lata 70.) to były z nim wiązane wielkie nadzieje. Wyobrażano sobie, że dojdziemy do takiego momentu, że wystarczy przepisać wymagania biznesowe na formalną logikę Prologa, a Prolog wypluje automagicznie kompletny program. Niestety, nie pykło.

Coq https://coq.inria.fr/

Coq to asystent dowodzenia. Automatyzuje dowodzenie twierdzeń i jest w stanie wygenerować na ich podstawie programy (chyba jakoś tak). Krótko się nim bawiłem, ale dowodzenie prostych twierdzeń jest karkołomne i wątpię by to się skalowało do szybkiego i prostego dowodzenia złożonych twierdzeń.

Lojban (a także jego poprzednik Loglan, czy języki pokrewne)

Lojban is a constructed, syntactically unambiguous human language created by the Logical Language Group. Lojban usuwa https://en.wikipedia.org/wiki/Syntactic_ambiguity które spotyka się na bieżąco. Ciekawe i humorystyczne przykłady niejednoznaczności składniowej to:

Pozbycie się niejednoznaczności składniowej to jednak ułamek sukcesu, bo potrzebna jest też niejednoznaczność semantyczna. Tutaj prym wiedzie matematyka, gdzie wszystko jest ścisłe.

Jeff Prothero https://en.wikipedia.org/wiki/Cynbe_ru_Taren który zajmował się Loglanem (poprzednik Lojbana) stwierdził, że the price of infinite precision is infinite verbosity. Ludzie nie dążą do nieskończonej precyzji, zamiast tego idą na skróty opierając się na kontekście wypowiedzi: https://lwn.net/Articles/317388/

Systemy ekspertowe

Systemy ekspertowe opierają się na zadawaniu wcześniej ustalonych pytań użytkownikowi, a potem generują końcowy wynik na podstawie odpowiedzi. Według https://pl.wikipedia.org/wiki/System_ekspertowy systemy ekspertowe mogą być oparte na Prologu i są już używane np w medycynie czy prawie. Systemy ekspertowe istnieją od lat 70. i jakoś do tej pory nie zrewolucjonizowały świata. Dalej mamy prawników interpretujących w kółko prawo i medyków interpretujących w kółko wyniki badań.

0
Wibowit napisał(a):

Podam kilka punktów startowych, mniej lub bardziej relewantnych (dorzecznych).

Zwykły język programowania

  • skoro programowanie zabiera dużo czasu na doszkolenie się w nim to jest mniej czasu na poznanie domeny biznesowej. Z tego powodu jest podział zadań na programowanie dla jednego człowieka i ogarnianie w pełni domeny biznesowej dla drugiego człowieka. Ci ludzie muszą się dogadać implementując wymaganie biznesowe w kodzie źródłowym, a wszyscy wiemy ile jest niedomówień i chodzenia na skróty podczas takiego dogadywania się.

Pierwsze próby dotyczyłyby przepisania istniejącego prawa na język programowania. W tym zadaniu znajomość domeny byłaby minimalna, bo ona jest potrzebna przy tworzeniu specyfikacji, którą jest właśnie dany tekst prawny, przy założeniu, że jest napisany jednoznacznie. Oczywiście to to założenie nie musi być spełnione, ale błędy powstałe z tego powodu można wyeliminować w fazie testów, gdy działanie automatu prawnego jest porównywane z interpretacją ludzkiego eksperta, a ewentualne różnice trejsowałoby się wstecz do kodu.

Uważam zresztą, że potrzebna wiedza programistyczna byłaby tu również na niewielkim poziomie. Na początku odpada dużo problemów występujących we współczesnej inżynierii oprogramowania, jak interfejs użytkownika, wydajność, wieloplatformowość, itp. Zostają wyłącznie dane i algorytm. Gdyby powstał standard takiego języka, to podejrzewam, że wystarczyłyby 2 semestry jego nauki na studiach prawniczych, by potem takie prawo tworzono bezpośrednio w formie cyfrowej.

  • wynikowy kod jest i tak nieczytelny dla nieprogramistów. Językiem, który miał być czytelny dla nieprogramistów jest COBOL.

Kod automatu nie musi być czytelny dla użytkownika, bo on i tak by w niego nie zaglądał. Jedyne co musiałoby być dla niego jasne, to kod opisu problemu prawnego, czyli danych wejściowych dla automatu prawnego.

Prolog

Prolog to język do którego wstawia się logiczne reguły oraz zapytania, a kompilator dokonuje wnioskowania. Dodatkowo ma jednak rzeczy nieoparte o logikę formalną:

Wydaje się dobrym wyborem

Lojban (a także jego poprzednik Loglan, czy języki pokrewne)

Lojban is a constructed, syntactically unambiguous human language created by the Logical Language Group. Lojban usuwa https://en.wikipedia.org/wiki/Syntactic_ambiguity które spotyka się na bieżąco.

Nie sądzę by to było konieczne, bo problemu prawnego nie formułowałoby się w postaci języka naturalnego, więc problemy natury składniowej czy generalnie NLP by tu nie występowały.

Systemy ekspertowe

Systemy ekspertowe opierają się na zadawaniu wcześniej ustalonych pytań użytkownikowi, a potem generują końcowy wynik na podstawie odpowiedzi. Według https://pl.wikipedia.org/wiki/System_ekspertowy systemy ekspertowe mogą być oparte na Prologu i są już używane np w medycynie czy prawie. Systemy ekspertowe istnieją od lat 70. i jakoś do tej pory nie zrewolucjonizowały świata. Dalej mamy prawników interpretujących w kółko prawo i medyków interpretujących w kółko wyniki badań.

O ile w medycynie w rozumiem, dlaczego system ekspertowy nie jest w stanie zastąpić lekarza, to mam wrażenie, że z prawem jest trochę inaczej. Tu przyczyną moim zdaniem jest to, że nikt nie podjął poważnej próby stworzenia czegoś takiego, prawo i technologia przenikają się w mniejszym stopniu niż medycyna i technologia, a prawnicy raczej nie oddadzą chętnie swojej roli wyroczni.

1

O ile w medycynie w rozumiem, dlaczego system ekspertowy nie jest w stanie zastąpić lekarza, to mam wrażenie, że z prawem jest trochę inaczej. Tu przyczyną moim zdaniem jest to, że nikt nie podjął poważnej próby stworzenia czegoś takiego, prawo i technologia przenikają się w mniejszym stopniu niż medycyna i technologia, a prawnicy raczej nie oddadzą chętnie swojej roli wyroczni.

Mam wrażenie, że szeroko rozumiana sztuczna inteligencja znajduje obecnie znacznie szersze zastosowanie w medycynie niż w prawie. Co jakiś czas czytam o tym jak to SI pomaga lekarzom w diagnozach czy badaniach nad czymś, zwykłym ludziom daje (dość kulawe) porady lekarskie (Siri/ Cortana/ asystent Google/ etc) , ale o zastosowaniu SI w prawie jeszcze nic nie wiem (jeden króciutki punkt na liście w artykule na Wiki to nie jest nawet pobieżne przestawienie tematu, to jest stwierdzenie, że gdzieś dzwonią, ale nie wiadomo w którym kościele). Rząd USA (o ile dobrze rozumiem) stworzył już nawet regulacje dotyczące wykorzystania SI w medycynie:
https://www.fudzilla.com/news/50735-ai-is-brilliant-the-lab-but-pants-in-real-life

A study from Google Health -- the first to look at the impact of a deep-learning tool in real clinical settings -- reveals that even the most accurate AIs can actually make things worse if not tailored to the clinical environments in which they will work.

The study said that part of the issue is that existing rules for deploying AI in clinical settings, such as the standards for FDA clearance in the US or a CE mark in Europe, focus primarily on accuracy. There are no explicit requirements that an AI must improve the outcome for patients, largely because such trials have not yet run.
(...)
Google has CE mark clearance, which covers Thailand, but it is still waiting for FDA approval. So to see if AI could help, Beede and her colleagues outfitted 11 clinics across the country with a deep-learning system trained to spot signs of eye disease in patients with diabetes.

0
katakrowa napisał(a):

Idea piękna ale w ogólności niemożliwa do wdrożenia bowiem podstawy prawa nie są zero jedynkowe. U podstaw prawa leżą uwarunkowania kulturowe, historyczne, religijne, moralne ... Nie wszystko da się zapisać "ifami". W praktyce wnioskowanie w prawie bardziej przypomina wnioskowanie sieci neuronowej niż deterministycznego analitycznego algorytmu.

Ale te uwarunkowania też są jakoś zapisane, tyle że w dużo mniej precyzyjnym języku ludzkim. To co może obecnie stanowić istotny problem to właśnie przepisanie niejednoznaczności języka naturalnego na jednoznaczność języka programowania. No bo w sumie jak uwzględnić w prawie zapis np. o szczególnym dobrze społecznym? Mamy problem i człowiek musi się zastanowić, czy decyzja uwzględnia owo szczególne dobro, a może jedynie zwykłe, nieszczególne dobro, a może tylko dobro jednostkowe, od kiedy dobro społeczne jest szczególne, itp. Natomiast gdyby prawo od początku było pisane w ten sposób, jego twórcy nie mieliby swobody w tworzeniu niejednoznaczności, bo byłaby ona ograniczana przez formalizm języka. Dlatego pewnie obecnego prawa nie dałoby się w ten sposób przepisać na coś w 100% równoważnego, ale jednak prawo w dużym stopniu dąży do precyzji, i wiele problemów prawnych można dość jednoznacznie w oparciu o logikę prawa rozwiązać.

1

Prawo to tylko granit albo marmur. Mniej lub bardziej pospolity kamień.
Rzeźbę wykuje z niego dłuto adwokata. Interpretacja prawa to sztuka.

1

Dokumenty o których piszecie da się spokojnie reprezentować za pomocą ok. 10 leksemów.

Nie potrzebujecie nic skomplikowanego, a gramatyka jest zdefiniowana, więc nawet nie wymyślajcie jakiegoś AI :D, bo na ten moment wystarczy sensowna "digitalizacja" tych dokumentów aby cały proces znacznie usprawnić

1

Rozbieżność między duchem prawa, a literą prawa to temat znany od starożytności: https://en.wikipedia.org/wiki/Letter_and_spirit_of_the_law
Szansa na to, że olśnienie pojedynczego programisty rozwiąże tak stary problem jest nikła. Zwłaszcza, że prawdopodobnie takiego olśnienia dostało już tysiące programistów wcześniej (bo pomysł OPa wygląda na względnie prosty).

0
Wibowit napisał(a):

Mam wrażenie, że szeroko rozumiana sztuczna inteligencja znajduje obecnie znacznie szersze zastosowanie w medycynie niż w prawie.

Zgoda, ale ja właśnie nie chcę stosować sztucznej inteligencji w prawie. Problemy medyczne i problemy prawne mają inny charakter, te pierwsze są z natury niejednoznaczne, muszą uwzględniać wiele czynników, a sam lekarz ma prawo do błędu w tym sensie, że błąd może wynikać z ograniczeń samej wiedzy medycznej. Sztuczna inteligencja zresztą nie diagnozuje człowieka, jedynie wspiera lekarza w jakimś wycinku jego zadań, np. interpretacji zdjęcia i określeniu czy widoczne są na nim patologiczne zmiany czy nie. Nie wiadomo do końca dlaczego sztuczna inteligencja podejmuje jakąś decyzję, wiadomo jedynie że podejmuje ją w oparciu o doświadczenie (zamknięte w postaci wytrenowanego modelu). A ponieważ również na doświadczeniu bazuje lekarz, stąd medycyna może się sztuczną inteligencją wspierać.

Z prawem jest inaczej. Automat podejmujący decyzję prawną ma nie być inteligentny, tak jak nie jest inteligentny żaden deterministyczny mechanizm. Przykładowo: w Konstytucji jest artykuł mówiący kiedy Marszałek Sejmu może objąć funkcję p.o. Prezydenta, i jest tam wymieniony szereg warunków. W oparciu o stan faktyczny system powinien być w stanie dokonać jednoznacznej oceny czy takie warunki są spełnione. To zadanie dla algorytmu, nie dla SI.

1

Do szeroko rozumianej sztucznej inteligencji nie zaliczają się tylko i wyłącznie sztuczne sieci neuronowe (które i tak mają niespecjalnie dużo wspólnego z prawdziwymi), ale także wymienione przeze mnie systemy ekspertowe. Zobacz na https://pl.wikipedia.org/wiki/Sztuczna_inteligencja (tam figurują pod nazwą systemy eksperckie).

1

J.P. Morgan już automatyzował powtarzalną prawniczą robotę. Nie muszę mówić, że w tym przypadku kompilowalne prawo mocno by ułatwiało automatyzacje.

Nie ma co gloryfikować prawników, bo spektakularne wystąpienia w sądzie i znajdowanie kruczków prawnych, to mniejsza część ich pracy.

2

niesamowitym jest że w/w dokumenty nie mają (afaik) sensownej kontroli wersji, a już w tym temacie AI padło ok. 10 razy :-)

Step 1 to jest umożliwienie przejrzystego śledzenia zmian prawnych.

0

@WeiXiao:
Jak bardzo sensowna jest kontrola wersji w kodzie źródłowym? Działa znośnie jak zmiany są lokalne, ale jak przenosisz kod, rozcinasz na kawałki albo łączysz to już się sypie.

0

@Wibowit:

Bardzo sensowna.

A jak sensowna jest kontrola wersji dokumentów wordowskich? :D

rozcinasz na kawałki albo łączysz to już się sypie.

No dokumentów ustaw raczej nie refaktorujesz i robisz ekstrakt method do 10 plików, a działasz na jednym.

0

@WeiXiao:
No to pokaż jak byś to zrobił w przypadku tzw. Tarczy Antykryzysowej. Podobno jest już wersja 4.0. Jak wyglądają diffy między wersjami?

0

@Wibowit:

Nowelizacja jest twoim "diffem".

1

To słaby ten diff.

https://www.prawo.pl/biznes/nowelizacja-tarczy-antykryzysowej-jakie-zmiany-wprowadza-ustawa,499295.html

Pod nowelizacją tak naprawdę kryje się nowa ustawa o szczególnych instrumentach wsparcia w związku z rozprzestrzenianiem się wirusa SARS-CoV-2, która pozwala na uruchomienie pomocy przez Agencję Rozwoju Przedsiębiorczości oraz Polski Fundusz Rozwoju - chodzi o doprecyzowanie przepisów o tarczy finansowej, która jednak zmienia też ustawę z 2 marca 2020 r. o szczególnych rozwiązaniach związanych ze zwalczaniem COVID‑19 (stąd nazwa tarcza antykryzysowa 2).

Ta ustawa to wygląda jak write-only. Jak ma działać diff jak kod się nie zmienia, a tylko dochodzi nowy?

0

@Wibowit:

Jak ma działać diff jak kod się nie zmienia, a tylko dochodzi nowy?

no pokazać różnice?

v1:

var a = 5;

v2:

var a = 5;
var b = 5;

dif v2-v1: ????

line2: +++var b = 5;
0

Skoro lubisz kod to pokażę jak dla mnie wyglądają te nowelizacje:

class Tarcza1 {
  lazy val dopłataDoDziecka = 80

  lazy val dopłataDoKrowy = dopłataDoKonia + 5

  lazy val dopłataDoKonia = dopłataDoDziecka - 1

  ... // tutaj 100 tysięcy innych dopłat
}

... // tutaj Tarcza2 i Tarcza3

class Tarcza4 extends Tarcza3 {
  override lazy val dopłataDoKrowy = dopłataDoDziecka + 8

  override lazy val dopłataDoKonia = dopłataDoKrowy * 2
}

Nie zmieniasz starych tylko dopisujesz nowe.

0

fajnie że dla ciebie tak wyglądają, a spójrzmy teraz na prawdziwe dokumenty i nowelizacje :D

Fragment rozporządzenia:

screenshot-20200501143210.png

Fragment nowelizacji:

screenshot-20200501143237.png

I teraz nakładaj zmiany od razu, a nie zbieraj je w tych twoich extendsach

1

Nakładaj zmiany od razu, a nie zbieraj je w tych twoich extendsach :D

No to nakładaj. Jak widać ustawodawcom nie chce się nakładać i wypuszczać pełnych nowych wersji tylko podają same override'y.

Z drugiej strony - czy ta nowelizacja którą właśnie podałeś nie jest diffem sama w sobie? Przecież jest podane wprost co się zmieniło i w którym miejscu, dokładnie tak jak w diffie.

1

@Wibowit:

No to nakładaj. Jak widać ustawodawcom nie chce się nakładać i wypuszczać pełnych nowych wersji tylko podają same override'y.

Hmm, wypuszczają coś takiego jak

Tekst jednolity – tekst aktu prawnego uwzględniający wszelkie zmiany, jakie w nim zaszły od chwili ogłoszenia albo od chwili ogłoszenia poprzedniego tekstu jednolitego.

https://pl.wikipedia.org/wiki/Tekst_jednolity

Z drugiej strony - czy ta nowelizacja którą właśnie podałeś nie jest diffem sama w sobie? Przecież jest podane wprost co się zmieniło i w którym miejscu, dokładnie tak jak w diffie.

no bez jaj xD

screenshot-20200501143719.png

Chodzi o format danych. wordy, pdfy itd. nie sprawdzają się.
Takie dokumenty powinny być bardziej "digital friendly"

1

Oddać sadzenie maszynom? Jest majówka - proszę szybciutko rozpalić grilla, odpalić browarka i w ramach pokuty za durne pomysły poogladajcie sobie Terminatora czy Matrixa. Dla chętnych polecam poczytać Lema opowiadanie, wyprawę piątą Trurla. Nic dziwnego że powstaje gówniany kod jak ludzie mają tak posrane pomysly.

1

Hmm, wypuszczają coś takiego jak
Tekst jednolity – tekst aktu prawnego uwzględniający wszelkie zmiany, jakie w nim zaszły od chwili ogłoszenia albo od chwili ogłoszenia poprzedniego tekstu jednolitego.
https://pl.wikipedia.org/wiki/Tekst_jednolity

Szukałem czegoś takiego przez chwilę dla Tarczy Antykryzysowej i nie znalazłem.

no bez jaj xD

:)

Sam się zakręciłem od tych twoich wymagań i założeń. W takim razie diff już jest. Skoro jest w takiej samej postaci jak oryginalny dokument to i sformalizowanie tego diffa powinno być proste dla kogoś kto wie jak sformalizować oryginał. Nie rozumiem problemu :)
* sformalizowanie w sensie przełożenie na ten hipotetyczny język programowania

0

@Wibowit:

Nie rozumiem problemu

Takie dokumenty powinny być dystrybuowane jako np. XML, aby można łatwo było tworzyć do nich narzędzia i generalnie angażować soft do pomocy przy śledzeniu wszystkiego, a nie w pdfach czy wordach :D

1

Jarosław nie będzie wiedział jak zrobić merge w gicie. Reszta polityków, prawników, urzędników, itd również. I tak potrzebują diffa w wersji słownej.

1
WeiXiao napisał(a):

@Wibowit:

Nie rozumiem problemu

Takie dokumenty powinny być wypuszczane jako np. XML, aby można łatwo było tworzyć narzędzia do nich i generalnie angażować soft do pomocy przy śledzeniu wszystkiego, a nie w pdfach czy wordach :D

Przecież prawnicy mogliby klepać w latechu. Nie widzę wielkiego zysku XML-a ponad latechem. Już to kompilowany język, w którym od razu sprawdzasz czy dokument jest poprawny.

0

@Wibowit:

Proszę cię, przecież oczywistym jest że Prezesa gita uczyć się nie będzie :D

Takie rzeczy to chowa się pod GUI.

Przykład istniejącego produktu:

screenshot-20200501144927.png

@part

Przecież prawnicy mogliby klepać w latechu. Nie widzę wielkiego zysku XML-a ponad latechem. Już to kompilowany język, w którym od razu sprawdzasz czy dokument jest poprawny.

Pod jakim względem poprawny? gramatyki latecha?

0

Nowelizacja w wersji słownej i tak musi być, obojętnie czy ręcznie naklepana czy wygenerowana.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.