Gruby perl

Radoslaw Zielinski radek w karnet.pl
Pon, 29 Lip 2002, 22:21:19 CEST


[[ Tomasz Kłoczko <kloczek w rudy.mif.pg.gda.pl> ]]:
> On Sun, 28 Jul 2002, Radoslaw Zielinski wrote:
>> [[ Tomasz Kłoczko <kloczek w rudy.mif.pg.gda.pl> ]]:
>>> Może by zxrobić tu jakeigoś małego wrappera o takeij samej nazwie który 
>>> uzywałby mana ? :)
[...]
> Robić takie rzeczy watrto po to żeby nie powielać pewnych zasobów. 
> Wszystkie te kłopoty znikną kiedyś o ile zacniemy używać manów czy ogólnie 
> dokumentacji instalowanych w systemie w xml.
> Zapewne taka pzreglądarka do man dobzre żeby miała wtedy pewne funkcje 
> perldoca :)

Tak czy inaczej, pieśń przyszłości.

>> Kolejny powód (oprócz tych, które podaję poniżej i podałem w poprzednim
>> mailu): to zmniejszy prawdopodobieństwo, że dany user będzie w modułach
>> grzebał.  Że zagryzie do śniadanka AutoLoaderem, poprawi CGI.pm, do
>> obiadku porównanie Mail::{Mailer,Sender}, na deser Symbol.pm, a po
>> kolacji jakaś kobyła typu Mason.  Nie chciałbyś być współodpowiedzialny
>> za spadek poziomu edukacji społeczności OSS, nieprawdaż? :-P [1]
> Wybacz lale tu nie ma związku miedzy tymi zreczami wprost. Istnieje o tyle 
> ze są pewne zwyczaje i o ile sie zmieną i np. dokumentacja bedzie 
> separowana od źródeł modułu juz w źródłach to zapewne sporej ilści ludzi 

Ale to jest *założenie*, nie przyzwyczajenie, żeby dokumentację trzymać
razem z kodem!  O to przecież w POD chodzi: żeby kod był jednocześnie
komentowany i dokumentowany.

Nie jest to tylko wynalazek Perla; ZTCW mechanizmy tego typu mają także
-- z większych -- C++ i Java.

I to jest dobre.  Czyżby trzeba było Cię do tego przekonywać? [1]


[1] Jeśli tak, zrób może mały research na własną rękę zanim odpowiesz;
    ludzie już sporo o tym napisali i trochę szkoda, zebyśmy wałkowali
    to samo po raz kolejny.

> na pewien okres to zamiesza. Niemniej jeszcze raz: postać źódłowa nie musi 
> i nie powinna mieć większego związku z pstacia instalowaną w tym i to że w 
> postaci źródłowej dokumentacja i źródła sa w jednym pliku nie powinno w 
> żaden sposób wpływać na to jak to bedzie wyglądać w postaci zainstalowanej 
> w systemie .. poprostu.

Niemniej jeszcze raz: postać źródłowa nie musi, ale powinna być
identyczna z postacią instalowaną tam, gdzie to tylko jest możliwe,
a zwłaszcza -- jak w omawianym przypadku -- bardzo potrzebne.

Dokumentacja powinna pozostać w ,,źródłach''; zwłaszcza wtedy, gdy robi
również za komentarz. [2]


Przykro mi, ale tego rodzaju autorytarnych stwierdzeń nie uważam za
argumenty.  Zwłaszcza, że cały czas tłumaczę Ci coś dokładnie
przeciwnego.


[2] A'propos: zwykłe komentarze też chcesz usunąć?
    Logiczną konsekwencją byłyby także wcięcia, nieprawdaż?

>>> [..]
>>>> Dobrze osadzone POD-y zastępują komentarze.  Bez nich, mam przechlapane;
>>>> nawet nie chcę sobie wyobrażać, ile dłużej zajmowałoby znalezienie
>>>> odpowiedniego kawałka kodu.
>>> Gdyby kod modułu był spleciony z podem w jakis sposób to bym zrozumiał .. 
>>> ale to jest poprostu jedno z dugim sklejona :)
>> Czy uważasz, że w takim LWP::UserAgent jest to sklejone?
> Może być i splecione ..

