wtorek, 29 września 2009

Yellow pages: Nieuchwytny

.i. mi vorka .anti lo xe duvle lezlo, gi bo lei remno go tavla loi dreme tanto.

Nie po raz pierwszy zresztą. Jedni kibicują Amerykańskiemu wymiarowi sprawiedliwości, że kazał aresztować Polańskiego, a inni oburzają się, jak można było Polańskiego aresztować. Jedni idioci i drudzy idioci.

Każdy nawet, co ciekawe, inaczej przedstawia sprawę, o którą cała ta akcja się opiera. Jedni piszą, że ta 13-latka sama przyzwoliła na "stosunek" (co oczywiście względem prawa niczego akurat nie zmienia), inni że Polański zrobił to podstępem i jeszcze podał narkotyki, jeszcze inni, że ta dziewczyna bała się Polańskiego (ciekawe... jeszcze Nicholsona, u którego cała akcja się odbyła, to rozumiem, ale Polańskiego?:).

Polacy poparli gorąco wymiar sprawiedliwości USA.

Super. Ciekawi mnie tylko dlaczego - może dlatego, że Amerykański wymiar sprawiedliwości w tym przypadku zaczął przypominać Polski (biorąc pod uwagę długość ciągnięcia się spraw), a może dlatego, że wciąż jest niedosyt "sprawiedliwości" , jeśli wziąć pod uwagę, jaka to sprawiedliwość spotkała tych, którzy w poprzednim systemie dorabiali się kosztem innych, a jaka tych, którzy na ich luksusy pracowali.

Może. No bo w to, że Polacy nagle zapałali takim zapałem do wymiaru sprawiedliwości i przestrzegania prawa, to jakoś mi się nie chce wierzyć (no chyba, że chodzi o to, jak to zwykle, że "niech inni przestrzegają prawa":).

Ponad połowa Polaków uważa, że Polańskiego należało aresztować!

Niby super. Ale ja bym się tam nie cieszył. Widziałem bowiem wyniki ankiety.

A przebiegli ankieterzy celowo nie zadali zwykłego pytania "tak/nie". Dali na "tak" dwie możliwe odpowiedzi do wyboru (cytuję z pamięci, więc próbuję tylko oddać sens): "Tak, bo prawo powinno być szanowane" oraz "Tak, bo artyści nie są świętymi krowami". Jak się tutaj rozkładały głosy? Pierwsza z nich miała ok. 10%, druga 44%.

I co? Gdyby tu rzeczywiście chodziło o poszanowanie prawa, to większość zebrałaby ta pierwsza odpowiedź. Gdyby nawet chodziło o jakąś "równość wszystkich wobec prawa", to przecież samo poszanowanie prawa ową równość implikuje, gdyż jest ona zapisana w konstytucji wszystkich cywilizowanych państw.

Ta odpowiedź jest właśnie haczykiem, na który te 44% debili dało się złapać: choć odpowiedź sugeruje czysto teoretycznie, że chodzi o równość wszystkich wobec prawa, tak naprawdę chodzi właśnie o to, że jest to osoba sławna, publiczna, ma od cholery kasy i opływa w luksusy - i właśnie dlatego (a nie mimo to) wymiar sprawiedliwości powinien skuć go w kajdanki i wsadzić do pierdla. Przecież wystarczy poczytać, co Polscy publicyści piszą w celu "odparcia" poparcia artystów, właśnie dokładnie to samo: artysta nie jest świętą krową. Przecież nie chodzi o to, żeby, przykładowo, za kradzież artysta był karany taką samą karą więzienia, jak zwykły obywatel, tylko o to, żeby za tą kradzież zwykły obywatel był karany więzieniem, powiedzmy 2 lat, a artysta - 20 lat (albo nawet najlepiej śmiercią).

Pan Roman Graczyk pisze np., że "W obronie hydraulika oskarżonego o gwałt na nieletniej nikt z tych wielkich nie kiwnąłby nawet palcem". Owszem. Ale nie musieliby. Bo gdyby za ten sam czyn (po 30 latach po fakcie, przypominam!) został oskarżony polski hydraulik, czy pan Wiesio z pobliskiego zieleniaka, który w USA był jakiś czas temu z wizytą u brata, to natychmiast 44% Polaków byłoby za tym, aby go nie wydawać Amerykanom. A odpowiedź "Tak, bo sprzedawcy z zieleniaka nie są świętymi krowami" zebrałaby mniej więcej tyle samo odpowiedzi, ile zebrała tamta pierwsza. W porywach. Bo równość wobec prawa kończy się tam, gdzie zaczynają się nasi. Tak było w Polsce już od kilku stuleci i tak jest nadal.

Oczywiście ja staram się zachować status neutralności - sprawa bowiem jest kuriozalna, ale nie spieszyłbym się też z wybielaniem Polańskiego. Jak ktoś jest tak głupi, żeby uprawiać seks z nieletnią na terenie państwa (ang. state), które w prawie ma zapisane, że ten czyn jest zagrożony karą więzienia i nie ma od niego przedawnienia, to musi liczyć się z konsekwencjami, nawet tak kuriozalnymi. Mówi się: trudno. Tłumaczenie się, że nie rozpoznał wieku, jest trochę głupie, nawet jeśli prawdziwe.

Ale gdyby przyjrzeć się sprawie bardziej z bliska, rzeczywiście zakrawa ona na kuriozum.

Z jednej strony, można powiedzieć, że niedokładność pracy wymiaru sprawiedliwości kompromituje prawo. Inaczej, że prawo nie może być szanowane, jeśli stojący na jego straży wymiar sprawiedliwości nie stosuje go w pełni i na równi dla wszystkich.

Z drugiej strony istnieje też inna zasada: zasada proporcjonalności. Jeżeli chcemy mieć prawo, jeśli chcemy stać na jego straży, jeśli chcemy, aby to prawo było cokolwiek warte i rzeczywiście było równe dla wszystkich - to w takim razie poświęcamy proporcjonalną liczbę sił i środków na to, aby zapobiec popełnianiu określonych naruszeń prawa, w stosunku do ważkości, jaką niesie w sobie fakt popełniania tego przestępstwa. Jeśli więc ściga się międzynarodowym listem gończym kogoś, kto 30 lat temu popełnił morderstwo i do tej pory morduje - ściganie jest uzasadnione choćby dlatego, że nadal stanowi zagrożenie. Jeśli jednak zamordował 30 lat temu, a następnie uciekł gdzieś za granicę, ukrywał się, i przez ten czas nie miał najmniejszego konfliktu z prawem, to poświęcanie sił i środków na jego odszukanie, przywiezienie do kraju, w którym zamordował, i sponsorowanie mu pobytu w więzieniu, jest dla mnie karygodną rozrzutnością, za którą minister sprawiedliwości powinien stanąć przed trybunałem stanu (i nie rozumiem, na przykład - przy założeniu, że prawo państwa X ma chronić obywateli państwa X i żadnego innego - dlaczego nie wystarczy w tym przypadku zakaz wjazdu do tego kraju). Nie jest to oczywiście wskazówka dla sposobu karania - jest to wskazówka do sposobu tworzenia prawa i dostosowywania go do zmieniających się warunków.

Prawo nie jest prawem absolutnym. Zawsze istnieje możliwość zmiany tego prawa, jeśli istnieją jakieś przesłanki wskazujące, że należy je zmienić. A wystarczającą ku temu przesłanką, jest fakt, że nie spełnia ono pokładanych w nim oczekiwań.

Prawo nie po to istnieje, żeby sobie istniało, tylko ma ono przykrajać swobodę ludzi do określonych ram, poza którymi szkodziliby sobie nawzajem. Prawo ma ograniczać wolność ludzi w tych obszarach, w których wchodzą one w konflikt z prawami innych. Tak ma być w teorii. Karanie zaś ma mieć dwa wymiary: po pierwsze, odstraszać ludzi od określonych czynów, po drugie stanowić sensowne zadośćuczynienie po popełnieniu tego przestępstwa, które ma skazanego skłonić do nie powtarzania tego w przyszłości. Zaznaczam, tak jest w teorii.

Czy kara więzienia (nawet już mniejsza o to na ile lat - a skądinąd na całkiem sporo) spełnia te warunki? Szczególnie kara więzienia wykonana 30 lat po fakcie w stosunku do starszego człowieka?

Oczywiście przychodzi tu na myśl zawsze kwestia zbrodniarzy wojennych z II wojny światowej (a także i późniejszych). Ludzi odpowiedzialnych za wymordowanie milionów ludzi, dziś 70-letnich staruszków. Bywały już procesy i skazywały ich również na więzienie.

Dla mnie to też jest kuriozum. Z jednej strony, oczywiście, nie ulega wątpliwości, że powinni ponieść karę. Z drugiej - czemu właściwie ma służyć wsadzanie 70-letniego dziadka do więzienia? Bo jak na "igrzyska dla ludu", żeby ci, którzy stracili w ten sposób swoich bliskich, nacieszyli oczy (najlepiej patrząc, jak umiera), to sprawa jest trochę kosztowna.

Czy taka kara odstraszy?

No cóż, spróbuję dyskretnie wyślizgać się z kwestii kary śmierci, której moc odstraszania jest dla mnie czysto mityczna. Kara więzienia specjalnie również nie odstraszy tak naprawdę - no chyba że za "odstraszającą" będziemy uważać perspektywę znalezienia się w jednym pomieszczeniu z ludźmi, którzy przez większość życia wyrąbywali sobie drogę kułakami. Jeśli cokolwiek może odstraszać, to skazanie na życie w upodleniu, z dala od cywilizacji i najdrobniejszych wygód, konieczność wykonywania nieprzyjemnej pracy (nawet lekkiej) i znoszenie trudów ciężkiego życia. Skazanie zbrodniarza wojennego na taką karę jest przynajmniej szansą na jakieś promilowe zadośćuczynienie - o odstraszaniu to raczej zapomnijmy, bo zbrodniarze wojenni swoje zbrodnie wykonują przecież tylko dlatego, że nie wierzą, że kiedykolwiek im się powinie noga.

Tu podałem przykład karania z głową.

Bo kara musi zawsze przynosić jakiś pożytek, aby osiągnąć zamierzony skutek.

Odstraszanie nie jest najważniejszym aspektem kary, wbrew temu, co się wielu ludziom wydaje. Prawda jest bowiem taka, że większości z nas (mam nadzieję:), którzy nigdy w więzieniu nie byli i znają je jedynie z filmów lub reportaży, więzienie jest czymś całkowicie mitycznym, bajką o żelaznym wilku, która nigdy żadnego z nas nie będzie dotyczyć. Traktowanie kary więzienia jako "odstraszanie" miałoby sens tylko i wyłącznie w przypadku, gdyby prawo danego kraju stanowiło, że każdy obywatel, który ukończył 18 lat, powinien odbyć obowiązkową karę roku więzienia (za którą, oczywiście, dostanie sowite odszkodowanie - przypuszczam, że przy odpowiednio dużej wysokości odszkodowania nie trzeba by było nawet mocno przymuszać). Dopiero wtedy można by było stwierdzić: ok, każdy obywatel wie, jak źle się siedzi w więzieniu i będzie się starał tego więzienia unikać. Dopóki takiego prawa nie ma, nikt kto jeszcze nie był karany więzieniem, nie czuje zagrożenia więzieniem jako wystarczającego "straszaka".

Czy ja, gdybym miał możliwość się kiedyś dawno temu (jak jeszcze byłem wolny :) przespać się z nastolatką, to czy coś by mnie powstrzymywało?

No więc cóż. Fajnie, ale... po pierwsze, będą mnie ścigać i wzywać na różne przesłuchania. Nie będę mógł normalnie żyć, bo ciągle ktoś się będzie czepiał. Jak sprawa się wyda, będę miał problemy w mojej karierze zawodowej - przecież kto zatrudni pedofila. Kim bym nie chciał w przyszłości być, sam fakt, że będą mnie ciągać po sądach, jest wystarczającym powodem, aby sobie darować.

A że do więzienia wsadzą? Na 5, 10, 20, 50 lat? Panie! Kara 20 lat od 50 i dożywocia nie różni się praktycznie niczym. W obu wypadkach trzeba się będzie do życia w więzieniu po prostu przyzwyczaić.

Proponuję, żeby czytelnik sam spróbował sobie odpowiedzieć na to pytanie.

Jest to o wiele bardziej wiarygodne badanie, niż te debilne statystyki, które pokazują, jak to wspaniale kara śmierci wpływa na zmniejszenie przestępczości (przypominam, że najwięcej kar śmierci w USA wykonuje się w Teksasie, w którym przestępczość jest najwyższa - niech każdy sobie następnie do tego dorabia teorię, jaką chce).

Karanie więzieniem przy określonych okolicznościach wypadałoby więc rozpatrywać pod kątem tego, czy karanie spełnia określone oczekiwania.

W przypadku Polańskiego, jedyne co widziałbym pozytywnego z jego ukarania, to fakt stałości prawa. Natomiast wady tego są następujące: a) Kalifornia poniesie koszty związane z ukaraniem (kropla w morzu, oczywiście, dopóki nie zdamy sobie sprawy z tego, ile podobnych spraw Kalifornia może mieć na głowie), b) "ukarze" się rodzinę Polańskiego poprzez odizolowanie od ojca i męża (a co, cwaniaczki? Myśleliście, że to tylko skazany cierpi samotność w więzieniu?), c) rodzina Samanthy Geimer, owej ówczesnej nastolatki, będzie nadal przeżywać koszmar (ona sama tak twierdzi i nie widzę powodu, żeby jej nie wierzyć), d) ekipa filmu, który Polański właśnie kręci, może być w poważnych kłopotach (wiem, że to mało istotne, ale dodaję tak na doklepkę - zresztą spróbujcie powiedzieć "nieistotne" sponsorom, którzy wyłożyli na ten film kasę; wcale bym nie uważał za nieuzasadnione złożenie w przypadku ukarania Polańskiego następnie wniosku o sowite odszkodowanie w wyniku strat, jakie poprzez tą karę ponieśli).

Inaczej mówiąc - poświęcono mnóstwo i to nie tylko swoich sił i środków, zaszkodzono wielu ludziom, w których imieniu Kalifornijskie prawo nie kiwnęłoby palcem, gdyby wobec nich dopuszczono się przestępstwa - i to wszystko tylko po to, żeby zachować nieuchronność kary i stałość prawa. Prawa, które miało w domniemaniu karać pedofilów. Które miało chronić dzieci przed wykorzystaniem seksualnym. I wcale nie twierdzę, że nie chroni.

Przecież bomby spuszczone na Hirosimę i Nagasaki też doprowadziły do całkowitego zakończenia II wojny światowej. A że tam paru żółtków wyciągnęło nogi - cóż to ma za znaczenia dla przeciętnego Amerykanina.

I nie żebym nie wiedział, o czym piszę - właśnie wyłuskałem kolejnego newsa: Rafał Pietrzak z Łodzi, dziś 40-latek, został w 1998 roku skazany na 30 lat więzienia za, podobno, pedofilię. Cytuję za onet.pl:


Sprawa Rafała Pietrzaka od lat budziła kontrowersje. Ten 40-letni dziś łodzianin od 12 lat siedzi w więzieniu w Teksasie. Został skazany na 30 lat wiezienia za molestowanie seksualne dziecka swej konkubiny. Zarzut został wywiedziony z faktu, że dziecko zaczęło krwawić podczas kąpieli. Sprawą zajęły się amerykańskie służby socjalne. Na nic zdały się zaprzeczenia matki i samego dziecka, a także to, że badania lekarskie nie potwierdziły gwałtu. Teksańska ława przysięgłych uznała go za winnego, a sędzia skazał na 30 lat.


W zasadzie powinno się wszystkim jadącym w delegację do Teksasu doradzać: kiedy będziesz w Teksasie, nikogo nie zaczepiaj, z nikim nie rozmawiaj, z wyjątkiem ludzi, którzy przyjechali razem z tobą i tymi, z którymi musisz załatwiać sprawy. W miarę możliwości nie odwiedzaj żadnych z miejsc, których odwiedzać nie musisz, trzymaj się hotelu, a jeśli już musisz jeździć na wycieczki, to tylko w miejsca, które wyglądają na naprawdę publiczne. A w ogóle to nigdy nie jeździj do Teksasu z jakiegokolwiek innego powodu, niż delegacja służbowa.

Jeśli ktoś chce mi zasugerować, że tak funkcjonujące prawo zasługuje na jakikolwiek szacunek, to chyba żartuje. Porównywalne absurdy istnieją chyba tylko w Szwecji i Białorusi. Żeby twierdzić, że takie właśnie prawo jest "dobre, bo stałe i równe dla wszystkich", trzeba być prostakiem, który nie rozumie, że prawa - podobnie jak planów biznesowych - nie tworzy się "z dupy", tylko tworzy się w określonym celu. A celem prawa nie jest spójność prawa, bo to jest taki sam idiotyzm, jak tłumaczenie, że polewamy ulicę wodą, żeby ulica była mokra.

Oczywiście było wiele znanych spraw, jak to pewien przestępca wymykał się organom ścigania bardzo długo, bo doskonale się kamuflował, bo miał znajomków, bo mu się udawał, bo zachowywał odpowiednią dyskrecję. Wtedy zdarzało się, oczywiście, że dopadano go po 30 latach. Ale on był przez te 30 lat skrupulatnie ścigany, a nie odmawiano jego ekstradycji.

Powtarzam, 30 lat. Całe nowe pokolenie ludzi zdążyło w tym czasie się urodzić i dorosnąć. A owa przeleciana (nie chcę pisać "zgwałcona", bo sprawa jest bardzo różnie przedstawiana) 13-latka ma teraz lat 40. Polański w tym czasie zdołał nawet jeszcze nakręcić kilka filmów (w tym osławionych Piratów), a nawet zrobiono w tym czasie film o jego historii; przez cały ten czas bywał na festiwalach i brylował w mediach i jakoś mu fakt bycia ściganym nie przeszkadzał. Oczywiście, jest to w dużej mierze zasługa urzędników we Francji, którzy odmawiali USA deportacji Polańskiego, co mogłoby z kolei stworzyć kolejną ciekawą sugestię, mianowicie że we Francji można spokojnie się schować przed swoim wymiarem sprawiedliwości (właśnie mi się przypomniało, że ten wymykający się przestępca, o którym wspomniałem, też się głównie ukrywał we Francji; ciekawi mnie też, dlaczego w "Tożsamości Bourne'a" główny bohater miał mieszkanie właśnie w Paryżu).

