Portál AbcLinuxu, 1. května 2025 22:34

Instant Hacking: český překlad

Instant Hacking, úvod do programování (v Pythonu) od Magnuse Lie Hetlanda, byl přeložen do češtiny. Připomínky jsou vítány.

29.3.2009 18:53 | Fluttershy, yay! | Zajímavý projekt


Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

Ilfirin avatar 29.3.2009 19:49 Ilfirin | skóre: 32 | blog: ilfblog | Liberec
Rozbalit Rozbalit vše Re: Instant Hacking: český překlad
Odpovědět | Sbalit | Link | Blokovat | Admin
Skvělá práce.

Sekce Cykly
for cislo in range(1,100):
...
Funkce range vrací seznam čísel ze zadaného intervalu (včetně prvního a vyjma posledního čísla... V tomto případě [0..99]).
[1..99]
Fluttershy, yay! avatar 29.3.2009 21:05 Fluttershy, yay! | skóre: 93 | blog:
Rozbalit Rozbalit vše Re: Instant Hacking: český překlad
Děkuji. Opraveno.
🇵🇸Touch grass🇺🇦 ✊ ani boha, ani pána
29.3.2009 21:44 hmm :-(
Rozbalit Rozbalit vše Re: Instant Hacking: český překlad
Odpovědět | Sbalit | Link | Blokovat | Admin

Dále, řádkům, které vypadají jako neco = cosi, se říká přiřazení. V případě sirka = 20 říkáme počítači, že od teď by se měla šířka rovnat dvaceti. Co znamená, že "šířka je dvacet"? Znamená to, že proměnná jménem "sirka" je vytvořena (nebo je opětovně použita, pokud již existuje) a je jí předána hodnota 20.

Tohle asi nebude chyba v prekladu, ale je to naprosto blbe, takze tohle asi nebude vhodna literatura k pythonu. Python se nechova jako treba Cecko a s promennymi a cisly pracuje uplne jinak.

Spravne je to tak, ze je vytvoren datovy objekt predstavujici hodnotu 20 a promenna/ukazatel s identifikatorem "sirka" (pokud neexistuje), ktery se nasledne nastavi tak, aby ukazoval na datovy objekt. Datovy objekt a promenna jsou v pameti nezavisle na sobe, promenne se nepredava  hodnota, ale pouze adresa datoveho objektu.

A jestli tam jsou takhle spatne a zavadejicne podany uz zaklady, tak je lepsi to ani necist, protoze to laikovi udela v hlave akorat gulas. Protoze od tohohle se odviji rada zajimavych vlastnosti Pythonu, ktere nelze pochopit, pokud si clovek mysli, ze v promenne je ulozena hodnota nikoli adresa datoveho objektu. Popis cehokoli muze byt zjednodusujici, ale nikoli nespravny a zavadejici.

29.3.2009 21:51 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
Rozbalit Rozbalit vše Re: Instant Hacking: český překlad
Za našich mladých let se rozlišovaly reference a ukazatele. To koukám už taky neplatí, že. A zrovna ta dvacítka klidně může být uložena přímo v proměnné, je to poměrně často používaná optimalizace :-) (Nevím jak v Pythonu.)
Ještě na tom nejsem tak špatně, abych četl Viewegha.
30.3.2009 09:28 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: Instant Hacking: český překlad
Za našich mladých let se rozlišovaly reference a ukazatele. To koukám už taky neplatí, že.
Za mých mladých let se teda reference a ukazatele nerozlišovaly. Basic na ZX Spectru měl čísla, řetězce, pole a to bylo všechno. Přímý přístup do paměti zajišťovaly PEEK a POKE, které měly jako parametr celé číslo. ;-)
When your hammer is C++, everything begins to look like a thumb.
30.3.2009 10:15 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
Rozbalit Rozbalit vše Re: Instant Hacking: český překlad
A no jo, já se s tím dostal akorát k přebarvování pruhů při now loading, takže mi to moc neutkvělo :-)
Ještě na tom nejsem tak špatně, abych četl Viewegha.
30.3.2009 11:44 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: Instant Hacking: český překlad
No já se v té době o moc dál, než za náhodné změny v paměti nedostal, takže jsi na tom líp. Ale po BASICu jsem dělal v assebleru a k ukazatelům se dostal až potom v Pascalu, proto mi to dodnes přijde jako docela nová a vysokoúrovňová věc. ;-)
When your hammer is C++, everything begins to look like a thumb.
30.3.2009 16:59 hmm :-(
Rozbalit Rozbalit vše Re: Instant Hacking: český překlad

Nemuze, protoze 20 je hodnota a Python s hodnotami vubec nepracuje, ten pracuje jen s datovymi objekty a i ta 20 je datovy objekt s radou atributu a metod, takze v promenne je pouze odkaz na ten objekt, jak jsem psal. Tady je videt, jak ten prelozeny clanek stoji za houby. Seznam atributu a metod se v pythonu zjistuje pomoci funkce dir(). S cislem 20 se to ma takto:

>>> dir(20)
['__abs__', '__add__', '__and__', '__class__', '__cmp__', '__coerce__', '__delattr__', '__div__',
'__divmod__', '__doc__', '__float__', '__floordiv__', '__getattribute__', '__getnewargs__', '__hash__', '__hex__', '__index__', '__init__', '__int__', '__invert__', '__long__', '__lshift__', '__mod__', '__mul__', '__neg__', '__new__', '__nonzero__', '__oct__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdiv__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__str__', '__sub__', '__truediv__', '__xor__']

 

A jdou delat i takovato kouzla:

>>> class X(type(20)):
    def __init__(self, val):
        type(20).__init__(self, val)
>>> x=X(1)
>>> x
1
>>> x.__class__
<class '__main__.X'>
>>> x + 2
3

 Prekryti metod uz asi ukazovat nemusim.

30.3.2009 17:15 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
Rozbalit Rozbalit vše Re: Instant Hacking: český překlad
Ale může, prosím vás, opravdu o tom trochu vím. Druhá věc je, že na pár dotazů do Googlu se mi nepodařilo zjistit, jestli se to v Pythonu opravdu dělá nebo ne (v Ruby třeba jo). Ale tipoval bych, že asi ne, když jsou na tom s optimalizacemi tak bídně, že teprve až koncem minulého roku objevili direct threading (nemá nic společného s paralelismem).
Ještě na tom nejsem tak špatně, abych četl Viewegha.
30.3.2009 17:25 hmm :-(
Rozbalit Rozbalit vše Re: Instant Hacking: český překlad

O Ruby nepisu a ani ho neznam a v Pythonu nemuze. Na rozdil od tebe to vim i bez googlovani, znam strukturu malych cisel ulozenych v pameti u CPythonu. Nutno podotknout, ze to je vec interpretu, nikoli jazyka, tudiz je nespravne mluvit o Pythonu, protoze jazyk Python ma nekolik ruznych interpretu, ktere maji ruzne optimalizace. A Python jako jazyk proste s hodnotami nepracuje, neco takoveho napsat je hloupost. Jestli v ruby takova optimalizace je, vsadil bych boty, ze pro programatora se stejne tvari tak, ze to nedela (za predpokladu, ze je takova specifikace jazyka), a ze programator v ruby s malymi cisly nepracuje jinak, nez s velkymi.

 

Co se tyce vykonu, ruby je pomalejsi nez Python, takze poznamky o bidnosti jeho optimalizace nejsou na miste, ne ve srovnani s ruby :-).

30.3.2009 18:11 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
Rozbalit Rozbalit vše Re: Instant Hacking: český překlad
Od začátku tvrdím, že to je možné jako optimalizace. Samozřejmě se to navenek pořád chová jako objekt, to je podstata optimalizací, že navenek nemění chování. Jestli v (C)Pythonu nemůžou používat immediate values, jejich problém :-) Nicméně jsi trochu pozapomněl na mou poznámku o rozdílu mezi referencemi a ukazateli – Python, pokud vím, má čistě referenční objektový model, a reference nemá význam adresy, nýbrž hodnoty (objektu) na ní uložené. Čili celá tahle debata nemá smysl.