Zlepione, splecione, wplecione, zmiksowane...  Nieważne, jakiego
pogardliwego przymiotnika użyjesz; nie zmieni to faktu, że Plain Old
Documentation jest całkiem praktycznym i pożytecznym sposobem na trzymanie
dokumentacji w kodzie i jednoczesnego tego kodu komentowanie.

> to nie powinno mieć wpływu na to jak to jest 
> instalowane. Jeżeli występuje gzieś błąd to zwykle ściaga się postać 
> źródłową i na tejże poprawia sie co trzeba. Pzrez takie powiazanai 
> powstają włąsnie takei róne nieelastycznosci jak niemożność potraktowanai 
> dokumentacji globalnie niezaleznie od tego czy to jest dokumentacj do 
> perla czy czegokolwiek innego. Wiem z czego to sie nierze niemniej twórcy 
> zasobów perlowych także IMHo powinni patrzeć dalej niż na dystans własnego 
> czubka nosa dostosowując (tylko nieco) własne metody pracy do pewnych 
> ogólnych schematów które na granicy większych klas zasobów ciągnę sie 
> docieraja i ujednolicaja niż atomizują.

>>>> Druga sprawa: zdarza mi się podsyłać autorom patche, a do tego
>>>> potrzebuję oryginalnych wersji modułów.
>>> I tu posługujesz się na wypadek takeij operacji źródłowym pakietem :)
>> Tomku, grzebiesz w modułach Perla na codzień?
> Wcale.

Mógłbyś w związku z tym zrewidować swoją wypowiedź, zacytowaną powyżej?

Szczególnie interesuje mnie ten kawałek o ściąganiu postaci źródłowej,
bo z mojego doświadczenia w grzebaniu w ściągniętym z CPANu kodzie --
a liczę je w latach -- wynika coś zupełnie przeciwnego.

1. Po co miałbym ściągać ,,źródła'', skoro mam je w systemie?

2. Dlaczego miałbym tracić czas na rozpakowanie pakietu źródłowego
i szukanie odpowiedniego .pm (mogą być w różnych miejscach; MakeMaker
jest dość elastyczny), skoro mam go w standardowej lokalizacji?

3. Dlaczego chcesz mnie, pomiędzy innymi deweloperami Perla, zmuszać
do posiadania połączenia z Internetem w trakcie pracy?  To w ramach
przygotowywania kampanii reklamowej PLD i hasła ,,znakomita integracja
z Siecią'' w stylu MS? :->

>> Nie ma takiej możliwości, żebym wiedział, jak wygląda taki LWP::UserAgent
>> od środka, gdybym musiał do tego ściągać libwww z CPANu.
> "Obecnie" dodaj do powyższego

Nie rozumiem.  ,,Obecnie nie ma'', ,,obecnie wiedział'', ,,obecnie
wygląda'', ,,gdybym obecnie''...?

> a sie zgodże z Tobą :)

Ależ Ty się w tym wypadku nie masz zgadzać lub nie; tak po prostu
jest -- _ja_ nie wiedziałbym (a wiem), gdybym nie miał pod ręką.

>> Po prostu jeśli widzę coś spapranego, albo dokumentacja jest
>> niewystarczająca, albo chcę lepiej rozumieć, co się dzieje czy
>> wyprofilować swój śmietnik przy pomocy Devel::DProf (czy zobaczyć, jak
>> efektywne jest to, co poeta miał na myśli i czy wogóle była tam jakaś
>> myśl), zaglądam do modułu.
> Załóżmy że prerl dla przyśpieszenie operacji zacznie dawać możliwść 
> generowanai bajtkodu i tenże będzie się instalowało i używałao. Nadal
> będziesz chciał używać w postaci źródłowej z połączona dokumentacja czy
> będzieśz już raczje operował własnie na źródłach generując 
> bajtkod i dokumentację w manach w np. xml ?