Gdyby chodziło o zwykłego, szarego człowieka, to nikt by się nie patyczkował, pewnie zaraz usłyszę.

No nie wiem. Gdyby ten szary człowiek ewakuował się do osławionej Francji, to bardzo jestem ciekaw, czy komuś by się chciało tak tego kogoś gonić listami gończymi. Inna sprawa w przypadku mordercy, szczególnie takiego, który może "działać" dalej. Przynajmniej wtedy jest sens w jego szukaniu, bo chroni to ewentualne potencjalne kolejne ofiary. Ale tutaj?

Kalifornia to jest szczególne państwo. W ostatnich latach przynajmniej słynne było głównie z beznadziejnie rozdętych wydatków i zagrażających płynności finansowej długów. Przez te 30 lat nikomu tam do głupiej głowy nie przyszło, że chyba jednak poszukiwanie listem gończym i zajmowanie się prośbami o ekstradycję, plus oczywiście zapłata za jego złapanie (bo nie sądzę, żeby umowa ekstradycyjna przewidywała łapanie na własny koszt państwa dokonującego ekstradycji) to naprawdę problemy, od których istnieją znacznie większe, poważniejsze i bardziej wymagające poświęcenia sił i środków. Że zamiast poświęcać tyle zasobów na ukaranie oskarżonego wedle idiotycznego prawa, może można by było zmienić to durne prawo i ustalić warunki jakiejś amnestii (żeby prawo nie działało wstecz)?

Już od jakiegoś czasu twierdziłem, że posiadanie różnych wspólnych rzeczy przez poszczególne państwa powinno ponosić za sobą określone logiczne implikacje - w przeciwnym razie mamy do czynienia z możliwością "szkodzenia sobie nawzajem". Na przykład, kraje które mają wspólną walutę powinny prowadzić również wspólną politykę finansową - czyli posiadać nie tylko wspólny bank centralny, ale i wspólne ministerstwo finansów (niekoniecznie to oznacza, że muszą mieć np. identyczne podatki, oznacza jedynie, że jeśli np. przyznawany jest zasiłek dla bezrobotnych lub zapomoga socjalna, to przyznawana jest we wszystkich tych państwach w tej samej wysokości i na tych samych warunkach). Podobnie, kraje które nie mają między sobą granic, powinny mieć wpólne ministerstwo spraw zagranicznych i wspólną politykę karną (niekoniecznie żeby we wszystkich było identyczne prawo karne, ale wszystkie powinny posiadać wytyczne odnośnie najczęściej popełnianych przestępstw i różnych rodzajów przestępstw, a także posiadać wspólne definicje poszczególnych przestępstw - tak, żeby nie było, że coś jest przestępstwem w jednym państwie, a w innym nie). To samo zresztą dotyczy krajów, które posiadają wzajemne umowy o ekstradycji, czy też owe umowy ekstradycyjne powinny "uwspólniać" definicje poszczególnych przestępstw. A z drugiej strony - jeśli nie uwspólniamy definicji przestępstw i stosujemy całkowicie odmienne polityki karne, to nie powinno być mowy ani o niestrzeżonych granicach, ani o umowach ekstradycyjnych.

Ja oczywiście jestem pełen podziwu dla Amerykańskiego wymiaru sprawiedliwości - ale tylko i wyłącznie za to, że sprawnie działa, rozpatruje sprawy szybko, wydaje wyroki, a wyroki są wykonywane. Ale pod względem sposobu przeprowadzania procesów sądowych to gdybym to porównywał z Polskim wymiarem sprawiedliwości, to naprawdę, nie wiem co gorsze. Dowodzi to tylko jednego: na całym świecie sędziowie (co ja mówię, sędziowie - w ogóle urzędnicy) są tacy sami i oczekiwanie po nich tego, że będą sądzić sprawiedliwie i tak, żeby obywatele mieli zaufanie do państwa, jest idiotyzmem. To nie sędziowie i nie prokuratura ma decydować o tym, co komu wolno.

Przecież to nie jest zresztą jedyna tak kuriozalna sprawa. Przypomnijmy sobie chociażby sprawę z Clintonem i Levinsky. Mało kto w ogóle zwrócił uwagę na to, że cała maszyneria prokuratorska została uruchomiona tylko z tego powodu, że Clinton skłamał zeznając pod przysięgą, a zrobił to tylko dlatego, że akurat zapytano go o sprawę bardzo osobistą i wstydliwą (nie mógł odmówić odpowiedzi, bo byłoby to jednoznaczne z przyznaniem się).

Żeby zaprezentować, jakiego kuriozum dopuszczono się w tej z kolei sprawie, proponuję następujące porównanie: prokurator pyta "Czy kiedykolwiek słuchał pan muzyki disco polo?". Człowiek lekko się czerwieni, ale nie traci rezonu i twardo odpowiada "Nie". Kilka lat (!) później wpada do niego kumpel i razem piją piwo. Ten człowiek, przypadkiem w rozmowie, zwierza się mu - "no wiesz, kiedyś i ja słuchałem disco polo". Człowiek jednak nie wiedział, że kumpel miał ze sobą dyktafon, rozmowę nagrał, a następnego dnia zaniósł taśmę do prokuratury. Prokurator następnie wytoczył temu człowiekowi proces za kłamanie pod przysięgą.

Pewnie ktoś powie, że no ale wtedy akurat Clinton był prezydentem, a od prezydenta wymaga się prawdomówności. Możliwe, ale co to ma z prawnego punktu widzenia do rzeczy, przecież prawo podobno jest równe dla wszystkich!?

