[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