[python] Deferred output

Hynek Fabian hynek.fabian na firma.seznam.cz
Pátek Únor 12 13:50:37 CET 2010


matesfila (pátek 12 Únor 2010 10:44:20):
> No to ano, nejaké javistické predsudky mám, keď sa to tak dá nazvať. Ono
> je to ale predsalen tak trochu iný spôsob uvažovania, v skriptivacom jazyku
> oproti kompilovanému. Keď sa k tomu ešte pridá beztypovosť a moja snaha o
Beztypovost je jen další předsudek :-) Python je velice silně typový. Jenom ti 
to žádný kompiler pořád nepřipomíná:
>>> "a" + 0
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: cannot concatenate 'str' and 'int' objects

Jak vidno, interpret přesně ví s jakým typem má tu čest. Nejsnáz se na to 
narazí, když ti vystřelí oblíbený UnicodeDecodeError z něčeho, co jsi do té 
chvíle bez problému považoval za string. Zrada je v tom, že typ není vlastnost 
jména, ale objektu na který to jméno odkazuje. Jméno objektu není nějaká 
abstrakce překladače s vlastní typovou logikou, ale prostě jen nálepka na 
pointeru na objekt (a samo jméno je jen další objekt). Objekt má vždy typ, ale 
nikdo nevynucuje aby ta nálepka ukazovala na objekty stále stejného typu.

Filozoficky vzato je Python mnohem silněji typový než kompilované jazyky.
V C je typ jen iluze překladače, v Pythonu je to bytelný fakt.
(A Java je kočkopes obojího :-)

> funkcionálny štýl programovania, tak je to v podste už úplne totálne iné
> programovanie, ako v Jave  :-)
Velmi doporučuji následující stať, jsou tam pěkně popsané některé "filozofické" 
rozdíly mezi Pythonem a Javou:
http://dirtsimple.org/2004/12/python-is-not-java.html


Další informace o konferenci Python