Cała sprawa nikomu nie przyniosła żadnych korzyści. No, może poza Moniką Levinsky, która z tej okazji napisała książkę i raczej nie wydała jej ze środków Ministerstwa Kultury. Stracił prokurator, który stał się ulubionym celem do plucia przez (lewicowe oczywiście) media, spadły indeksy giełdowe (nie żartuję - proszę sprawdzić), Clinton musiał odejść z polityki (chociaż zastanawiam się, czy nie zaliczyć tego jednak do korzyści), a USA stały się pośmiewiskiem całego świata. I też nikomu jakoś nie przyszło do głowy, że chyba jednak coś tu nie gra. (Nawiasem mówiąc, to też przypadkiem zaszkodziło Gore'owi, więc i niektórzy dopatrują się w tym spisku republikanów; w wyniku prezydentem na 8 lat został Bush junior, teoretycznie konserwatysta, a w praktyce, jak się okazało dopiero teraz, Keynesista czystej wody.)

I tak jest zawsze, w każdej sytuacji, gdy dany aspekt prawny jest określony zbyt ogólnie, nie są rozpatrywane przypadki użycia, które nie służą celom postawionym prawodawstwu. Stwarza to ogromne pole do nadużyć, tworzenia smaru do kariery, czy nawet osobistej zemsty (o łapówkarstwie nie wspominając). To się dzieje na dużą skalę w Polsce, właśnie dlatego, że nasz system prawny prawie cały tak wygląda. Ale dzieje się i w USA, w takich właśnie przypadkach, gdy prawo jest opracowane byle jak i totalnie bez głowy.

Przecież to nie gdzie indziej, jak właśnie w USA jest bardzo dużo przypadków, gdy sprawa sądowa jest przenoszona z jednej prokuratury do drugiej, albo kierowana do określonej prokuratury w określonym państwie, bo ta akurat stronie pozywającej w tej akurat sprawie daje większe szanse na wygraną (ostatnio głośna sprawa: i4i pozwało Microsoft za naruszenie patentu dotyczącego indeksowanego sposobu zapisu dokumentu, stosowanego przez M$ w OOXML, m.in. w Wordzie - na kuriozum zakrawa już sam fakt przyznania na to patentu w 1998 roku, a sprawa została właśnie celowo skierowana do sądu - no, zgadnijcie w jakim państwie :). Istnienie tego typu różnic najzwyczajniej w świecie podważa samą zasadę równości wobec prawa. Już nie wspomnę o tym, że najczęściej wygranie lub przegranie sprawy to kwestia ilości pieniędzy na adwokata. Co prawda tak jest na całym świecie, ale do jasnej cholery, nie żyjemy przecież w XIX wieku. Jeśli ideały równości wobec prawa są nam takie drogie, to powinno się podejmować wszelkie możliwe działania i ustalać wszelkie możliwe reguły, które pozwolą się do tego ideału równości zbliżyć na tyle, na ile to fizycznie możliwe.

Przykładowo, rozprawa sądowa powinna dotyczyć tylko i wyłącznie poznaniu szczegółów sprawy i zebraniu odpowiedniej ilości informacji. A po ich zebraniu sędzia, wraz z odpowiednimi pomocnikami, powinni znaleźć reguły prawne, które określają, co zrobić ze sprawą i wydać w efekcie wyrok zgodny z obowiązującym prawem. Adwokaci jedyne, co mają mieć do roboty, to wyciąganie ze świadków informacji, które mogą służyć w sprawie ich klientowi. I tak adwokaci, jak i sędziowie i prokuratorzy powinni mieć zakaz (i to pod karą pozbawienia możliwości wykonywania zawodu) podnoszenia głosu, wypowiadania własnych ocen, obrażania świadków, psychicznego znęcania się nad świadkami, a także żądania ujawnienia prywatnych i osobistych spraw podczas rozpraw publicznych (przykładowo, nie wolno by było zadać na rozprawie publicznej pytania, czy świadek uprawiał z kimś seks). I żadnych pompatycznych przemów przed ławą przysięgłych, bo jest to nic innego, jak psychologiczna manipulacja, której sprawność ma przeważyć nad rzeczywistymi aspektami sprawy. Poza tym, sędzia nie od tego jest, żeby przyklepać to, co ława przysięgłych ustali w drodze głosowania, tylko od tego, żeby ustanowić wyrok w majestacie prawa - to nie ława, tylko sędzia odpowiada za wydanie takiego wyroku. Rozumiem, że sędzia jest bardziej skłonny słuchać ławy przysięgłych, niż prawa (bo to lokalni ludzie go wybierają, co ma swoje zalety), ale gdyby odpowiadał głową za poprawnie wydany wyrok, może byłby bardziej skłonny jednak słuchać prawa.

Podobnie - należy jak najbardziej karać kłamanie pod przysięgą. Ale jeśli owo kłamstwo nie powodowałoby znaczącej zmiany w zeznaniach (w uzasadnieniu wyroku należałoby wskazać, które z zeznań faktycznie wpłynęły na wyrok i pozostałe uważa się automatycznie za nieistotne), powinno skończyć się tylko na cichym wymierzeniu grzywny i tyle (chyba, że obwiniony się na to nie zgodzi). Nie dlatego, że jest to "niska szkodliwość społeczna". Tylko dlatego, że straty, jakie łącznie poniesie społeczeństwo w wyniku całej pompatycznej procedury ukarania, będą większe, niż to czegokolwiek warte.

Jeśli teraz sprawa Polańskiego zakończy się deportacją i wsadzeniem go do więzienia, to będzie można mieć mieszane uczucia: z jednej strony to dobrze, że prawo jest bezwzględnie przestrzegane; z drugiej jednak strony bezwzględne stosowanie prawa, które jest durne, wcale mu estymy nie przydaje.

Czy ktoś ma wątpliwości, że to prawo jest durne? To proponuję wymienić choć jeden aspekt takiej kary, który byłby korzystny dla obywateli Kaliforni i sprawdzić równocześnie, czy ewentualne efekty uboczne są faktycznie akceptowalne - pomijając oczywiście aspekt nieuchronności kary. Jeśli wykonanie danej kary nie spełnia takich warunków, to znaczy, że mamy do czynienia z "wrogim prawem".

Zastanawiam się też, na ile to faktycznie opłacało się Szwajcarii - artyści występujący w obronie Polańskiego przypominają, że złamano w ten sposób pewne niepisane prawo. Na ile to poważna sprawa, nie wiem, ale z tego co pamiętam, to w zasadzie jedynym sensownym atutem Szwajcarii w ostatnich stuleciach był właśnie fakt, że jest ona neutralna. Właśnie dlatego Szwajcarskie banki są tak chętnie odwiedzane. Właśnie dlatego pisano jakiś czas temu artykuły o Szwajcarii, że najbardziej skorzysta z Unii Europejskiej, nie wstępując do niej. Teraz nagle w celu układania się z USA zrobią wszystko, choć biorąc pod uwagę, że USA mają w tej chwili zbyt wiele własnych problemów (np. galopujące bezrobocie), dla mnie sens tego przedsięwzięcia jest lekko wątpliwy. Tym bardziej przecież, że po pierwsze, nie chodzi o jakiegoś bandytę, który komukolwiek zagraża, i którego ukarania domagają się jakieś jego ofiary, a po drugie, w samej Szwajcarii takie przestępstwo przedawnia się po 15 latach. Nie chodzi o to, że Szwajcaria być może nie będzie już schroniskiem dla przestępców (zwłaszcza, że akurat pod tym względem i tak nie ma się co równać z Francją). Chodzi o to, że właśnie Szwajcaria lekką ręką pozbywa się tego, co od kilku wieków było jej atutem.

Szwajcaria zatem zamierza wydać w ręce USA obywatela Francji, który popełnił w USA przestępstwo (właściwie to należy napisać, że w Kaliforni, bo przestępstwo to jest kwalifikowane wedle kalifornijskiego prawa), nawet jeśli ichni wymiar sprawiedliwości by za taki czyn podobnego wyroku nie wydał. Trzeba przyznać, że jest to ewenement prawny, bo o podobnym przypadku jeszcze nie słyszałem. We wszystkich ekstradycjach, o których słyszałem, w grę wchodziły przestępstwa sądzone w obu krajach tak samo, a przynajmniej w obu krajach tak samo surowo karane. Ale żeby wydawać w ramach ekstradycji kogoś, kogo kraj w tych samych warunkach by już nie karał (w Szwajcarii przedawnia się po 15 latach), to naprawdę ewenement.

Czy Szwajcaria, która pewnie z Francją też ma umowy ekstradycyjne, nie powinna raczej wydać go Francji i pozwolić, aby Francja zajmowała się ewentualną ekstradycją, jeśli wyrazi takie życzenie? Pytam, bo kiedy w Polsce Yves Goulais zamordował Andrzeja Zauchę, to Polski wymiar sprawiedliwości, z tego co słyszałem (ale nie mogę znaleźć potwierdzającego źródła) kontaktował się z Francuskim konsulatem i uzyskał odpowiedź, aby go osądzić, jak uważa to za stosowne. Może konieczne to nie było, ale wypadałoby chociaż zapytać. Przynajmniej byłoby jasno widać, że Szwajcaria próbuje sobie ułożyć stosunki z USA kosztem stosunków z Francją.

Ale oczywiście można pokusić się też o spiskową teorię, tzn. cała sprawa to celowo wywołany skandal, mający zrobić dużo szumu wokół Polańskiego. W obecnych czasach i przy takich warunkach jest to również niewykluczone. Pewnie nawet w efekcie wyjdzie z tego wielki pic, władze Szwajcarii stwierdzą, że wniosek ekstradycyjny nie spełnia warunków, cała sprawa się przeciągnie, USA skompromitują się po raz kolejny, więc wniosek o ściganie trzeba będzie w niesławie wycofać i w zasadzie od tego momentu kolejni żądni kariery prokuratorzy z kraju wielkich kalafiorów będą go mogli pocałować w zadek. I może właśnie o to chodzi.

Z ostatniej chwili: ten tekst napisałem 22-go września 2009 roku. Właśnie przed chwilą, 12-go lipca 2010 roku, wyczytałem newsa, że Polański został uwolniony (cyt. za wp.pl):


- Nie ma zgody na ekstradycję Romana Polańskiego - takie jest oficjalne stanowisko władz szwajcarskich, które przedstawia minister sprawiedliwości Eveline Widmer-Schlumpf. - Sąd w USA odmówił nam wydania kluczowego protokołu, a wniosek może być obarczony wadą prawną - powiedziała minister. Werdykt oznacza, że Polański jest wolny i może opuścić areszt domowy, w którym do tej pory przebywał. USA nie mogą się odwoływać od decyzji w Szwajcarii.


A nie mówiłem? :D
Wszystko wyglądało mniej więcej tak: Szwajcaria: chcemy się upewnić, że wniosek nie ma wad prawnych. Adwokaci Polańskiego twierdzą, że odbył on już karę, więc pokażcie nam papiery na ten temat. Kalifornia: spadajcie na drzewo, żadnych papierów nie dostaniecie. Szwajcaria: to w takim razie pocałujcie nas w dupę.


Do dziś nie mogę wyjść z podziwu, że na całym świecie ludzie tworzący prawo nie wpadli na taki prosty i banalny pomysł: zebrać i opisać intencje i wymagania, jakie stawiamy określonym przepisom prawnym, poza samym faktem, że te przepisy stworzymy. O glebę mnie ciska dysonans, jaki zieje pomiędzy współczesną inżynierią, gdzie stworzenie produktu wymaga najpierw opisu wymagań, a potem dokładnych planów, projektów i symulacji, a współczesnym tworzeniem prawa, które pod względem technicznym jest na tym samym poziomie rozwoju, co w epoce Imperium Rzymskiego.

Jest kilka nauk, które zalicza się do "humanistycznych". Jedyne praktyczne nauki (tzn. studiujący je ludzie do czegokolwiek się społeczeństwu przydają), które się do takich zaliczają, to psychologia i prawo.

W przypadku psychologii jednak aspekty humanistyczne są tak nikłe, że w praktyce sposobem podejścia do tematu nie różni się od biologii, a więc jest w praktyce nauką inżynierską.

A prawo jakoś przypadkiem inżynieria ominęła. I dlatego właśnie tak to wygląda.

Bo gdyby na studia inżynierskie przyjmowano ludzi po egzaminach z historii, tak jak to obecnie jest w przypadku studiów prawniczych, to pewnie do dziś najpopularniejsze środki transportu byłyby napędzane silnikiem mocy czterech koni i to bynajmniej nie mechanicznych.

poniedziałek, 31 sierpnia 2009

Warszawska retrospekcja

Tak sobie poszliśmy z żoną i z maluchem na basen.

Na najdroższy i najbardziej wypasiony warszawski basen, "Warszawiankę". A co. Zaszaleliśmy. Zresztą ja, dysponując kartą Benefit, wchodzę tam za darmo. No, przynajmniej tak miało być oficjalnie.

Wchodzimy i najpierw oglądamy cennik. Z cennika praktycznie nic się sensownego nie da wyczytać (zajmuje dwa rzędy tablic na ścianie szerokości ok. 10 metrów - mógłby rywalizować pod tym względem z dworcami kolejowymi), więc podchodzę do kasy i życzę sobie po prostu wstęp na basen. Zaznaczam oczywiście, że posiadam kartę Benefit i życzę sobie z niej skorzystać.

Pani, która mnie w tej kasie obsługiwała, poinformowała mnie zatem, że niestety w tym okienku nie mogę skorzystać z karty benefit i powinienem się udać piętro wyżej do okienka z barem (tak, dokładnie, tam gdzie się sprzedaje chipsy, bulbony, kawy herbaty i inne takie - przy okienku z barem przecież jest informacja, że obsługa również kart Benefit...). Ja mówię, że ok, tylko w takim razie poproszę tutaj tylko bilet dla żony. Pani mi na to, że tamtym okienku załatwię obie te rzeczy.

Tak trochę na marginesie, zanim udam się do barku, dodam jeszcze, że ani w tej pierwszej kasie, ani w barku, nie ma możliwości płacenia kartą.

Udajemy się więc na pierwsze piętro do barku, ja daję kartę Benefit, a pani daje mi jakąś kartę z chipem i prosi jeszcze ode mnie 10 zyli. Ponieważ z natury nie jestem bezczelny, więc nawet nie zapytałem po co to jej, ani też nie zwróciłem uwagi na to, że za te pieniądze nie dostałem żadnego papierka (a może po prostu chciałem mieć to już jak najszybciej z bani). Doczytałem tylko później na kartce stojącej na barze, że - coś w tym stylu - za przekroczenie wyznaczonego czasu obowiązuje opłata w wysokości 10 zł, więc zapewne była to kaucja na poczet tej opłaty (ale oczywiście nigdzie nie było wprost napisanej informacji o tym, że jest to kaucja, która zostanie zwrócona).

W ogóle zresztą należy zacząć od tego, że ten system opłat z użyciem karty Benefit jest w tej instytucji nieco złożony i nie wszystkie aspekty są takie znów oczywiste. W każdym normalnym kraju - a bywałem w takowych - zapytanoby mnie, czy wiem, jak to fukcjonuje, a jak nie, to oni wszystko mi wyjaśnią. Mnie to - mniej więcej - wygląda tak, że oni biorą moją kartę Benefit, dają mi kartę abonamentową, a ja następnie z tej karty abonamentowej poprzez użytkowanie basenu wykorzystuję ileś-tam impulsów. Chodzi po prostu o jakąś możliwość ograniczenia ilości godzin, jakie można tam spędzić "za darmo". A to 10zł to jest opłata w przypadku, gdy ktoś wydusił kartę abonamentową jednorazowo do czysta.

Mimo wszystko, nie rozumiem, dlaczego taki system ma być dla mnie oczywisty, bo np. jak chodziłem na basen w Zambrowie, to po prostu pokazuję kartę Benefit i mam wjazd za darmo bez żadnych ograniczeń (nawiasem mówiąc, jeśli ktoś bywa w okolicach Łomży i Zambrowa to gorąco polecam!).

W każdym razie pani od karty Benefit w barze powiedziała mi, że ok, teraz mogę już pójść... wykupić wstęp do kasy znajdującej się na końcu korytarza i piętro niżej (parterem nie można było do niej przejść). Aha, dla żony niestety nie mogę tutaj kupić bilteu niestety, trzeba w kasie.

Zszedłem więc na dół do kasy i pytam panią, czy w związku z tym, że pani z barku nie może mi sprzedać biletu, czy mogę tutaj kupić bilet dla żony (żonie przezornie kazałem się nie ruszać z miejsca, żeby nie łazić w te i we w te bez sensu, bo zauważyłem, że to zaczyna być tu regułą). Pani powiedziała mi, że dla niej również kupię bilet w kasie abonamentowej.

Drzemy więc do kasy abonamentowej. Pomijam już fakt, że nie ma przy niej wskazanego kierunku kolejki i kilku ludzi stało w dwóch różnych kierunkach - zająłem więc kolejkę chyba ze złej strony i w tym czasie kilku gości zdążyło już się wepchać przede mnie. Podaję kartę, proszę bilet dla żony. Płacę. Pani odwraca się, żeby wziąć paski z kluczami do szafek i podjeżdża do przeciwnej strony (tej, która jest przy korytarzu wychodzących z basenu). Bo akurat przechodzi tam jakaś pani z jakimś papierem, a pani kasjerka coś jej tam podpisuje. Trwa to mniej więcej pół minuty, przy czym żona zwraca mi uwagę, że powinienem wziąć szatnię rodzinną. Po odczekaniu, aż pani kasjerka łaskawie zakończy handler przerwania o zajebiście wysokim priorytecie, upewniam się, że zostanę wreszcie do końca obsłużony, słowami "Już? Można?" (pani kasjerka patrzy na mnie z nieopisanym wyrzutem) i informuję, że poproszę rodzinną (bo przecież dla pani kasjerki fakt, że obok stoi żona z małym dzieckiem na ręku o niczym nie świadczy). Pani kasjerka z kolei zadaje mi jeszcze pytanie, czy jedna wystarczy, czy dać dwie. Zdziwiony pytaniem odpowiadam, że dwie. Bardzo mnie zaciekawiło zresztą to pytanie - może system, o którym zaraz napiszę, jest obsługiwany przez firmę zewnętrzną i ta firma dostaje kasę od każdego użycia szafki (nie wykluczam tego, zwłaszcza że przecież wszystkie stanowiska kierownicze w takiej instytucji są najczęściej obsadzane z politycznego klucza - reszty chyba nie muszę dopisywać?). Poza tym te szafki na ubrania są cienkie jak dupa węża i włożenie tam odzienia wierzchniego trzech osób graniczy z cudem.

Wyposażeni więc w otwieracze szafek lądujemy w szatni. Najpierw usiłuję się dostać do szafki. Okazuje się, że jest to system dynamicznego przydziału numeru szafki (przydział przy pierwszym użyciu i zwalnianie wraz z oddaniem paska). Należy przyłożyć kapsułkę do czytnika i otwiera się szafka. Szafka otwiera się w sposób bardzo ciekawy: jest tam wałek, który trzeba chwycić i przekręcić. Gdyby ten wałek miał chociaż jakiś cyngiel, to przynajmniej przypominałoby to klamkę i byłoby wiadomo, że trzeba nacisnąć. Z pomocą mi na szczęście przyszedł facet, który zajmował się tam zmywaniem podłogi (nawiasem mówiąc, jedyny człowiek w tej instytucji, który zrobił na mnie pozytywne wrażenie). Pokazał mi, jak otwierać szafkę (ten zamek, żeby było ciekawiej, potrafił jeszcze się dodatkowo zacinać). W końcu, po przebraniu się, jeszcze przed wejściem na basen szukamy jakiegoś WC. Okazuje się, że jest za drzwiami z wielkim napisem "wejście na basen" (pod spodem małym druczkiem jest napisane WC). Oczywiście znów z pomocą przyszedł nam nieoceniony pan od zmywania podłogi.

I czego mniej więcej moglibyśmy się spodziewać za tymi drzwiami? Owszem, pomieszczenia, ale również wejścia do kibla. A tu - siurprajs! W tym pomieszczeniu znajduje się kibel, prysznic, umywalka, oraz... drzwi do wejścia na basen. Oczywiście pomieszczenie można zalokować, boć to kibel, więc oczywiście przekręcam zamek, żeby się w spokoju wylać, stoję nad kiblem i zaczynam lać. A tu - siurprajs! Właśnie jakiś facet postanowił wyjść tymi drzwiami z basenu! Po prostu należało zalokować drzwi od strony szatni i od strony basenu!

Już nawet nie narzekałbym na bezsensowną organizację tych pomieszczeń. Tylko, drobnostka, czy to rzeczywiście aż taki problem postarać się o centralny zamek blokujący (skoro już nie żałowali na system dynamicznego przydziału numerów szafek, nawiasem mówiąc durny jak paczka gwoździ, bo naprawdę nie wiem, w czym taki system miałby być lepszy od poczciwych kluczyków)? Przecież w teorii nie jest niemożliwe, żeby na basen przyjechały trzy osoby na wózkach inwalidzkich, jedna zablokowała jedno przejście, druga drugie przejścia i trzecia już nie miałaby jak się dostać na basen (bo choć z szatni można się dostać na basen inną drogą, to jednak nie na wózku).

Na infrastrukturę oczywiście nie mogę narzekać; od momentu, gdy dostaliśmy się na basen, było już bardzo fajnie. Miałbym tylko drobne zastrzeżenie do systemu ostrzegania na rurach zjazdowych. W tym systemie jest zrobione tak, że nie wolno rozpocząć zjeżdżania, jeśli pali się czerwone światło (a pali się ono dotąd, aż poprzedni zawodnik wyjedzie z rury). Jeśli ktoś wjedzie przy czerwonym świetle, to włącza się alarm. No tak, ale ten alarm włączał się tam co chwilę i nie zauważyłem, żeby którykolwiek z ratowników podejmował interwencję, zwłaszcza że dwie ekipy ratownicze (po 2 osoby) siedziały akurat jak najdalej od miejsca wylotu rury (raz jedynie słyszałem, jak się któryś wydarł, bo trzech kotlesi wjechało do rury jeden po drugim). Wydawało mi się, że alarm jest chyba po to, żeby ratownik od razu mógł delikwenta złapać i wywalić go na zbity pysk (albo przynajmniej wlepić żółtą kartkę). No cóż, w Zambrowie postawiono na bardziej praktyczne rozwiązanie, mianowicie jest bramka, którą należy otworzyć przykładając pasek z kluczykiem, i po poprzednim zawodniku następne otwarcie bramki jest możliwe dopiero za ok. 20 sekund.

Po zakończeniu basenowania przychodzę do kasy, pani mi odbija na karcie abonamentowej cośtam i dopłacam za przedłużony pobyt żony.

Na koniec przychodzę po odbiór z powrotem mojej karty Benefit oddając kartę abonamentową, a tu pani z obsługi zaskakuje mnie w tym momencie bardzo trudnym pytaniem: a ile wykorzystał pan z abonamentu? No przecież powiedzieli panu w kasie abonamentowej? A ja mogłem tylko bezradnie rozłożyć ręce. Nie wie pan? No to następnym razem trzeba zapamiętać i podać...

Obawiam się niestety, że nie będę miał okazji, bo nie będzie żadnego następnego razu.

Tego 10 zł kaucji na poczet przekroczenia terminu oczywiście paniusia w kasie mi nie oddała. Nie wiem, co z tym dalej robić, będę jeszcze próbował interweniować. W zależności od tego, co się uda, zmienię później ten wpis.

Trzy stoiska. W jednym obsługują karty abonamentowe i karty płatnicze, w drugim karty Benefit, w trzecim jedynie przyjmują gotówkę. Przypominam, że nie jesteśmy już w XX wieku. Nie tylko, że tylko we wskazanych (i oddalonych od siebie schodami i kawałem korytarza) kasach można płacić kartą, ale na dodatek pani od Benefita nie może się dowiedzieć, ile abonamentu zostało wykorzystane. Podejrzewam zresztą, że właśnie dlatego nie dostałem z powrotem tych 10 złotych.

Jeśli ktoś ma ochotę przypomnieć sobie stare dobre czasy i zobaczyć, jak za komuny pomiatano klientem i pędzono go od okienka do okienka, jak bydło, a także zobaczyć, jak wygląda implementacja głupoty i nieudolności, polecam wpaść na Warszawiankę. Obiecuję niezapomniane wrażenia.

Jeśli jednak chcesz po prostu jak normalny człowiek pójść sobie popływać na basenie, znajdź jakiś inny. Ja chwilowo zresztą jestem na etapie szukania.

poniedziałek, 22 czerwca 2009

W kwestii formalnej: koreańska transkrypcja, "metoda x"

Co to za potwór



Transkrypcja pisma koreańskiego na znaki łacińskie. Jest ich aktualnie udokumentowanych bodajże 6. No to ja wymyśliłem siódmą.

Nie wiem, czy to się komu na co przyda, ale zamieszczam tak jako ciekawostkę.

Skąd to przyszło?



Transliteracja ta powstała w związku z ułatwianiem sobie nauki języka koreańskiego.

Uważałem bowiem, że uczenie się całkiem nowego pisma, a następnie na podstawie pisma, które się słabo zna, uczenie się języka, to trochę utrudnianie sobie życia na siłę. Nie wyobrażam sobie nauki języka, w którym nie potrafię niczego zapisać, ani zrobić tego wystarczająco szybko. Zapis wymowy z kolei mnie nie satysfakcjonuje, bo wyraz identyfikowany jest pismem, a nie wymową. Zresztą tylko mając ścisłe odwzorowanie jednego pisma na drugi można jakoś sensownie zapamiętać pisownię danego wyrazu również po koreańsku.

Wprowadzenie



Język koreański, podobnie zresztą jak większość języków z tego obszaru, jest językiem o ścisłym podziale na sylaby. Dlatego też i pismo, które opracowano, jest zorientowane na sylaby. Pojedynczy znak w piśmie koreańskim jest jedną sylabą, wedle schematu cv/cvc/cvcc (podobno jest też cvccc, ale te znaki jakoś nie znalazły się w unikodzie). W tym schemacie C=spółgłoska, V=samogłoska, a pierwsza spółgłoska może być również niewymawiana (konkretnie głoska "ng" jest wymawiana tylko w pozycji pobocznej i oczywiście jest wtedy jedyną poboczną).

W tej transkrypcji podział na sylaby jest mniej więcej oddany za pomocą litery x (której się nie wymawia). Głównie jednak litera x odwzorowuje niemą spółgłoskę początkową. Poza tym jest jeszcze używana do rozdzielenia ostatniej litery poprzedniej sylaby od pierwszej litery następnej sylaby, jeśli te dwie litery mogą również oznaczać jedną spółgłoskę (po ostatnich zmianach jednak praktycznie takie zjawisko już nie występuje, poza "ss"). Jeśli ktoś śledził również poprzednio ten artykuł, to ostatnie (i chyba ostateczne) zmiany utwierdzają literę x w jednej pozycji: rozpoczyna ona sylabę, która zaczyna się w wymowie samogłoską, niezależnie od tego, czy jest to pierwsza sylaba wyrazu, czy nie.

Poza tym najważniejsze różnice w stosunku do istniejących transkrypcji to są:

  • spójne przypisanie litery koreańskiej do litery (lub zespołu liter) alfabetu łacińskiego (jedynym wyjątkiem jest spółgłoska wymawiana jak 'ng', która jest zapisywana literą q w pozycji pobocznej - czyli dla niej akurat w pozycji wymawianej - oraz, w praktyce, literą x na początku wyrazu, czyli gdy jest niema)
  • jedna z ważniejszych, mocne 'o' zapisywane jest literą 'w' (a nie 'o', jak we wszystkich innych transkrypcjach), natomiast literą 'o' jest zapisywane słabe 'o'
  • dyftongi zaczynające się na 'u' zapisywane są również dokładnie tymi literami, których odpowiednikami koreańskimi są one zapisywane w oryginale


W ramach przykładów: stolica Korei Południowej to Soxul (Seoul), a siedziba firmy Samsoq (Samsung) mieści się w mieście Suxuon (Suweon, czasem Suwon). Aha, a najnowsza wersja przywódcy Korei Północnej nazywa się Zoqxil Gim (w polskiej transkrypcji Dzong-il Kim; piszę to w kolejności normalnej: imię, nazwisko - przypominam, bo większość niedouczonych dziennikarzy nie wie, że Kim/Gim to nazwisko). No i, dla ciekawostki, Hiondae to "Hyundai"...

Istniejący bałagan transkrypcji



Teoretycznie najsensowniej by było korzystać z oficjalnych transkrypcji (na Wikipedii jest opis wszystkich istniejących transkrypcji) tzn. transkrypcji poprawionej, obowiązującej od 2000 roku, którą zaakceptował rząd Korei (Południowej, oczywiście, czyli Hangug). Nie mogłem niestety z nich skorzystać z kilku powodów:

  1. Nawet tej pisowni nie stosuje się spójnie. Tak naprawdę w "potocznej świadomości" istnieją różne, niezgodne ze sobą, metody transliteracji pisma koreańskiego na łacińskie. W przypadku nazwisk, na przykład, stosuje się często mniej-więcej angielsko-fonetyczną transkrypcję, czasem z elementami ofjcjalnej (np. słabe "o" jest zapisywane czasem "u" - z angielska, jak w "up" - czasem oficjalnym "eo", "u" jest zapisane czasem przez "oo", czasem przez "u" - dojść z tym do ładu to nie lada wyzwanie)
  2. Za bardzo skupia się na wymowie, a za mało na oddawaniu istoty pisma (np. ta sama litera koreańska może być odtwarzana jako k lub g; od tego wolna jest metoda stosowana przez Ministerstwo Edukacji; ta z kolei używa jednak "gg", które nigdy nie jest wymawiane dźwięcznie). To nie ma znaczenia, że czasem te same litery wymawia się inaczej ze względu na ich pozycję; nie usprawiedliwia to innego zapisu łacińskiego tej samej litery koreańskiej.
  3. Jest podyktowana zwyczajami wymowy w języku angielskim, a język angielski akurat nie jest - wbrew pozorom - najlepszym przedstawicielem języków używających pisma łacińskiego, zwłaszcza jeśli się weźmie pod uwagę niejednoznaczność przekładania się w nim pisma na wymowę

I nie obchodzi mnie, co w tej sprawie mają do powiedzenia specjaliści od układania takiego pisma (np., że nie widać związku między b-p, d-t, g-k, który widać w piśmie koreańskim). Pismo łacińskie, które ma pomóc w nauce języka koreańskiego musi przede wszystkim odpowiadać w sposób spójny składni pisma koreańskiego. A to oznacza, że przypisanie litery koreańskiej do litery łacińskiej musi być spójne - np. 'b' zapisywane jest zawsze jak 'b', niezależnie od tego, czy ta spółgłoska jest pierwsza, czy ostatnia, podobnie 'l' jest zawsze 'l', nawet gdy wymawia się jak 'r'. W oficjalnych transkrypcjach możemy często spotkać zapis "셋" (x: "ses") jako "set", które jest, owszem, wymawiane "set", ale w tej sylabie jednak pierwszą i ostatnią literą jest "s".

Odtwarzanie podziału na sylaby



Przykładowe sylaby w języku koreańskim wyglądają mniej więcej tak:

  • ne (네)- jedna spółgłoska, jedna samogłoska, brak spółgłosek dodatkowych
  • bag (박)- spółgłoska, samogłoska, spółgłoska dodatkowa
  • xan (안)- spółgłoska niema, samogłoska, spółgłoska dodatkowa
  • dalg (닭) - spółgłoska, samogłoska, dwie spółgłoski (w takich wypadkach, gdy następna sylaba zaczyna się spółgłoską, wymawia się jedną z nich, ale nie ma reguły, którą)
  • xi (이) - spółgłoska niema, samogłoska


W powyższych sylabach nie użyłem głosek koreańskich zapisywanych dwiema literami łacińskimi (niestety muszą takie istnieć). Na szczęście są one łatwe do zapamiętania: są to pp, ph, tt, th, kk, kh, cc, ch, ss. Ponieważ p, t, k i c nigdy nie występują samodzielnie, a dodatkowo b, d, g i z nigdy nie występują w zespołach (np. w "haggiw" oba 'g' należą do różnych sylab), więc ewentualne wątpliwości mogą dotyczyć jedynie litery s; tutaj może wystąpić konieczność dla uniknięcia niejednoznaczności rozdzielenia liter, które należą do różnych sylab (konkretnie dotyczy to ss/sxs - np. issxsybnida).

W wielu wypadkach jawne rozdzielanie sylab nie jest potrzebne - wystarcza metoda znajdowania spółgłoski poprzedzającej samogłoskę. Np. w wyrazie "zamkkanman" podział na sylaby jest zam-kkan-man. Zawsze sylaba zaczyna się od dokładnie jednej spółgłoski, po której następuje samogłoska (jeśli spółgłoska jest niema, to w jej miejscu stoi x), więc jeśli mamy więcej spółgłosek przed samogłoską, to wszystkie wcześniejsze, niż ostatnia, należą do poprzedniej sylaby.

Jeśli mamy dwie samogłoski obok siebie, jest to zawsze dyftong lub pojedyncza samogłoska. Jeśli tak ma nie być, zawsze pomiędzy nimi jakoś stoi litera x. Przykładowo, w przypadku "ha-na-e" zapis będzie "hanaxe".

Tabela transkrypcji



No to może najpierw tabelka. Nie zapisuję tu samodzielnie samogłosek, żeby być w zgodzie z pismem koreańskim, lecz całe sylaby składające się tylko z samogłosek.
a ae e o i y w u
ia iae ie io iw iu
wa wae wi
ue uo ui yi


Teraz spółgłoski.

Jak już wspomniałem, mamy tutaj grupę: l, m/n/q, h oraz b/d/g.

Zacznijmy od pierwszych trzech:

l h m n q (tylko poboczna)


Serię b/d/g/z/s zapiszemy sobie tak:

b pp ph d tt th g kk kh z cc ch s ss


Wymowa



Przydałoby się też oczywiście jasno określić, w jaki sposób czytać tak zlatynizowane pismo koreańskie.

Najpierw mniej więcej do każdego, tak jak jest używane.

Samogłoski a, e, i, u, y czyta się tak samo jak po polsku, natomiast o i w to są odpowiednio słabe (lekko zbliżone do a) i mocne (wyraźne) o, a 'ae' to dźwięk - teoretycznie - podobny do angielskiego a (teoretycznie, bo wymowa w praktyce nie różni się specjalnie od 'e').

W spółgłoskach mamy m, n, h, s, które czyta się też normalnie jak po polsku, natomiast q to jest "n gardłowe", a 'l' wymawiamy l lub r (drgające) jeśli jest między samogłoskami. Z pozostałymi jest trochę bardziej skomplikowana sprawa.

Spółgłoski pojedyncze: b, d, g, z (z wymawia się jak c lub dz), wymawia się dźwięcznie jeśli są między samogłoskami; jeśli stykają się w jakikolwiek sposób ze spółgłoską, wymawiane są wtedy zawsze bezdźwięcznie (np. haggiw wymawia się "hak.io", a nie "hagio"). Wymawia się je również bezdźwięcznie w przypadku pierwszej litery wyrazu (np. "bioq" wymawiamy "piong"), oczywiście znów, jeśli poprzedni wyraz kończył się spółgłoską (lub poprzedniego nie było).

Spółgłoski podwójne: pp, tt, kk, cc, wymawia się zawsze bezdźwięcznie i z mocniejszym zaakcentowaniem. Właściwie do tego należy też zaliczyć ss.

Spółgłoski przydechowe: ph, th, kh, ch, wymawia się zawsze bezdźwięcznie, z lekkim przydechem. Przydech jest ledwie słyszalny; te głoski zresztą są najczęściej używane do zapisu obcych nazw, jeśli trafia nam się bezdźwięczna spółgłoska między samogłoskami.

(Tu uwaga: cc i ch wymawiamy mniej więcej jak c, w każdym razie nie mają nic wspólnego z 'k' i 'h').

Jedną dodatkową regułą jest to, że jeśli mamy samogłoskę 'i' po s, ss, z, cc, ch, to ta głoska jest zmiękczana (czyli np. 'si' czytamy tak, jak po polsku, "śi", podobnie "zi" wymawiamy "ći" lub "dźi"). Dotyczy to również "miękkich samogłosek", czyli ia, iae itd. (np. masioxiw wymawiamy jak po polsku, "masiojo:").

Oczywiście należy pamiętać o podziale na sylaby. Sylaba rozpoczyna się odpowiednim "wejściem" pojedynczej spółgłoski (albo i bez niej :), po czym następuje samogłoska. Spółgłoskę pierwszą czytamy normalnie (jak podano wyżej), natomiast spółgłoski po samogłosce (czyli poboczne) czytamy w odpowiednio zniekształcony sposób. Oczywiście jeśli pierwsza spółgłoska następnej sylaby jest niema, to wtedy ostatnia spółgłoska poprzedniej tak jakby wchodzi na jej miejsce. Jeśli jednak jest to normalnie wymawiana spółgłoska, to:


  • jeśli jest więcej, niż jedna, to czytamy tylko jedną z nich (ale nie ma reguły, czy pierwszą, czy drugą z nich)
  • poza q i l wszystkie dzielą się na trzy "grupy impulsowe": p (b, pp, ph), t (d, tt, th, s, ss, z, cc, ch, h) i k (g, kk, kh); w większości przypadków spółgłoski z tych grup, jeśli występują jako poboczne, są wymawiane tak jak przywódca grupy
  • jeśli poboczna spółgłoska poprzedniej sylaby i pierwsza spółgłoska następnej to jedno z s/ss/z/cc/ch, całość wymawia się jak ss (jeśli s/ss) lub cc (jeśli z/cc/ch) (górę bierze spółgłoska z następnej sylaby)
  • jeśli pierwsza spółgłoska następnej sylaby to m lub n, to grupy p i t upraszczają się do wymowy m i n
  • jeśli ostatnia spółgłoska sylaby to m lub n, wymowa może być zmieniona na m, n, lub q, jeśli pierwsza spółgłoska następnej sylaby to odpowiedino m/b, n/d lub g.
  • występują czasem i inne uproszczenia (np. "nalssi" wymawiamy 'najś.i")


Sposób wymowy pojedynczej sylaby również może się w wyrazach pochodnych w związku z tym zmieniać, np.: obsda [ot-ta], ale obsxoxiw [op-so-jo:], podobnie "zonthwqxwsxi" wymawiamy [tson-t'o:ng-o:-śi], ale "zonthwqxws" [tson-t'o:ng-o:t]

W tej pisowni dodatkowo - jeśli byłoby to jakiekolwiek ułatwienie - można stosować jeszcze następujące alternatywne zapisy głosek ae i e:


  • ae można też zapisywać jako ä, na wzór języka niemieckiego
  • w niektórych okolicznościach ae można zapisywać jako 'ai', a e jako 'oi'; jest to związane z transformacją głosek związaną ze sklejaniem i upraszczaniem wyrazów


Np. czas teraźniejszy od czasownika 'hada' - 'haexiw' można też zapisywać jako 'haixiw', co obrazuje pochodzenie tego wyrazu od pełnej (ale nieużywanej) formy 'haxioxiw' (oczywiście podobnie 'ixexiw' można by zapisywać jako 'ixoixiw', ale to akurat nie ułatwia :). Podobnie jak np. 'zoi' (ze), które pochodzi od 'zoxyi' (i podobnie 'nai' pochodzące od 'naxyi'). Można też na tej samej zasadzie odmieniać grzecznościową formę 'hasexiw' - 'hasoixiw'.

Motywacja



Spółgłoski w języku koreańskim można podzielić na następujące grupy (na razie będę pisał z wymową angielską, bo tak łatwiej zapisać):

  • nosowe: m, n, q (ng). Przy czym ostatnia jest wymawiana tylko jeśli jest poboczną; jeśli jest pierwsza to jest to spółgłoska niema
  • przydechowa (czasem niema, zwłaszcza w środku wyrazu): h
  • językowa: l (między samogłoskami wymawiana jak drgające r)
  • impulsowe: b, d, g, z, pp, tt, kk, cc, ph, th, kh, ch


Oczywiście użyłem tu zapisu, który stosuję, i zaraz objaśnię o o chodzi.

Spółgłoski impulsowe w języku koreańskim nie dzielą się tak, jak w większości języków europejskich, na dźwięczne (b, d, g) i bezdźwięczne (p, t, k). Właściwie to wszystkie one są wyłącznie bezdźwięczne, co najwyżej mogą być udźwięcznione (odwrotna tendencja, jak u nas). U nich podział jest na: pojedyncze, podwójne i przydechowe. Jeśli więc jakiekolwiek z nich wymawia się dźwięcznie, to tylko między samogłoskami i oczywiście dotyczy to tylko spółgłosek pojedynczych - podwójne i przydechowe są już zawsze wymawiane bezdźwięcznie. Dlatego właśnie, biorąc jako przykład pierwszą z nich, seria ta oznaczana jest odpowiednio jako b, pp, ph. Tu ciekawym przykładem może być "kkwchgage" (kwiaciarnia), które wymawia się, mniej więcej, "k.o:tkage".

No i na koniec, co do samogłosek. Występują normalnie samogłoski a, e, i, o, u, oraz y, które wymawiane jest raczej w zgodzie ze sposobem polskim lub starogreckim (stąd zresztą zapis, który w oficjalnym zapisie jest "ue"). Dodatkowo jest oczywiście "ae", które pewnie można by zapisywać takim ae na jednym znaku, oraz "w", które jest wymawiane jak mocne "o". Dyftongów istnieją dwie grupy: poprzedzone "i" oraz poprzedzone "u". Dla "i" są to więc ia, iae, ie, io, iw, iu, a dla tej drugiej (przy czym starałem się tu właśnie oddać największą zgodność z pismem koreańskim): wa, wae, wi, ue, uo, ui.

W zasadzie powinienem też zwrócić uwagę na elementy liter greckich, które częściowo posłużyły za inspirację - konkretnie wykorzystałem następujące:

  • y, czyli ypsilon - ale to można też uważać za inspirację polskim y
  • z, czyli zeta - w starogreckim wymawiało się jak "dz" (bezdźwięcznie wychodzi więc "c", zresztą taki zapis tego dźwięku występuje też w języku włoskim i niemieckim)
  • H, czyli eta. Mała wersja tej litery jest używana w IPA do zapisu dźwięku "ng". Niestety ponieważ w literach łacińskich nie ma jej sensownego odpowiednika, zastępczo używam tu litery "q". Jest ona w tym przypadku jakby miksem "litery IPA" oraz litery koreańskiej oznaczającej ten dźwięk.
  • w, czyli omega. Odmiennie, niż to wygląda na pierwszy rzut oka, jest to samogłoska i wymawia się ją jak mocne o.


Zanim zacznę teraz już pełny zestaw transliteracji, najpierw jeszcze dokończę wiadomości o samogłoskach i dyftongach. Samogłoski są zatem następujące:

a, ae, e, i, o, w, u, y

Przy czym, ae jest wymawiane bardzo podobnie jak "e" (niektóre źródła przeznaczone do czytania po angielsku przypisują "ae" do angielskiego krótkiego a), natomiast "o" jest "słabym o" (lekko zbliżone do a - po angielsku jest to krótkie "u", jak w "up"), a "w" jest "mocnym o" (jak w angielskim "all"). O "y" już pisałem, reszta jak normalnie.

W języku koreańskim, można powiedzieć, istnieją cztery grupy dyftongów, gdzie pierwszymi literami są kolejno: i, w, u, y.

Pierwsza, z i, to są ia, iae, ie, io, iw, iu

Druga, z w, to są wa, wae, wi (ostatnie wymawia się jak "łe")

Trzecia, z u: ue, uo, ui

No i ostatnia to jest dokładnie jeden dyftong, yi. Właściwie w wymowie jest zarówno bardzo podobny do zlepionych dźwięków "yi", jak i do australijskiego "ee".

Ok, teraz trzeba jeszcze zwrócić uwagę na składanie.

Nazwa państwa koreańskiego to 한국 (Hangug). Zwracam tu uwagę na "ng", które jest wymawiane oddzielnie jako n i g. W wyrazie 따뜻하다 (ttattyshada [t.at.yt-hada]) proszę zwrócić uwagę na podwójne t oraz "sh", w którym każda z liter należy do innej sylaby. Jawne rozdzielanie sylab jest konieczne z kolei w wyrazie 회사원 (hwisaxuon [wym. hłe-sa-łon]).

Parę słów jeszcze o tym, jak to się ma do oficjalnej transkrypcji.

Najbardziej istotna różnica jest w zapisie mocnego i słabego o. Wszystkie transkrypcje jak jeden mąż literą "o" zapisują mocne o, podczas gdy odpowiednio kombinują z zapisem słabego o - albo znaczkiem, "ŏ", albo za pomocą "eo". Nawiasem mówiąc, tak naprawdę tego "eo", mimo że wygląda na sensownie dobranego "pośrednika w wymowie" (choć nie wiem, czy "ao" nie byłoby lepszym), jest nie do "złapania" przez tych, którzy próbują to odczytać. Podobno zresztą jedną z inspiracji była francuska nazwa stolicy Korei, Séoul, którą według oficjalnej transkrypcji zapisuje się właśnie "Seoul". Oczywiście każdy odruchowo w tym wyrazie łączy ze sobą nie "eo", lecz "ou", dlatego wychodzi S-e-ou-l (zamiast zamierzonego S-eo-u-l) i stąd błędna powszechna wymowa [Seul], podczas gdy nazwa ta brzmi raczej jak "so-ul" (서울), no i w tej mojej transkrypcji, jak się można domyślić, zapisuje się "Soxul".

Najwięcej różnic istnieje w zapisie dyftongów zaczynających się na "u". Zresztą, tu kolejna ciekawostka: jest takie dość znane w Ameryce koreańskie nazwisko "Choi". Tzn. tak się to pisze. No i oczywiście wymawiają to "czoj". A tu zmyła - to się po koreańsku pisze 최 i wymawia się "cłe" (coś pomiędzy "cłe" i "człe"). W mojej transkrypcji jest to "Chwi". Ciekawostka ta jest właśnie przykładem stosowania dość popularnej, choć nieoficjalnej transkrypcji amerykańskiej (stąd dość powszechnie używana np. nazwa miasta "Suwon", które wedle oficjalnej transkrypcji powinno się pisać "Suweon", a w mojej transkrypcji jest to "Suxuon").

W mojej traskrypcji staram się spójnie stosować się do zapisu koreańskiego, a tu o tyle jest to ciekawe, że dyftongi zaczynające się na "u" istnieją nie wszystkie i nie we wszystkich kombinacjach (nie ma np. połączenia liter ㅜ oraz ㅏ; jest za to połączenie ㅗ i ㅏ, czyli 와). Tu nawet okazało się, że wybór "w" jako mocnego o było strzałem w dziesiątkę: dzięki temu można zapisać wa, wae i wi (와, 왜, 외) i w tym przypadku traktować "w" w sposób "angielski". W oficjalnej transkrypcji te litery zapisuje się jako wa, wae i oe (?). Tak samo, konsekwentnie stosuję "u" w tych dyftongach, gdzie występuje ono w zapisie: 워, 웨i 위 zapisywane są uo, ue i ui, podczas gdy w oficjalnej jest to weo, we i wi.

Konsekwencja w stosowaniu odpowiednich liter zgodnie z koreańskim pismem jest o tyle istotna, że bardzo łatwe jest przekładanie tego zapisu również w drugą stronę - na koreański (o tym zresztą twórcy różnych transkrypcji chyba zapomnieli).

Jak napisałem - zamieściłem to jedynie jako ciekawostkę. W nauce języka koreańskiego bardzo pomaga.

poniedziałek, 8 czerwca 2009

Polska demokracja = oksymoron

Wiem. Złośliwe. Ale to nie jest tania sensacja. To rzeczywistość.

W sumie, nie wiem, co to jest oksymoron. Z angielsko-łaciny to będzie gnijący debil. Coś w tym rodzaju. Nieważne.

Naszła mnie taka myśl, w związku z tym, że były ostatnio jakieś wybory. Do Parlamentu Europejskiego. Takie, czy inne, pamiętajmy że w naszym kraju obowiązuje ordynacja proporcjonalna, zatem kluczową rolę odgrywają tu nie kandydaci, ale zgłaszające ich komitety wyborcze. Oczywiście, jeśli zakładamy, że wyborcą jest każdy obywatel RP uprawniony do głosowania, to mamy następujący bardzo ciekawy kwiatek:

Art. 47.
Prawo zgłaszania kandydatów na posłów do Parlamentu Europejskiego mają partie polityczne oraz wyborcy.


Skoro wyborcy, to - poza pozbawionymi prawa do głosowania - właściwie wszyscy. Czyli na dobrą sprawę, każdy kandydat może sam się zgłosić, bez konieczności podcierania się jakąkolwiek partią polityczną, bo przecież sam jest również wyborcą (oczywiście nie do końca jest to takie proste, bo zgłosić nie można kandydata, a listę, a lista musi zawierać min. pięć nazwisk).

W każdym razie, wzór na przydział mandatów jest dość prosty (art. 127) :)


Państwowa Komisja Wyborcza dokonuje podziału wszystkich mandatów pomiędzy uprawnione komitety wyborcze w sposób następujący:

1. liczbę głosów ważnych oddanych łącznie na listy okręgowe każdego z komitetów wyborczych dzieli się kolejno przez: 1; 2; 3; 4 i dalsze kolejne liczby aż do chwili, gdy z otrzymanych w ten sposób ilorazów da się uszeregować tyle kolejno największych liczb, ilu posłów do Parlamentu Europejskiego jest wybieranych w Rzeczypospolitej Polskiej;

2. każdemu komitetowi wyborczemu przyznaje się tyle mandatów, ile spośród ustalonego w powyższy sposób szeregu ilorazów przypada mu liczb kolejno największych.

Jeżeli kilka komitetów wyborczych uzyskało ilorazy równe ostatniej liczbie z liczb uszeregowanych w podany sposób, a komitetów tych jest więcej niż mandatów do rozdzielenia, pierwszeństwo mają komitety wyborcze w kolejności ogólnej liczby oddanych głosów na listy okręgowe tych komitetów. Gdyby na listy okręgowe dwu lub więcej komitetów wyborczych oddano równą liczbę głosów, o pierwszeństwie rozstrzyga liczba okręgów wyborczych, w których na listy danego komitetu oddano większą liczbę głosów.


Dwa ciekawe wnioski można wyciągnąć z powyższego fragmentu. Po pierwsze, widać doskonale, że - mimo iż prawo jest definiowaniem reguł - prawnicy są na bakier z matematyką, i to nie tylko wyższą. Bo teoretycznie każdy, kto skończył 8 lat podstawówki (ci po reformie chyba jeszcze nie weszli), a w związku z tym już na pewno ten, kto skończył dowolne studia, powinien umieć zapisać ten punkt w następujący sposób:


Tworzymy ciąg wg wzoru a[i]=Z/i przy i = 1 do N, gdzie Z to liczba głosów oddanych na listy okręgowe kandydatów, a N - liczba wszystkich możliwych do uzyskania mandatów


Pewnie prawnicy by zaraz powiedzieli, że nie mogą prawa zapisać w ten sposób, bo muszą je umieć czytać również ci, którzy powyższego wzoru nie potrafią zinterpretować. Biorąc pod uwagę jednak to, jak zawiłym, a nawet nie zawiłym, tylko - powiedzmy wprost - nieprecyzyjnym i bałaganiarskim językiem jest pisane prawo, czego powyższa ustawa nie jest nawet najbardziej beznadziejnym przypadkiem, tego typu twierdzenia zakrawają na śmieszność nad śmiesznościami. Jeśli ten tekst ma być w efekcie dla kogokolwiek zrozumiały, to tylko dla debili, którzy nie są w stanie zinterpretować banalnego wzoru matematycznego, ani nie potrafią wypowiadać się tak, by być zrozumianym zgodnie z intencją (po prawdzie, ten tekst nie jest tak naprawdę całkowicie jasny dla nikogo, może poza tymi, którzy to pisali). Nie ma się zresztą czemu dziwić, skoro na studia prawnicze najczęściej przyjmuje się humanistów, którzy potrafią jedynie czytać literaturę i się nią zachwycać (na naukę porządnego wypowiadania się, składania zdań, wygłaszania wypowiedzi itd. oczywiście nie było czasu, bo trzeba było interpretować wiersze), oraz wkuwać na pamięć fakty historyczne wedle tego, co dana władza akurat postanowiła wtłoczyć ludziom do głów (nawiasem mówiąc dziwiło mnie kiedyś, po co komu egzamin z historii na prawo; odpowiedź jest prosta - ludzie z bardzo dobrą znajomością historii, przynajmniej w Polsce, to ludzie którzy są całkowicie niezdolni do rozwiązywania problemów, czy rozpracowywania reguł, natomiast są mistrzami we wkuwaniu na pamięć, a ta umiejętnośc jest w zawodzie prawnika najbardziej potrzebna). Gdyby na prawo przyjmowali ludzi po egzaminie z matematyki, a w szkole średniej dodatkowo uczono ich logicznego myślenia i precyzyjnego wypowiadania się, prawo byłoby zapisane w sposób jasny, czytelny i spójny, chociaż może współcześni prawnicy twierdziliby, że brzydki (nawiasem mówiąc, jest wiele zasad prawnych, które tworzyli inżynierowie siłą rzeczy, na przykład prawo drogowe - i te właśnie przepisy są, o dziwo, nawet jeśli głupie, to przynajmniej jasne, czytelne i spójne).

Dajmy zresztą spokój i wróćmy do wzoru, bo teraz właśnie zaczynają się schody. Wzór zapisałem, ale nie wiem, co dalej. Punktu 2, niestety, nie jestem w stanie zrozumieć. Jeśli w powyższym wzorze N jest liczbą wszystkich mandatów do zdobycia, to znaczy, że chcemy te N mandatów rozdysponować pomiędzy komitety wyborcze. Nie wiem jednak, co to znaczy "ile przypada mu liczb kolejno największych". Pomijając już fakt, że wyrazy ciągu (a nie szeregu, jak tu napisano, ale oczywiście nie wymagajmy zbyt wiele od prawników) i tak są posortowane malejąco, a więc są "kolejno największe" (oczywiście, żeby o tym wiedzieć, wystarczy po prostu mieć podstawową wiedzę o ułamkach, nie trzeba tego dodatkowo sankcjonować prawem), nadal nie rozumiem, co znaczy "przypada mu". Jak się domyślam, intencją tego zapisu było rozdysponowanie mandatów w ten sposób, żeby to oddawało proporcje głosów, jakie przypadają na kolejne komitety wyborcze. Jak się jednak mają wyrazy wspomnianego ciągu do procentu oddanych głosów w wyborach (tzn. - wiem, będzie to kolejno: 100%, 50%, 33%, 25% itd. zbliżając się asymptotycznie do zera), a konkretnie jak ma się to do reguły, że kto dostał więcej głosów, ma dostać więcej mandatów. Bo zaczynam mieć podejrzenia, że z tym rozdysponowaniem mandatów to coś jak z podatkiem progresywnym: im mniej komitet dostał głosów, tym bardziej rośnie szansa uzyskania mandatu. Co jeszcze ciekawsze, zaraz za punktem 2 mówi się o... zresztą zacytuję jeszcze raz, bo to bardzo ciekawe:


Jeżeli kilka komitetów wyborczych uzyskało ilorazy równe ostatniej liczbie z liczb uszeregowanych w podany sposób...


Nie jest ani napisane, co to znaczy, że komitety wyborcze "uzyskują ilorazy", ani nie jest całkiem jasne, o którą ostatnią liczbę chodzi. Oczywiście to drugie to najprawdopodobniej jest element a[N], czyli wartość Z/N (ilość głosów podzielona przez ilość możliwych mandatów). Tylko w tym wszystkim jest jeden problem. Zresztą, spróbujmy to sobie zobrazować: układamy listy wyborcze (wszystkich okręgów!) po kolei każdego komitetu wyborczego wedle ilości uzyskanych przez nich głosów. Mamy teraz drugą listę wartości, którą jest nasz ciąg a[i]=Z/i, który posiada dokładnie N wyrazów. Oczywiście jest to jedna z moich hipotez na temat tego, jak interpretować to prawo, która zakłada, że element ciągu jest równy mandatowi do zdobycia, więc raz przydzielony element ciągu jednemu komitetowi nie może być przydzielony innemu. I teraz bierzemy wyrazy ciągu, i przydzielamy odpowiednie wyrazy ciągu tym komitetom wyborczym, które się na nie kwalifikują. Nawet jeśli tak, nadal nie jest dla mnie jasne, np. dlaczego wyraz a[4] przydziela się komitetowi A, a nie komitetowi B. I co ma do tego liczba głosów uzyskanych przez te komitety.

Oczywiście możemy założyć inną hipotezę interpretacji tego prawa - wątpliwość oczywiście wynika z konkretnie tego sformułowania:


... liczbę głosów ważnych oddanych łącznie na listy okręgowe każdego z komitetów wyborczych ...


W poprzednim opisie założyłem, że użyte przeze mnie we wzorze Z to liczba wszystkich oddanych w ogóle ważnych głosów. Ale może "każdego z komitetów wyborczych" oznacza tutaj, że powyższą analizę należy wykonać po kolei dla każdego komitetu wyborczego oddzielnie, a nie na liczbę głosów w ogóle.

Ale wtedy sprawa jest jeszcze bardziej idiotyczna. Wychodzi nam coś takiego wtedy, że mając N mandatów do podziału każdy komitet wyborczy uzyskuje własny ciąg o wspomnianym już wzorze a[i]=Z/i, przy czym Z oznacza liczbę głosów uzyskanych przez ten właśnie komitet wyborczy. Ale nie wiem, co dalej, ani jak ma się ciąg utworzony dla tego komitetu do ciągów innych komitetów. Taka analiza zresztą wychodzi również dla komitetów, dla których mandatów w efekcie zabraknie.

Nie wiem, jakie jest rozstrzygnięcie. Nawet nie wiem, czy to już wszystkie przepisy określające sposób rozdzielania mandatów (podobno jest też jakiś "próg wyborczy", o którym wszystkie media paplały, ale w ustawie nie znalazłem o tym ani słowa - wiem, pewnie przeoczyłem).

Mam dla nauczycieli, a właściwie to nawet dla mediów, bardzo fajną akcję do zaproponowania. Mianowicie proszę utworzyć następujące zadanie:


W wyborach do parlamentu europejskiego wystartowało 5 komitetów wyborczych, każdy obecny w 20 okręgach i w każdym z nich wystawiający po 4 kandydatów. Po podliczeniu głosów komitety uzyskały następującą liczbę głosów: 1 - 1000000, 2 - 800000, 3 - 300000, 4 - 120000, 5 - 10000. Oblicz, ile mandatów zdobył każdy z komitetów wyborczych, kierując się wskazówkami z ustawy określającej sposób przeprowadzenia wyborów do parlamentu europejskiego.


Proponuję zresztą, żeby do tego zadania dzieci siadły razem z dorosłymi - może przekonamy się wtedy, czy idiotą jest ten, kto nie potrafi wykonać tego zadania, czy ten, kto podpisuje się pod powyższą ustawą.

Oczywiście, można zadać sobie pytanie, czy to nie prościej zrobić w ten sposób:

1. Kandydować może każdy, kto uzyska określoną ilość podpisów.

2. Na każdy okręg przypada N mandatów do zdobycia (w miarę możliwości należy tak zdefiniować okręgi, żeby każdy miał równą ilość mandatów, ewentualnie w kilku jedynie zrobić mniej o jeden, niż w pozostałych, jeśli jest nierówno).

3. Każdy kandydat kandyduje w dowolnym wybranym przez siebie okręgu. Kandydat pojawia się na liście okręgowej z imienia i nazwiska oraz niedokładnego miejsca zamieszkania (miejscowość, ulica).

4. Na każdy okręg robi się ranking kandydatów w kolejnoścli liczby oddanych głosów i pierwsze N (lub N-1, jeśli tyle przypada na okręg) z listy kandydatów otrzymuje mandaty.

Nie żeby to była moja propozycja ustawy, bo trzeba by to napisać bardziej oficjalnym językiem i uzupełnić o parę drobnostek. Chociaż uważam, że tekst ustawy powinien być co najwyżej trzykrotnie dłuższy, niż ten tekst powyżej - z ustawy, z której zacytowałem, jedna trzecia to pierdoły, a z pozostałej części 3/4 to standardowe sprawy, które powinny były być ujęte w jakichś bardziej ogólnych przepisach.

Nieważne zresztą. Ten powyżej sposób obliczania sposobu przydzielania mandatów jest systemem najbardziej sprawiedliwym - zebrałeś dużo głosów, dostaniesz mandat, zebrałeś za mało - nie dostaniesz. Nie ma żadnych progów wyborczych, partii politycznych (mogą sobie być, oczywiście, jeśli mają służyć promocji kandydatów i łączyć ludzi o wspólnych poglądach, ale względem prawa nie uzyskują one żadnych przywilejów). Taki system pozwala również kandydować każdemu i na dobrą sprawę jeśli umie skrzyknąć określonych ludzi, którzy pomogą mu prowadzić odpowiednią kampanię, może kandydować.

A co trzeba zrobić w Polsce, żeby móc kandydować? No cóż, w Polsce trzeba zapisać się do określonej partii politycznej. Niby można założyć swoją, oczywiście, są tacy szaleńcy, którzy to robią, na przykład ostatnio p. Declan Ganley. Oczywiście życzę mu sukcesów w jego szaleńczym pomyśle, choć uważam, że przyciągając największych wyrzutków politycznych, utworzył kolejnego "klona LPR", na którego pies z kulawą nogą nie zagłosuje. Dlatego trzeba zapisać się do jakiejś znanej partii politycznej, w chwili obecnej w zasadzie tylko PO, PiS i SLD, no dobrze, jeszcze PSL. Następnie trzeba się wkupywać w łaski prezesa, przeskakiwać kolejne szczeble, zwalczać konkurentów (oczywiście w wyścigu o łaski prezesa) i może kiedyś uda się dostać do ścisłego dworu, a zatem liczyć na jakieś ważne stanowisko.

Możesz być więc super menedżerem i specjalistą od zarządzania; możesz być wspaniałym, bezinteresownym społecznikiem, sumiennym pracownikiem i mistrzem w rozwiązywaniu trudnych problemów - i w dupe se możesz wsadzić te twoje wspaniałe cechy kandydata na burmistrza, na posła, na szefa komisji, bo zamiast ciebie to stanowisko obejmie karierowicz, za służbowe pieniądze kupujący skarpetki i krawaty, mający wszystkich swoich wyborców głęboko w dupie, a i wyborcy o niczym tak nie marzą, jak o wysłaniu go na zieloną trawkę, bo kiedy ty pracowałeś na swój wizerunek wśród ludzi, on łasił się do prezesa i jest nie do ruszenia. I to zresztą do kolejnego już, bo poprzedni zdążył już stracić poparcie wyborców.

W tej sytuacji pozostaje tylko zadać kluczowe pytanie: czy w takim razie wyborcy mają jakikolwiek wpływ na to, jacy ludzie będą rządzić Polską i ewentualnie jak to rządzenie będzie wyglądało? Odpowiedź jest aż nadto oczywista: nie mają żadnego wpływu na to, kto będzie faktycznie rządził, bo do sejmu pójdzie i tak tylko ten, kogo prezes puści, stanowisko w rządzie obejmie tylko ten, kogo zechce tam widzieć premier, a prezydent, który jest wybierany w powszechnych, bezpośrednich wyborach, tak naprawdę nie może nic. Prezydent w III RP może jedynie psuć, przeszkadzać władzy i robić zamieszanie - z którego to prawa, jak dotychczas, wszyscy prezydenci korzystali bez najmniejszych oporów. No, może pomijając Wałęsę, bo ten akurat prezydentował jeszcze za czasów "małej konstytucji"; Konstytucję III RP zatwierdził dopiero Kwaśniewski. Nawiasem mówiąc, to właśnie on skwapliwie podpisem pod tą konstytucją obciął sobie sam swoje prezydenckie jaja.

I tak właśnie wygląda ustrój polityczny w Polsce: oligarchia czterech największych partii politycznych plus prezydent z obciętymi jajami, a o tym kto naprawdę Polską rządzi można się po części domyślać obserwując sprawę zabójstwa Krzysztofa Olewnika.

Nawiasem mówiąc, wszyscy zwolennicy monarchii (tacy, jak np. p. Korwin-Mikke) powinni się przyjrzeć temu zjawisku trochę dokładniej, bo tak właśnie wygląda oligarchia, która jest tylko odrobinę inną formą monarchii. Jeśli ktoś nadal wierzy w to, że monarchia jest skuteczna, bo dobry monarcha potrafi doprowadzić kraj do dobrobytu, to niech przyjrzy się uważnie na to, jak wygląda dzisiaj rządzenie przez partie polityczne i prezesa partii, który trzyma tam faktyczną władzę.

Tak właśnie w Polsce wygląda ta cała "demokracja". Właściwie w cywilizowanych krajach nazywa się to "oligarchia".

niedziela, 7 czerwca 2009

Yellow pages: Czeski film o muzykowaniu

Właśnie natknąłem się na następującą ciekawostkę - nie podam szegółów, jak ktoś chce, niech sobie znajdzie na sieci. Nie są one istotne dla artykułu.

Sprawa wygląda tak: piątka nauczycieli muzyki (gry na różnych instrumentach) pracuje równocześnie na etacie w dwóch różnych szkołach muzycznych. Urzędnicy samorządowi stwierdzili, że jest to niezgodne z prawem. W związku z czym powiedzieli nauczycielom, że mają się zdecydować na to, w której ze szkół chcą pracować i mają dwa dni na zastanowienie.

Czy urzędnicy konsultowali się z ministerstwem? Nie no cóż, przecież urzędnicy nie będą się konsultowali z każdą pierdołą z ministerstwem - przepisy są jasne. Poza tym urzędnik nie wyobraża sobie, żeby nauczyciel mógł pracować łącznie 16 godzin dziennie i robić to wystarczająco efektywnie i bez straty jakości wykonywanej pracy. Poniekąd słusznie.

Od urzędnika padał również argument, że są młodzi ludzie, którzy chcieliby podjąć pracę w tym zawodzie i w związku z tym, że tamci trzymają miejsce, oni nie mają czego szukać.

A tu nauczyciel się wypowiada, że właściwie to wcale nie jest 40 godzin, bo tych godzin to w praktyce wychodzi ok. 18, więc dwa etaty można jednak pogodzić...

I ja tu czegoś w tej sprawie nie rozumiem.

Po pierwsze, nie słyszałem, aby istniały w Polsce jakiekolwiek przepisy, które zabraniałyby pracy na dwóch etatach równocześnie. Nie ma takich. Oczywiście podejmowanie pracy na dwóch etatach równocześnie jest dość trudne, choćby dlatego, że zwykle umowy o pracę są tak konstruowane, że jednoznacznie zakazuje się w nich pracy etatowej u jakiegokolwiek innego pracodawcy. Również, gdyby nie istniała taka klauzula w umowie, jest to wciąż dość trudne, bo zwykle godziny pracy są w większości zawodów dość sztywne i nie dałoby się po prostu być w dwóch miejscach równocześnie. Ale to wciąż nie zmienia faktu, że żadne przepisy tego nie ograniczają - jeśli istnieją jakieś ograniczenia, to mogą one wynikać tylko z charakteru wykonywanej pracy. Więc jeśli urzędnicy powołują się tu na jakieś przepisy, to przepraszam na jakie?

Po drugie, dlaczego urząd zwraca się w tej sprawie do nauczycieli, którzy w zasadzie w ogóle nie są stroną w sprawie? To nie ich problem, że ktoś chciał podpisać z nimi umowy o pracę - to problem pracodawcy, który na takie podpisanie umowy się zgodził.

Natomiast nikt jakoś, nie rozumiem dlaczego, nie zszedł na rzeczywiście niski poziom tej sprawy i nie zapytał, dlaczego w pracy, która teoretycznie jest na etat, nauczyciel przepracowuje 18 godzin??? Co więcej, przecież z ministerstwa nadeszła (do redaktorów, oczywiście, bo z urzędników nikt się tam przecież nie pofatygował!) odpowiedź, że jedyne, co tutaj nauczycieli ogranicza, to konieczność przepracowania 40 godzin. Jeśli oni przepracowują w obu szkołach po 18 godzin, to znaczy, że przepracowują łącznie 36 godzin, czyli nadal się "nie przepracowują" zbytnio... Co to w takim razie za umowa, co to za kontrola pracy, jeśli umowa jest podpisywana na etat (czyli 40 godzin tygodniowo!), a w praktyce tych godzin jest 18?

Mamy więc tutaj z jednej strony urzędników, którzy wydają decyzję wspartą jakimiś przepisami... chociaż tak naprawdę na żaden przepis się nie powołali. Kazali zdecydować się na coś nauczycielom, chociaż w rzeczywistości to mogą im skoczyć, bo nie zmuszą ich przecież do złożenia wypowiedzenia. Mogą najwyżej zmusić szkoły do wypowiedzenia im umów o pracę - te jednak będą się również przed tym opierały, tłumacząc nie bez racji, że jeśli oni odejdą, to trzeba będzie zamknąć szkołę, bo nie będzie miał w niej kto uczyć. A na przyjęcie "młodych, zdolnych, ale niedoświadczonych" się nie zgodzą.

I tu właśnie wszystko staje się jasne, jeśli się weźmie pod uwagę fakt, że właścicielem tych szkół jest gmina.

Po pierwsze, ultimatum postawili urzędnicy gminni, bo to gmina jest właścicielem szkoły, zatem w praktyce jej "sponsorem". Zresztą, sponsorem, czy nie, daje ona na nią pieniądze, a bezpośrednio żadnych zysków z tego nie ma. Bardzo chętnie więc obetnie budżety na obie szkoły poprzez nakazanie nauczycielom, żeby pracowali tylko w jednej szkole jednocześnie.

Po drugie, ponieważ będzie jednak trzeba zatrudnić jakichś nauczycieli, żeby szkoła miała rację bytu, więc pewnie trzeba będzie z braku laku zatrudnić tych młodych zdolnych (zapewnie znajomków urzędników gminnych - przecież chyba nikt się nie łudził, że chodziło o młodych zdolnych "z wolnego rynku").

Dla mnie najprostszym rozwiązaniem tego problemu oczywiście byłoby zatrudnienie wszystkich tych nauczycieli na pół etatu po 20 godzin tygodniowo w obu szkołach (tzn. przynajmniej zmiana ich umowy o pracę), oczywiście poza tą jedną zmianą na dokładnie tych samych warunkach. Mówię "rozwiązanie problemu", bo po czymś takim sprawy by nie było, bo urzędnicy gminni nie mieliby się już czego czepić. Nie wiem tylko, czy na pół etatu byliby oni w stanie dostawać takie same pieniądze, jakie dostają teraz na etat - i domniemam, że tu właśnie leży sedno problemu.

Czyli: jest sobie szkoła, w której kształcenie jest bezpłatne, szkołę sponsoruje gmina, gmina ma wytyczne z ministerstwa, gmina usiłuje ciąć budżet, szkoła nie ma dochodów ze swojej działalności, mimo międzynarodowych sukcesów jej uczniów, a na dodatek każdy oszukuje jak tylko się da: Dyrektor szkoły zatrudnia nauczycieli z dobrym wynagrodzeniem, żeby mieć u siebie dobrych fachowców i żeby szkoła w ogóle miała jakiś sens. Żeby móc im dobrze zapłacić, udaje, że zatrudnia ich na etat, a naprawdę zatrudnia ich na wielkość pół etatu, żeby można było sobie dorobić. Nauczyciel "dorabia" sobie więc w drugiej tej samej instytucji, która dokładnie tak samo oszukuje, że zatrudnia ich na etat.

Co by w każdym razie nie kombinować, jedno jest pewne: jeśli szkoła ma mieć sens i uczyć na sensownym poziomie, to musi móc dobrze zapłacić zatrudnianym fachowcom. Jeżeli gmina uważa, że jej taka szkoła do szczęścia nie jest potrzebna, to niech coś z tym zrobi (znajdzie sponsora lub kogoś, kto wie jak na tym zarobić, a może ewentualnie nawet sprzeda). Niestety nie w Polsce. Tutaj trzeba kombinować i wywracać do góry nogami, oszukiwać i kręcić. Tylko tak można tu do czegokolwiek dojść.

A potem dziwimy się, że z zapowiadanych "wielkich powrotów" z emigracji, i to w czasach, gdy w krajach europejskich jest recesja rzędu kilku procent, a Polska jest co prawda ledwo, ale jednak na plusie, zostało najwyżej 10% emigrantów, którzy zdecydowali się wrócić do kraju. A nawet i z nich większość myśli o ponownej emigracji. Większość po prostu twierdzi, że nawet w czasie kryzysu wciąż tam jest łatwiej znaleźć pracę, niż w Polsce. Gdyby zestawić to jeszcze z zapewnieniami pionierów wielkiej emigracji, że jadą tam tylko zarobić trochę kasy na mieszkanie w Polsce i wrócić...

Może więc dla tych nauczycieli muzyki jest jeszcze lepsze wyjście? Pewnie tak. Niedługo zresztą pewnie nie będzie się tu opłacało nikomu siedzieć niezależnie od zawodu, bo nawet zarobki rzędu kilkudziesięciu tysięcy złotych miesięcznie nie zrekompensują mi np. niemożności umówienia się na wizytę u lekarza w prywatnej przychodni w przeciągu dwóch tygodni, albo konieczności załatwienia tysięcy papierów w tysiącach urzędów w ciągu kilkunastu miesięcy, żeby sobie głupi dom postawić. Cóż, ja umiem pływać. Ale co z tego, skoro nikt mnie nie uczył pływania w kisielu.

środa, 1 kwietnia 2009

Yellow Pages: banda idiotów III RP

Tak. Najlepsza banda idiotów III RP: pp. Mazowiecki, Kwaśniewski, Niesiołowski, Napierniczak (Napieralski+Olejniczak - ostatnio rzadko występują oddzielnie, więc można ich traktować jak jedno). Że tak ich pieszczotliwie nazwę.

Pieszczotliwie, bo mógłbym ich nazwać inaczej - hipokrytami i łajdakami. To by było chyba gorzej, więc próbuję ich nazwać znacznie łagodniej, idiotami.

Innej możliwości nie ma. Jeśli ktoś zaprzecza faktom, na przekór faktom wypowiada całkowicie szurnięte tezy, to może albo mieć jakiś interes w tym, żeby komuś takie bzdury wmawiać (czyli jest łajdakiem), albo jest po prostu idiotą.

Jeśli by np. w telewizji ogłoszono, że ziemia jednak jest płaska, a ktoś nagle zaczął się wypowiadać, że przecież to oczywiste, że jest płaska, bo jak się patrzy, to żadnego zakrzywienia nie widać, to są dwie możliwości: albo ma interes w tym, żeby to ludziom wmawiać (może np. zamierza zedrzeć z ludzi kasę organizując wycieczki "na koniec świata"), albo po prostu jest idiotą.

Panowie idioci wspomnieni na początku właśnie skorzystali z okazji, że akurat się coś mówi o IPN, żeby natychmiast żądać likwidacji tej organizacji. To nie ma znaczenia, że akurat IPN niczego nie "przeskrobał". Ważne, że ktoś, kto napisał dość - podobno - głupią książkę o Wałęsie, pracował w IPN. Nieważne, że pracował w innym czasie, niż pisał, nieważne też, że nie pracował wcale jako historyk. Ważne, że pracował w IPN.

Celowo nie podaję ani nazwy książki, ani nazwiska jej autora, ani nazwiska promotora. Nie widzę powodów, by ich unieśmiertelniać, ani robić kryptopromocję wspomnianej książki.

Oczywiście swoją drogą dziwię się, że zarówno promotor, jak i ów student, nie dostali przykazania zamieszczenia "disclaimera", że - w związku z tym, że są pracownikami IPN - przedstawione przez nich materiały nie mają związku z pracą w IPN, ani żadna część pracy nad książką nie miała związku z IPN. IPN moim zdaniem powinien tego zastrzeżenia zażądać na zaś od wszystkich pracowników, których zatrudnia, nawet od sprzątaczki, i sumiennie podawać do sądu każdego, kto tego nie przestrzega (w szczególności, kto poprzez pominięcie tego zastrzeżenia narusza dobre imię instytucji).

Parę smaczniejszych kawałków oczywiście "przesiąkło" ostatnio na ten temat:


  • promotor pracował również w IPN (o czym już wspomniałem - można więc już snuć podejrzenia, dlaczego i student załapał się na fuchę)
  • student miał materiał napisany już wcześniej, ale dopiero teraz (tzn. w czerwcu 2008, bo wtedy się obronił) znalazł kogoś, kto by go wypromował
  • promotor jest właścicielem wydawnictwa, które wydało książkę (chyba jasne jest teraz, dlaczego zgodził się być promotorem)
  • promotor specjalizuje się w zupełnie innej dziedzinie, niż ta, z której promował studenta (zgoda na promocję, jak więc widać, coraz mniej wynika z jakichś merytorycznych przesłanek)


Ale to jest nieważne. W końcu słyszeliśmy zarówno p. Kurtykę, jak i p. Gontarczyka, którzy zastrzegają, że IPN z powstaniem tej książki nie ma nic wspólnego. To powinno wystarczyć każdemu myślącemu człowiekowi. IPN pojawia się w tej całej sprawie na gruncie zupełnie neutralnym. Czy ktoś potrafi sobie wyobrazić coś takiego, że pp. Mazowiecki, Kwaśniewski i Napierniczak (Niesiołowskiego staram się litościwie pomijać - powinien chyba przed wypowiadaniem się w kwestii likwidacji IPN sprawdzić, jaka jest "linia partii" w tej sprawie) nagle wypowiadają się, że należy Centertelowi (podaję tę nazwę jako abstrakcyjny przykład, a istniejącej nazwy używam tylko w celu lepszego unaocznienia sprawy) odebrać licencję na prowadzenie działalności, bo - powiedzmy - pracownik, który kradł użytkownikom hasła i sprzedawał oszustom, był pracownikiem Centertela. Nieważne, że firma Centertel nie tylko stanowczo się od tego pana odcina, ale nawet będzie chciała sądownie dochodzić odszkodowania. Nieważne by to było nawet gdyby ów pracownik nawet w swoich oszustwach nigdy nie wykorzystywał zasobów firmy. Był pracownikiem Centertela - to trzeba opierdolić Centertel. Na dokładnie takiej właśnie zasadzie opierdala się IPN.

Nie wspomniałem Wałęsy, chociaż, biorąc na logikę, powinien on się też znaleźć w tym towarzystwie. Nie do końca; jego akurat nie podejrzewam o łajdactwo, poza tym nie wypowiadał się wcale o IPN jednoznacznie negatywnie - mam wręcz wrażenie, że trochę się zreflektował. Wałęsa po prostu, jak to zwykle on, jest pyszałkiem, i zbytnio wierzy w swoje możliwości wypowiadania się na żywca bez przygotowania - gdyby miał trochę oleju w głowie, albo zatrudnił przynajmniej dobrego PR-owca, na pewno przyznałby się do tego, dlaczego kombinował z SB, dlaczego usiłował wydrzeć dowody na ową współpracę z archiwów SB, a już na pewno nie próbowałby akceptować jako swojego obrońcę kogoś takiego, jak Aleksander Kwaśniewski.

Przykład: ja nigdy w życiu nie spowodowałem wypadku samochodowego, w którym byłyby ofiary w ludziach. Co nie zmienia faktu, że spowodowałem jedną stłuczkę. To nic nie znaczy, to jest stłuczka, którą musi zaliczyć każdy kierowca, żeby się nauczyć, że oczy muszą być zawsze zwrócone w tym kierunku, w którym jedzie samochód. Ale co byście pomyśleli o mnie, gdyby ktoś doniósł publicznie (np. ten facet, któremu strzaskałem tylny zderzak - żeby było jasne, zapłaciłem mu ile sobie zażyczył i spisaliśmy umowę), że taka stłuczka miała miejsce, a ja szedłbym w zaparte i upierał się, że żadnej takiej stłuczki nie było? Gdyby facet pokazał wspomnianą umowę podpisaną przeze mnie, a ja rżnąłbym głupa, mówiąc że pierwszy raz ten papier widzę na oczy? Przecież powiedzielibyście - no daj spokój facet, głupiś czy co, przyznaj się, przecież nie jesteś rozbijaką, ani piratem drogowym przez jedną głupią stłuczkę, co ci zależy.

A Wałęsa właśnie w taki sposób cały czas szedł w zaparte. Przecież wystarczyłby jakiś średnio rozgarnięty PR-owiec, który by przeanalizował całą sprawę, sprawdziliby goście tylko co jest w aktach i jak najsensowniej się z tego wytłumaczyć, na pewno znaleźliby takie wytłumaczenie, że ludzie by to bez problemu kupili, a równocześnie wszystkim, którzy Wałęsę nazywają agentem, od razu wytrąciliby wszelką broń z ręki. No dobrze, byłem tym niby agentem, ale jak ja ich przecież wyruchałem!

Ale Wałęsa tak nie zrobił. To znaczy, w ostatnim czasie próbował mniej więcej to właśnie mówić, ale to już jest grubo za późno. I w ten właśnie sposób, aby tylko zaspokoić żądzę swojej pychy, zniszczył swój własny mit. A teraz niszczy go dalej, pozwalając by ktoś taki, jak Aleksander Kwaśniewski, który sprawował władzę w poprzednim systemie, o czym przecież wszyscy wiedzą i bez IPN, i który - cokolwiek by mówić o Wałęsie i Lechu Kaczyńskim - skompromitował Polskę na arenie międzynarodowej chyba najbardziej od czasu 89 roku, bronił go, żądając - swoim zwyczajem - likwidacji IPN.

Zwróbiłbym uwagę też w tej sprawie na inną istotną ciekawostkę. Mianowicie, cała sprawa, poza kuriozalną nagonką na IPN, wyłoniła taki, no, nie mowię czarno-biały, ale nazwijmy to czerwono-zielony podział sceny politycznej. Nie wiem, jak się sprawa dalej rozwinie i co będzie medialnie niedługo rozpowiadać PO, ale póki co wydaje się należeć do frakcji "przykrywaczy", co mnie nieco dziwi (przecież była takim zwolennikiem rozliczania się z przeszłością). Premier się zagalopował - dość dziwne, mając takich specjalistów pod ręką, albo to był wypadek przy pracy, albo... nie wiem. Niesiołowski mówił jednym głosem z Napierniczakiem. Na dodatek, ten przydupas Gosiewski zaczął mówić całkiem do sensu, co wprawiło mnie już w zdumienie (no, zajebiście, tylko dlaczego tak starannie ukrywał te talenty, kiedy był u władzy?). Jednym słowem: Jedynie PiS opowiedział się jednoznacznie za IPN-em, IPN jest posądzany o bycie wylęgarnią ludzi PiS-u, a Kwaśniewski, Mazowiecki, Napierniczak, Niesiołowski, Palikot i Tusk - opierdalają IPN. Nie ma żadnej merytorycznej dyskusji ani na temat IPN-u, ani na temat wspomnianej książki (o niej wypowiedział się tylko Gontarczyk i to bardzo oględnie - zbyt oględnie, żeby na podstawie jego wypowiedzi można było książkę rzeczywiście potępić). A ta banda idiotów nawet nie próbowała odnieść się do sedna sprawy, zresztą jakiego tam sedna, w ogóle do sprawy, która w jakikolwiek sposób jeszcze wynika z faktów, czyli do wspomnianej książki. Od razu podchwycili wątek IPN-u, tylko dlatego, że akurat pp. student i promotor mieli pecha być pracownikami, to znaczy, nie tyle oni, co IPN miał pecha ich zatrudniać.

Jedno w każdym razie rzuciło mi się w oczy: mamy po prostu ten czerwono-zielony podział, z którego nikt nie wynika, nikt niczego tu nie jest w stanie zmienić i tak, a równocześnie na sprawy istotne, od których zależą prawdziwe losy kraju, nikt z tych, o których wiadomo, że niby oficjalnie rządzą, nie ma żadnego wpływu. I w Polsce nawet nie wiadomo za bardzo, kto to jest.

Czasami cieszę się, że pracuję tam, gdzie pracuję. Praca i dom to w tej chwili jedyne dwa miejsca, gdzie można porozmawiać na takim poziomie, żeby nie dywagować o sprawach, które są oczywiste, tylko nazywać rzeczy po imieniu. Gdyby jeszcze nie to otoczenie między domem a pracą, które dusi mnie podatkami, gnębi zakazami, grozi samosądem i kpi w żywe oczy z prawa, byłoby już po prostu wyśmienicie.

piątek, 27 marca 2009

C++ i zasady: Potłuc o kant

Znalazłem takiego wpisa, którego autorem jest niejaki Łukasz Milewski. Znałem kogoś o tym nazwisku, pracował ze mną w poprzedniej firmie, choć mam wątpliwości, czy to ta sama osoba, bo tam się pisało wyłącznie w Javie. A ten widać jest specjalistą od C++. Trochę oczywiście nie do końca specjalistą.

Przeczytałem sobie te zasady i w najlepszym razie zaliczyłbym je do "intermediate C++", choć od pewnego czasu zacząłem snuć teorię "lewicowych poglądów w programowaniu". Wbrew pozorom bowiem, lewicowość nie jest rzeczą zarezerwowaną dla polityki, czy obyczajowości - w programowaniu istnieje również, a jakże.

Przykładowym "lewicowym" poglądem w programowaniu w C++ jest wymaganie, aby wszystkie metody klasy były wirtualne. Ale nie uprzedzajmy faktów... :)