W trakcie kodowania?  Ze źródłami.  _Muszę_ czytać cudzy kod i pracować
z nim; powody:

* te biblioteki są dalekie od ideału,
* pisuję kod, który ściśle z nimi współpracuje, tzn. od strony bebechów.

> Zauważ że od stanu obecnego do tego co nakreśliłem jest ciut, ciut i że
> nawet gdyby tego bajtkodu w tym przykłązie nie uwzględniać to ow schemat
> pracy z zasobami perlowymi i tak wymaga relatywnie kosmetycznych raczje
> zmian niż rewolucyjnych .. i to tylko dlatego że konkretne ttechnologie w
> tym i konwersja poda do xml juz istnieją, i nic tylko zacząć myśleć o tym
> jak tu to wszyetko spadowywac zeby nie zastanawiać się nad tym jak się
> sięga po dokumentacje do perla :)

Ja sięgam prosto: man dla całych stron, bo jest szybki i formatuje mi
dokumentację na całą szerokość terminala, perldoc -f dla konkretnych
funkcji z perlfunc(1), bo nie muszę po perlfunc(1) szukać.  Inni wolą
tylko perldoca.

> Widzisz to ?

Niespecjalnie.  Ty snujesz wizje (technologie, iksemele,
na-cholerę-komu-potrzebne konwersje ;-), ja piszę o rzeczach prozaicznych,
jak łatwość dostępu do kodu, przekładająca się na krótszy czas ->
mniejsze koszty programowania.

> Jeszcze raz: zmiana podejścia nie jest do wdrożenia momentalnie. Wymaga
> pewneg pzrygotowania, a zapewne pewne częci tych zmian mozna wykonywać 
> etapami. Możemy sie zastanawiać co i jak dobzre byłoby zrobić dowolnei 
> długo :)

Jak na razie, to ja nie widzę propozycji ,,zmian'', tylko psucia, które
znacznie utrudni mi życie.

>> Chcę widzieć wersję niezmodyfikowaną: żeby móc szybko się w tym połapać,
>> połatać _bez potrzeby posiadania połączenia z siecią_, żeby na innej
>> maszynie nie mieć zonka w stylu ,,szlag, ostatnio to inaczej wyglądało''
>> (to przykłady, znalazłyby się też inne powody, których sobie po prostu
>> w tej chwili nie uświadamiam).  Ba, chcę, żeby inni też taką widzieli.
>> Bo wtedy jest większa szansa, że 1) znajdą błąd, i 2) poprawią go, a na
>> tym ja -- razem z resztą użytkowników danego softu -- skorzystam.
> Na wschodzi maja takie ładnie przysłowie (w transkrypcji polskiej) 
> "prywyćka wtarojom naturom cieławieka" .. mniaje juz osób zna dobzre język 
> Puszkina więc pzretłumaczę: "Przyzwyczajenie drugą naturą człowieka".
> To co pzreskadza Ci tutaj w spojzreniu na to nieco inaczej to tak 
> faktycznie jakbyś się uderzył w klatę to .. tylko przyzwyczajenie :)

No dobra.  Walnąłem się w klatę.  Później, w nocy, w trakcie grupowej
próby doprowadzenia się do stanu upojenia alkoholowego, przypomniałem
sobie Twe słowa i zrobiłem to po raz kolejny -- żeby rozpatrzeć sytuację
z innego punktu widzenia.  Rano, na lekkim kacu, spróbowałem znów.
Później wybrałem się na basen i ,,uderzałem się w klatę'' -- na przemian
raz mokrą, raz spieczoną -- aż zauważyłem, że ludzie na mnie trochę
dziwnie patrzą; wtedy przestałem.

Wynik: przez cały czas zmieniał się tylko odgłos, a ja nadal uważam,
że to nie jest kwestia przyzwyczajenia.  To styl pracy, który zamierzasz
uniemożliwić nie proponując niczego w zamian.

