<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Komentarze do: Python zjada dinozaury</title>
	<atom:link href="http://tomwys.info/2009/11/python-zjada-dinozaury/feed/" rel="self" type="application/rss+xml" />
	<link>http://tomwys.info/2009/11/python-zjada-dinozaury/</link>
	<description>czyli co piszczy w internecie</description>
	<lastBuildDate>Tue, 03 Aug 2010 09:29:04 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
	<item>
		<title>Autor: Tomasz Kowalczyk</title>
		<link>http://tomwys.info/2009/11/python-zjada-dinozaury/comment-page-1/#comment-21</link>
		<dc:creator>Tomasz Kowalczyk</dc:creator>
		<pubDate>Mon, 30 Nov 2009 03:42:55 +0000</pubDate>
		<guid isPermaLink="false">http://tomwys.info/?p=205#comment-21</guid>
		<description>Lamerskie to jest po pierwsze nazywanie wszystkich wokół lamerami, bo mają czelność uważać inaczej niż Jaśnie Pan, to tak tytułem wstępu.

Przezroczyste akcesory nie załatwiają sprawy, ponieważ w takim wypadku odwołujesz się bezpośrednio do atrybutu, któremu też być może będziesz chciał zmienić nazwę. I co wtedy? Zrobisz sobie w __get() i __set() ifa, że jak chcę &quot;dupa&quot;, to daj mi &quot;niedupa&quot;? Jestem przeciwny pisaniu niepotrzebnego i nieużywanego kodu, ale zawsze używam jawnych akcesorów [nie ma akcesora == nie ma dostępu] dla atrybutów klas, ponieważ mają one czytelne nazwy i są poniekąd standardem, więc nikt się nie zastanawia co dana metoda robi, a ukrywając dostęp za metodą można dowolnie żonglować tym, co jest &quot;pod maską&quot;.

Po drugie pastwicie się nad tymi getsetami, jakby naprawdę było się o co kłócić. Nie wiem jak u was, ale np. jak mam klasę CPerson, która ma atrybut surname, to u mnie getter wygląda następująco: return $this-&gt;surname;. W setterze dorzucam gratis parę testów, czy ktoś mi nie podstawia jakiegoś inta za nazwisko, ale nic poza tym. Może wasze akcesory liczą jakieś zaawansowane całki, czy sterują w międzyczasie rakietami ziemia - ziemia, nie wiem, moje niestety robią tylko to, co w nazwie. Generalnie, jeśli akcesor ma robić coś więcej [istotnie więcej] niż to, co w nazwie, to awansuje do rangi metody, a tam już &quot;hulaj dusza&quot;.