Destruktory zawsze są wirtualne - niezależnie od przeznaczenia klasy. Co z tego, że po klasie nie będzie można dziedziczyć? Musisz się niepotrzebnie zastanawiać nad tym czy może kiedyś semantyka ulegnie zmianie i będzie trzeba dodać virtual. Dodanie virtual nic nie kosztuje i niczego nie psuje


Ależ oczywiście, że kosztuje, i to wbrew pozorom wcale nie mało.

Dodanie co najmniej jednej metody wirtualnej (również destruktora) powoduje konieczność utworzenia obiektu charakterystycznego klasy. Oczywiście jeśli destruktor jest trywialny, to obiekt charakterystyczny będzie wygenerowany raz na hierarchię (kompilatorowi wolno współdzielić większe części obiektów charakterystycznych spokrewnionych klas i dzieje się tak np. gdy klasa pochodna nie przesłoni żadnej metody wirtualnej z klasy bazowej) - ale to nie zmienia faktu. A jeśli robimy wirtualne destruktory do wszystkich klas, to zwykle też do małych struktur, nie przeznaczonych do dziedziczenia. Tu więc nie będzie możliwości współdzielenia obiektów charakterystycznych.

Prawda, oczywiście, że destruktor wirtualny ma znaczenie tylko wtedy, gdy używamy "delete". Wtedy bowiem istnieje kwestia tego, czy należy prowadzić wywołanie wirtualne, czy też nie. Obiekt bowiem można usunąć na dwa sposoby:


  1. zostaje usunięty jego obiekt nadrzędny
  2. na wskaźniku do niego zostanie wywołane delete


