Re: [python] OT: překlad pojmů first-class o bject a stream object

2010-04-27 Tema obsahu Přikryl Petr


Tovim
 first-class object

je spíš objekt první třídy než prvotřídní objekt, 
protože snad existují v programování objekty první třídy?

No, v tom spočívá ten dotaz ;) Ono se dá najít
i spojení first-class objekt -- část z toho na 
českých webových stránkách, ale většinou na německých.
V němčině se to dá pochopit. Angličtina je přece jen
germánský jazyk. Ale v češtině to nevypadá dobře.

Ten pojem jako abstrakce se používá (v programování).
Ale jde o to, jaké se mu dá jméno. Význam možná
vystihuje objekt se vším všudy, ale to je spíš
do textu za sedmi horami a sedmi řekami

 runtime context

problém nespočívá v uvedeném sousloví ale v termínu 
runtime; překládá se jako běh? li ano, pak 
nezbývá než běhová souvislost

Problém je v tom, že pojem runtime context je použit
ve standardní dokumentaci. A mluví se tam i o správci
kontextu (context manager) a o context management
protokolu a je tam knihovna contextlib...

Takže problém je s tím runtime.

 také se zeptám: jak se překládá slovo caller ?

Volající, volající kód, volající funkce...
Na druhé straně je volaný, volaná funkce, volaná
metoda.

P.___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] first-class object

2010-04-27 Tema obsahu Přikryl Petr

Tovim
objekt první třídy, vagon první třídy, 
porod první třídy, pohřeb první třídy
mi přijdou jako normální česká spojení; 
v obráceném gardu to může být o něčem jiném: 
vagon první třídy nemusí být nutně vagonem prvotřídním

No, to je trochu filosofická a matematická
záležitost. Třída vymezuje věci s podobnými
vlastnostmi. V tomto smyslu by měl být
podle vagón první třídy také vagónem
prvotřídním (podle definice).

Že se záměr neslučuje s realitou, 
to už je jiná věc.

Pak taky může být paní učitelka
první třídy, která je možná prvotřídní,
možná učí v první třídě a možná obojí.

Tím chci naznačit, že objekt první třídy
může v textu zavést podobné zmatky, jako 
ona paní učitelka. Jakmile se tam vyskytnou
dvě třídy a začne se mluvit o funkci (jako
o first-class objektu) slovy tato funkce
je objektem první třídy), pak si někteří
mohou myslet, že se bude vztahovat k třídě A.

Fakt je, že prvotřídní objekt může být chápán
jako velmi kvalitně napsaný.

;)

P.S. Víc hlav -- víc zelí.___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

[python] OT: překlad syndication feeds

2010-04-27 Tema obsahu Přikryl Petr
Ahoj fšeci,

Tohle by ale někdo mohl vědět.

syndication feeds

...ve smyslu RSS.

Tady vůbec netuším, jestli se tomu nějak česky
říká. Sdružené krmení nenavrhujte ani náhodou :)

P.

P.S. Pořád platí 
http://blog.nic.cz/2010/03/25/pomozte-nam-s-prekladem-knihy-dive-into-python-3/
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] OT: překlad pojmů first-class o bject a stream object

2010-04-27 Tema obsahu Přikryl Petr
Hynek Fabian
Přikryl Petr (úterý 27 Duben 2010 09:41:46):
 ... first-class objekt ...
Mě v takových případech pomáhá párkrát výraz prohnat slovníkem tam a zpátky,
v tomto případě jsem skončil zhruba u „bezvadný“ nebo „úplný“ objekt.
Není to možná přesné, ale vyjadřuje to princip - že ostatní objekty jsou 
nedokonalé.

Problém je v tom, že to nemá vyjadřovat
dokonalost či nedokonalost ostatních
objektů. Jde o to, že je něco objektem, 
i když v jiných podmínkách (v jiných jazycích)
to vlastnosti objektu mít nemusí.

V tomto smyslu prvotřídní nebo úplný je divné.
Opravdu nejvíc mi sedí plnohodnotný, ale je
otázka, jestli je to vhodný název pro pojem
(plnohodnotný objekt). Taky se k tomu můžu postavit
tak, že by to nebylo vnucováno jako kodifikovaný pojem, 
ale prostě jako srozumitelné vyjádření -- opis významu.

  runtime context
 Problém je v tom, že pojem runtime context je použit
 ve standardní dokumentaci. A mluví se tam i o správci
 kontextu (context manager) a o context management
 protokolu a je tam knihovna contextlib...
 
 Takže problém je s tím runtime.
„provozní kontext“? „operační kontext“?

operační kontext se mi velmi líbí. Myslím, že
vystihuje velmi přesně, co se tím myslí.

Díky, díky, díky.

Petr

P.S. Já to věděl: Víc hlav, víc zelí. ;)
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] OT: Preklad pojmu runtime context?

2010-04-26 Tema obsahu Přikryl Petr
Visgean Skeloru
 Petr Messner
  běhové prostředí?
 To se mi zdá jako nejlepší varianta, 
 ten kontext mi tam nezněl celou dobu. 

Jenže právě ten kontext je tam celkem
bezproblémový. Týká se to funkčnosti
context manager a i v dokumentaci
k příkazu with se explicitně mluví
o kontextu (bez přívlastků).

