<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Jaros&#322;aw Zabie&#322;&#322;o - BLOG: Akcesory w Javie, Pythonie, Ruby i PHP5</title>
    <link>http://blog.zabiello.com/articles/2006/02/07/akcesory-w-javie-pythonie-ruby-i-php5</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>moje notatki, linki, komentarze</description>
    <item>
      <title>Akcesory w Javie, Pythonie, Ruby i PHP5</title>
      <description>&lt;p&gt;Java, j&#281;zyk kt&#243;ry doby&#322; sobie siln&#261; pozycj&#281; na rynku korporacyjnym, jest od jakiego&#347; czasu pod obstrza&#322;em krytyki z r&#243;&#380;nych stron. Wysz&#322;a ca&#322;a seria ksi&#261;&#380;ek krytykuj&#261;cych model obiektowy oraz  metodologie promowane przez Jav&#281; (od najs&#322;ynniejszej &lt;a href="http://www.amazon.com/gp/product/0596100949/"&gt;&lt;strong&gt;Beyond Java&lt;/strong&gt;&lt;/a&gt; po &lt;a href="http://www.manning.com/books/tate"&gt;Bitter Java&lt;/a&gt;, &lt;a href="http://www.manning.com/books/tate2"&gt;Bitter &lt;span class="caps"&gt;EJB&lt;/span&gt;&lt;/a&gt;, czy inne)&lt;/p&gt;


	&lt;p&gt;Nie umniejszaj&#261;c zalet Javy, jej krytycy wytykaj&#261; jej niepotrzebn&#261; nadmiarowo&#347;&#263; kodu, oci&#281;&#380;a&#322;o&#347;&#263; i ma&#322;&#261; zwrotno&#347;&#263;, kt&#243;ra powoduje &#380;e j&#281;zyk ten s&#322;abo nadaje si&#281; do modnej ostatnio metodologii _&lt;a href="http://agilemanifesto.org/"&gt;agile programming&lt;/a&gt;. _ Aby lepiej ten problem zobaczy&#263;, przyjrzyjmy si&#281; typowej praktyce programist&#243;w Javy. Tekst ten zainspirowany jest &lt;a href="http://jdn.pl/node/520"&gt;niedawn&#261; dyskusj&#261;&lt;/a&gt; jaka mia&#322;a miejsce w jednym z blog&#243;w mojego kolegi.&lt;/p&gt;


	&lt;h3&gt;Czym s&#261; akcesory?&lt;/h3&gt;


	&lt;p&gt;Akcesory (lub inaczej: gettery i settery) to slangowe okreslenie metod jakie u&#380;ywa obiekt do odczytu i modyfikacji swoich atrybut&#243;w. S&#261; one tak nagminnie u&#380;ywane przez programist&#243;w Javy, &#380;e niekt&#243;re edytory (np. Eclipse) zosta&#322;y nawet wyposa&#380;one w makra do automatycznego ich generowania.&lt;/p&gt;


	&lt;h3&gt;Dorzucanie nieu&#380;ywanego kodu &amp;#8220;na wszelki wypadek&amp;#8221;...&lt;/h3&gt;


	&lt;p&gt;Nagminna (w&#347;r&#243;d programist&#243;w Javy) praktyka dodawania akcesor&#243;w do atrybut&#243;w klasy pachnie jakim&#347; &lt;a href="http://en.wikipedia.org/wiki/Antipattern"&gt;antipatternem&lt;/a&gt;  i s&#261; g&#322;osy, kt&#243;re u&#380;ywanie akcesor&#243;w nazwyaj&#261; wprost &lt;a href="http://www.javaworld.com/javaworld/jw-09-2003/jw-0905-toolbox.html"&gt;z&#322;&#261; praktyk&#261;&lt;/a&gt; . Jest w tym troch&#281; racji. Ale, jak to poni&#380;ej wyka&#380;&#281;, jest to pewnego rodzaju kompromis w zwi&#261;zku ze s&#322;abym modelem obiektowy Javy.&lt;/p&gt;


	&lt;p&gt;Dlaczego programi&#347;ci Javy generuj&#261; akcesory dla ka&#380;dego atrybutu nawet, jak nie przewiduj&#261; potrzeby ich u&#380;ywania? Ot&#243;&#380; czyni&#261; to &amp;#8220;na wszelki wypadek&amp;#8221; bo nie wiedz&#261;, czy w przysz&#322;o&#347;ci nie b&#281;dzie im to potrzebne&amp;#8230;&lt;/p&gt;


	&lt;p&gt;We&#378;my np. taki kod (z powodu kolejnego ograniczenia Javy nie mo&#380;na w jednym pliku trzyma&#263; wi&#281;cej, ni&#380; jednej klasy; tu dla kr&#243;tko&#347;ci umieszczam kod z obu plik&#243;w razem)&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_java "&gt;public class First {
  public String msg = &amp;quot;hello&amp;quot;;
}

public class Second extends First {
  public static void main(String[] args) {
    First obj = new First();        
    System.out.println(obj.msg);
  }
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;Jak wida&#263;, w Javie mo&#380;na si&#281;ga&#263; do atrybutu w spos&#243;b bezpo&#347;redni.&lt;/p&gt;


	&lt;p&gt;Wyobra&#378;my sobie jednak, &#380;e projekt nam si&#281; rozr&#243;s&#322; i mamy ju&#380; ca&#322;kiem sporo kodu oraz sporo plik&#243;w (pomna&#380;anych wydatnie przez javowe ograniczenia co do ilo&#347;ci klas mog&#261;cych wyst&#261;pi&#263; w pliku). Teraz przychodzi polecenie aby w momencie odczytu i zapisu atrybutu co&#347; dodatkowego wykona&#263;. (Np. niech to b&#281;dzie logowanie informacji o takim zdarzeniu, albo zablokowanie mo&#380;liwo&#347;ci modyfikacji tre&#347;ci atrybutu. Wszystko jedno co)&lt;/p&gt;


	&lt;p&gt;Mamy zatem pierwszy problem. Trzeba w tych wszystkich milionach miejsc, gdzie odwo&#322;ywali&#347;my si&#281; bezpo&#347;rednio do atrybut&#243;w, wymieni&#263; kod&amp;#8230;&lt;/p&gt;


	&lt;p&gt;W&#322;a&#347;nie dlatego, aby takich niespodzianek unikn&#261;&#263; w przysz&#322;o&#347;ci, programi&#347;ci Javy dorzucaj&#261; dodatkowe metody opakowuj&#261;ce odczyt i zapis atrybut&#243;w. Eclipse upraszcza ten proces zwalniaj&#261;c programist&#281; od r&#281;cznego wpisywania tego kodu.&lt;/p&gt;


	&lt;p&gt;Klasa First po zmianie:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_java "&gt;public class First {
  public String msg = &amp;quot;hello&amp;quot;;
  public String getMsg() {
    return msg;
  }
  public void setMsg(String msg) {
    this.msg = msg;
  }
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;Wydaje si&#281;, &#380;e problem jest rozwi&#261;zany. Ale to dopiero pocz&#261;tek innych problem&#243;w.&lt;/p&gt;