Nie jestem pewien, czy przekonałem Cię już do tego, że postać źródłowa
jest potrzebna, więc kolejny przykład: klasy, dziedziczące cudzy kod.

W ten sposób napisany jest np. Apache::DBI, nawiasem mówiąc -- całkiem
niezły kawałek softu: dziedziczy po DBI, nadpisując swoimi metodami;
dla programisty jest przezroczysty, wystarczy załadować go przed DBI.
To jest przykład dla tego, o czym pisałem wcześniej jako o ,,współpracy
od strony bebechów.

Autor Apache::DBI *musiał* czytać kod DBI.pm.  Nie chcesz, żeby taki
kod powstawał przy użyciu PLD?

>>> To tak jakbyś chciał poprawiać bład w programie dostarczając wynik cmp z 
>>> konkretnej binarki :)
>> Nie, bo moduły Perla to nie binarki (poza XS).
> Co nie znaczy że wprowadznie takiej jasnej separacji de facto .. wiele ytu 
> zmienia :)

Moja znajomość języka polskiego nie pozwoliła mi na zrozumienie tego
zdania, niestety...  Możesz ująć tę myśl inaczej?

> [..]
>> A co przekonało Cię do uznania tego za sensowne?  Jakie są zyski?
> O zysku już wspomniałem. 
> Pzrez dażenie do ujednolicania zasobów dokumenytacji masz wiele zysków:
[...]
> .. i wiele innych które bendą mutacjami czy też konsekwencjami powyższego.

Pytałem o zyski z *wyrżnięcia kawałków POD z modułów*.

Jeśli chodzi o to, co podałeś: jasne, miło by było mieć jedno narzędzie
do całej dokumentacji i wszystko konwertowalne do wszystkiego, np.
DocBook, ale...  Ten problem mnie zupełnie nie zajmuje.  :-p  Mnie
osobiście nie przeszkadza konieczność używania perldoc -f do funkcji
z perlfunc(1), a man 3 cośtam dla funkcji z C.  Ba, zważywszy na to,
że występuje kolizja nazw, i tak będzie trzeba jakoś rozróżniać.

Natomiast bardzo zajmuje mnie problem aktualności dokumentacji.  Uważam,
że dokumentacja opisująca dany kod powinna się znajdować w tym kodzie,
tzn. np. dokumentację do modułów Perla należy pisać w POD.

Co innego dokumentowanie czegoś, co przy pomocy kodu można zrobić; to
się tak często nie zmienia -- jakieś tutoriale, FAQ czy inne whatever.
Ale też nie widzę powodu, dla którego nie miałoby się pisać tego w POD.
:->  Jest to szybkie, łatwe i przyjemne, a ponadto można takie dokumenty
czytać bez żadnej konwersji; w przypadku DocBook nie jest to już tak
bezbolesne.

> [..]
>> Tak wogóle, to nudzi Wam się?  Tyle jest pożytecznych rzeczy do
>> zrobienia...
> Gdyby było inaczje to zapewne wogóle byśmy i to obydwoje nie dyskutowali
> teraz :)
> Tak nudzi nam się i dlatego przecież robimy dystrybucję :)

No, można się nudzić i nudzić... :-)

>> Na przykład, brakuje jeszcze speców do wielu modułów.
> O tym wiedzą Ci co tego potzrebuja używać .. ja przykłdowo nic o tym nie 
> wiem .. więcej za bardzo wiedzieć nawet nie chcę, a i nawet nie muszę :)

Hmm, ciekawe stwierdzenie w kontekście przystosunkowywania się do tych
.pm'ów i wygłaszania autorytarnych sądów... :-/

>> SpamAssassina przydałoby się gruntownie przeczyścić; dziś np.
>> stwierdziłem, że nie da się zdefiniować własnej ścieżki do regułek --
>> tylko jedna z predefiniowanych...
> Z buildloga o tegoż:

Zaraz poprawię.