Zatím nejvíc se mi líbí návrh Michala
Vyskočila -- lokální kontext

Díky a pokračujte ;)
Petr

P.S. Pro tyto účely funguje i stránka
http://blog.nic.cz/2010/03/25/pomozte-nam-s-prekladem-knihy-dive-into-python-3/___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

[python] OT: překlad pojmů first-class o bject a stream object

2010-04-26 Tema obsahu Přikryl Petr
Zdravím všechny po slunečném víkendu,

Aniž bych vás chtěl ovlivňovat, hledám překlad pojmů

first-class object

a 

stream object

Význam je jasný. Jde o používaný nebo dobře znějící
český překlad.

Díky za spolupráci, 
   Petr

P.S. Funguje 
http://blog.nic.cz/2010/03/25/pomozte-nam-s-prekladem-knihy-dive-into-python-3/___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

[python] OT: Preklad pojmu runtime context?

2010-04-24 Tema obsahu Přikryl Petr
Ahoj všichni,

Tak jsem tady zase ;)

runtime context -- tento pojem se používá
v souvislosti s pythonovským with.

Kontext -- tady je překlad celkem bezproblémový.
Co runtime?

běhový kontext -- pojem běhový se používá,
ale nevím, jak moc. Jak se na to díváte?
Nemám na mysli pohled zarytých technických
puristů, pro které je jakákoliv odchylka
od originálních anglických textů nepřijatelná.

Díky za názory,
   Petr (alias pepr)

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] Záměna funkce v instanci objektu

2010-04-20 Tema obsahu Přikryl Petr
Czenek napsal
 Ano, mělo by to být dynamické. A vaše řešení 
 se mi líbí. Jenom nechápu proč to nelze udělat
 tím prostým přiřazením? Co se tedy vlastně 
 stane, když do metody nějakého objektu přiřadím 
 novou funkci?

Zkus tenhle kód (tedy hlavně poslední tři řádky):

class tridaA:
def b(self, x):
self.x = x

def c(self, x):
self.x = x + 1

a = tridaA()
print type(a.b)

a.b = c
print type(a.b)

Vypíše to:

type 'instancemethod'
type 'function'

To znamená, že nejdříve bylo a.b metodou instance,
ale po přiřazení je to obyčejná funkce.

a.b je jen jméno. Původně ukazuje na objekt metody.
To znamená, že se taky jako metoda používá.

Po přiřazení se jméno a.b použije pro jiné účely.
Je pak spojeno s odkazem na obyčejnou funkci.
Že se zrovna první parametr jmenuje self není
vůbec podstatné. Dokonce i u metod je toto jméno
jen konvencí.

Něco jiného je, kdybys za běhu potřeboval přehazovat
jen metody stejné třídy. Zkus tohle:

class tridaA:
def __init__(self):
self.m = self.b

def b(self, x):
self.x = x

def c(self, x):
self.x = x + 1


a = tridaA()
a.m(1)
print a.x

a.m = a.c
a.m(3)
print a.x

Volá se pokaždé a.m, ale ta pokaždé dělá něco jiného.

pepr
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] Zkrácená forma přiřazení sel že

2010-04-20 Tema obsahu Přikryl Petr


Jirka Vejrazka
  nemam ted momentalne cas to zkouset, ale troufnul bych si odhadnout,
ze pro funkcnost ve stylu (b) budes muset nadefinovat jak se ma chovat
iterator, tj. napsat si vlastni metodu __iter__(self, ...)

Je to tak. Jirka to trefil přesně. To násobné přiřazení
vyžaduje, aby objekt podporoval průchod svými prvky.
(Takový objekt se pak dá použít například i v cyklu for.)

Zkus tohle:

class Seznam():
def __init__(self,sez):
self.data=sez
def __getitem__(self,idx):
return idx  len(self.data) and self.data[idx] or None

def __iter__(self):  
'''Vraci iterator -- sam sobe iteratorem.'''
self.idx = 0
return self 

def next(self):
'''Standardni podpora iterace.'''
if self.idx = len(self.data):
raise StopIteration
hodnota = Seznam.__getitem__(self, self.idx)
self.idx += 1
return hodnota   

### VSTUP: ###   
slova = Seznam([ITEM-1,ITEM-2,ITEM-3,ITEM-4])

prvni = slova[0]
druhy = slova[1]
treti = slova[2]
ctrty = slova[3]

# Rucne provadena iterace.
it = iter(slova)
print it
print next(it)
print next(it)
print next(it)
print '-' * 50

# Automaticky aktivovana iterace.
prvy, druhy, treti, ctvrty = slova
print prvy
print druhy
print treti 
print ctvrty___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] Preklad list comprehension?

2010-04-17 Tema obsahu Přikryl Petr
Ahoj Jarku,

Od: Jarek Krcmar
Mohlo by se to přeložit jako Srozumitelnost seznamu?

To není ono. Slovo comprehension sice má i význam
pochopení nebo porozumění, ale taky má význam
něco obsáhnout ve smyslu poskládat do sebe.
Možná to volně souvisí ve smyslu 
pochopit = naskládat si něco do hlavy ;)