	&lt;p&gt;Je&#347;li  bowiem, automatycznie dorzucamy te metody do wszystkich tysi&#281;cy atrybut&#243;w nowo tworzonych klas, to pierwsz&#261; rzecz&#261; kt&#243;r&#261; zauwa&#380;amy, jest nag&#322;e &amp;#8220;spuchni&#281;cie kodu&amp;#8221;. &lt;em&gt;Mamy kup&#281; nieu&#380;ywanych linii kodu, z kt&#243;rych prawdopodobnie wi&#281;kszo&#347;&#263; nie b&#281;dzie nigdy u&#380;ywana!&lt;/em&gt;&lt;/p&gt;


	&lt;p&gt;Ale to nie wszystko. Za&#322;&#243;&#380;my, &#380;e stajemy przed potrzeb&#261; &lt;em&gt;zmiany nazwy atrybutu&lt;/em&gt;. Oczywi&#347;cie, mo&#380;emy to zmieni&#263; w jednym miejscu (w ciele akcesora), ale wtedy wprowadzamy chaos w pozosta&#322;ej cz&#281;&#347;ci odno&#347;nie&amp;#8230; nazw (atrybut &amp;#8220;msg&amp;#8221; zmieniony na &amp;#8220;title&amp;#8221; troch&#281; g&#322;upio wygl&#261;da z akcesorami o nazwie &amp;#8220;getMsg&amp;#8221; i &amp;#8220;setMsg&amp;#8221;) Musimy przekopa&#263; si&#281; przez miliony miejsc w kodzie i pozmienia&#263; nazwy starym wywo&#322;aniom.&lt;/p&gt;


	&lt;p&gt;Zobaczmy jak ta sytuacja wygl&#261;da w j&#281;zykach dynamicznych.&lt;/p&gt;


	&lt;h3&gt;Python&lt;/h3&gt;


	&lt;p&gt;Python (podobnie jak Java) pozwala na bezpo&#347;redni dost&#281;p do atrybut&#243;w klasy. A co w sytuacji kiedy chcemy opakowa&#263; atrybut akcesorami? Nic prostszego. &lt;em&gt;Python pozwala na dodanie akcesor&#243;w wtedy, i tylko wtedy, kiedy s&#261; potrzebne. Na dodatek czyni to w spos&#243;b ca&#322;kowicie przezroczysty dla pozosta&#322;ej cz&#281;&#347;ci kodu.&lt;/em&gt; Programista Javy mo&#380;e sobie o tym tylko pomarzy&#263;.&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="keyword"&gt;class &lt;/span&gt;&lt;span class="class"&gt;X(object):&lt;/span&gt;
  &lt;span class="keyword"&gt;def &lt;/span&gt;&lt;span class="method"&gt;get_msg&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="constant"&gt;self&lt;/span&gt;&lt;span class="punct"&gt;):&lt;/span&gt;
    &lt;span class="keyword"&gt;return&lt;/span&gt; &lt;span class="constant"&gt;self&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;__msg&lt;/span&gt;
  &lt;span class="keyword"&gt;def &lt;/span&gt;&lt;span class="method"&gt;set_msg&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="constant"&gt;self&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;val&lt;/span&gt;&lt;span class="punct"&gt;):&lt;/span&gt;
    &lt;span class="constant"&gt;self&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;__msg&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;val&lt;/span&gt;
  &lt;span class="ident"&gt;msg&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;property&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;get_msg&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;set_msg&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;

&lt;span class="ident"&gt;obj&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="constant"&gt;X&lt;/span&gt;&lt;span class="punct"&gt;()&lt;/span&gt;
&lt;span class="ident"&gt;obj&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;msg&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;hello&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;
&lt;span class="ident"&gt;print&lt;/span&gt; &lt;span class="ident"&gt;obj&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;msg&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;Python pozwala tak&#380;e zwi&#261;za&#263; z dowoln&#261; metod&#261;, atrybutem, klas&#261; czy modu&#322;em &lt;em&gt;docstring&lt;/em&gt;, czyli tekst z dokumentacj&#261;, obja&#347;nieniem itp. To jedna z genialnych cech Pythona specjalnie pomy&#347;lana dla leniwych programist&#243;w, kt&#243;rym nie chce si&#281; pisa&#263; dokumentacji. ;)&lt;/p&gt;


	&lt;h3&gt;Ruby&lt;/h3&gt;


	&lt;p&gt;W j&#281;zyku Ruby z definicji nie ma &#380;adnej mo&#380;liwo&#347;ci dost&#281;pu do atrubut&#243;w klasy inaczej jak przez akcesory. Odpada wi&#281;c problem zapominania aby je doda&#263;. Ruby jednak narzuca nazwy dla akcesor&#243;w (maj&#261; nazw&#281; tak&#261; jak atrybut!) i ca&#322;o&#347;&#263; wygl&#261;da tak, jakby operowano bezpo&#347;rednio na atrybucie.&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="keyword"&gt;class &lt;/span&gt;&lt;span class="class"&gt;X&lt;/span&gt;
  &lt;span class="keyword"&gt;def &lt;/span&gt;&lt;span class="method"&gt;msg&lt;/span&gt;
    &lt;span class="attribute"&gt;@msg&lt;/span&gt;
  &lt;span class="keyword"&gt;end&lt;/span&gt;
  &lt;span class="keyword"&gt;def &lt;/span&gt;&lt;span class="method"&gt;msg=&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;val&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;
    &lt;span class="attribute"&gt;@msg&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;val&lt;/span&gt;
  &lt;span class="keyword"&gt;end&lt;/span&gt;
&lt;span class="keyword"&gt;end&lt;/span&gt;

&lt;span class="ident"&gt;obj&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="constant"&gt;X&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;new&lt;/span&gt;
&lt;span class="ident"&gt;obj&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;msg&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;hello&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;
&lt;span class="ident"&gt;puts&lt;/span&gt; &lt;span class="ident"&gt;obj&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;msg&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

Dla os&#243;b, kt&#243;re nie lubi&#261; za du&#380;o pisa&#263;, Ruby ma wygodne skr&#243;ty. Powy&#380;sz&#261; definicj&#281; klasy mo&#380;na zapisa&#263; tak&#380;e w ten spos&#243;b:
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="keyword"&gt;class &lt;/span&gt;&lt;span class="class"&gt;X&lt;/span&gt;
  &lt;span class="ident"&gt;attr_accessor&lt;/span&gt; &lt;span class="symbol"&gt;:msg&lt;/span&gt;