Nie ma innych sposobów. Inne sposoby są co najwyżej pochodną powyższych (np. dla zmiennej lokalnej obiektem nadrzędnym jest środowisko funkcji). Jeśli więc mówimy o klasie (strukturze), na której wskaźniku nigdy nie ma być wołane delete, to wirtualność destruktora nic nie znaczy.

Byłoby więc znacznie bardziej z sensem, gdyby zastrzeżenie było takie, że należy zrobić zawsze jedną z dwóch rzeczy:

  • destruktor musi być wirtualny oraz nierzucający (throw())
  • klasa ma sprywatyzowany operator delete


Przecież to takie proste. Deklaracja operatora delete podlega dziedziczeniu, więc nie będzie można usunąć delete'm także żadnej jego pochodnej. Po prostu kaplica. Jest to więc w praktyce, można powiedzieć, częściowy zakaz dziedziczenia: nie będzie można usunąć obiektu tego typu. Oczywiście to nie znaczy, że nie będzie go można utworzyć (choć oczywiście można również podobnie zablokować operator new).

W praktyce jednak w zupełności wystarczy jedna rzecz: wymóg, aby destruktor był wirtualny w każdej klasie, która posiada metody wirtualne. Większość kompilatorów oczywiście stosuje do tego odpowiednie ostrzeżenie. I jest to naprawdę w zupełności wystarczające rozwiązanie problemu: niewirtualny destruktor w klasie posiadającej metody wirtualne jest czymś mającym mało sensu (optymalizacja???), natomiast jeśli nie mamy metod wirtualnych - nie będzie to dziedziczenie w sensie obiektowym, a jedynie dziedziczenie w sensie C++ (tzn. przejęcie w klasie pochodnej definicji składowych z klasy bazowej).