Petr
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] list comprehension -- prozatimni zaver

2010-04-16 Tema obsahu Přikryl Petr
Když mi bylo asi 9 let, bruslil jsem po škole na čerstvě zamrzlém rybníku. V 
jednom místě byly nahromaděné řasy, takže tam led nebyl nejkvalitnější. Na 
kamarády jsem ještě stihnul vykřiknout Ku*va, tady to rupe!. A už to bylo.
Tou dobou se totiž tata vracel z práce a zkracoval si to přes rybník. A jak mě 
slyšel, tak mi jednu majznul, že jsem sebou rupnul já.
Od té doby jsem o tom začal víc přemýšlet. A děkuju tatovi, že jsem díky tomu 
na to přišel tak brzo ;)
Petr 
Od: Petr Mach
Přijato: 15.4.2010 19:51:51
Předmět: Re: [python] list comprehension -- prozatimni zaver
Odvazat se clovek muze prece i bez vulgarity, ne?
2010/4/14 MICHÁLEK Jan Mgr. michalek@uhul.cz
Když se odvázat, tak pořádně, co takhle seznamrdka
From: python-boun...@py.cz [mailto:python-boun...@py.cz] On Behalf Of Petr Mach
Sent: Sunday, April 11, 2010 9:26 AM
To: Konference PyCZ
Subject: Re: [python] list comprehension -- prozatimni zaver
Přesně tak, teď to zní nezvykle a legračně, ale tak tomu bylo u řady slov, na 
které
jsme si už zvykli a už nám nám to ani nepříjde. 
2010/4/1 Přikryl Petr prik...@atlas.cz
Petr Mach

 Trochu se odvažte, nazvěte to seznamátor a je to :-).
No, dobrý nápad. A ty ostatní se budou jmenovat
slovníkátor a množinátor. A nadpis bude -átory.
Nebo zobecníme na dělátory? :)))
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] OT: preklad sanity check -- rozhodnuti

2010-04-11 Tema obsahu Přikryl Petr
Zdravím všechny,

Díky za tipy na překlad sanity check.
Ono to má trochu kultovní nádech a ti, co 
ten anglický pojem vymysleli možná měli
na mysli příčetnost -- svoji.

Ale faktem je, že tady se to vztahuje
na testování správné funkčnosti programu.
Mohli bychom uvažovat i o korektním
chování programu. Ale v konkrétním případě
se jedná skutečně o to, že předkládáme
nepochybně korektní vstupy (bezesporné,
jednoduché) a testujeme nejzákladnější
funkčnost programu, funkčnost jádra řešení
(bez specialit a hraničních případů).

V tomto smyslu jsem zvažoval Davidovu
kontrolu korektnosti a Petrův test správnosti.

Přece jen je tam slovo check, které navádí 
spíš k překladu kontrola. Správností se
zde myslí správnost chování. Takže jsem
to ještě chvíli přemílal v hlavě a dospěl
jsem k prozatímnímu závěru:

   kontrola funkčnosti

Není to sice tak omračující jako sanity check,
ale doufám, že to bez magie bude srozumitelnější.
Pojem sanity check uvedu na příslušných místech
v závorce (pokud to budu pokládat za vhodné).

Ještě jednou díky (i těm co si z toho dělají
prdel, protože ti, co už překládali, ví...).

S pozdravem,
pepr

P.S. Víc hlav, ... víc zelí.


Hynek Fabian
http://www.merriam-webster.com/dictionary/sanity
the quality or state of being sane; 
especially : soundness or health of mind

No a ti co píšou o korektnosti by se měli mrknout do slovníku :-P
Ne že by se dalo vždy všechno překládat doslova,
ale tento případ se mi zdá přesný a výstižný.

David Rohleder 
 spíš kontrola korektnosti. Správný vstup je pak 
 podmnožinou korektního vstupu.
 
 No a ti co píšou o příčetnosti by se měli mrknout do zrcadla :-)

 Petr Messner píše v Čt 08. 04. 2010 v 12:31 +0200:
  test správnosti
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

[python] OT: preklad sanity check

2010-04-08 Tema obsahu Přikryl Petr
(Off topic)

Zdravím všechny pojídače velikonočních vajec ;)

Má tady další Kolik třešní, tolik višní...

Překládal jste někdo pojem sanity check? 
Nebo jste to někdy někde viděli přeložené?
Mám nějaké nápady, ale nic moc (a nechci ovlivňovat).

Jaké nápady máte vy? Předem upozorňuji, 
že to rozhodně nechci ponechat v anglickém 
tvaru, takže pokud navrhujete nepřekládat,
chci vám tímto ušetřit práci a čas na reakci ;)

Díky za nápady. Přeju hodně slunečního svitu, 
málo práce a dobrou náladu.

pepr

P.S. Pokud to nechcete zahnojovat příspěvky
v tomto vzácném fóru, doporučuji konec stránky
http://blog.nic.cz/2010/03/25/pomozte-nam-s-prekladem-knihy-dive-into-python-3/___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] list comprehension -- prozatimni zaver

2010-03-29 Tema obsahu Přikryl Petr
 
RMiklos napsal
 list comprehension = notace na vytváření seznamu 