&lt;span class="keyword"&gt;end&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;Istniej&#261; tak&#380;e oddzielne skr&#243;ty dla getter&#243;w i setter&#243;w. No i mo&#380;na po przecinku doda&#263; akcesory dla ca&#322;ej grupy atrybut&#243;w.&lt;/p&gt;


	&lt;h3&gt;&lt;span class="caps"&gt;PHP5&lt;/span&gt;&lt;/h3&gt;


	&lt;p&gt;&lt;span class="caps"&gt;PHP&lt;/span&gt; w wersji 5 ma przebudowany model obiektowy od podstaw. Tw&#243;rcy j&#281;zyka &lt;span class="caps"&gt;PHP&lt;/span&gt; nie starali si&#281; poprawia&#263; modelu obiektowego &lt;span class="caps"&gt;PHP4&lt;/span&gt; (by&#322; on tak z&#322;y, &#380;e pro&#347;ciej by&#322;o im napisa&#263; go od nowa). W nowym &lt;span class="caps"&gt;PHP5&lt;/span&gt; mamy ju&#380; mo&#380;liwo&#347;&#263; przezroczystego dodania akcesora.&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_php "&gt;&amp;lt;?php
class X {
  private $attributes = array('msg'=&amp;gt;null);
  private function __get($attrname) {
    return $this-&amp;gt;attributes[$attrname];
  }
  private function __set($attrname, $val) {
    $this-&amp;gt;attributes[$attrname] = $val;
  }
}

$obj = new X();
$obj-&amp;gt;msg = &amp;quot;hello&amp;quot;;
print $obj-&amp;gt;msg;
?&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;Sk&#322;adnia mo&#380;e nie jest tak prosta jak w Ruby, ale (przynajmniej w tym miejscu), &lt;span class="caps"&gt;PHP5&lt;/span&gt; zachowuje si&#281; tu sensownie i unika dylemat&#243;w Javy.&lt;/p&gt;</description>
      <pubDate>Tue, 07 Feb 2006 23:25:00 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:3c61a0f6-2070-4178-b4fb-4db526cb572e</guid>
      <author>Jaros&#322;aw Zabie&#322;&#322;o</author>
      <link>http://blog.zabiello.com/articles/2006/02/07/akcesory-w-javie-pythonie-ruby-i-php5</link>
      <category>Python</category>
      <category>Ruby</category>
      <category>Java</category>
      <category>java</category>
      <category>php</category>
      <category>python</category>
      <category>ruby</category>
    </item>
    <item>
      <title>"Akcesory w Javie, Pythonie, Ruby i PHP5" by Jaros&#322;aw Zabie&#322;&#322;o</title>
      <description>&lt;p&gt;@michal: ty nie tylko lubisz akcesory, ale tak&#380;e Stra&#380;nic&#281;, co? Charakterystyczna k&#322;&#243;tliwo&#347;&#263; i zgry&#378;liwo&#347;&#263; po&#322;&#261;czona z pieniactwem oraz nieumiej&#281;tno&#347;&#263; formowania &lt;strong&gt;konkretnych&lt;/strong&gt; zarzut&#243;w okraszona &#347;miesznymi b&#322;&#281;dami ortograficznymi  doskonale pasuje do profilu typowego, jehowickiego trolla.&lt;/p&gt;


	&lt;p&gt;Co prawda mam w&#261;tpliwo&#347;ci, czy ta notka o akcesorach jest do tego odpowiednim miejscem, ale ch&#281;tnie us&#322;ysz&#281; jakikolwiek konkretny merytorycznie zarzut co do &amp;#8220;moich stronek&amp;#8221;. Na razie nie poda&#322;e&#347; niczego konkretnego poza epitetami kt&#243;re wystawiaj&#261; ci nie najlepsze &#347;wiadectwo.&lt;/p&gt;


	&lt;p&gt;Co do innych kwestii, to robisz z siebie idiot&#281;, bo ja nigdzie nie twierdz&#281;, &#380;e Ruby jest najprostszym j&#281;zykiem. Jest mo&#380;e pi&#281;kniejszy i du&#380;o bardziej ekspresywny od Javy, ale na pewno nie jest jednym z najprostszych j&#281;zyk&#243;w &amp;#8211; Java jest du&#380;o prostsza. (Inna sprawa, &#380;e jak ju&#380; si&#281; troch&#281; zna JRuby, to zwykle mo&#380;na w nim wyrazi&#263; to samo w u&#322;amku tego, co trzeba by napisa&#263; w Javie.)&lt;/p&gt;


	&lt;p&gt;Aby&#347; jednak ju&#380; wi&#281;cej nie wyskakiwa&#322; ze swoj&#261; krucjat&#261; przeciwko wiatrakom, wyra&#380;&#281; to wprost: nie mam nic przeciwko platformie Javy. Wpompowano w ni&#261; miliardy dolar&#243;w to i wiele bibliotek jest porz&#261;dnie zrobionych. Nie znaczy to jednak, &#380;e wszystko jest tam idealne. Je&#347;li nie podoba ci si&#281; ksi&#261;&#380;ka Bruce&amp;#8217;a Tate (ka&#380;dy inteligentny widzi, &#380;e ona jest celowo prowokuj&#261;ca) to poczytaj sobie to, co pisz&#261; tacy ludzie jak np. Martin Fowler czy Dave Thomas.&lt;/p&gt;


	&lt;p&gt;Proponuj&#281; zatem troch&#281; wi&#281;cej otwarcia umys&#322;u i oderwania si&#281;&#160;od wywo&#322;uj&#261;cej wzd&#281;cia lektury &amp;#8220;pokarmu na czas s&#322;uszny&amp;#8221;, bo ewidentnie ci szkodzi na psychik&#281;.&lt;/p&gt;</description>
      <pubDate>Thu, 18 Sep 2008 02:33:59 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:c6dee5d4-d7e4-4327-9fbb-6d63154f95ab</guid>
      <link>http://blog.zabiello.com/articles/2006/02/07/akcesory-w-javie-pythonie-ruby-i-php5#comment-1829</link>
    </item>
    <item>
      <title>"Akcesory w Javie, Pythonie, Ruby i PHP5" by michal</title>
      <description>&lt;p&gt;A zeby nie byc calkowicie o/t :)
Lubie gettery i settery w Javie. Chociaz najbardzizej podoba mi sie konwencja C#.&lt;/p&gt;</description>
      <pubDate>Wed, 17 Sep 2008 21:40:15 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:39d0323a-6f66-4181-a0ad-771cba729744</guid>
      <link>http://blog.zabiello.com/articles/2006/02/07/akcesory-w-javie-pythonie-ruby-i-php5#comment-1828</link>
    </item>
    <item>
      <title>"Akcesory w Javie, Pythonie, Ruby i PHP5" by michal</title>
      <description>&lt;p&gt;Ale nigdy nie odpowiedziales mi na pytania ,ktore Ci zadaje. Podniecasz sie skladnia, jakby byla najwazniejsza. Jakby ludzie potrzebowali prostego jezyka &amp;#8211; programowali by VB. Ale ludzie potrzebuja poterznego narzedzia, sprawdzonego i przetestowaonego, z odpowiednia iloscia fachowcow. Nie chcialem rozwiajac tematu ale w/g mnie nie jestes czlowiekiem, z ktorym mozna dyskutowac o inzynierii oprogramowania. Jestes koderem jednego z najprostrzych jezykow (jak sam mowisz) i probujesz wmowic, ze jak ktos opanowal ( i dobrze sie czuje w trudniejszym/potezniejszym ) to jest gorszy od Ciebie bo jest zacofany. Linki , oktorych mowilem:
&amp;#8220;Moje serwisy&amp;#8221; po prawej stronie.&lt;/p&gt;


	&lt;p&gt;Smiac mi sie chce ,ze ktos taki jak Ty (piszacy takie prymitywne rzeczy) i tak malej wiedzy (chyba ,ze jestes skromny:D), kluci sie na tematy ,o ktorych nie ma pojecia.&lt;/p&gt;


	&lt;p&gt;Przyznaj sie prosze szczerze &amp;#8211; czy jest jakas rzecz, ktora napisales w zyciu ktora sie mozesz pochwalic?&lt;/p&gt;


	&lt;p&gt;Ja nie jestem ograniczony z tego wzgledu, ze dla mnie wazniejsze od jezyka jest cel,uzyte procesy, technologia ,oraz wymagania klienta.&lt;/p&gt;


	&lt;p&gt;Prosze Cie, zaloz topic:&lt;/p&gt;


	&lt;p&gt;Zabiello (nie ruby &amp;#8211; to jezyk jak jezyk) vs Reszta swiata ( Nie java &amp;#8211; bo to jest 10% Projektu )&lt;/p&gt;


	&lt;p&gt;Pamietaj: Jezyk to narzedzie!!!
Nie religia :P&lt;/p&gt;</description>
      <pubDate>Wed, 17 Sep 2008 20:53:53 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:69dc2ec4-eff4-40c5-8ad7-a2928eb80bfc</guid>
      <link>http://blog.zabiello.com/articles/2006/02/07/akcesory-w-javie-pythonie-ruby-i-php5#comment-1827</link>
    </item>
    <item>
      <title>"Akcesory w Javie, Pythonie, Ruby i PHP5" by Jaros&#322;aw Zabie&#322;&#322;o</title>
      <description>&lt;p&gt;@michal: Po pierwsze, udowodni&#322;e&#347; &#380;e nie potrafisz czyta&#263; ze zrozumieniem. Artyku&#322; do kt&#243;rego odnosz&#261; si&#281; te komentarze dotyczy&#322; sk&#322;adni j&#281;zyk&#243;w a nie jako&#347;ci ich bibliotek. Po drugie, nie przedstawi&#322;e&#347; niczego konkretnego na argumenty w w/w tek&#347;cie i rozpocz&#261;&#322;e&#347; swoj&#261;&#160;krucjat&#281; (nie na temat) niczym rasowy troll. Je&#347;li chcesz zobaczy&#263; komu sp&#322;ukano m&#243;zg to si&#281; lepiej przejrzyj w lusterku.&lt;/p&gt;</description>
      <pubDate>Wed, 17 Sep 2008 00:21:06 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:00560b7d-23c9-47c9-be68-e5cf7255c4b0</guid>
      <link>http://blog.zabiello.com/articles/2006/02/07/akcesory-w-javie-pythonie-ruby-i-php5#comment-1825</link>
    </item>
    <item>
      <title>"Akcesory w Javie, Pythonie, Ruby i PHP5" by michal</title>
      <description>&lt;p&gt;Poprostu jedziesz po ludziach programujacych w innych jezykach niz Ruby . Nie mam do Ciebie nic osobistego ale Twoja postawa budzi u czesci ludzi &amp;#8211; w tym mnie postawe obronna. Jezeli jeszcze nazywasz mnie oszolomem, mimo ze mnie nie znasz &amp;#8211; nie dziw sie takich postow.&lt;/p&gt;


	&lt;p&gt;Zeby podsumowac &amp;#8211; kazdy jezyk ma zastosowanie i szanuje Rubego ale nie mozna ludziom wmawiac ,ze to jest jedynie sluszna droga i w kazdym aspekcie przewyzsza jave. Bo np. ja jestem bardzo zadowolony z tego jezyka i nie podzielam Twojej fascynacji Rubym. Nie zauwazam problemow, ktore Ty wyolbrzymiasz. Znam dobrze miejsce javy, znam tez miejsce Rubego. Ale poprostu mi uwierz, ze projekty komercyjne rzadza sie zupelnie innymi prawami i firmy nie odejda od Javy. I to nie tylko kwestia przyzwyczajenia , czy dostepu do bibliotek. Naprawde &amp;#8211; mozna na ten temat pisac ksiazki ale wielokrotnie musialeme pisac programy w Javie 1.4 nie w 1.6 bo taka byla konwencja w firmie. Przepraszam za off Topic &amp;#8211; nie bede wiecej rozwijal tego tematu. Poprostu mniej atakuj &amp;#8211; bedziesz mniej atakowany.&lt;/p&gt;</description>
      <pubDate>Tue, 16 Sep 2008 22:52:26 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:9e84e394-48e3-45f0-8502-a732de05498e</guid>
      <link>http://blog.zabiello.com/articles/2006/02/07/akcesory-w-javie-pythonie-ruby-i-php5#comment-1824</link>
    </item>
    <item>
      <title>"Akcesory w Javie, Pythonie, Ruby i PHP5" by Jaros&#322;aw Zabie&#322;&#322;o</title>
      <description>&lt;p&gt;Chodzi ci o obej&#347;cie kolizji nazwy konstruktora z identycznie nazwan&#261; metod&#261; w Javie? To akurat by&#322;a dosy&#263; niebanalna sprawa i nie by&#322;o nigdzie udokumentowane rozwi&#261;zanie. Opisa&#322;em w &lt;a href="http://blog.zabiello.com/articles/2008/08/14/jruby-initialize-problem" rel="nofollow"&gt;innym miejscu&lt;/a&gt; jak to obej&#347;&#263;. Co&#347; ty taki zgry&#378;liwy?  Wyja&#347;nisz te&#380; o jakie&#380; to konkretnie &amp;#8220;stronki&amp;#8221; ci chodzi? Nie wiem o co ci chodzi.&lt;/p&gt;</description>
      <pubDate>Mon, 15 Sep 2008 21:46:11 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:abbc21e7-8887-4856-b828-107739219157</guid>
      <link>http://blog.zabiello.com/articles/2006/02/07/akcesory-w-javie-pythonie-ruby-i-php5#comment-1822</link>
    </item>
    <item>
      <title>"Akcesory w Javie, Pythonie, Ruby i PHP5" by michal</title>
      <description>&lt;p&gt;&amp;#8220;Je&#347;li chodzi o dost&#281;p do bibliotek javowych, to powiniene&#347; poczyta&#263; sobie co&#347; o JRuby (rozwijany aktualnie przez Sun&#8217;a). Dost&#281;p do aplet&#243;w, JDBC czy dowolnych bibliotek Javy to tam &#347;miesznie prosta sprawa.&amp;#8221;&lt;/p&gt;


	&lt;p&gt;Smiesznie prosta sprawa? A dlaczego prosiles o pomoc na pl.org.ruby? Zeby Ci powiedziali jak uzywac metod?&lt;/p&gt;</description>
      <pubDate>Mon, 15 Sep 2008 18:59:55 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:aa5f0461-cea7-4db7-a5b4-ed7e075822ce</guid>
      <link>http://blog.zabiello.com/articles/2006/02/07/akcesory-w-javie-pythonie-ruby-i-php5#comment-1821</link>
    </item>
    <item>
      <title>"Akcesory w Javie, Pythonie, Ruby i PHP5" by michal</title>
      <description>&lt;p&gt;@Jareczku nie unos sie. Widzialem Twoje stronki &amp;#8211; sa godne pozalowania.&lt;/p&gt;</description>
      <pubDate>Mon, 15 Sep 2008 18:57:13 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:44d6fb18-c9b4-45f1-80c0-b9b050160969</guid>
      <link>http://blog.zabiello.com/articles/2006/02/07/akcesory-w-javie-pythonie-ruby-i-php5#comment-1820</link>
    </item>
    <item>
      <title>"Akcesory w Javie, Pythonie, Ruby i PHP5" by Jaros&#322;aw Zabie&#322;&#322;o</title>
      <description>&lt;p&gt;A  co zrobisz w wypadku kiedy wcze&#347;niej u&#380;ywany atrybut publiczny chcesz rozbudowa&#263; o dodatkowo wykonywany kod &lt;strong&gt;czego wcze&#347;niej tego nie planowa&#322;e&#347;&lt;/strong&gt;? Le&#380;ysz i kwiczysz. Musisz zmieni&#263; nie tylko jego nazw&#281;, ale i miliony miejsc, kt&#243;re z tego korzystaj&#261;. I nawet Eclipse nic nie pomo&#380;e, jak to jest u&#380;ywane w r&#243;&#380;nych projektach.&lt;/p&gt;


	&lt;p&gt;Albo mo&#380;esz od pocz&#261;tku ka&#380;dy atrybut opakowywa&#263; w metody dost&#281;powe, tylko &#380;e (1) to g&#322;upio wygl&#261;da, (2) tworzysz kod, kt&#243;ry nic nie robi dodaj&#261;c go &amp;#8220;na wszelki wypadek&amp;#8221;. To, co nazwa&#322;e&#347; &amp;#8220;dobr&#261; praktyk&#261; programistyczn&#261;&amp;#8221; ja bym raczej tu nazwa&#322; &amp;#8220;javowym z&#322;em koniecznym&amp;#8221; (sk&#322;adnia Javyj est za prymitywna, aby to jako&#347; lepiej rozwi&#261;za&#263;).&lt;/p&gt;


	&lt;p&gt;Co za&#347; do zmiany nazwy metody dost&#281;powej w klasie Rubiego, to najpro&#347;ciej jest doda&#263; alias do starej nazwy i ju&#380;. Nic nie trzeba zmienia&#263; w milionach projekt&#243;w i bibliotek kt&#243;re z tego korzystaj&#261;.&lt;/p&gt;


	&lt;p&gt;Co do reszty, to si&#281; zgadzam.&lt;/p&gt;</description>
      <pubDate>Wed, 10 Sep 2008 03:26:41 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:cf426c05-ddce-433f-a9aa-76aabf78a05d</guid>
      <link>http://blog.zabiello.com/articles/2006/02/07/akcesory-w-javie-pythonie-ruby-i-php5#comment-1805</link>
    </item>
    <item>
      <title>"Akcesory w Javie, Pythonie, Ruby i PHP5" by Marek Dominiak</title>
      <description>&lt;p&gt;Co do akcesor&#243;w w javie to nie jest a&#380; taka kiepska sprawa jakby mog&#322;o si&#281; wydawa&#263; &amp;#8211; trzeba tylko trzyma&#263; si&#281;  dobrych praktyk programistycznych tzn.:&lt;/p&gt;


	&lt;p&gt;Je&#347;li pole chcemy udost&#281;pni&#263; publicznie to dobr&#261; praktyk&#261; programistyczn&#261; zahermetyzowanie jej w taki spos&#243;b aby odczyt/zapis odbywa&#322; si&#281; tylko przez metody dost&#281;powe.&lt;/p&gt;


	&lt;p&gt;Jednak cz&#281;&#347;ciej potrzebujemy p&#243;l o zasi&#281;gu private &amp;#8211; mo&#380;emy sobie z nimi robi&#263; co chcemy robi&#263; w klasie, a je&#347;li pojawi si&#281; wymaganie &#380;e musimy co&#347; robi&#263; przy zapisie czy odczycie to Eclipse i Netbeans potrafi&#261; zamieni&#263; te wywo&#322;ania na u&#380;ycie metod dost&#281;powych&lt;/p&gt;


	&lt;p&gt;A co je&#347;li zmieni si&#281; nazwa pola kt&#243;ry udost&#281;pnili&#347;my publicznie przez metody dost&#281;powe? Eclipse  zrefaktoryzuje nazwy metod ich wywo&#322;ania oraz oczywi&#347;cie nazw&#281; pola, netbeans w wi&#281;kszych b&#243;lach te&#380;. Ale przecie&#380; zmiana nazwy atrybutu w Rubym te&#380; nie b&#281;dzie taka przyjemna &amp;#8211; te&#380; w milionie miejsc w kodzie musisz zmieni&#263; nazw&#281; atrybutu w wywo&#322;aniach!&lt;/p&gt;


	&lt;p&gt;Odno&#347;nie &amp;#8220;Thinking in Java&amp;#8221; &amp;#8211; Bruce Eckel raczej &#347;wiadomie zreklamowa&#322; Pythona w tej ksi&#261;&#380;ce.&lt;/p&gt;


	&lt;p&gt;Co do technologii webowych moim zdaniem j&#281;zyki dynamiczne b&#281;d&#261; cz&#281;&#347;ciej wykorzystywane do lekkich projekt&#243;w, a j&#281;zyki takie jak java do du&#380;ych biznesowych projekt&#243;w (ja na razie, mo&#380;liwe &#380;e to si&#281; zmieni). Niemniej nie mo&#380;na zauwa&#380;y&#263; tego &#380;e sun &#322;aduje sporo szmalu w j&#281;zyki dynamiczne i ich wsparcie (JRuby, Groovy, wspracie Rails i Grails w netbeansie).&lt;/p&gt;</description>
      <pubDate>Tue, 09 Sep 2008 23:58:05 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:3c77c06f-3046-4c4f-947a-c5172b5d85df</guid>
      <link>http://blog.zabiello.com/articles/2006/02/07/akcesory-w-javie-pythonie-ruby-i-php5#comment-1804</link>
    </item>
    <item>
      <title>"Akcesory w Javie, Pythonie, Ruby i PHP5" by Jaros&#322;aw Zabie&#322;&#322;o</title>
      <description>&lt;p&gt;@michal: Dlaczego trolujesz komentarze, oszo&#322;omie? Temat artyku&#322;u dotyczy&#322; &lt;strong&gt;sk&#322;adni&lt;/strong&gt; akcesor&#243;w kt&#243;ra jest kiepsko zaprojektowana w Javie powoduj&#261;c sztuczne tworzenie kodu, kt&#243;ry nic nie robi w nadziei, &#380;e &amp;#8220;mo&#380;e kiedy&#347; si&#281; przyda&amp;#8221;.&lt;/p&gt;


	&lt;p&gt;G&#322;&#243;wn&#261; zalet&#261; platformy Java jest JVM. Sun zrozumia&#322;, &#380;e wcze&#347;niejsze pienia o tym aby Java by&#322;a dobra na wszystko to utopia. St&#261;d inwestuje w alternatywne j&#281;zyki dla JVM (JRuby, Jython, Groovy itp) bo do pewnych zastosowa&#324; s&#261; one du&#380;o lepsze od Javy. Kropka. Za&#347; ksi&#261;&#380;ki &amp;#8220;Beyond Java&amp;#8221; zupe&#322;nie nie zrozumia&#322;e&#347;, no c&#243;&#380;, nie ka&#380;dy potrafi czyta&#263; ze zrozumieniem.&lt;/p&gt;


	&lt;p&gt;Tak w og&#243;le jaka&#347; ironia losu. Do Javy pierwotnie zniech&#281;ci&#322;a mnie ksi&#261;&#380;ka &amp;#8220;Thinking in Java&amp;#8221; bo Bruce Eckel (niechc&#261;cy) zareklamowa&#322; tam &#347;wietnego Pythona. Teraz po paru latach, dzi&#281;ki JRubiemu zainteresowa&#322;em si&#281; z powrotem Jav&#261;. Nawet na j&#281;zyk, mimo &#380;e prymitywny, nie patrz&#281; ju&#380; tak surowo jak dwa lata temu, kiedy powstawa&#322; ten wpis na blogu.&lt;/p&gt;</description>
      <pubDate>Mon, 08 Sep 2008 21:05:15 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:bdcfd6af-cc85-493d-9b53-80112894fd10</guid>
      <link>http://blog.zabiello.com/articles/2006/02/07/akcesory-w-javie-pythonie-ruby-i-php5#comment-1803</link>
    </item>
    <item>
      <title>"Akcesory w Javie, Pythonie, Ruby i PHP5" by michal</title>
      <description>&lt;p&gt;I nie podniecaj sie ta rozmowa z dublina &amp;#8211; lepiej wejdz na google carieers ;]&lt;/p&gt;


	&lt;p&gt;Poza tym:
IBM
oracle
sun
sparx
ds
ptc
sap&lt;/p&gt;


	&lt;p&gt;czy oni slyszeli o rubym?&lt;/p&gt;


	&lt;p&gt;No tak Sun slyszal &amp;#8211; i go zaimplementowal dla ludzi, ktorym Java jest za trudna;]&lt;/p&gt;


	&lt;p&gt;Rozumiem ,ze niektorych to moze przerazac ale jakbys sie poczul z projektem ,ktory instaluje sie z 15 plyt?&lt;/p&gt;</description>
      <pubDate>Mon, 08 Sep 2008 01:46:19 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:9e77210b-f406-4d98-9f40-cb9985adec7c</guid>
      <link>http://blog.zabiello.com/articles/2006/02/07/akcesory-w-javie-pythonie-ruby-i-php5#comment-1802</link>
    </item>
    <item>
      <title>"Akcesory w Javie, Pythonie, Ruby i PHP5" by michal</title>
      <description>&lt;p&gt;Jest duzo potezniejszy. Watpie ,zebys znal jave na poziomie SCJD, wiec sie nie wypowiadaj. Dla mnie jestes czlowiekiem niekompetentym. Czytam Twoje artykuly i jest do podniecanie sie czyms, co przeczytasz na innych blogach. Takie kolko wzajemnej adoracji. Piszesz takie bzdury ,a ktos mlody przeczyta i Ci uwierzy. Ksiazke czytalem do polowy i wieje od nich propaganda jak z ksiazek od M$. A to ,ze sun wchlonal Twojego Bozka ;] Coz &amp;#8211; zawsze tak jest ,ze potega polyka male rybki ;] JRuby to bardziej java niz ruby. Musisz sie nauczyc bibiliotek i architektury, a to 95% nauki. Skladnia jezyka jest banalna &amp;#8211; do nauczenia w tydzien.&lt;/p&gt;


	&lt;p&gt;Ujawnij jakis swoj projekt &amp;#8211; zobaczymy ,czy masz powody, aby tak negowac jave.&lt;/p&gt;


	&lt;p&gt;A jak nic w zyciu nie napisales, poza szukaczem cytatow w koranie &amp;#8211; to idz sie algorytmow poucz, bo ruby Ci mozg spralo.&lt;/p&gt;


	&lt;p&gt;ZP&lt;/p&gt;</description>
      <pubDate>Mon, 08 Sep 2008 01:42:55 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:64edc5a9-618f-400e-a6f4-53becc8dfecc</guid>
      <link>http://blog.zabiello.com/articles/2006/02/07/akcesory-w-javie-pythonie-ruby-i-php5#comment-1801</link>
    </item>
    <item>
      <title>"Akcesory w Javie, Pythonie, Ruby i PHP5" by Jaros&#322;aw Zabie&#322;&#322;o</title>
      <description>&lt;p&gt;@michal: Komentowany artyku&#322; nie wypowiada si&#281; o platformie Javy, ale o &lt;strong&gt;j&#281;zyku Java&lt;/strong&gt;, kt&#243;ry jest prostszy i du&#380;o bardziej prymitywny ni&#380; Ruby. Ka&#380;dy ci to powie.&lt;/p&gt;


	&lt;p&gt;Je&#347;li chodzi o dost&#281;p do bibliotek javowych, to powiniene&#347; poczyta&#263; sobie co&#347; o &lt;a href="http://jruby.codehaus.org/" rel="nofollow"&gt;JRuby&lt;/a&gt; (rozwijany aktualnie przez Sun&amp;#8217;a). Dost&#281;p do aplet&#243;w, JDBC czy dowolnych bibliotek Javy to tam &#347;miesznie prosta sprawa.&lt;/p&gt;


	&lt;p&gt;Co do Beyond Java, to trzeba by&#322;o przeczyta&#263; ksi&#261;&#380;k&#281;, a nie tylko spis tre&#347;ci. Autor ma racj&#281;, &#380;e do lekkich fronton&#243;w korzystaj&#261;cych z RBDMS, Java to kiepski pomys&#322;. A co do Google, to zdaje si&#281;, &#380;e oni maj&#261; wi&#281;kszo&#347;&#263; webowych rzeczy w Pythonie, a nie Javie. Python jest tam g&#322;&#243;wn&#261; technologi&#261; webow&#261;.&lt;/p&gt;</description>
      <pubDate>Tue, 02 Sep 2008 18:34:59 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:d597fbd8-52ce-44d7-9f2b-6f19f4635460</guid>
      <link>http://blog.zabiello.com/articles/2006/02/07/akcesory-w-javie-pythonie-ruby-i-php5#comment-1786</link>
    </item>
    <item>
      <title>"Akcesory w Javie, Pythonie, Ruby i PHP5" by michal.</title>
      <description>&lt;p&gt;Java straci na popularnosci?