Na szczęście faktycznie nic nie kosztuje wywołania destruktora w razie usunięcia jego obiektu nadrzędnego. Tam również w ogóle jakiekolwiek wywołanie zostanie pominięte, jeśli destruktor jest trywialny. Ale nie zmienia to faktu, że pozostaje koszt obiektu charakterystycznego, a także koszt obciążenia wprowadzanego do klas, które z tej klasy dziedziczą.

Przypominam, że C++ zawsze był tworzony zgodnie z zasadą "nie płać za to, czego nie używasz". Gdyby więc rzeczywiście jawne zadeklarowanie destruktora wirtualnego nic nie kosztowało, to w ogóle w języku nie istniałoby pojęcie wirtualnego destruktora - kompilator sam by pamiętał o ustawieniu destruktora na wirtualny w razie potrzeby (albo nawet w ogóle zawsze robił wszystkie destruktory wirtualne i tylko pomijałby wywołanie wirtualne, gdyby nie było takiej potrzeby). Na to się nie zdecydowano, prawdopodobnie dlatego, że kompilator mógłby nie umieć tego stwierdzić.

Niestety to założenie nie dotyczy wywoływania metod - w ogóle (tzn. nie ma takiej możliwości, żeby wywołanie metody wirtualnej uprościć do zwykłego wywołania lub inline). Przecież nigdy nie wiadomo, czy z danej klasy ktoś gdzieś nie odziedziczył. A tu proszę:


Wszystkie metody powinny być zawsze wirtualne. Jeżeli nie musisz pamiętać o virtual to bardzo dobrze... masz czas na inne rzeczy. (UPDATE: wszystkie w sensie, te od implementacji. Metody interfejsu raczej nie powinny być wirtualne).


Widzę, że facet czegoś tu nie rozumie.

Po pierwsze, jeśli jakakolwiek metoda jest wirtualna, to zostanie ona wywołana poprzez wywołanie wirtualne (czyli: z obiektu wyciągamy obiekt charakterystyczny, z niego z kolei wskaźnik na funkcję będącą implementacją metody i dopiero to jest wołane - oczywiście o jakimkolwiek inline zapomnij). To jest co najmniej dwukrotny koszt samego wywołania.

Po drugie, jeśli już chcemy tak dzielić na metody interfejsu i metody implementacji, to miejmy na uwadze, że w C++ istnieją następujące elementy w kwestii metod klasy:


  1. definicja implementacji. Jest to funkcja, która stanowi zestaw instrukcji, jaki zostanie wykonany w ramach wywołania funkcji
  2. definicja slotu. Jest to deklaracja, którą będzie można wypełnić swoją implementacją funkcji
  3. definicja interfejsu. Jest to deklaracja, która pozwala na wywołanie (w celu wykonania określonych czynności)


Możemy sobie te definicje odpowiednio upraszczać. Przykładowo, pojedyncza funkcja składa się wyłącznie z interfejsu i implementacji. Tak samo się dzieje w przypadku, gdy mamy zwykłą metodę klasy. W obu przypadkach zaś mamy do czynienia z podpięciem implementacji bezpośrednio pod interfejs. Fakt, że i w C++ i w innych językach obiektowych nie dostarczono oddzielnych definicji do implementacji i slotu, to oczywiście pewne ułatwienie dla użytkownika, ale zarazem powoduje, że wielu ludzi nie nie rozróżnia tych pojęć.

Metoda wirtualna składa się bowiem z trzech części: interfejsu, podpiętego do niego slotu, a dopiero do slotu podpiętej implementacji. To mniej więcej tak, jak byśmy w definicji metody zrobili tylko przekierowanie wywołania do slotu, oraz dostarczyli informację o tym, co jest wpięte do slotu w bieżącej klasie (chyba że to jest metoda abstrakcyjna, to wtedy do slotu nic nie jest wpięte).

Jeśli więc wprowadzamy sobie taki slot, to znaczy, że przewidujemy tutaj możliwość wpięcia sobie później przez kogoś innego w to miejsce własnej implementacji.

Więc nie ma czegoś takiego jak "metody interfejsu" i "metody implementacji". Interfejsem jest tutaj to, za pomocą czego można funkcję wołać, a implementacją jest to, co ma się dziać w przypadku wywołania. Tyle. Oczywiście, że istnienie publicznej metody wirtualnej powoduje równocześnie, że taka metoda staje się równocześnie trzema rzeczami (a przynajmniej dwoma, gdyby była abstrakcyjna): interfejsem wystawionym do wołania oraz slotem do podpięcia dowolnej implementacji.

Wiem, istnieje taka szkoła, żeby wszystkie metody wirtualne robić jako protected; jest to nawet niezła szkoła, aczkolwiek nie zawsze istnieje konieczność trzymania się tego wymagania. Oczywiście jest to o tyle dobra szkoła, że oddziela dwie rzeczy, które nie mają nic ze sobą wspólnego: interfejs do wywoływania oraz slot do podpinania. Różne elementy kodu mogą bowiem używać tego czegoś w różny sposób: jedni do podpinania, inni do wywoływania. Ustawienie metody wirtualnej jako protected i dorobienie do niej metody publicznej, która wywołuje ową metodę wirtualną, pozwala rozdzielić te dwa sposoby użycia tej metody, które tak naprawdę nie mają ze sobą nic wspólnego. W ten sposób twórca klasy bazowej ma możliwość wprowadzania np. dodatkowej kontroli do wywołania z poziomu interfejsu, nie ingerując w to, co ktoś (może w poprzedniej wersji) zrobił w klasie pochodnej.

Ale nie o tym była mowa. Ale w świetle tego wychodzi to coraz bardziej bez sensu. Jeśli bowiem stwierdzimy, że ok, dotyczy to tylko metod protected, to już z góry zakładamy, że będziemy robić metody protected z interfejsem zewnętrznym, który będzie tych metod używał. A przecież jeśli ktoś w ogóle nie robi metod klasy jako wirtualne, to tym bardziej nie będzie robił takiego sztucznego podziału!

Pamiętajmy też o dwóch szczegółach: po pierwsze, w C++ nie ma final, a po drugie, C++ zwykle nie jest kompilowany na maszynę wirtualną działającą jako JIT (jeśli już: rozwiązanie to ma sens tylko w aplikacjach uruchamianych na serwerze aplikacji, a do tego C++ jest rzadko stosowany). W pierwszym przypadku powoduje to, że każde wywołanie wirtualne będzie wywołaniem pośrednim (bo nigdy nie można założyć, czy ktoś czasem nie podał obiektu klasy pochodnej i nie przesłonił podanej metody), w drugim, że żadne wywołanie pośrednie nie będzie mogło być uproszczone.

To ostatnie zresztą ukazuje w pełni swoje wady, gdy dojdziemy do uruchamiania programu. Zbyt duża ilość metod wirtualnych w ogóle w aplikacji potwornie wydłuża czas uruchamiania programu (były w KDE prowadzone badania na ten temat). Spowodowane jest to koniecznością renumeracji adresów funkcji. Nie ma to żadnego związku z ilością funkcji, natomiast ma ścisły związek z ilością wskaźników do funkcji zapisanych na twardo w danych programu po kompilacji. Przykładowo, jeśli wyprowadzamy nową klasę B z klasy A, która ma 10 metod wirtualnych, przesłaniamy w klasie B tylko jedną metodę wirtualną. Ponieważ przesłaniamy co najmniej jedną metodę, to kompilator musi stworzyć dla klasy B oddzielny obiekt charakterystyczny, w którym 9 wskaźników do implementajci metod wirtualnych jest identyczne z tym z klasy A. To już powoduje powielenie istniejących 9 wskaźników dwukrotnie. Co się stanie, gdy takich klas, jak B, będzie więcej?

W Javie tego problemu nie ma dlatego, że zwykle kompilatory do tego języka wykonują kompilację JIT (oczywiście to powoduje równocześnie, że Java nie nadaje się do zastosowań innych, niż serwery aplikacji). To oznacza, że pewne części faktycznej kompilacji wykonują się po uruchomieniu, a to z kolei oznacza, że taka czynność może zostać wykonana przy znajomości całej hierarchii WSZYSTKICH klas, jakie wchodzą w skład uruchomionego procesu, a co za tym idzie, JIT wie na pewno, czy wywołanie danej metody na rzecz danej referencji jest wywołaniem efektywnie wirtualnym, czy nie. No i oczywiście istnieje też final, którego użycie wprost deklaruje, że nie może to wywołanie być wirtualne.

Pamiętajmy też, że C++ to jest język "wieloparadygmatowy", a nie "obiektowy". W C++ złożone struktury można programować na różne sposoby i przykładanie zbyt wielkiej wagi akurat do programowania obiektowego w C++ ma mało sensu.

Jeśli więc ktoś robi metodę wirtualną, to przewiduje podmianę implementacji - jeśli ktoś nie przewiduje podmiany implementacji w tym miejscu, to po co ma robić metodę wirtualną? Jest to kwestia designu - możesz chcieć, aby była, możesz nie chcieć. A że moja klasa będzie mniej użyteczna przez to, że dana metoda jest niewirtualna?

Momencik. Przecież jeśli ja piszę klasę i jej metody, to ja decyduję o tym, jak wygląda jej call flow. Dlaczego mam pozwalać każdemu kto popadnie na to, żeby się, za przeproszeniem, wpierdalał w mój kod? Jak mam zapewnić poprawność mojego kodu i zagwarantować właściwe zachowanie się programów używających mojej klasy, jeśli ktoś będzie się chciał wciąć w każde możliwe wywołanie w mojej klasie i zrobić mi burdel?

Przypominam również, że np. w Javie każda metoda jest wirtualna, ALE:

  • Istnieje final, które zabrania przesłaniania metody. Taka metoda zachowuje się jak zwykła metoda, jeśli jest wołana z klasy, w której jest dodane final (jeśli dodano to klasy, to wszystkie metody)
  • W Javie "private" implikuje "final".


Mówiąc bardziej ściśle: w C++ nie ma możliwości ani zakazania dziedziczenia, ani zakazania przesłonięcia metody. Java zatem pozwala, mając wszystkie metody wirtualne, na to, żeby wciąż przesłanianie metod było ograniczone tylko do wybranego zakresu (inna sprawa, czy w praktyce ktoś z tego w ogóle korzysta, ale pomińmy ten temat). Wymóg robienia wszystkich metod wirtualnymi w przypadku C++ odpowiada więc w Javie nieużywaniu final (a tym samym oczywiście private). Możemy to również porównać do polimorfizmu parametrycznego i wtedy dojdziemy do prawdziwego kuriozum: niech wszystkie argumenty funkcji i pola klas będą typami-parametrami wzorca...

Mnie, jako twórcy klasy, naprawdę szczerze wisi i powiewa, czy moja klasa będzie użyteczna. Ważne, żeby była używana w takim zakresie, w jakim ją przewidziałem do używania. Wymaganie, abym pisał klasę tak, żeby ktoś mógł sobie później kombinować, jak jej używać, jest po prostu nieprzydatne. O tym, że potem za to się płaci, już nie wspominam.


Nie używaj wyrażenia warunkowego (to jest to ? : ). Jeżeli będziesz musiał kiedyś dodać zagnieżdżony warunek, to gdy będziesz potem czytał takie zagnieżdżone instrukcje warunkowe prawdopodobnie stracisz dużo czasu.


Ależ oczywiście, że używaj. Nie mówiąc o tym, że jest to jedyna możliwość warunkowego zainicjalizowania zmiennej referencyjnej. Poza tym, nie zapominajmy w ogóle, że jest to wyrażenie - a jako takie potrafi sporo rzeczy, w odróżnieniu od instrukcji.

No, chyba że ktoś woli coś takiego:


template<class Value>
const Value& if_then_else( bool b, const Value& ifso, const Value& ifnot )
{ return b ? ifso : ifnot; }



Uważaj na niekompletne typu (tylko zapowiedziane). Niektórzy chcą być sprytni i zamiast include dają zapowiedź klasy. To może prowadzić do problemów, więc ja na to uważam. Typowym problemem jest zwolnienie pamięci po obiekcie wskazywanym przez wskaźnik niekompletnego typu. Jeżeli destruktor tego typu jest nietrywialny to nie zostaje wywołany. Tak na prawdę nie musisz nawet wiedzieć o tej sytuacji, jeżeli zawsze dostarczasz kompilatorowi wszystkich informacji jakich potrzebuje - w szczególności jeżeli nie oszukujesz go przez zapowiedź zamiast include.