Ruby jsem zmínil v závorce jako příklad, kde se tahle optimalizace používá, žádné srovnání jsem nedělal. Stejně tak bych mohl zmínit Lisp.
Ještě na tom nejsem tak špatně, abych četl Viewegha.
30.3.2009 18:20 hmm :-(
Rozbalit Rozbalit vše Re: Instant Hacking: český překlad

Jenze v tom clanku se pise o tom chovani na venek, ze se do promenne vlozi hodnota. V clanku se nepise o vnitrni implementaci, kterou beztak nelze popisovat ve vztahu k jazyku, ale jen k danemu prekladaci/interpretu konkretni verze. Mezi tim je rovnez potreba rozlisovat. Z tohoto duvodu nema debata smysl. A v pythonu se predava odkaz na objekt.

30.3.2009 18:43 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
Rozbalit Rozbalit vše Re: Instant Hacking: český překlad
Proto říkám, že reference má význam hodnoty. Dokud nezačnu onanovat s předáváním parametrů funkcím (metodám), je to v referenčním objektovém modelu jedno. Notabene u neměnitelných objektů.
Ještě na tom nejsem tak špatně, abych četl Viewegha.
30.3.2009 18:54 hmm :-(
Rozbalit Rozbalit vše Re: Instant Hacking: český překlad

Proto se o odkazech v pythonu mluvi jako o odkazech, protoze tyto nepredstavuji hodnotu, ale odkaz na objekt a protoze ani u obycejneho prirazeni to neni jedno.

30.3.2009 19:37 Milan
Rozbalit Rozbalit vše Re: Instant Hacking: český překlad

Já bych netvrdil, že ten článek "stojí za houby". Je určen pro začátečníky a tak jsem k tomu přistupoval.

Je tam spoustu věcí, ktaré tam chybí, ale pro první seznámení to stačí. Koho to zaujme, tak musí stejně studovat dále.

Jen mi tam vadí nepoužívat interpret. Většina vzorů je určena přímo pro interpert. Jen bych už nemluvil o 2.5 ale 2.6. Dále bych tam zmínil možnost testování a pokusů v ipython

 

30.3.2009 22:03 hmm :-(
Rozbalit Rozbalit vše Re: Instant Hacking: český překlad

Nejde o to, ze tam neco chybi, ale ze se tam uvadi veci, ktere nejsou pravda. To ze to je pro zacatecniky neni omluvou, spise naopak.

30.3.2009 22:17 AHAHA | skóre: 7 | blog: ZZZ
Rozbalit Rozbalit vše Re: Instant Hacking: český překlad

Asi ve treti tride vam rekli, ze nejde odmocnovat zaporne cislo. Prineslo by vam tehdy neco, kdyby vam rekli, ze podle pouziti nekdy delit jde a nekdy nejde? Popr. ze ma vysledek pouze v komplexnim a ne realnem oboru cisel? Podle me by vam to skutecne neco prineslo - zmatek v hlave.

Fluttershy, yay! avatar 30.3.2009 22:22 Fluttershy, yay! | skóre: 93 | blog:
Rozbalit Rozbalit vše Re: Instant Hacking: český překlad
Říká se tomu "lži dětem". Je to asi jako když člověka učí ve škole kvadratické rovnice a zatajují možnost více kořenů rovnice (na ZŠ) a existenci komplexních čísel (na SŠ). Nebo Newtonovská fyzika na ZŠ/SŠ. Prostě když se laikovi vyklopí hned celá pravda, laik zaječí a uteče. Proto je třeba mu nejprve "lhát" --- když se o problematiku nebude dále zajímat, bude mu tato zkreslená představa dostatečná pro jeho intelektovou hladinu stačit, jinak se dozví pravdu a prvotní záležitosti už řešit nebude. Ale napsat lepší úvod do problematiky (cílený na naprosté laiky)? Nikdo ti nebrání.
🇵🇸Touch grass🇺🇦 ✊ ani boha, ani pána
30.3.2009 22:42 Martin | skóre: 10 | blog: Nádraží Perdido
Rozbalit Rozbalit vše Re: Instant Hacking: český překlad
Ony se na některých středních školách (myslím teď gymnázia) zatajují komplexní čísla nebo se neproberou základní myšlenky speciální teorie relativity (základy jako Lorenzovy transformace apod.)? Já měl dojem, že je tohle normálně v osnovách. Aspoň do nás to teda na gypmlu tlačili (a byl jsem za to teda docela vděčný).
Fluttershy, yay! avatar 31.3.2009 07:08 Fluttershy, yay! | skóre: 93 | blog:
Rozbalit Rozbalit vše Re: Instant Hacking: český překlad
V jednom okamžiku se to zatajuje --- probírá se to dle osnov až třetím nebo čtvrtém ročníku.
🇵🇸Touch grass🇺🇦 ✊ ani boha, ani pána
31.3.2009 05:49 Petr Mach
Rozbalit Rozbalit vše timto chcete omlouvat pleteni si predavani dat hodnotou a odkazem? :-(
ssss
31.3.2009 05:40 Petr Mach
Rozbalit Rozbalit vše To se rozlisuje porad, ale ne u pythonu, ktery ma neco mezi tim.
sss
31.3.2009 05:43 Petr Mach
Rozbalit Rozbalit vše abclinuxu by si melo opravit web, na n810 nejdou psat komentare, txt p
sss
31.3.2009 05:45 Petr Mach
Rozbalit Rozbalit vše txt pole po sekunde zmizi.
ss
Fluttershy, yay! avatar 31.3.2009 15:32 Fluttershy, yay! | skóre: 93 | blog:
Rozbalit Rozbalit vše Re: txt pole po sekunde zmizi.
Zajímavé. Na N800 v pohodě. Není chyba u tebe?
🇵🇸Touch grass🇺🇦 ✊ ani boha, ani pána
30.3.2009 00:20 Vskutečnosti Saýc | skóre: 7
Rozbalit Rozbalit vše Re: Instant Hacking: český překlad
Takove podruznosti. Dulezite je -- testoval nekdo ten recept na salat?
Fluttershy, yay! avatar 30.3.2009 08:23 Fluttershy, yay! | skóre: 93 | blog:
Rozbalit Rozbalit vše Re: Instant Hacking: český překlad
Zatím jsem neměl odvahu. ^_^

K tématu: řekl bych, že pro zjednodušení... ale co, zkontroluji PEP, ovšem tu optimalizaci bych nevylučoval --- Python není Smalltalk.
🇵🇸Touch grass🇺🇦 ✊ ani boha, ani pána
30.3.2009 11:22 l4m4
Rozbalit Rozbalit vše Re: Instant Hacking: český překlad
Ve skutečnosti se datový objekt int s hodnotou 20 nevytvoří, protože integer je nemodifikovatelný a integery representující malá čísla existují furt, aby se nemusela pořád vytvářet a rušit, takže se na něj jen odkáže.

A tím bylo zmatení dokončeno...
30.3.2009 16:41 hmm :-(
Rozbalit Rozbalit vše Re: Instant Hacking: český překlad

Z hlediska datove abstrakce vytvori. To ze datove objekty malych cisel uz jsou vytvorena predem (a dokonce jsou ulozenu v jiste kompaktni forme) je pro zacatecnika nezajimava optimalizace, ktera pro chapani toho jak jazyk funguje neni dulezita. Ale je nutne pochopit, ze to cislo neni hodnota, ale datovy objekt kdesi v pameti (datovy OBJEKT, tedy i s prislusnym rozhranim) na ktery ta promenna ukazuje. A to je pro chapani toho jazyka velmi dulezite. V pythonu se nikdy nepredava hodnota, pracuje jen s odkazy na datove objekty.

Ilfirin avatar 30.3.2009 16:59 Ilfirin | skóre: 32 | blog: ilfblog | Liberec
Rozbalit Rozbalit vše Re: Instant Hacking: český překlad
pro chapani toho jazyka velmi dulezite
Není to důležité ani trochu.
Článek je úvod do programování a v tom případě skutečně důležité je, že když "a = 5" a "b = 10" tak "a + b == 15".
30.3.2009 17:05 hmm :-(
Rozbalit Rozbalit vše Re: Instant Hacking: český překlad

Je to dulezite, protoze ani v uvodu v ramci zjednoduseni nelze poskytovat nepravdive informace. Je nebetycny rozdil mezi tim neco zjednodusit a psat nesmysly. Toho si musi byt kazdy autor/pedagog vedom.

Fluttershy, yay! avatar 30.3.2009 17:10 Fluttershy, yay! | skóre: 93 | blog:
Rozbalit Rozbalit vše Re: Instant Hacking: český překlad
Co jsi napsal ty?
🇵🇸Touch grass🇺🇦 ✊ ani boha, ani pána
30.3.2009 17:16 hmm :-(
Rozbalit Rozbalit vše Re: Instant Hacking: český překlad

To neni dulezite.

30.3.2009 17:18 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
Rozbalit Rozbalit vše Re: Instant Hacking: český překlad
Jasně že lze, běžně se to dělá třeba ve fyzice, než se dojde k teorii relativity :-)
Ještě na tom nejsem tak špatně, abych četl Viewegha.
30.3.2009 17:32 hmm :-(
Rozbalit Rozbalit vše Re: Instant Hacking: český překlad

Proto ji taky prakticky nikdo nerozumi :-).

Ilfirin avatar 30.3.2009 17:19 Ilfirin | skóre: 32 | blog: ilfblog | Liberec
Rozbalit Rozbalit vše Re: Instant Hacking: český překlad
To tvrzení v tom článku není zcela nesmyslné a nepravdivé. Když napíšu "sirka = 20" zkutečně vznikne cosi, co má proměnný obsah. A já jsem opravdu vložil hodnotu 20 (tedy ne objekt int(20), ne řetězec "20" ale hodnotu. A zavoláním té proměnné tu hodnotu získám, ne objekt, ne řetězec...

Nic ve zlém, ale já být začátečník, číst tento tutoriál pro začátečníky a narazit na vaše vysvětlení podložený tímto příkladem, tutoriál okamžitě zahodím jako nepoužitelný.
30.3.2009 17:28 hmm :-(
Rozbalit Rozbalit vše Re: Instant Hacking: český překlad

Ja to zde nevysvetluji pro zacatecniky, to je snad zrejme, ne?

A vy jste opravdu nevlozil do promenne hodnotu, dokonce ani objekt ani retezec. Vlozil jste odkaz na objekt. A mimochodem, promenna neni callable a nevola se :-). Volaji se jen nektere urcite datove typy a int mezi ne nepatri.

30.3.2009 17:37 hmm :-(
Rozbalit Rozbalit vše Re: Instant Hacking: český překlad

Ted se sam musim opravit. Volaji se jen instance nekterych datovych typu a datove objekty typu int mezi ne nepatri. Datove typy samotne jsou volatelne.

30.3.2009 18:16 l4m4
Rozbalit Rozbalit vše Re: Instant Hacking: český překlad
>>> sirka = 20
>>> id(sirka)
18777152
>>> sirka = 10
>>> id(sirka)
18777392
Technicky vzato je položka v tabulce lokálních proměnných modifikovatelné místo v paměti. Ovšem v předchozím příkladu není žádný rozdíl mezi tím, když se v novém přiřazení sirka zničí a vytvoří znovu, a když se ta tabulka jen aktualizuje. Ani být nemůže, protože nevznikl žádný modifikovatelný objekt.
30.3.2009 13:46 michael911
Rozbalit Rozbalit vše Re: Instant Hacking: český překlad
Odpovědět | Sbalit | Link | Blokovat | Admin

Preco sa pri preklade nepouzil python3? Za cas, ked sa uplne prejde na python 3, tak niektore konstrukcie z py2 budu zacinajuceho programatora velmi miast, napr.: print "Hello world!", atd...

Saljack avatar 30.3.2009 14:43 Saljack | skóre: 28 | blog: Saljack | Praha
Rozbalit Rozbalit vše Re: Instant Hacking: český překlad
Souhlas nějaký český manuál na Python 3 by se hodil.
Sex, Drugs & Rock´n Roll.
Fluttershy, yay! avatar 30.3.2009 15:40 Fluttershy, yay! | skóre: 93 | blog:
Rozbalit Rozbalit vše Re: Instant Hacking: český překlad
Článek na Rootu? Cosi je na Py.cz, ne?
🇵🇸Touch grass🇺🇦 ✊ ani boha, ani pána
Fluttershy, yay! avatar 30.3.2009 15:43 Fluttershy, yay! | skóre: 93 | blog:
Rozbalit Rozbalit vše Re: Instant Hacking: český překlad
Překlad není definitivní, za čas jej mohu upravit. Nyní ale Python 3.0 (1) není všude (výchozí je na většině systémů 2.4 až 2.6) a (2) nemá velkou podporu knihoven (za mne PyGame a PyQt). Uvedl jsem to ostatně v tom překladu.
🇵🇸Touch grass🇺🇦 ✊ ani boha, ani pána
30.3.2009 19:43 Dušan Hokův | skóre: 43 | blog: Fedora a další...
Rozbalit Rozbalit vše Re: Instant Hacking: český překlad
Odpovědět | Sbalit | Link | Blokovat | Admin
Diky za preklad, dal jsem si to do zalozek. Nenech se odradit nekterejma rejpalama, kteri v zivote sami nic nevytvorili. :-)
31.3.2009 11:08 l4m4
Rozbalit Rozbalit vše Re: Instant Hacking: český překlad
Ano, všichni se snažili porozumět fungování pythonu nikoli proto, že něco programovali, ale aby s tím mohli otravovat ve fórech...
31.3.2009 14:22 Petr Mach
Rozbalit Rozbalit vše Spousta zacatecniku ma s popisovanym jevem problemy, protoze...
ss
31.3.2009 14:25 Petr Mach
Rozbalit Rozbalit vše ... maji mylne predstavy o tom, jak to funguje. Neni divu, jestli ...
sss
31.3.2009 14:27 Petr Mach
Rozbalit Rozbalit vše ... se jim predkladaji mylne informace, ktere nikdo nechce opravit.
s

Založit nové vláknoNahoru


ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.