Cóż, póki siedzę na modemie, takie wpadki mogą sie zdarzać.

[...]
> zasłaniała tradycyjnym podejściem do zasad pracy z zasobami perlowymi. O 

To komentowałem już wcześniej.  Nie jestem z tych twardogłowych i
nie chodzi mi tu o ,,tradycję''; jeśli zobaczę z czegoś korzyść, to
to przyjmę.

Jeśli nie będzie mi przeszkadzało.

Tu: korzyść dla mnie zerowa, dla niezainteresowanych także (kto poza
perlowcami będzie czytał perlową dokumentację :-> ), a smrodu dużo.

> ile uznasz że ta kwestia jest do pewnego stopnai drażliwa/warta 
> przemyślenai o niewątpliwie pomożesz mi podpowiadajac jak taką operacje 
> pzreprowadzić możliwie małym nakładem zmian które dla typowego "perlojada" 
> bendą do pzrełknięcia :)

> .. i o ten mniejwiecej rodzaj myślenia i współpracy apelowałbym w tym co
> próbujemy robić wspólnie :)

Nie przyłożę ręki do czegoś, co uważam za złe; w tym wypadku to nawet
nie jest ,,bad'', tylko ,,evil''.

Wręcz przeciwnie: będę publicznie krytykował, szukał i wykorzystywał
błędy, organizował grupy sabotażystów i pikieterów; powiadomię prasę,
radio, telewizję, organizacje kościelne i feministki (spokojnie, już
ja im jakoś wkręcę, że to ich sprawa).

> Nie koniecznie wszystko musi wygladać dokąłdnie jak próbuje opisuywać bo
> opisuję konkretne sirodki techniczne .. niemniej jeżeli zdasz sobei sprawę
> z tego że owe sirodki dla mnie na przykąłd nie sa aż tak ważne wobec
> pewnychc wyżej położonych celół to o ile jesteś w stanie myśleć także
> przedewszytkim o celu to być może zaoferujesz inny sidek tecchniczny,
> który o ile będzie lepiej spełniał pewne warunki musi być zaakceptowany
> także i przezemnie :)

Jak to wyżej napisałeś, ,,przełknięcie'', jest w przypadku kastracji
.pm'ów niewykonalne. [3]

Inne środki techniczne znasz -- konwertowanie .pod'ów jest proste.


[3] A wogóle, jak Ty sobie wyobrażasz kwestię dostarczenia ,,źródeł''
    developerom Perla?  No bo przecież trzeba je jakoś dostarczyć,
    (propozycja ,,/usr/bin/wget i rozpakuj w $HOME'' wzbudzi raczej
    średnie uznanie) nie?  Że są potrzebne, chyba Cię przekonałem?
    Uwzględniając jedną z zasad PLD, ,,jeśli coś jest Ci potrzebne,
    dodaj to''...  No to jak: każdy pakiet perl-* dostaje automatycznie
    kolegę source-perl-*? ;->

> Tak czy inaczej: spokój i rozwaga to dobrzy doradcy. Tam gdzie w rozmowe
> zaczynają sie wkradac emocje o dobre rozwiązanie jest już conajmniej
> trudniej :)

Mam problem z zachowaniem spokoju -- przy świadomości faktu, że nie
dysponuję zasobami na builder bez Waszego ,,POD-kastratora'' -- gdy Ten,
Który Ma Głos odpowiada na moje argumenty w dyskusji w stylu ,,stary,
walnij się w klatę''.  Ale racja, panika jest nie na miejscu, coś wymyślę.

-- 
Radosław Zieliński <radek w karnet.pl>
[ GPG key: http://radek.karnet.pl/ ]
-------------- następna część ---------
Załącznik, który nie był tekstem został usunięty...
Name: nie znany
Type: application/pgp-signature
Size: 189 bytes
Desc: nie znany
Url : /mailman/pipermail/pld-devel-pl/attachments/20040626/2d56077d/attachment.bin


Więcej informacji o liście dyskusyjnej pld-devel-pl