DoVetru
Dalsi
Seznam
Predchozi
Autor: vitas (make love not war) on 'DoVetru'
Cas: Po 4.2.2008 0:05.55
Titulek: Re: Hloupy hloupy python

                                                                                 
Hlopy python bez typove kontroly.
 
Pripada mi, ze neco zatracujes predtim, nez to poznas a pochopis.
 
To je velice dobre mozne. Taky castecne proto jsem napsal tento zoufaly vykrik 
do tmy. Hlavne jsem si potreboval ulevit, ale v hloubi duse jsem dofal, ze mi 
nekdo prozradi jako to dela on. Bohumzel, zatim jsem k presvedceni nedosel. 
 
Po svem propadnuti Pythonu jsem si velmi rychle osvojil styly zvane 
duck-typing a EAFP (http://docs.python.org/tut/node18.html#l2h-46 oboji 
pod sebou). 
 
To pred kazdym zavolanim metody, nebo pristupu k promene objektu se poptas 
toho objektu jestli takovou metodu ma? Jestli chapu EAFP, tak tvrdi ze nez se 
zeptat programatora na povoleni, je lepsi prosit uzivatele o odpusteni, 
zajimave.
 
V idealnim pythonskem programu te typ promenne nezajima. 
V kazde metode, do 
ktere pomoci promenne prijimas nejaky objekt te obvykle zajima existence 
podmnoziny jeho vlastnosti. K tem primo pristoupis a pokud je objekt v
runtimu 
nema, vyvolana vyjimka se vys pouzije k informovani obsluhy nebo je
odchycena 
a vyuzita pozitivne.
 
 
Chtel bych vydet jak se snazis v idealnim pythonovskem programu nalez chybu
kdyz se snazis pochopit radek typu:
class C:
   ...
      ...
      self.html.body.first.content = 'nazdar'
 
Takze nejdrive se podivas, co asi tak muze byt self.html, v __init__ se proste 
nedozvis zadny hint, jakym type by mohl 'html' byt. Zacnes hledat tedy kde se 
vola C(), najdes promptne deset mist, ale proste zjistis, ze html je 
zase  html. Vyberes tedy nejakou konkretni misto a podivas se kde se 
vola tohle. Konecne zjistis, ze html by mohla (alespon v jednom miste) byt 
trida HTML. Ale tahle trida proste nema v nejake definici body, no bodejd byjo,
atribut se dodefinuje az za behu, podle vzoru z *konfiguracniho souboru*.
A tak dale, a tak porad, po hodince stastlive najdes co autor myslel tim 
'content' a jsi stastny, ze python ma duck-typing, a idealni program v pythonu 
nepotrebuje vedet typ. Ale nahodny kolemjdouci by za ten typ dal pozlacene 
sele. 
 
IOW: Proste metody predpokladaji urcite schopnosti u predavanych objektu. 
 
Ale z pouheho nazvu metody nemuze byt proste jasne, co vsechno ostatniho musi 
predavane objekty splnovat, aby byly takove jake autor ocekava. 
 
Metody se pak treba bez modifikaci daji pouzit k ucelum, ke kterym puvodne 
nebyly napsane. Pokud je promenna vhodne (a dostatecne obecne) nazvana a kod
dobre okomentovany, je to jeste lepsi. 
 
Na tento problem jsem narazil ve snaze proniknout do projektu trac, nemyslim 
si ze by byl nejak nabastleny, nebo spatne dokumentovany, ale proste autora 
nenapadalo, ze by nekdo mohl mit problem to co pise pochopit. Ale kdyz na to 
misto narazis 'uprosted vety pomoci grepu, protoze potrebujes 'neco rychle 
ohnout k obrazu svemu', jses z toho na dve hodiny v lese.
 
Obdoby pocit jsem mel pri pronikani do (jinak imho pomerne dobre ve zdrojacich
dokumentovaneho) projektu MediaWiki, na kterem bezi wikipedia (je sice v PHP, 
ale to je izomorfni).
 
Pripada mi to jako by nekdo vzal peclive rozebral vyhody a nevyhody 
asembleru a objektoveho programovani a z jedne z hromadek udelal python.
  
 
vitas
  @;;

Dalsi Seznam Predchozi


[ Domu | Prstik | O Piskovisti | Deticky | Nastenky | Koutky ]