Jo. Jenže [1, 2, 3, 4] je taky notace na vytváření
seznamu. A potřebuju dospět k samostatnému ekvivalentu
pojmu comprehension.

Hynek Fabian
 Přikryl Petr:
  list comprehension = generátorová notace seznamu
  set comprehension = generátorová notace množiny
  dictionary comprehension = generátorová notace slovníku
 
 Po technické stránce je to perfektní. Ale [...] vítězí krátké
 a stručné termíny nad popisnými, a dvanáct slabik je moc.

Ano. Zatím jsem na nic stručnějšího při chtěné
přesnosti vyjádření nepřišel.

 Vsadím jablečný koláč proti psímu sucharu, že „notace“ 
 bude z praktického užití okamžitě vypuštěna. Je to slovo
 přesné a výstižné, ale nadbytečné.

To mi nevadí. To je život. Já to tam potřebuju, tak
to použiju a nechám na každém, jak moc se toho chce
držet při rychlé osobní komunikaci, kdy se věci mohou
vyjasňovat doplňujícími dotazy a poznámkami. Generátor seznamu
je fajn. Ale bez kontextu to může být víc věcí.

P.___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

[python] OT: Hleda se slovensky spravce nastroje Doxygen

2010-03-26 Tema obsahu Přikryl Petr
Zdravím všechny pythonisty,

Už delší dobu se hledá správce pro podporu 
slovenského jazyka v nástroji Doxygen
http://www.doxygen.org/

Měl by to být člověk, který aspoň trošku
tuší, co je to C++, ale stačí trošku. Pomocná ruka
se najde.

Doxygen se používá pro generování dokumentace
ze zdrojového textu v komentářích. Výhodný je zejména
pro vytváření programátorské dokumentace, pro
vyjádření vazeb (jaká funkce volá jakou...). 

Mimo jiné se dá použít i pro Python.

Dřívější správce (Stanislav Kudláč) už má moc jiné
práce (ale díky za to, co už udělal).

Díky za nabídky,
pepr___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

[python] Funkce vs. metody třídy (bylo RE : nevznik objektu)

2010-03-25 Tema obsahu Přikryl Petr


Michal Vyskocil píše
David Rohleder píše
 Petr Messner píše 

  Možná jsem prostě jenom příliš staromódní [...]
...
- nevolat konstruktor (tedy nevytvářet objekt), ale volat funkci,
   která sama vytvoří objekt, nebo vrátí None - podle mě nejlepší řešení
...
 To zní zajímavě, ale moc mně to nezapadá do takového toho objektového
 pohledu na svět. Nutno přiznat, že je to asi celkem jedno, z venku
 modulu to vypadá stejně jako přímo ten konstruktor objektu.
...
No tak to nemusí být funkce, ale metoda třídy
Je to sice trošku Javovský přístup, ale aspoň 
to nezačíná na class IPFactory :-)

Já bych se přimlouval za to být trochu staromódní
a nesnažit se všechno převrátit na objekt. Staré dobré
funkce jsou zde tím nejjednodušším vyjádřením uvedeného
záměru. Snažit se zabalit funkci do podoby něčeho
vznešenějšího mi připadá zbytečné. 

Pokud třída neobsahuje žádnou členskou proměnnou 
a není určena k dědění, pak psát kód do podoby 
její metody třídy mi připadá ve srovnání s prostou 
funkcí obtížně zdůvodnitelné.

KISS -- Keep It Small and Stupid

Taková třída by mohla přinést navíc pouze svázání 
více souvisejících metod dohromady. Třída, ze které
se nevytvářejí instance (protože není nutné zachycovat
vnitřní stav) je degradací na pouhý prostor jmen, do
kterého jsou umístěny prosté funkce.

V Pythonu vyjádříme prostor jmen formou odděleného 
modulu -- když už to musí být.

Podle mého názoru funkce a objektový pohled na věc
spolu nijak nebojují.

pepr

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] Preklad list comprehension?

2010-03-25 Tema obsahu Přikryl Petr
 
tommz napsal
 pepr napsal

 Jak přeložit (krátce) pojem list comprehension.
 Kdysi dávno se to tady už řešilo a došli jsme společně
 k názoru generátor seznamu.
 ... až na to, že to není přesné.

 A co intezionální zápis seznamu, množiny, ... ? 
 Jestli jsem tu konstrukci teda správně pochopil :)

Jak by řekl klasik Neříkej mi tajtrlik. Za prvé
nevím, co to je, a za druhé mě to uráží ;)

Intenzionální logiku neznám a mám obavy jen
tak plácnout. A taky předpokládám, že ji nezná
drtivá většina uživatelů jazyka Python. Možná
to vzbuzuje jasnou představu o účelu takového 
zápisu pro někoho, kdo se intenzionální logikou
zabývá. Ale obávám se, že možná ani to ne.

David navrhl
: generovaný seznam
: generovaný slovník
: generovaná množina

Tohle je srozumitelné, ale není to ono. Omlouvám
se, ale potřebuju teď být detailista, protože na tom
pojmu budu stavět víc věcí okolo.

Jde o to, že ten pojem comprehension vyjadřuje použití
určitého způsobu zápisu našeho záměru, který je zachycen
ve zdrojovém textu. Má tedy statický charakter.