I kolejna rzecz - gość w ogóle nie ma pojęcia, po co istnieją typy niekompletne. A właśnie dobra znajomość zagadnienia typów niekompletnych pozwala umiejętnie rozwikłać wzajemne zależności między dwoma modułami, jak również mocno oszczędzić sobie kompilacji. Co więcej, uważam że spartolili sprawę w bibliotece standardowej C++ poprzez niedodanie nagłówka <stringfwd>. Problem polega na tym, że "zapowiedzianej" wersji nie da się zrobić, bo string to jest typedef na basic_string<char>, więc trzeba zrobić zapowiedź basic_string i tylko tam można podać parametry domyślne. A przydałby się taki nagłówek choćby do tego, żeby fstream::open mogło przyjmować string. Przyjmowałoby się go przez const referencję, więc typ niekompletny by się nadawał.

Typy niekompletne jest to narzędzie do ucinania niepotrzebnych zależności między modułami, a tym samym oszczędzenie mnóstwa czasu kompilacji, pomijając już przypadki, gdy jest to konieczne. Fakt, że delete na tym działa i to działa źle uważam za defekt C++ i być może zostanie on usunięty - ale póki co ostrzeżenia kompilatora spełniają swoją rolę. Jedyne co poza tym robi to różnicę, to fakt, że nie da się użyć żadnego szczegółu typu, który jest niekompletny, ale przecież próba wykonania takiej operacji kończy się błędem kompilacji.

Nie jest wcale oczywiste, jak ten błąd kompilacji należy poprawić. Może należy zaciągnąć pełną definicję typu. A może raczej należy przenieść użycie tego typu do innego pliku, a w tym wstawić tylko typ niekompletny.

Jedno jest pewne - ci, którzy używają typów niekompletnych, to nie ci, którzy chcą być sprytni, tylko ci, którzy pewnie nieraz spędzili długie godziny na rozplątywaniu zależności.


Jedna klasa - dwa pliki. Zawsze rób dwa pliki - z interfejsem i z implementacją. Nawet jeżeli używasz szablonów. Wyjątkiem mogą być malutkie klasy, o których wiadomo, że nie urosną. Ludzie mają to do siebie, że łatwiej im analizować mniejsze kawałki (dlatego nie jest zalecane uczenie się poprzez wyłożenie mnóstwa książek na biurko - mózg boli na sam widok tej sterty).


Nie rozumiem tego zalecenia.

Ja nie tylko nie zawsze robię dwa pliki, ale nawet czasem na cztery klasy robię dwa pliki nagłówkowe i trzy pliki z implementacją, bądź trzy pliki nagłówkowe i jeden plik z implementacją. Niekiedy zdarza mi się pisać pełną definicję metody w klasie, najczęściej jednak nie widzę w tym sensu. Po prostu implementacje metod umieszczam w taki sposób, żeby łączyło je wspólne przeznaczenie. Jest rzeczą całkowicie normalną, że z dwóch różnych klas można wyróżnić trzy grupy metod i to całkowicie w poprzek klas.

A w przypadku szablonów to jest po prostu kuriozum. Przecież i tak wszystkie definicje w przypadku szablonów muszą być w pliku nagłówkowym. Ciekawe, że to tych "wspaniałych zaleceń" jakoś nie stosują się twórcy biblioteki standardowej C++.


Nie używaj delete. Dokładnie tak. Zamiast tego lepiej zastosować inteligentne wskaźniki (np. boost::shared_ptr). Po pierwsze nie trzeba pamiętać o zwolnieniu pamięci - ale trzeba określić kiedy powinna być zwolniona, dla własnej wiadomości. Po drugie delete ma w C++ dwie formy delete i delete [], o czym niestety wszyscy zapominają. Po trzecie delete nie sprawdza czy typ jest kompletnym. Po czwarte przy użyciu delete trzeba się niepotrzebnie zastanawiać czy ktoś nie potrzebuje jeszcze danego zasobu - kolejna możliwość pomyłki i okazja do zmarnowania odrobiny czasu.


No nie do końca. Pomijam już oczywiste pytanie "co w przypadku, gdy sam robię dla siebie jakiś specyficzny smart-pointer". Po drugie, nie wiem czy autor wie, że smart-pointery typu właśnie shared_ptr (dziś już std::tr1::shared_ptr) dają bardzo duży overhead na operacje zmiany zawartości wskaźnika. Pamiętajmy, że shared_ptr to jest wskaźnik "z przypinką" i jego implementacja jest dość złożona (znacznie prościej jest zrobić intruzyjny smart-pointer, ale intruzyjność oznacza, że trzeba odpowiednio zmodyfikować definicję klasy, która ma być trzymana przez taki smart-pointer, czyli inaczej, nie każdej klasy obiekt taki smart-pointer może trzymać). A ja, tak się składa, że robiłem pomiary czasowe programu z użyciem shared_ptr i obciążenie na jego przypisanie było o rząd wielkości większe, niż ta sama seria wykonana ręcznie z surowym wskaźnikiem. Pod względem wydajności bije go na głowę nawet odśmiecacz Boehma.

I znów ten typ niekompletny. Powtarzam: wystarczy sam fakt, że kompilator ostrzega.

I jasne, trzeba się zastanawiać, czy ktoś nie używa obiektu. Ciekawe. A w przypadku shared_ptr to już nie trzeba. Problem właśnie polega na tym, że jeśli wprowadzamy współdzielenie dostępu do obiektu, to jeszcze najczęściej dochodzą do tego kwestie związane z możliwością "podglądania" obiektu (czyli słabymi wskaźnikami). Bo sam fakt, że istnieje współdzielenie jeszcze nic nie znaczy; nadal istnieje odpowiedzialność za zniszczenie obiektu. Techniki reference-count są znane już od dawna przecież i w wielu miejscach stosowane - a i tak jakoś tak się dziwnie składa, że co rusz gdzieś trzeba sztucznie podkręcać licznik referencji, bo coś-tam się nie zgadza. Współdzielenie dostępu do obiektu nie jest niestety najczęstszym przypadkiem sposobu operowania obiektem; najczęściej tak naprawdę właściciel jest jeden, to właśnie współdzielenie dostępu do obiektu jest przypadkiem szczególnym.

Współdzielenie możliwości usunięcia obiektu to nie jest jedyny aspekt współdzielonego obiektu. Równie istotną sprawą jest możliwość modyfikacji obiektu i synchronizacja powodowanych tych zmian. Możliwość domyślnego współdzielenia właścicielstwa do obiektu (co oferują nam języki z gc) zwalnia nas zatem z konieczności ustalania nadzorcy obiektu, spychając jedynie jednak problem w inne miejsce.


Dokładnie poznaj wybrane inteligentne wskaźniki - często mają wady, które wynikają z samej konstrukcji. Typowym błędem są cykle utworzone przez takie wskaźniki. Wówczas jest wyciek pamięci. Dlatego ten element biblioteki zawsze trzeba dobrze poznać.


Ha! A więc: używaj zawsze shared_ptr... ale spodziewaj się problemów. :)

To ja mam lepszą radę: nie używaj shared_ptr :) A tak na poważnie: staraj się w miarę możliwości nigdy nie współdzielić obiektów. Jeśli już jednak istnieje taka potrzeba, nadal obowiązkowo utrzymuj hierarchię obiektów. Jeśli np. dwa obiekty muszą współdzielić inny, to niech to będą dwa obiekty, które nie wymieniają się żadnymi innymi danymi. Jeśli te dwa obiekty mają współdzielić więcej niż jeden obiekt, to niech zarządzaniem tymi obiektami zajmie się oddzielny obiekt. Również obiekty uczestniczące we współdzieleniu nie mogą same być współdzielone.


Nie używaj std::auto_ptr. Jeżeli poznałeś dobrze auto_ptr to wiesz dlaczego ;-P Ich polityka własności powoduje, że nietrudno o błąd. W szczególności można kopiować obiekty typu auto_ptr, ale wówczas oryginał traci ważność(!) - jest zerowany. Dodam tylko, że algorytmy STL-a używają kopiowania dość sporo...


LOL :)

Oczywiście, w C++0x należy już zrezygnować z auto_ptr na rzecz scoped_ptr, ale to nie znaczy, że auto_ptr jest bezużyteczny. Co więcej, na kompilatorze, który nie jest jeszcze zgodny (wystarczająco) z C++0x jedyny dostępny z takim fajnym ficzerem. Oczywiście, że posiada on wadę polegającą na niemożności współdzielenia, ale ta wada wychodzi już na etapie kompilacji, ponieważ obiekty auto_ptr nie spełniają koncepcji "kopiowalny" (wymaganej przez większość elementów STL). Wskaźnik auto_ptr jest za to wyśmienity do:

  • przytrzymania obiektów dynamicznych na czas, aż wszystkie operacje, które mogą potencjalnie rzucić wyjątkiem, zostaną zakończone
  • zwracania nowo uworzonych obiektów jako rezultat wywołania (zapobiegają niebezpieczeństwu wycieku pamięci w przypadku zignorowania wartości zwracanej)



Unikaj dziedziczenia wirtualnego. Gdy jest to możliwe, bo pominięcie virtual w tym przypadku może być czasami groźne w skutkach. Chodzi o to, że hierarchia dziedziczenia nie powinna być grafem (który nie jest jednocześnie drzewem). Jeżeli już jest to trzeba bardzo uważać na operator= definiowany automatycznie. Polecam spróbować jak to działa, to zobaczysz dlaczego lepiej tak nie robić.


Super :) Polecam do przeczytania następujący artykuł (mój oczywiście, obcych nigdy nie polecam :D): Multiple inheritance considered nice, w którym objaśniam dokładnie, kiedy dziedziczenie w C++ jest dziedziczeniem z punktu widzenia obiektowego. Jak się okazuje, dziedziczenie wirtualne ma tutaj spory udział, co więcej, właśnie dziedziczenie wielorakie, w którym jest ta sama klasa wprowadzona pośrednio przez dwie oddzielne klasy, podane równocześnie do dziedziczenia, to jest właśnie dziedziczenie niedozwolone z obiektowego punktu widzenia.

Mam więc znacznie prostszą poradę i to w sam raz w stylu Łukasza: unikaj dziedziczenia wielorakiego. Szczególnie, gdy nie rozumiesz, o co chodzi.

A tu trafia nam się ciekawostka dwóch kolejnych:


Asercje są dobre. Warto używać asercji. Pozwalają sprawdzić czy wywołanie metody faktycznie spełnia zadane warunki wstępne (ang. preconditions). Niejednokrotnie dzięki temu mechanizmowi wykrywałem błędy, które przeszłyby testy modułowe. Typową sztuczką jest assert(warunek && "Komunikat błędu") aby dostać trochę sensowniejszy komunikat niż tylko numer linii i nazwę pliku z błędem. Niestety nie można odpowiedniego tekstu tworzyć dynamicznie.


Słusznie.


Asercje są złe. Niestety asercje z C++ są złe. W przypadku błędnego warunku przerywają program. Wyobraź sobie, że grasz w grę komputerową i nagle aplikacja zostaje przerwana z komunikatem "assertion failed". Dlatego warto stworzyć własną funkcję asercji, która będzie rzucała wyjątek - przynajmniej można go potem złapać. Dodatkowo można dać dokładniejsze informacje o błędzie (np. że index = 5 a powinno być <4


No bo na tym właśnie polega rola asercji, żeby przerywać program i nie dopuścić do jego dalszego wykonywania się!

Asercje i wyjątki. Jasne. To chyba trzeba się w Javie wykąpać.

Asercja jest to sprawdzenie KRYTYCZNEGO warunku wstępnego funkcji. Krytycznego, to znaczy takiego, że jeśli taki warunek nie jest spełniony, to dalsze wykonywanie się programu nie powinno być możliwe. Dlatego asercjami nie można sobie szastać. Asercje służą właśnie do wysypania programu, bo mają oznaczać błąd, z którego nie można się już "odzyskać".

Jeśli ktoś mówi o tym, że miałbym grać w grę i nagle dostać komunikat "assertion failed", to chyba nie rozumie, że jeśli stosuje się asercje, to stosuje się również dwie oddzielne konfiguracje kodu, zwane "debug" i "release". I asercje tylko w trybie "debug" powodują wysyp programu, bo uważa się to wtedy za niegroźne, podczas gdy w trybie release sprawdzanie tego warunku jest ignorowane. Jeśli uważamy, że pozostawienie tego warunku jest zbyt ryzykowne również w trybie release, to w trybie release powinniśmy wykonać ODDZIELNE sprawdzenie i tym razem możemy się ewentualnie posłużyć wyjątkiem (oraz zaplanować na tę okoliczność sensowne recovery). W przypadku gry, dajmy na to, skoro już podano ten przykład, należy spróbować zebrać wzystkie możliwe informacje o bieżącym stanie, gdzieś go zrzucić, utworzyć środowisko od nowa, nałożyć zmiany i pozwolić kontynuować grę - użytkownik najwyżej zauważy spowolnienie, ale mimo wszystko przynajmniej może dalej grać.

A teraz czas na doświadczenia na żywo:


Innym razem nie było tak wesoło. Zostałem zapytany o slicing. Nie bezpośrednio lecz przez przykład w C++. W skrócie była klasa A i jej pochodna B. Była zdefiniowana funkcja foo z argumentem typu A. Ta funkcja w main była wywołana z argumentem typu B. Pytanie brzmiało co się stanie? Zastanów się...


Odpowiedź jest oczywiście banalnie prosta - przekazanie przez wartość obiektu klasy pochodnej B spowoduje utworzenie obiektu tymczasowego klasy A w celu przekazania go dalej przez wartość. Oczywiście, jeśli przekażemy tam obiekt klasy A, to do funkcji zostanie przekazany również obiekt tymczasowy. O ile ja sobie przypominam, jest to również konstrukcja, do której kompilator powinien rzucać ostrzeżenie. Zresztą nie jest to jedyny taki przypadek - dokładnie ta sama sytuacja istnieje w przypadku typów ze sobą nie powiązanych, mających jednak zdefiniowaną konwersję (albo domyślną, albo zdefiniowaną przez operator konwersji, albo przez jednoargumentowy konstruktor nie-explicit).

I do tego celu potrzeba było aż eksperymentów, żeby to stwierdzić? Ciekawe.

C++ nie jest pod tym względem wcale szczególny - tak jest w każdym języku, który posiada konwersje między typami wartości. Problem w tym szczególnym przypadku nie polegał na tym, że przekazano obiekt klasy pochodnej (bo skąd twórca klasy A mógł wiedzieć, że ktoś zrobi klasę B?). Problem polegał na przekazaniu klasy A przez wartość. A, jak to już gdzieś wspominałem, typy wartościowe nie mogą podlegać hierarchiom obiektowym. Oczywiście klasę, jeśli ma być typem wartościowym, najlepiej zabezpieczyć w podany sposób (czyli dając explicit do konstruktora kopiującego). Ważne jest jednak, żeby wiedzieć nie tylko to, że tak o po prostu przypadkiem nadzialiśmy się na "beznadziejne" mechanizmy w C++. Ważne jest, aby wiedzieć o podziale na typy wartościowe i obiektowe, że ten podział naprawdę istnieje, i że istnieją reguły używania jednych i drugich - opisałem to w innym artykule pt. Valuables and objectives.

I odpowiem od razu - oczywiście, operator = ma również tą samą wadę, a co gorsza, operatora= nie można zrobić explicit. Ale jest na to rada: należy zadeklarować alternatywny operator=, z typem template, który wywoła błąd. W C++0x jest nawet dodatkowe ułatwienie, przez co nie trzeba sztucznie wywoływać błędu:


A& operator=( const A& a ) = default;

template <class X>
A& operator=( const X& x ) = delete;



Ja, w odróżnieniu od Łukasza, z kolei, mogę dać gwarancję na poprawność mojego rozumowania. Zasada jest zresztą prosta: każdy konstruktor jednoargumentowy bez explicit jest równocześnie konstruktorem konwertującym, który sam z siebie ustanawia definicję konwersji z każdym, kto pasuje do typu argumentu (w przypadku konstruktora kopiującego - również domyślnego - oznacza to, że ustanawia ją z każdym obiektem pochodnym, ponieważ przyjmuje referencję do niego jako typ argumentu, a referencje i wskaźniki do klas pochodnych domyślnie konwertują się na te od klasy bazowej). Konstruktor konwertujący jest to jedna z możliwych zdefiniowanych konwersji; poza tym istnieją jeszcze konwersje "wbudowane" oraz konwersje definiowane operatorem konwersji (czyli operator X() zdefiniowany w klasie Y pozwala konwertować obiekt klasy Y na obiekt klasy X). Mógłbym nawet podać jakieś referencje w standardzie, ale nie chce mi się szukać :D.

Przestrzegam ogólnie przed takimi zasadami. To, co zacytowałem tu powyżej to trzymanie się sztywnego schematu podyktowanego faktem, że człowiek się na tym czy tamtym potknął. Tymczasem prawda może być zupełnie inna; potknięcie wynika niekoniecznie stąd, że zastosowane konstrukcję niezgodnie z przeznaczeniem. Wynika stąd, że nie do końca rozumie się określony mechanizm i nie wie się, że można go w określony sposób wykorzystać. Akurat C++ jest takim językiem, że bardzo wiele z jego właściwości można używać nie tylko niezgodnie z przeznaczeniem, ale nawet w sposób, o jakim się jego twórcom nie śniło. Jest to dla mnie zresztą dość ciekawa cecha wspólna z całkowicie odmiennym od niego językiem Tcl i chyba najważniejszy powód, dla którego lubię używać obu tych języków.

To nie znaczy, że C++ ma być językiem bez zasad. To znaczy, że aby używać określonych ficzerów z C++ należy mieć do tego zawsze jakąś konkretną logiczną "podkładkę". Taka podkładka wystarczy, aby zasady, podobne do powyższych, można było właśnie potłuc o kant.