Pisales kiedys projekt ,ktory ma wiecej niz 1000 klas? W rubym? Nie? dziekuje. To jest zabawka, nie platforma z prawdziwym wsparciem. Slyszles o certyfikatach z RUBY? przez prometrica? nie? dziekuje.&lt;/p&gt;


	&lt;p&gt;Nie mow ,ze maluch lepszy jest od mercedesa. Bo mnie smiech bierze.&lt;/p&gt;</description>
      <pubDate>Tue, 02 Sep 2008 17:08:29 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:15f8d4f1-89a1-4bfc-a85d-a17d12733ecf</guid>
      <link>http://blog.zabiello.com/articles/2006/02/07/akcesory-w-javie-pythonie-ruby-i-php5#comment-1785</link>
    </item>
    <item>
      <title>"Akcesory w Javie, Pythonie, Ruby i PHP5" by michal</title>
      <description>&lt;p&gt;sam AOP przewyzsza mozliwosciami cale Ruby. Nigdy ten jezyk nie bedzie popularniejszy od javy. JAVA to jest cala platforma. Wole pisac gettery i settery (a raczej generowac) ,a wiedziec o co chodzi w kodzie. Mam zagadke dla Pana Jarka. Jak polaczyc Rubego z:
-OpenGL
-Catia,UGS,I-deas
-jak odpalic metody z dll
-jak uruchomic Rubego jako aplet
-jak zintegrowac go z komorka
-jak napisac silnik do gier w Rubym
-dlaczego SAP jest na javie
-dlaczego Windchill jest na javie
-jak odczytac w RUBYM dxf, mpeg
-dlaczego Google szuka tylko programistow JAVY (aktualnie)
-dlaczego google inwestuje w GWT,Androida
-dlaczego Apache Fundation to w 90% java
-dlaczego oracle investuje w jave (IDE,TOP-LINK)
-dlaczego IBM investuje w jave?
itp. idt.
Mam Beyond java &amp;#8211; nie nadaje sie nawet na papier toaletowy &amp;#8211; propaganda i tyle, ktos musial niezle zaplacic.&lt;/p&gt;


	&lt;p&gt;RUBY zastosowaniu biznesowym = smiech&amp;#8230;&lt;/p&gt;</description>
      <pubDate>Tue, 02 Sep 2008 16:44:06 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:c9043588-1da0-4f4c-a56b-22a17ccd35f9</guid>
      <link>http://blog.zabiello.com/articles/2006/02/07/akcesory-w-javie-pythonie-ruby-i-php5#comment-1784</link>
    </item>
    <item>
      <title>"Akcesory w Javie, Pythonie, Ruby i PHP5" by Piotr</title>
      <description>&lt;p&gt;Te&#380; lubi&#281; rubina &amp;#8211; cho&#263; najwi&#281;cej pisze w Javie :) .&lt;/p&gt;</description>
      <pubDate>Tue, 13 Mar 2007 11:05:57 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:b57a5319-d02e-4c52-ac30-b20a637253fb</guid>
      <link>http://blog.zabiello.com/articles/2006/02/07/akcesory-w-javie-pythonie-ruby-i-php5#comment-597</link>
    </item>
    <item>
      <title>"Akcesory w Javie, Pythonie, Ruby i PHP5" by stforek</title>
      <description>&lt;p&gt;W Javie mo&#380;e uzyska&#263; podobny efekt co w Pythonie i Rubym przez AOP.&lt;/p&gt;</description>
      <pubDate>Fri, 02 Mar 2007 14:32:02 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:00501f11-b779-4974-a73d-6cc5a8501de7</guid>
      <link>http://blog.zabiello.com/articles/2006/02/07/akcesory-w-javie-pythonie-ruby-i-php5#comment-567</link>
    </item>
    <item>
      <title>"Akcesory w Javie, Pythonie, Ruby i PHP5" by Mentat</title>
      <description>&lt;p&gt;Autor artyku&#322;u nie ma racji co do accesor&#243;w javy &amp;#8211; tak powinno si&#281; w&#322;a&#347;nie programiwa&#263; i jest to dobra praktyka.&lt;/p&gt;


	&lt;p&gt;Moim zdaniem przyk&#322;ad kt&#243;ry pokazano z rubym jest w&#322;a&#347;nie dziwny, ale to tak troch&#281; o m&#243;wieniu wy&#380;szo&#347;ci &#347;wi&#261;t Bo&#380;ego Narodzenia nad &#347;wi&#281;tami Wielkiej Nocy.&lt;/p&gt;


	&lt;p&gt;A co do &#347;wietlanej przysz&#322;o&#347;ci Rubiego (JRuby) to jest tak samo jak z CORBA &amp;#8211; &amp;#8220;zawsze b&#281;dzie mia&#322;a &#347;wietlan&#261; przysz&#322;o&#347;&#263;&amp;#8221; &amp;#8211; nie b&#261;d&#378; naiwny &amp;#8211; je&#347;li Sun co&#347; robi to robi to wy&#322;&#261;cznie dla javy&amp;#8230; (i dla siebie, ale to chyba oczywiste).&lt;/p&gt;</description>
      <pubDate>Tue, 24 Oct 2006 19:55:53 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:768014ee-9a53-4263-9e30-502284eb60b8</guid>
      <link>http://blog.zabiello.com/articles/2006/02/07/akcesory-w-javie-pythonie-ruby-i-php5#comment-258</link>
    </item>
    <item>
      <title>"Akcesory w Javie, Pythonie, Ruby i PHP5" by Jaros&#322;aw Zabie&#322;&#322;o</title>
      <description>&lt;p&gt;Ta aplikacja koloruje tylko format Rubiego, YAML i XML. Python jest tu kolorowany jako Ruby.&lt;/p&gt;


	&lt;p&gt;S&#322;usznie przyznajesz, &#380;e Python i Ruby maj&#261; lepsz&#261; sk&#322;adni&#281;, bo maj&#261;. Java ma tylko dojrzalsze zaplecze bibliotek, zoptymalizowan&#261; JVM, kup&#281; ksi&#261;&#380;ek i rozbudowan&#261; teori&#281;. Ale to nic dziwnego, bo to efekt milion&#243;w dolar&#243;w pompowanych przez lata przez du&#380;e korporacje. Na pewno &lt;a href="http://en.wikipedia.org/wiki/Comparison_of_programming_languages" rel="nofollow"&gt;nie wieku&lt;/a&gt;. bo Java powsta&#322;a w 1994 r roku. Ruby jest tylko rok m&#322;odszy. A Python jest starszy od obu, bo powsta&#322; w 1991 r. Hehe, nawet JVM Java zer&#380;n&#281;&#322;a z j&#281;zyka dynamicznego (SmallTalk).  Java ostatnio usi&#322;uje troch&#281; si&#281; modernizowa&#263;, ale wiele os&#243;b uwa&#380;a, &#380;e jej czas si&#281; ko&#324;czy i &#380;e nadchodzi era wysokopoziomowych j&#281;zyk&#243;w dynamicznych. Wielcy w bran&#380;y nie s&#261; w stanie ju&#380; ignorowa&#263; tego trendu. M$ zacz&#261;&#322; jawnie wspiera&#263; Pythona (IronPython). A Sun po pocz&#261;tkowym wsparciu dla PHP zatrudni&#322; niedawno developer&#243;w projektu JRuby.&lt;/p&gt;


	&lt;p&gt;Ruby w og&#243;le jako&#347; dziwnym trafem dosy&#263; &#322;atwo pozyskuje sobie programist&#243;w Javy, kt&#243;rzy potem staj&#261; si&#281; jego wielkimi zwolennikami. :)&lt;/p&gt;</description>
      <pubDate>Wed, 18 Oct 2006 21:45:05 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:df40c404-eed1-4ec0-8f39-b0086fc9ad21</guid>
      <link>http://blog.zabiello.com/articles/2006/02/07/akcesory-w-javie-pythonie-ruby-i-php5#comment-255</link>
    </item>
    <item>
      <title>"Akcesory w Javie, Pythonie, Ruby i PHP5" by Pawel</title>
      <description>&lt;p&gt;Oj musz&#281; dopisa&#263;, bo zapomnia&#322;em: Czemu w Rubym i Pythonie listing kodu jest pokazany ze &#347;licznym kolorowaniem sk&#322;adni, a w Javie i PHP surowym tekstem, czy&#380;by taka ma&#322;a propagandka? ;)&lt;/p&gt;</description>
      <pubDate>Wed, 18 Oct 2006 18:07:26 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:9b6c5dc2-fb6e-43ce-b641-e5778c2cf175</guid>
      <link>http://blog.zabiello.com/articles/2006/02/07/akcesory-w-javie-pythonie-ruby-i-php5#comment-254</link>
    </item>
    <item>
      <title>"Akcesory w Javie, Pythonie, Ruby i PHP5" by Pawel</title>
      <description>&lt;p&gt;Hmm, generalnie zgadzam si&#281; z artyku&#322;em, ale nie przesadzajmy i nie demonizujmy Javy. Nie wiem czy wiecie, ale w najnowszej wersji JDK, problem metod dost&#281;powych b&#281;dzie mo&#380;na za&#322;atwi&#263; za pomoc&#261; adnotacji (metadanych).