Pojem generovaný seznam navozuje představu hotového 
objektu, který byl nějak vygenerován, ale jakoby se neříká
jakým způsobem.

Když dám dohromady ty dva návrhy, pak mi vychází

   zápis generovaného seznamu
   zápis generovaného slovníku
   zápis generované množiny

ale to se pojmu moc nepodobá. Je to málo specifické

   generátorový zápis seznamu
   generátorový zápis slovníku
   generátorový zápis množiny

Společný pojem by mohl být generátorový zápis (= comprehension).
Hmmm. Nevím. Nebo jo?

Funkční princip list comprehension je v tom, 
že generátorovým výrazem popíšeme vznik generátoru,
který po dobu inicializace objektu generuje počáteční
hodnoty. 

Tak trochu problém je už originální pojem comprehension
má v Češtině tak jakoby nádech podstatného jména slovesného
nebo nějak v sobě zachycuje činnost. To je u pojmů, které
mají vyjadřovat něco statického, trochu nepraktické.

Jak se díváte na to ... ?

   xyz comprehension = generátorový zápis XYZ

Díky za názory,
   pepr___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

[python] Dive Into Python 3 - diskuse k pojmum na nic.cz (bylo Re: Preklad list comprehension?)

2010-03-25 Tema obsahu Přikryl Petr
Vypadá to, že diskuse se přesune na 
http://blog.nic.cz/2010/03/25/pomozte-nam-s-prekladem-knihy-dive-into-python-3/
Mám pocit, že by to ale chtělo nějaké lepší komunikační médium -- něco
ve stylu wiki... Nebo něco jiného. Nemáte zkušenosti?

Taky by se tam asi hodilo zařadit seznam pojmů a slovních spojení,
o kterých si myslíte, že jsou z hlediska překladu problematické.
A postupně bychom to vyjasňovali.

Hynek Fabian napsal
Co máte všichni s těmi generátory?
Je to „výčet seznamu“
(není to z mojí hlavy, ale už nevím kde jsem to poprvé zaslechl)
Trochu hezčejší by byl „vypočítávaný seznam“, ale to už mi přijde dlouhé.

S tím nemůžu souhlasit. Pojem výčet se používá celkem jednoznačně
pro konkrétně vyjmenovanou sadu hodnot. Tady se ty hodnoty vytvářejí
transformací z jiných hodnot něčím, co už má pojem přidělen, 
a to generátorovým výrazem. Výsledkem generátorového výrazu 
je generátor. Ten produkuje počáteční hodnoty výsledného seznamu.

BTW tenhle job ti Petře nezávidím - buď tě jedna polovina lidí prokleje že 
zatahuješ do českého textu cizojazyčné termíny, nebo druhá půlka že vymýšlíš 
čechismy o které nikdo nestojí :-)

Z toho strach nemám. Kdo velmi trvá na cizojazyčných termínech, 
přečte si to v originále (budu je taky na vhodných místech uvádět 
v závorce). Chci dosáhnout toho, aby se to dalo dobře číst a aby
člověk-začátečník, případně i neprogramátor nenacházel v textu
pro něj naprosto nesrozumitelné věci (v rozumné míře).

Petr Majtan (čtvrtek 25 Březen 2010 10:36:14):
 napada mne toto:
   seznam vytvaren generatorem
   seznam s pomoci generatoru
   seznam inicializovany generatorem
 nebo jen
   seznam z generatoru
 
 ale je to fakt orisek...

Kolik třešní, tolik višní ;)___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

[python] list comprehension -- prozatimni zaver

2010-03-25 Tema obsahu Přikryl Petr
Toto je velmi zajímavý příspěvek a na jeho
základě jsem dospěl k závěru, který uvádím...
no na závěr. Díky

Jan Bednařík napsal (rozlámal jsem a doplnil číslování kvůli odkazům)
 
 1) Rozhodně nepřekládat. Překlad nic neřekne začátečníkovi,
 ale ani nikomu, kdo má s programováním zkušenosti. 
 
 list comprehension je obecný pojem používaný 
 v mnoha programovacích jazycích. 
 Pokud vím, tak neexistuje žádný všeobecně rozšířený překlad 
 do češtiny. A osobně se nepamatuji, že bych se setkal 
 s knihou/učebnicí/skripty, kde by to někdo překládal.
 
 2) Význam pojmu list comprehension je natolik specifický, 
 že při snaze ho přeložit se vždy dostaneme na velmi 
 tenký led. 
 
 3) Použití všeobecně známých pojmů z programovacích 
 jazyků jako generátor, konstruktor, atp. s sebou 
 ponese matoucí asociace. 
 
 4) Například pod pojmem generátorový zápis si spousta 
 lidí představí generator expression a těžko pochopí, 
 že to má mít úplně jiný význam.
 
 5) list comprehension je pojem používaný 
 v informatice desítky let. To že ho ještě nikdo 
 nějak rozumně nepřeložil do češtiny (tím myslím překlad 
 který by se uchytil) asi o něčem vypovídá. Myslím si, 
 že jakákoliv snaha tento pojem přeložit si vyžádá širší 
 akademickou diskusi přesahující komunitu okolo jazyka 
 Python. Zkusil bych se poptat odborníků na fakultách 
 informatiky zdejších vysokých škol. Třeba někde 
 vymysleli a používají nějaký rozumný překlad.