Pozdrawiam i mam nadzieję, że się nikt na mnie nie obraził. Rzeczowa dyskusja FTW! ;]</description>
		<content:encoded><![CDATA[<p>Lamerskie to jest po pierwsze nazywanie wszystkich wokół lamerami, bo mają czelność uważać inaczej niż Jaśnie Pan, to tak tytułem wstępu.</p>
<p>Przezroczyste akcesory nie załatwiają sprawy, ponieważ w takim wypadku odwołujesz się bezpośrednio do atrybutu, któremu też być może będziesz chciał zmienić nazwę. I co wtedy? Zrobisz sobie w __get() i __set() ifa, że jak chcę &#8222;dupa&#8221;, to daj mi &#8222;niedupa&#8221;? Jestem przeciwny pisaniu niepotrzebnego i nieużywanego kodu, ale zawsze używam jawnych akcesorów [nie ma akcesora == nie ma dostępu] dla atrybutów klas, ponieważ mają one czytelne nazwy i są poniekąd standardem, więc nikt się nie zastanawia co dana metoda robi, a ukrywając dostęp za metodą można dowolnie żonglować tym, co jest &#8222;pod maską&#8221;.</p>
<p>Po drugie pastwicie się nad tymi getsetami, jakby naprawdę było się o co kłócić. Nie wiem jak u was, ale np. jak mam klasę CPerson, która ma atrybut surname, to u mnie getter wygląda następująco: return $this-&gt;surname;. W setterze dorzucam gratis parę testów, czy ktoś mi nie podstawia jakiegoś inta za nazwisko, ale nic poza tym. Może wasze akcesory liczą jakieś zaawansowane całki, czy sterują w międzyczasie rakietami ziemia &#8211; ziemia, nie wiem, moje niestety robią tylko to, co w nazwie. Generalnie, jeśli akcesor ma robić coś więcej [istotnie więcej] niż to, co w nazwie, to awansuje do rangi metody, a tam już &#8222;hulaj dusza&#8221;.</p>
<p>Pozdrawiam i mam nadzieję, że się nikt na mnie nie obraził. Rzeczowa dyskusja FTW! ;]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Autor: hipertracker</title>
		<link>http://tomwys.info/2009/11/python-zjada-dinozaury/comment-page-1/#comment-20</link>
		<dc:creator>hipertracker</dc:creator>
		<pubDate>Sun, 29 Nov 2009 21:16:30 +0000</pubDate>
		<guid isPermaLink="false">http://tomwys.info/?p=205#comment-20</guid>
		<description>Lamerskie to jest pisanie w stylu getDupa/setDupa w języku, który posiada przezroczyste akcesory.  Problem z javowymi akcesorami jest poważniejszy i żadne IDE tego nie rozwiąże: http://tinyurl.com/yhdp8df</description>
		<content:encoded><![CDATA[<p>Lamerskie to jest pisanie w stylu getDupa/setDupa w języku, który posiada przezroczyste akcesory.  Problem z javowymi akcesorami jest poważniejszy i żadne IDE tego nie rozwiąże: <a href="http://tinyurl.com/yhdp8df" rel="nofollow">http://tinyurl.com/yhdp8df</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Autor: Tomasz Kowalczyk</title>
		<link>http://tomwys.info/2009/11/python-zjada-dinozaury/comment-page-1/#comment-19</link>
		<dc:creator>Tomasz Kowalczyk</dc:creator>
		<pubDate>Sun, 29 Nov 2009 19:50:24 +0000</pubDate>
		<guid isPermaLink="false">http://tomwys.info/?p=205#comment-19</guid>
		<description>@hipertracker: dlaczego uważasz np. taki getter który zwraca wyłącznie wartość atrybutu za lamerski? Wszystko zależy od przeznaczenia takiej metody, moim zdaniem nie powinieneś obrażać ludzi za ich decyzje, jeśli nie są jednoznacznie złe. Jeśli masz w klasie atrybut, załóżmy jakiś string przechowujący nazwę użytkownika, to co masz zrobić poza [PHP] &quot;return $this-&gt;username;&quot;? W setterach wiadomo, trzeba sprawdzić, co zostało podane, czy jest poprawne, itp., itd. i dopiero wtedy podstawić, ale w getterach &quot;zwykły akcesor&quot; jest w większości przypadków wystarczający.</description>
		<content:encoded><![CDATA[<p>@hipertracker: dlaczego uważasz np. taki getter który zwraca wyłącznie wartość atrybutu za lamerski? Wszystko zależy od przeznaczenia takiej metody, moim zdaniem nie powinieneś obrażać ludzi za ich decyzje, jeśli nie są jednoznacznie złe. Jeśli masz w klasie atrybut, załóżmy jakiś string przechowujący nazwę użytkownika, to co masz zrobić poza [PHP] &#8222;return $this-&gt;username;&#8221;? W setterach wiadomo, trzeba sprawdzić, co zostało podane, czy jest poprawne, itp., itd. i dopiero wtedy podstawić, ale w getterach &#8222;zwykły akcesor&#8221; jest w większości przypadków wystarczający.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Autor: Tomasz Kowalczyk</title>
		<link>http://tomwys.info/2009/11/python-zjada-dinozaury/comment-page-1/#comment-18</link>
		<dc:creator>Tomasz Kowalczyk</dc:creator>
		<pubDate>Sun, 29 Nov 2009 19:37:13 +0000</pubDate>
		<guid isPermaLink="false">http://tomwys.info/?p=205#comment-18</guid>
		<description>Zdaję sobie sprawę z tego, że przyzwyczajenie to nie jest dobra rzecz, ale moim zdaniem jest jakiś powód [inny niż lenistwo twórców], dla którego tyle współcześnie używanych języków zapożyczyło składnię z C / C++. Nie wiem, jak Wy, ale ja nie widzę specjalnego zysku w zastąpieniu np. słowa kluczowego &quot;function&quot; skróconą formą &quot;def&quot;, tym bardziej, że we współczesnych IDE wpisanie obu sprowadza się do wpisania dwóch pierwszych liter i zatwierdzenia [Enter]em jednej z podpowiedzianych pozycji. Na pewno trudno byłoby mi się także przestawić na sposób pisania kodu bez używania jakichkolwiek nawiasów klamrowych, ponieważ poprawiały one znacznie czytelność kodu, umożliwiając pisanie &quot;na swój sposób&quot;. Rozumiem, że kod ma być czytelny, ale zmuszanie programisty do pisania w stylu &quot;jedna instrukcja w linijce&quot; to nie jest droga do osiągnięcia celu. Porównanie pisania akcesorów PHP vs Python też jest nie do końca szczęśliwe, ponieważ IDE zwykle je generuje, więc nikt palców nie męczy [ja akurat piszę sam, ale to już prywatne podejście do sprawy], po drugie nie lubię korzystać z funkcjonalności udostępnianych tylko przez jeden język, tak więc w większości wszystkie magiczne __something() odpadają.

Podsumowując - w żadnym wypadku nie zamierzam krytykować autora za ten wpis, bo Python dobrym językiem / środowiskiem jest i basta, ale czy miałbym się na niego przesiąść? Trudno powiedzieć, na razie nie muszę, więc zostaję przy swoim.</description>
		<content:encoded><![CDATA[<p>Zdaję sobie sprawę z tego, że przyzwyczajenie to nie jest dobra rzecz, ale moim zdaniem jest jakiś powód [inny niż lenistwo twórców], dla którego tyle współcześnie używanych języków zapożyczyło składnię z C / C++. Nie wiem, jak Wy, ale ja nie widzę specjalnego zysku w zastąpieniu np. słowa kluczowego &#8222;function&#8221; skróconą formą &#8222;def&#8221;, tym bardziej, że we współczesnych IDE wpisanie obu sprowadza się do wpisania dwóch pierwszych liter i zatwierdzenia [Enter]em jednej z podpowiedzianych pozycji. Na pewno trudno byłoby mi się także przestawić na sposób pisania kodu bez używania jakichkolwiek nawiasów klamrowych, ponieważ poprawiały one znacznie czytelność kodu, umożliwiając pisanie &#8222;na swój sposób&#8221;. Rozumiem, że kod ma być czytelny, ale zmuszanie programisty do pisania w stylu &#8222;jedna instrukcja w linijce&#8221; to nie jest droga do osiągnięcia celu. Porównanie pisania akcesorów PHP vs Python też jest nie do końca szczęśliwe, ponieważ IDE zwykle je generuje, więc nikt palców nie męczy [ja akurat piszę sam, ale to już prywatne podejście do sprawy], po drugie nie lubię korzystać z funkcjonalności udostępnianych tylko przez jeden język, tak więc w większości wszystkie magiczne __something() odpadają.</p>
<p>Podsumowując &#8211; w żadnym wypadku nie zamierzam krytykować autora za ten wpis, bo Python dobrym językiem / środowiskiem jest i basta, ale czy miałbym się na niego przesiąść? Trudno powiedzieć, na razie nie muszę, więc zostaję przy swoim.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Autor: hipertracker</title>
		<link>http://tomwys.info/2009/11/python-zjada-dinozaury/comment-page-1/#comment-17</link>
		<dc:creator>hipertracker</dc:creator>
		<pubDate>Sun, 29 Nov 2009 19:05:09 +0000</pubDate>
		<guid isPermaLink="false">http://tomwys.info/?p=205#comment-17</guid>
		<description>To nie jest nawet standardowe podejście, takie &quot;javowe&quot; akcesory w PHP piszą tylko jacyś lamerzy. A i krótki zapis to nie wszystko (Perl jest też krótki i co z tego?) Ważniejsze są inne rzeczy. Choćby pełna obiektowość Ruby, Pythona, Scali której nie ma ani w Javie ani w PHP. Funkcje które są obiektami pierwszego rzędu itp. itd.</description>
		<content:encoded><![CDATA[<p>To nie jest nawet standardowe podejście, takie &#8222;javowe&#8221; akcesory w PHP piszą tylko jacyś lamerzy. A i krótki zapis to nie wszystko (Perl jest też krótki i co z tego?) Ważniejsze są inne rzeczy. Choćby pełna obiektowość Ruby, Pythona, Scali której nie ma ani w Javie ani w PHP. Funkcje które są obiektami pierwszego rzędu itp. itd.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Autor: Tomasz Wysocki</title>
		<link>http://tomwys.info/2009/11/python-zjada-dinozaury/comment-page-1/#comment-16</link>
		<dc:creator>Tomasz Wysocki</dc:creator>
		<pubDate>Sun, 29 Nov 2009 14:36:01 +0000</pubDate>
		<guid isPermaLink="false">http://tomwys.info/?p=205#comment-16</guid>
		<description>Ideą tego przykładu nie było pokazanie, że PHP jest kiepskie, tylko &quot;standardowego&quot; podejścia do dostępu do zmiennych. Być może lepiej by było gdybym zmienił język przykładu na Javę, ale nie o to tu chodzi. Chodzi o to, że w Pythonie rzeczy najczęściej używane pisze się po prostu krótko. A to powinno być podstawą wszystkich języków.</description>
		<content:encoded><![CDATA[<p>Ideą tego przykładu nie było pokazanie, że PHP jest kiepskie, tylko &#8222;standardowego&#8221; podejścia do dostępu do zmiennych. Być może lepiej by było gdybym zmienił język przykładu na Javę, ale nie o to tu chodzi. Chodzi o to, że w Pythonie rzeczy najczęściej używane pisze się po prostu krótko. A to powinno być podstawą wszystkich języków.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Autor: hipertracker</title>
		<link>http://tomwys.info/2009/11/python-zjada-dinozaury/comment-page-1/#comment-15</link>
		<dc:creator>hipertracker</dc:creator>
		<pubDate>Sun, 29 Nov 2009 14:19:39 +0000</pubDate>
		<guid isPermaLink="false">http://tomwys.info/?p=205#comment-15</guid>
		<description>PHP jak i Python obsługują przezroczyste akcesory. Podany przez ciebie przykład akcesorów dla PHP jest bez sensu, bo tak to można i dla Pythona napisać. Poza tym Python ma całkiem sporo takich &quot;magicznych&quot;, brzydko ponazywanych metod. W ogóle metaprogramowanie w Pythonie (choć o niebo lepsze od tego co można w PHP), jest dużo gorsze, brzydsze, mniej wygodne od Ruby. Np. Python to dziś nie ma porządnych funkcji anonimowych. PHP (od wersji 5.3), nie mówiąc o JavaScripcie i Ruby to bez problemu obsługują.</description>
		<content:encoded><![CDATA[<p>PHP jak i Python obsługują przezroczyste akcesory. Podany przez ciebie przykład akcesorów dla PHP jest bez sensu, bo tak to można i dla Pythona napisać. Poza tym Python ma całkiem sporo takich &#8222;magicznych&#8221;, brzydko ponazywanych metod. W ogóle metaprogramowanie w Pythonie (choć o niebo lepsze od tego co można w PHP), jest dużo gorsze, brzydsze, mniej wygodne od Ruby. Np. Python to dziś nie ma porządnych funkcji anonimowych. PHP (od wersji 5.3), nie mówiąc o JavaScripcie i Ruby to bez problemu obsługują.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Autor: Tomasz Wysocki</title>
		<link>http://tomwys.info/2009/11/python-zjada-dinozaury/comment-page-1/#comment-14</link>
		<dc:creator>Tomasz Wysocki</dc:creator>
		<pubDate>Sun, 29 Nov 2009 13:08:19 +0000</pubDate>
		<guid isPermaLink="false">http://tomwys.info/?p=205#comment-14</guid>
		<description>Znam __get i __set. Jednak możliwość techniczna to jedno, a łatwość i powszechność wykorzystania to drugie. __get i __set wydają się być stworzone raczej dla autorów bibliotek, niż dla zwykłych programistów.
Jeśli chodzi o Python v Ruby, to chyba wypadają podobnie pod względem wygody. Ja póki co skłaniam się ku Pythonowi. Być może kiedyś zmienią mi się upodobania i przejdę na Ruby.</description>
		<content:encoded><![CDATA[<p>Znam __get i __set. Jednak możliwość techniczna to jedno, a łatwość i powszechność wykorzystania to drugie. __get i __set wydają się być stworzone raczej dla autorów bibliotek, niż dla zwykłych programistów.<br />
Jeśli chodzi o Python v Ruby, to chyba wypadają podobnie pod względem wygody. Ja póki co skłaniam się ku Pythonowi. Być może kiedyś zmienią mi się upodobania i przejdę na Ruby.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Autor: hipertracker</title>
		<link>http://tomwys.info/2009/11/python-zjada-dinozaury/comment-page-1/#comment-13</link>
		<dc:creator>hipertracker</dc:creator>
		<pubDate>Sat, 28 Nov 2009 19:43:41 +0000</pubDate>
		<guid isPermaLink="false">http://tomwys.info/?p=205#comment-13</guid>
		<description>PHP może i jest syfiasty, ale posiada też przezroczyste akcesory (hint: metody __get() i __set()). A poza tym, to  od Pythona dużo ładniejszy jest Ruby. :P</description>
		<content:encoded><![CDATA[<p>PHP może i jest syfiasty, ale posiada też przezroczyste akcesory (hint: metody __get() i __set()). A poza tym, to  od Pythona dużo ładniejszy jest Ruby. <img src='http://tomwys.info/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Autor: Tomasz Wysocki</title>
		<link>http://tomwys.info/2009/11/python-zjada-dinozaury/comment-page-1/#comment-12</link>
		<dc:creator>Tomasz Wysocki</dc:creator>
		<pubDate>Sat, 28 Nov 2009 07:35:29 +0000</pubDate>
		<guid isPermaLink="false">http://tomwys.info/?p=205#comment-12</guid>
		<description>lqc:
Dzięki za uwagi. Jeśli chodzi o &quot;rachunek lambda&quot; miałem na myśli to, że można podobnie jak w językach funkcyjnych operować na funkcjach, jak na zwykłych obiektach. Faktycznie trochę niefortunnie to ująłem.

cztery:
Co z tego, że nie są wymagane, jeśli osoby programujące obiektowo i tak muszą je pisać? Magiczne funkcje set i get z PHP są rzadko wykorzystywane, dlatego jesteś skazany na pisanie accesorów lub na brak kontroli dostępu do zmiennych. W Pythonie masz użyteczne narzędzia do tego by pisać settery dopiero wtedy, gdy faktycznie są potrzebne.
Gdy próbujesz kogoś oceniać, identyfikuj się adresem do strony/bloga, tak by można było sprawdzić jakim autorytetem jesteś w danej dziedzinie. Ocenianie kogoś jako anonim to tylko niepotrzebne marnowanie czasu swojego i innych, gdyż taka ocena nie ma wartości.</description>
		<content:encoded><![CDATA[<p>lqc:<br />
Dzięki za uwagi. Jeśli chodzi o &#8222;rachunek lambda&#8221; miałem na myśli to, że można podobnie jak w językach funkcyjnych operować na funkcjach, jak na zwykłych obiektach. Faktycznie trochę niefortunnie to ująłem.</p>
<p>cztery:<br />
Co z tego, że nie są wymagane, jeśli osoby programujące obiektowo i tak muszą je pisać? Magiczne funkcje set i get z PHP są rzadko wykorzystywane, dlatego jesteś skazany na pisanie accesorów lub na brak kontroli dostępu do zmiennych. W Pythonie masz użyteczne narzędzia do tego by pisać settery dopiero wtedy, gdy faktycznie są potrzebne.<br />
Gdy próbujesz kogoś oceniać, identyfikuj się adresem do strony/bloga, tak by można było sprawdzić jakim autorytetem jesteś w danej dziedzinie. Ocenianie kogoś jako anonim to tylko niepotrzebne marnowanie czasu swojego i innych, gdyż taka ocena nie ma wartości.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