Osobi&#347;cie bardzo lubi&#281; Pythona i uwa&#380;am, &#380;e Java sporo si&#281; uczy od j&#281;zyk&#243;w dynamicznych, ale jest to tak naprawd&#281; niewielki u&#322;amek w por&#243;wnaniu do tego, w czym na&#347;laduj&#261; Jav&#281; np. Ruby lub Python. Cz&#281;sto dochodz&#261; powoli dopiero do rozwi&#261;za&#324;, jakie w Javie funkcjonuj&#261; od dawna. Zreszt&#261; dobra sk&#322;adnia j&#281;zyka to &#347;wietny punkt wyj&#347;cia i podstawa, ale to dopiero pocz&#261;tek d&#322;uuugiej drogi rozwoju.&lt;/p&gt;</description>
      <pubDate>Wed, 18 Oct 2006 18:04:51 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:e9372a4e-3168-4e82-afa4-d6366964930f</guid>
      <link>http://blog.zabiello.com/articles/2006/02/07/akcesory-w-javie-pythonie-ruby-i-php5#comment-253</link>
    </item>
    <item>
      <title>"Akcesory w Javie, Pythonie, Ruby i PHP5" by Jaros&#322;aw Zabie&#322;&#322;o</title>
      <description>&lt;p&gt;To &lt;strong&gt;jest&lt;/strong&gt; problemem, bo albo dodajesz wsz&#281;dzie akcesory &amp;#8220;na wszelki wypadek&amp;#8221; i masz kup&#281; nadmiarowego, nieu&#380;ywanego kodu, z kt&#243;rego wi&#281;kszo&#347;&#263; prawdopodobnie nigdy nie b&#281;dzie u&#380;yta. Albo ich nie dodajesz i wtedy jakakolwiek zmiana (np. nazwy czy typu) atrybutu klasy wymaga wymiany kodu we wszystkich milionach innych miejsc, kt&#243;re gdzie&#347; z tego korzystaj&#261;. Poleganie w 100% na zachowaniu IDE to raczej &lt;em&gt;monkey patching&lt;/em&gt;, a nie rozwi&#261;zanie problemu. A je&#347;li cz&#281;&#347;&#263; kolejnych bibliotek jest ju&#380; skompilowana  i dost&#281;pna tylko w tej formie? Wtedy nawet NetBeans nic nie pomo&#380;e.&lt;/p&gt;


	&lt;p&gt;Niedawno &lt;a href="http://blog.zabiello.com/articles/2006/09/08/sun-zatrudni%C5%82-programist%C3%B3w-jruby" rel="nofollow"&gt;Sun zatrudni&#322; programist&#243;w JRuby&lt;/a&gt;. My&#347;l&#281;, &#380;e rola Javy mo&#380;e tylko male&#263;, gdy&#380; &lt;a href="http://jruby.codehaus.org/" rel="nofollow"&gt;JRuby&lt;/a&gt; posiada niezr&#243;wnanie bardziej prost&#261; i elastyczn&#261; sk&#322;adni&#281;, a ma taki sam dost&#281;p do wszystkich, dopracowanych przez lata, bibliotek Javy. Bo tak naprawd&#281;, to nie chodzi o (toporn&#261;) sk&#322;adni&#281; Javy ale o jej biblioteki. I je&#347;li JRuby da nam ten sam dost&#281;p przy znacznie mniejszym nak&#322;adzie kodowania, to czemu nie?&lt;/p&gt;</description>
      <pubDate>Mon, 09 Oct 2006 23:42:21 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:b536c3e1-1021-4619-a3f0-36bcb1fde0dc</guid>
      <link>http://blog.zabiello.com/articles/2006/02/07/akcesory-w-javie-pythonie-ruby-i-php5#comment-249</link>
    </item>
    <item>
      <title>"Akcesory w Javie, Pythonie, Ruby i PHP5" by szymonk</title>
      <description>&lt;p&gt;nie zgadzam si&#281; z autorem w kwestii wad akcesor&#243;w javowych. 
Fakt jest faktem &#380;e nie mo&#380;na ich &amp;#8220;przezroczy&#347;cie&amp;#8221; doda&#263;, lecz nie jest to problemem, gdy&#380; zaawansowane narzedzia (Eclipse, NetBeans) maj&#261; wsparcie dla refaktoryzacji kodu i pozwalaj&#261; za&#322;atwi&#263; to kilkoma klikni&#281;ciami
Za&#347; samo przezroczyste modyfikowanie akcesor&#243;w jest dost&#281;pne tak&#380;e w VB&lt;/p&gt;</description>
      <pubDate>Mon, 09 Oct 2006 23:21:28 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:08e33031-e3fc-46df-b125-042dc5bccaf1</guid>
      <link>http://blog.zabiello.com/articles/2006/02/07/akcesory-w-javie-pythonie-ruby-i-php5#comment-248</link>
    </item>
  </channel>
</rss>