=

ad 1) Cílem té knihy mimo jiné je, aby to někomu něco řeklo.
A ten překlad se dělá proto, aby to bylo k dispozici
pro české čtenáře. Chápu, je to trochu paradox ;)

Takže první závěr zní, rozhodně to nějak přeložím.
Originální pojem samozřejmě ponechám v závorce 
a přidám asi odkaz na http://en.wikipedia.org/wiki/List_comprehension

ad 2) Není to zase tak tenký led. Jedna věc je snažit se
přeložit anglické slovo comprehension a druhá věc je snažit
se najít odpovídající pojem, který vychází z významu toho
anglického pojmu. Na výše uvedeném odkazu na wikipedii se
dají najít tyto jasné stopy (list comprehension):

 - Je to SYNTAKTICKÁ KONSTRUKCE. Tím odpadají kandidáti
   typu generovaný seznam (protože to vyjadřuje spíš
   dynamický výsledek, než statický zápis v programu, tj.
   syntaktickou konstrukci.
   
 - Existuje i matematický pojem set comprehension, pro který
   existuje ekvivalent set-builder notation -- doslova
   notace (zápis) vytvářeče množin. Je to ono známé (příklad)
   
  { x elem N: x  0 }
  
 - Ty zmíněné jazyky jsou většinou deklarativní jazyky. 
   Mají svým způsobem blíž ke klasické matematice, kde 
   množina vznikne, obsah splňuje vlastnosti, je.
   Ale už ono set-builder napovídá tomu, že v praktickém
   případě se musí nějak vybudovat...
   
ad 3) S tím částečně souhlasím. Proto se snažím o diskusi.
Protože definice pojmů jsou vždy věcí dohody. Není v tom nic
mechanického. Vstupuje do toho lidský faktor, protože je to 
nástroj pro lidi.

ad 4) Tady si dovolím oponovat. Jestli jste to pochopil
takto, tak mám radost, protože právě takhle to bylo myšleno.
Ono to totiž nemá jiný význam.

Na http://en.wikipedia.org/wiki/List_comprehension se říká,
že jde o syntaktickou konstrukci pro vytvoření seznamu
z jiného seznamu. V deklarativních jazycích je to OK.
Ale Python je imperativní jazyk a tahle přejatá konstrukce
je elegantně použita s širší platností. List comprehension
totiž umožňuje vytvořit seznam z čehokoliv, přes co se dá
iterovat (nejen ze seznamu). A ta iterace se dá popsat
výrazem (tedy nejen příkazy) a tomu výrazu se říká 
generátorový výraz. 

Generátorový výraz je zvláštní v tom, že šikovně kombinuje
deklarativní přístup s imperativním. Deklarativně se zapisuje
a jeho možnosti se podobají generátorové funkci (která
má uvnitř yield). 

Vyhodnocením generátorového výrazu nebo zavoláním generátorové
funkce vznikne generátor (generátorový objekt). Postupným 
voláním .next() můžeme získat generované hodnoty.

ad 5) [... akademickou diskusi.] Což tímto samozřejmě činíme.
Čtou to i lidé, kteří se věnují výuce.

Postupně přejdu k závěru...

List comprehension je syntaktická konstrukce. Jejím účelem
je popsat vytvoření seznamu jaksi víc deklarativně. Protože
jde o syntaktickou konstrukci se specifickým významem, není
pravděpodobně implementována překladem na obecný generátor,
ale je to uděláno efektivněji.

Přesto ale věcně můžeme List comprehension čistě nahradit
použitím konstruktoru seznamu a do něj vloženého generátoru,
který může být definován i generátorovým výrazem. Srovnejte:

 lst = [ i*2 for i in range(10) ]
 lst
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

a generátorovým výrazem

 lst = list(i*2 for i in range(10))
 lst
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

Takže list comprehension je typický syntactic sugar, 
který může být díky tomu, že jde o speciální případ
generátoru poněkud efektivněji implementován.

A teď set comprehension neboli set-builder NOTATION:

 mn = { i*2 for i in range(10) }
 mn
{0, 2, 4, 6, 8, 10, 

Re: [python] Jak byste přeložili Dive Into Pyt hon?

2010-03-24 Tema obsahu Přikryl Petr
Díky všem za náměty. Zvláště obálka knihy s tou chobotnicí
by se mi líbila... (kdybych byl škodolibý perlovský 
nebo rubyovský fundamentalista ;)

Zvolil jsem kompromisní řešení, ale nebude to záležet jen 
na mně. Abyste pak na první pohled věděli, o co jde
(a nejen vy), bude se to asi jmenovat česko-anglicky:

Dive Into Python 3
aneb
Ponořme se do Python 3

Já vím, má to svoje mouchy. Ale na nic kompromisně
nekompromisního jsem nepřišel.

Na začátcích kapitol jsem Diving in přeložil
jako Ponořme se.

Ponořme se do hlubin -- to se mi zdá příliš básnické
a málo otevřené dvojznačnostem. Ona se tak kniha noří
nejen do hlubin. Spíš by to mělo vyznít jako výzva
k soustředění, ke snaze pochopit... než směřování
k detailům a temným hlubinám.

Mějte se krásně,
pepr


-
Od: MICHÁLEK Jan Mgr.
Přijato: 17.3.2010 11:18:05
Předmět: Re: [python]Jak byste přeložili Dive Into Python?

ponořme se do hlubin pythonu



-Original Message-

From: python-boun...@py.cz [mailto:python-boun...@py.cz] On Behalf Of 
Ctibor.Plasek

Sent: Wednesday, March 17, 2010 11:10 AM

To: Konference PyCZ

Subject: Re: [python]Jak byste přeložili Dive Into Python?



Divej Python :-)





  Původní zpráva 

 Od: Hynek Fabian hynek.fab...@firma.seznam.cz

 Předmět: Re: [python] Jak byste přeložili Dive Into Python?

 Datum: 17.3.2010 10:53:24

 

 Python do hloubky nebo Hlubiny Pythonu.

 Podkapitola by se pak klidne mohla jmenovat Potápíme se.

 

 A na obalku patri tohle :-)

 http://artfiles.art.com/5/p/LRG/17/1745/JNL3D00Z/huge-octopus-nearly-s

 ucceeds- 

 in-overcoming-american-diver-martin-lund-but-is-eventually-beaten-off.

 jpg

 

 

 Přikryl Petr (úterý 16 Březen 2010 23:31:21):

  Po delší odmlce všechny zdravím.

  

  Přemýšlím nad tím, jak by se dal trefně přeložit název známé knihy 

  Dive Into Python a úvodní podkapitola v jednotlivých kapitolách Diving 
  In.

  Má někdo nějaký trefný nápad?

 ___

 Python mailing list

 Python@py.cz

 http://www.py.cz/mailman/listinfo/python

 

 

 

___

Python mailing list

Python@py.cz

http://www.py.cz/mailman/listinfo/python

 



__ Informace od ESET NOD32 Antivirus, verze databaze 4950 (20100316) 
__



Tuto zpravu proveril ESET NOD32 Antivirus.



http://www.eset.cz

 

 



__ Informace od ESET NOD32 Antivirus, verze databaze 4950 (20100316) 
__



Tuto zpravu proveril ESET NOD32 Antivirus.



http://www.eset.cz

 

___

Python mailing list

Python@py.cz

http://www.py.cz/mailman/listinfo/python




___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

[python] Trida pro IP adresu, vyjimky (bylo RE: Re: nevznik objektu)

2010-03-24 Tema obsahu Přikryl Petr
Zdravím,

Přidám svůj pohled na řešení problému s IP objektem 
a na pohled na výjimky (s ohledem na vaše vzdělání
a působení).

S tím návrhem třídy IP bych se přimlouval k promyšlení
pohledu na to, co objekt třídy IP reprezentuje. Zohlednil
bych taky to, jak by to vypadalo v jiných jazycích, třeba
v C++. Prakticky žádný jazyk neumožní korektní nevznik
objektu -- pokud nedojde k nějaké nízkoúrovňové havárii.

Objekt v kompilovaných jazycích buď vytvořím staticky, 
na zásobníku (jakoby staticky, ale v prostoru zásobníku)
nebo dynamicky (new nebo něco takového). Jakmile vznikne,
zpřístupňuji jej přímo přes jméno proměnné (statický
objekt nebo na zásobníku -- tohle v Pythonu není),
přes referenci (to je případ Pythonu) nebo přes ukazatel.

Pouze v případě použití ukazatele mám možnost vrátit
alternativně hodnotu NULL. Pak to musí být případ,
který popisoval Petr Messner -- zavolat funkci a ta
vrátí buď NULL nebo hodnotu ukazatele na vytvořený 
objekt. Tohle by v Pythonu bylo stejné.

Při návrhu se musí rozhodnout, co vlastně objekt
třídy IP má vyjadřovat. Má vyjadřovat zachycení 
přání vnějšího prostředí (uživatele, volajícího kódu)
získat objekt s právě takovou IP adresou? Má existence
objektu vyjadřovat platnost IP adresy? Co to vůbec
je platná IP adresa? Je to syntakticky správně 
napsaná adresa, nebo je to adresa, která se dá skutečně
použít? Nebo dokonce adresa, která mi umožní udělat
operaci, kterou bych chtěl provést (tj. s ověřením,
že se přes ni někam dostanu)? A co když se syntaxe
IP adres v budoucnu změní? Jak to udělat, abych
toho musel předělávat co nejméně?

V tomto smyslu se přimlouvám za to, aby objetk třídy
IP vznikl vždy, ale aby se bránil použití v případě,
kdy má nepoužitelný obsah -- v okamžiku použití, 
nikoliv v okamžiku vzniku (viz například momentální
nedostupnost přes IP). Na vyšší úrovni si pak můžu
rozhodnout, zda objekt s nepoužitelnou IP adresou
(po otestovnání jeho vlastností) ponechám nebo zruším.

V tomto smyslu se přimlouvám znovu za návrh Petra 
Messnera -- využít __nozero__. Protože přesně pro
tento účel byla metoda navržena. Ona se vlastně jmenuje
blbě. Její jméno by mělo být odvozeno spíš z myšlenky
hodnota v boolovském kontextu. Ale vznikla v době,
kdy Python místo True a False používal ještě 0 a != 0
(jako C). Pak nepotřebuji pomocnou funkci, ale objekt
můžu použít k testování přesně stejným způsobem, jako
bylo původně zamýšleno:

ipaddr = IP(192.168.34536.45)

if not ipaddr:
print zadavas blby vstup

Chování v boolovském kontextu implementované
metodou __nozero__ navíc umožňuje dynamicky měnit
platnost objektu podle potřeby.

Teď k výjimkám. Souhlasím s názorem, že výjimky
by se měly vyskytovat výjimečně. Ale spíše jde o to,
že se výjimečným způsobem ošetřují.

Co se týká výjimky StopIteration, tu považuji spíš
za výjimečnou ;) Jde o to, že samotný cyklus for
je v Pythonu proti klasickým kompilovaným jazykům
trochu výjimečný. Není to počítaný cyklus. Je to
zobecněný cyklus přes sekvenci. Existence StopIteration
přestavuje jednu z mála možností, ja mohou všechny možné
iterace dát najevo svůj konec (různé kontejnery, 
generátory...)

A co se týká programování s výjimkami a bez výjimek, 
je to otázka změněného přístupu k tvorbě programu
(podle mého k lepšímu). Když to srovnáváte s goto...

Dříve neřízené používání goto způsobovalo těžko
řešitelné problémy. Postupně to vedlo k objevu
strukturovaného programování (Wirth jako představitel).
Pořád ale bylo založeno na jednoduchém toku řízení.
Proto bylo možné následně testovat, jak to dopadlo
před chvílí.

Ve školních příkladech se často testování jak to 
dopadlo pro jednoduchost vynechávalo... protože
to zkrátka vede k zaplevelení kódu smetím, které
není užitečné z hlediska abstraktního uvažování
o problému. Jenže v praxi právě k tomuto jevu dochází
a programy se stávají hůře čitelné (se všemi
důsledky, jako třeba vznik dalších chyb díky bobtnání
kódu). To testování se taky muselo dělat otrocky.
Muselo se myslet na všechny možné situace, které
mohly selhat. Při rozsáhlejším programu je to 
na mašlu.

Objektové programování představuje další změnu
pohledu ve smyslu spolupráce kooperujících objektů.
A i když se o tom programátoři v praxi zatím 
tak moc neuvažují, znamená to potenciálně paralelní
činnost těch objektů. Potom už je velmi těžké
uvažovat v kategoriích co bylo dříve a co později. 
Umělá serializace akcí vede k navození situace, 
kdy by se uplatnil Amdahlův zákon (úzké hrdlo
paralelismu). Výjimka je v takovém případě výhodným
komunikačním prostředkem, který bude fungovat 
i v paralelním prostředí. A opět, výjimečný není
samotný objekt výjimky, ale způsob, jakým je 
jeho existence zpracována.

V jazycích typu C++ získaly kdysi výjimky přívlastek
těžkopádného nástroje. Ale bylo to proto, že existovalo
méně zkušeností s tím, jak jsou užitečné a obtížně
nahraditelné. A taky to souviselo s vývojem překladačů
a s generováním kompilovaného kódu. A taky, v C/C++
se vše měřilo na mikrosekundy a vše je 

[python] generatorovy vyraz (bylo Re: nevznik objektu)

2010-03-24 Tema obsahu Přikryl Petr


Od: David Rohleder
[...] si snažím o
objasnit některé věci. Imho jsou
napřiklad některé z těch syntaktických 
cukrů špatně - např. odstranění
závorek z generátorů (i*i for i in range(4)).
Ne, že by se na to nedalo
zvyknout, akorát to tady trochu přehnali.

Ty závorky nejsou odstraněné. Ty závorky
nebyly nikdy potřeba... až na některé výjimky,
jako 

  g = (i*i for i in range(4))

Jde jen o specialitu, aby překladač poznal,
že to je generátorový výraz. Je to jako numerický
výraz -- taky se může zapsat do závorek.

 g = i*i for i in range(4)
  File stdin, line 1
g = i*i for i in range(4)
  ^
SyntaxError: invalid syntax
 g = (i*i for i in range(4))
 g
generator object genexpr at 0x0282A580

A určitě to není generátor n-tice. Tu si 
ale můžu jednoduše z generátorového výrazu
vytvořit. V níže uvedeném příkladu už ta syntaktická
specialita není nutná, takže je to tuple() s holým
generátorovým výrazem uvnitř:

 t = tuple(i*i for i in range(4))
 t
(0, 1, 4, 9)

Jde taky o to, že generátorový výraz lze napsat
na víc řádků. Tady je jiný výraz a je to pitomost,
ale pro ilustraci:

 g = (i*i
...for i in range(4)
...if i  2)
 g
generator object genexpr at 0x0282A648
 tuple(g)
(9,)

Kdyby tam nebyly (u toho výrazu) ty závorky,
vypadal by for jako špatně odsazený... a vůbec 
by to překladači mohlo hodně zamotat hlavu.
Nehledě na to, že by se to for mohlo odsadit 
stejně jako g a pak už by to bylo úplně divné.

pepr
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python