<?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: Sun zatrudni&#322; programist&#243;w JRuby</title>
    <link>http://blog.zabiello.com/articles/2006/09/08/sun-zatrudni%C5%82-programist%C3%B3w-jruby</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>moje notatki, linki, komentarze</description>
    <item>
      <title>Sun zatrudni&#322; programist&#243;w JRuby</title>
      <description>&lt;p&gt;W &#347;rodowisku javowc&#243;w &lt;a href="http://ruby-lang.org/"&gt;Ruby&lt;/a&gt; jest j&#281;zykiem kt&#243;ry robi troch&#281; zamieszania (jako&#347; tak si&#281; sk&#322;ada, &#380;e Ruby bardziej przemawia do programist&#243;w Javy ni&#380; &lt;a href="http://python.org"&gt;Python&lt;/a&gt;).  Cieszy zatem, &#380;e firma Sun podj&#281;&#322;a decyzj&#281; o wsparciu projektu &lt;a href="http://jruby.codehaus.org/"&gt;JRuby&lt;/a&gt; &lt;a href="http://www.tbray.org/ongoing/When/200x/2006/09/07/JRuby-guys"&gt;zatrudniaj&#261;c&lt;/a&gt; jego czo&#322;owych developer&#243;w.  Powinno to znacznie przy&#347;pieszy&#263; prace nad tym projektem podobnie jak sta&#322;o si&#281; z &lt;a href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=IronPython"&gt;IronPythonem&lt;/a&gt;, gdy Microsoft zatrudni&#322; jego tw&#243;rc&#281;.&lt;/p&gt;


	&lt;p&gt;Jestem ciekaw jak d&#322;ugo programi&#347;ci zachowaj&#261; entuzjazm dla swego j&#281;zyka, gdy b&#281;dzie mo&#380;na generowa&#263; taki sam bytecode Javy lecz w niezr&#243;wnanie prostszy spos&#243;b. :)&lt;/p&gt;


	&lt;p&gt;Przyk&#322;adowy kod Javy:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_java "&gt;public class Filter {
  public static void main(String[] args) {
    List list = new java.util.ArrayList();
    list.add(&amp;quot;Tim&amp;quot;); list.add(&amp;quot;Ike&amp;quot;); list.add(&amp;quot;Tina&amp;quot;);
    Filter filter = new Filter();
    for (String item : filter.filterLongerThan(list, 3)) { 
      System.out.println( item ); 
    }
  }
  public List filterLongerThan(List list, int length) {
    List result = new ArrayList();
    for (String item : list) {
      if (item.length() &amp;lt;= length) { result.add( item ); }
    }
    return result;
  }
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;A oto odpowiadaj&#261;cy mu kod  w Ruby:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="ident"&gt;list&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="punct"&gt;['&lt;/span&gt;&lt;span class="string"&gt;Tim&lt;/span&gt;&lt;span class="punct"&gt;',&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;Ike&lt;/span&gt;&lt;span class="punct"&gt;',&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;Tina&lt;/span&gt;&lt;span class="punct"&gt;']&lt;/span&gt;
&lt;span class="ident"&gt;list&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;select&lt;/span&gt; &lt;span class="punct"&gt;{|&lt;/span&gt;&lt;span class="ident"&gt;n&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt; &lt;span class="ident"&gt;n&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;length&lt;/span&gt; &lt;span class="punct"&gt;&amp;gt;&lt;/span&gt; &lt;span class="number"&gt;3&lt;/span&gt;&lt;span class="punct"&gt;}.&lt;/span&gt;&lt;span class="ident"&gt;each&lt;/span&gt; &lt;span class="punct"&gt;{|&lt;/span&gt;&lt;span class="ident"&gt;n&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt; &lt;span class="ident"&gt;puts&lt;/span&gt; &lt;span class="ident"&gt;n&lt;/span&gt;&lt;span class="punct"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;Oczywi&#347;cie to nie wszystko. Dzi&#281;ki JRuby mo&#380;na uzyska&#263; efekty kompletnie nieosi&#261;galne w standardowej Javie &amp;#8211; np. mo&#380;na pracowa&#263; z bibliotek&#261; Swing w spos&#243;b &lt;strong&gt;interaktywny&lt;/strong&gt;, z poziomu interpretera zmieniaj&#261;c na &#380;ywo jej obiekty.&lt;/p&gt;


	&lt;p&gt;Wkr&#243;tce ma tak&#380;e by&#263; gotowa &lt;strong&gt;wersja Rails&#243;w dzia&#322;aj&#261;ca z  JRuby&lt;/strong&gt; (Zobacz prezentacj&#281; w &lt;a href="http://dist.codehaus.org/jruby/jruby_presentation_may06.ppt"&gt;PowerPoint&lt;/a&gt;).  Tym samym odesz&#322;yby wszelkie uwagi co do wydajno&#347;ci Rails&#243;w, bo wsp&#243;&#322;czesna wirtualna maszyna Javy jest tak silnie zoptymalizowna &#380;e dor&#243;wnuje j&#281;zykowi C++. Oczywi&#347;cie model w&#261;tkowy JRuby jest zgodny z wydajnym i dojrza&#322;ym modelem w&#261;tkowym Javy &amp;#8211; po prostu z niego korzysta.&lt;/p&gt;</description>
      <pubDate>Fri, 08 Sep 2006 10:33:00 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:d35f513c-939f-4f71-9392-e4d9f95c11ee</guid>
      <author>Jaros&#322;aw Zabie&#322;&#322;o</author>
      <link>http://blog.zabiello.com/articles/2006/09/08/sun-zatrudni%C5%82-programist%C3%B3w-jruby</link>
      <category>Ruby</category>
      <category>Java</category>
      <category>ruby</category>
      <category>java</category>
      <category>jruby</category>
    </item>
    <item>
      <title>"Sun zatrudni&#322; programist&#243;w JRuby" by stforek</title>
      <description>&lt;p&gt;Wo&#322;ek, w C++ nie tylko zwalnianie pami&#281;ci obni&#380;a wydajno&#347;&#263;, ale te&#380; jej alokacja. Niewiele wi&#281;c poradzisz przez zwalnianie pami&#281;ci wi&#281;kszymi porcjami. M&#243;g&#322;by&#347; poradzi&#263; robi&#261;c alokator bazuj&#261;cy na puli obiekt&#243;w, ale implementacja wydajnej puli obiekt&#243;w jest trudna i wi&#281;kszo&#347;c programist&#243;w tego nie potrafi.&lt;/p&gt;


	&lt;p&gt;Standardowa alokacja pami&#281;ci w C++ jest kilkaktrotnie wolniejsza od alokacji w Java lub .NET.&lt;/p&gt;</description>
      <pubDate>Fri, 02 Mar 2007 14:24:15 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:d14b59c1-54e4-4d17-872f-09c64ccab209</guid>
      <link>http://blog.zabiello.com/articles/2006/09/08/sun-zatrudni%C5%82-programist%C3%B3w-jruby#comment-566</link>
    </item>
    <item>
      <title>"Sun zatrudni&#322; programist&#243;w JRuby" by kelahcim</title>
      <description>&lt;p&gt;Na dzien dzisiejszy rowniez mozna &amp;#8220;interaktywnie&amp;#8221; obslugiwac obiekty Swinga &amp;#8211; to sie nazywa refleksja&lt;/p&gt;</description>
      <pubDate>Wed, 27 Sep 2006 09:54:50 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:0d35fe82-cab0-4aa7-ac35-d1d8b35ba520</guid>
      <link>http://blog.zabiello.com/articles/2006/09/08/sun-zatrudni%C5%82-programist%C3%B3w-jruby#comment-233</link>
    </item>
    <item>
      <title>"Sun zatrudni&#322; programist&#243;w JRuby" by rsz</title>
      <description>&lt;p&gt;Art o Selfie czyta&#322;em nie raz :) Zasadniczo si&#281; z Tob&#261; wi&#281;c zgadzam, a nie zgadzam z JZ; nie wiem, czy zauwa&#380;asz, &#380;e jego pianie jest troch&#281; na wyrost. A mimo wszystko podtrzymuj&#281;, &#380;e PIC jest przereklamowany, bo to run-timeowa forma CFA, a tu potrzebujesz du&#380;o info o typach i np. o niezmienno&#347;ci funkcji przyczepionych do obiekt&#243;w/klas, &#380;eby co&#347; po&#380;&#261;dnie zoptymalizowa&#263;.&lt;/p&gt;


	&lt;p&gt;W dalszym ci&#261;gu uwa&#380;am natomiast, &#380;e plucie na Joela przez ludzi, kt&#243;rzy nigdy nie zaimplementowali jakiegokolwiek software&amp;#8217;u zahaczaj&#261;cego o przetwarzanie j&#281;zyk&#243;w programowania jest po prostu &#380;enuj&#261;ce. To nie ja obra&#380;am ludzi, to oni obra&#380;aj&#261;, nie do&#347;&#263;, &#380;e Joela, to jeszcze zdrowy rozs&#261;dek, kt&#243;ry ka&#380;e siedzie&#263; cicho jak si&#281; o czym&#347; (a szczeg&#243;lnie o z&#322;o&#380;ono&#347;ci czego&#347;) nie ma poj&#281;cia. A mo&#380;e po prostu zazdroszcz&#261; mu $? Historia jest tu analogiczna z Grahamem &amp;#8211; z niego te&#380; si&#281; &#347;mieli, jak wymy&#347;la&#322; te &#322;ama&#324;ce z DSLami w lispie, a potem sprzeda&#322; viaweb za par&#281; milion&#243;w dol, hehe&amp;#8230;&lt;/p&gt;</description>
      <pubDate>Thu, 14 Sep 2006 13:54:52 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:7ed39e85-3c06-45cf-9835-4fc07884acca</guid>
      <link>http://blog.zabiello.com/articles/2006/09/08/sun-zatrudni%C5%82-programist%C3%B3w-jruby#comment-227</link>
    </item>
    <item>
      <title>"Sun zatrudni&#322; programist&#243;w JRuby" by Jaros&#322;aw Zabie&#322;&#322;o</title>
      <description>&lt;p&gt;Panowie, mo&#380;e faktycznie przenie&#347;cie kontynuacj&#281; dyskusji na grup&#281; pl.comp.lang.ruby&lt;/p&gt;</description>
      <pubDate>Thu, 14 Sep 2006 13:50:12 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:3db0bb64-9ec8-4281-a9f7-c5c203d89ff1</guid>
      <link>http://blog.zabiello.com/articles/2006/09/08/sun-zatrudni%C5%82-programist%C3%B3w-jruby#comment-226</link>
    </item>
    <item>
      <title>"Sun zatrudni&#322; programist&#243;w JRuby" by lopex</title>
      <description>&lt;p&gt;rsz:
Aj&amp;#8230; to ju&#380; zakrawa na dyskusj&#281; na usenecie..  Nie wiem od czego zacz&#261;&#263; a musz&#281; si&#281; streszcza&#263; .. ;)
- Smalltalk umo&#380;liwia tak samo porozrzucane definicje &amp;#8211; zawsze mo&#380;esz:
SomeClasss methodsFor: &amp;#8217;...&amp;#8217;.
- Za daleko wybiegasz z CFA i optymalizacj&#261; przep&#322;ywu, Turingiem i problemem stopu, mo&#380;e jeszcze Omega Chaitin ? Chodzi o zwyk&#322;e cachowanie wo&#322;a&#324;.
- Nigdy nie twierdzi&#322;em &#380;e mo&#380;na zrobi&#263; wi&#281;cej bez informacji o typach.
- nie CMP+CALL tylko CALL+CMP, dochodz&#261; jeszcze wo&#322;ania polimorficzne i megamorficzne &amp;#8211; to, liczby i eliminacja vtable s&#261; wzi&#281;te z artyku&#322;u o Selfie &amp;#8211; polecam, dlaczego tu biednego Turinga znowu wci&#261;gasz?
- Ehhh&amp;#8230; kompilator generuj&#261;cy kod VB, rewelacja&amp;#8230;
- Po raz drugi: nigdy nie twierdzi&#322;em &#380;e mo&#380;na zrobi&#263; wi&#281;cej bez informacji o typach.
- Ca&#322;a dyskucja sprowadza si&#281; do tego &#380;e twierdz&#281; &#380;e mo&#380;na zrobi&#263; wi&#281;cej ni&#380; Ty twierdzisz. Nie znaczy to, &#380;e musisz si&#281; miota&#263; i obra&#380;a&#263; ludzi. 
Jeszcze raz polecam artyku&#322; o Selfie&amp;#8230;&lt;/p&gt;</description>
      <pubDate>Thu, 14 Sep 2006 12:22:34 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:5ab44d46-35bd-4bc7-9134-9eff242bbf52</guid>
      <link>http://blog.zabiello.com/articles/2006/09/08/sun-zatrudni%C5%82-programist%C3%B3w-jruby#comment-224</link>
    </item>
    <item>
      <title>"Sun zatrudni&#322; programist&#243;w JRuby" by rsz</title>
      <description>&lt;p&gt;Acha, no i wszystkie komentarze (ile tam lania wody!) odno&#347;nie PIC i analizy &amp;#8220;najcz&#281;stszych &#347;cie&#380;ek&amp;#8221; s&#261; w podlinkowanych artyku&#322;ach pisane przez ludzi na prawd&#281; maj&#261;cych blade poj&#281;cie o tym np., &#380;e tego rodzaju CFA jest albo wysoce niedok&#322;adne, albo zu&#380;ywa niewyobra&#380;alne ilo&#347;ci pami&#281;ci. Nie mo&#380;na jednocze&#347;nie mie&#263; ciasteczka i go zje&#347;&#263;.&lt;/p&gt;</description>
      <pubDate>Thu, 14 Sep 2006 09:58:52 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:4fc4484c-fca9-42f7-8504-ee90fbcd08e6</guid>
      <link>http://blog.zabiello.com/articles/2006/09/08/sun-zatrudni%C5%82-programist%C3%B3w-jruby#comment-223</link>
    </item>
    <item>
      <title>"Sun zatrudni&#322; programist&#243;w JRuby" by rsz</title>
      <description>&lt;p&gt;Acha, no i przede wszystkim odboxowywanie typ&#243;w (type erasure) jest absolutnie niemo&#380;liwe w j&#281;zykach typu Python/Ruby, a samo to sprawia, &#380;e wydajno&#347;&#263; tych runtime&amp;#8217;&#243;w b&#281;dzie zawsze kilkakrotnie ni&#380;sza, ni&#380; optymalizowanego kodu z j&#281;zyk&#243;w statycznie typowanych.&lt;/p&gt;</description>
      <pubDate>Thu, 14 Sep 2006 09:47:51 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:2ac899e3-c331-4793-9fca-74b1e41f779a</guid>
      <link>http://blog.zabiello.com/articles/2006/09/08/sun-zatrudni%C5%82-programist%C3%B3w-jruby#comment-222</link>
    </item>
    <item>
      <title>"Sun zatrudni&#322; programist&#243;w JRuby" by rsz</title>
      <description>&lt;p&gt;lopex: c&#243;&#380; za zbieg okoliczno&#347;ci, materia&#322; o strongtalku zacz&#261;&#322;em czyta&#263; r&#243;wno z Twoim komentarzem :)&lt;/p&gt;


	&lt;p&gt;Co do meritum sprawy: nie twierdz&#281;, &#380;e nie mo&#380;na poprawi&#263; wydajno&#347;ci maszyny wirtualnej rubiego (czy np. CPythona). Mo&#380;na to zrobi&#263; w pewnym zakresie przez optymalizacje natury peephole np. lepszy mechanizm interpretacji bajtkodu, poprawki w gc, bibliotekach itp. Natomiast wykonanie og&#243;lno-funkcyjnej, og&#243;lno-modu&#322;owej czy og&#243;lno-programowej analizy i optymalizacji w takich j&#281;zykach jest nieprawdopodobnie trudne i skomplikowane (o czym wiesz doskonale, je&#347;li czyta&#322;e&#347; artku&#322;y tw&#243;rc&#243;w Selfa nt optymalizacji) a w ostateczno&#347;ci i tak zawsze czai si&#281; za rogiem Turing pit i nierozstrzygalno&#347;&#263;. Problem jest znacznie bardziej jaskrawy w Rubym, gdzie absolutn&#261; norm&#261; w designie jest wysoce nielokalne (rozrzucone po modu&#322;ach) konstruowanie klas (co nb uwa&#380;am za bad design i spaghetti code). Zauwa&#380;, &#380;e zar&#243;wno Self, jak i Smalltalk w tej kwestii s&#261; bardziej pouk&#322;adane, przez co dopuszczaj&#261; nieco prostsz&#261; i dalej id&#261;c&#261; analiz&#281; przep&#322;ywu kontroli.&lt;/p&gt;


	&lt;p&gt;Natomiast niekt&#243;re podstawowe optymalizacje, normalne dla kompilator&#243;w j&#281;z. statycznie typowanych z normaln&#261; kontrol&#261; przep&#322;ywu, jak np. analiza ucieczki czy k-CFA s&#261; w og&#243;le niewykonalne dla j&#281;zyk&#243;w z duck typing, przynajmniej nigdzie nie widzia&#322;em jakichkolwiek opublikowanych pr&#243;b zrobienia czego&#347; takiego i nie wyobra&#380;am tego sobie.&lt;/p&gt;


	&lt;p&gt;Jeszcze jedna sprawa, Avi Bryant nie wygl&#261;da na kogo&#347; wybitnie kompetentego w tych kwestiach. W arcie z jego bloga, kt&#243;ry podlinkowa&#322;e&#347;, jest masa machania r&#281;kami (np. &#380;e w 95% przypadk&#243;w wywo&#322;anie metody sprowadza si&#281; do CMP+CALL &amp;#8211; sk&#261;d on ma takie informacje??? albo komentarz o eliminacji vtable &amp;#8211; no normalnie zas&#322;uguje chyba na nagrod&#281; Turinga z takimi pomys&#322;ami) i &#380;adnych konkret&#243;w, a w przypadku kompilator&#243;w i maszyn wirt. &lt;strong&gt;wszystko&lt;/strong&gt; rozbija si&#281; o ma&#322;e, upierdliwe szczeg&#243;&#322;y, kt&#243;re trzeba z ogromn&#261; dba&#322;o&#347;ci&#261; o poprawno&#347;&#263; i np. zachowanie warunku stopu po&#322;&#261;czy&#263; w dzia&#322;aj&#261;c&#261; ca&#322;o&#347;&#263;. Na ten temat do&#347;&#263; ciekawe do&#347;wiadczenia &lt;strong&gt;z pierwszej r&#281;ki&lt;/strong&gt; przedstawia autor IronPythona.&lt;/p&gt;


	&lt;p&gt;Ostatecznym jednak argumentem w tej debacie jest prosta konstatacja &amp;#8211; ekstremalnie wyrafinowanych (np. w j&#281;zykach funkcyjnych &amp;#8211; samo pomy&#347;lenie o &lt;a href="http://citeseer.ist.psu.edu/wadler90deforestation.html" rel="nofollow"&gt;karczowaniu las&#243;w&lt;/a&gt; przyprawia mnie o dreszcz emocji), optymalizuj&#261;cych kompilator&#243;w dla j&#281;zyk&#243;w &amp;#8220;statycznych&amp;#8221; jest na p&#281;czki, dynamicznych &amp;#8211; no&amp;#8230; Strongtalk, mo&#380;e troch&#281; Self optymalizuj&#261;&amp;#8230; ale gdzie im do konkurencji?&lt;/p&gt;


	&lt;p&gt;Oczywi&#347;cie moje stwierdzenie &amp;#8220;nie poprawi&amp;#8221; by&#322;o naci&#261;gni&#281;te, powinno by&#263; &amp;#8220;nie poprawi w znacz&#261;cym/rzucaj&#261;cym na kolana stopniu&amp;#8221;.&lt;/p&gt;


	&lt;p&gt;A&amp;#8217;propos Joela ja to widz&#281; tak, &#380;e &#347;miej&#261; si&#281; z niego ludzie, kt&#243;rzy nie maj&#261; dostatecznie du&#380;o wiedzy i inteligencji, &#380;eby napisa&#263; cokolwiek bardziej wyrafinowanego, ni&#380; kolejny badziew w PHP/J2EE. Co jest smutne, bo ca&#322;a ta &amp;#8220;spo&#322;eczno&#347;&#263;&amp;#8221;, &amp;#8220;ekosystem&amp;#8221; powsta&#322;y wok&#243;&#322; j&#281;zyk&#243;w dynamicznych tak si&#281; che&#322;pi(&#322;) swoj&#261; niezale&#380;no&#347;ci&#261; i trze&#378;wym, adogmatycznym patrzeniem na &#347;wiat. Sorry, nie ka&#380;dy potrafi napisa&#263; kompilator targetuj&#261;cy do tego kilka skrajnie r&#243;&#380;nych architektur, wi&#281;c po prostu mo&#380;e powinni si&#281; STFU jak nie maj&#261; o tym poj&#281;cia. Banda idiot&#243;w z klapkami na oczach. A wi&#281;kszo&#347;&#263; klapek oczywi&#347;cie koloru rubinowego, co potwierdza moje przypuszczenia o poziomie tej &amp;#8220;spo&#322;eczno&#347;ci&amp;#8221;. Do tego jeszcze ka&#380;dy z nich broni wydajno&#347;&#263; &lt;strong&gt;skrajnie&lt;/strong&gt; niewydajnego runtime&amp;#8217;a, jakim jest maszyna ruby&amp;#8217;ego, przez unikanie ucziwych por&#243;wna&#324; i rzucanie masy nic nie znacz&#261;cych slogan&#243;w martketingowych, p&#243;&#322;-prawd i atak&#243;w ad-hominem.&lt;/p&gt;


	&lt;p&gt;&#379;a&#322;osne.&lt;/p&gt;</description>
      <pubDate>Thu, 14 Sep 2006 09:44:32 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:ad59dfcf-2d0f-400e-84af-273f80719eb0</guid>
      <link>http://blog.zabiello.com/articles/2006/09/08/sun-zatrudni%C5%82-programist%C3%B3w-jruby#comment-221</link>
    </item>
    <item>
      <title>"Sun zatrudni&#322; programist&#243;w JRuby" by lopex</title>
      <description>&lt;p&gt;Piers te&#380; si&#281; wypowiedzia&#322;:&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.bofh.org.uk/articles/2006/09/13/what-we-have-here-is-an-opportunity-to-accelerate" rel="nofollow"&gt;http://www.bofh.org.uk/articles/2006/09/13/what-we-have-here-is-an-opportunity-to-accelerate&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;a propos Yarva &amp;#8211; na shootout nie by&#322;o w nim w&#322;&#261;czonych dw&#243;ch wa&#380;nych rzeczy
- specialized instruction optimization, to dopala metody takie jak Finxum#*,+
- peephole optimization &amp;#8211; &lt;a href="http://en.wikipedia.org/wiki/Peephole_optimization" rel="nofollow"&gt;http://en.wikipedia.org/wiki/Peephole_optimization&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;Z ka&#380;dym snapshotem YARV jest coraz szybszy a o e.w. niepoprawno&#347;ci ci&#281;&#380;ko tu mowi&#263;, bo parser + runtime + core to jest po prostu ruby 1.9&lt;/p&gt;</description>
      <pubDate>Wed, 13 Sep 2006 19:25:09 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:f9f2de51-695e-4d57-9b22-87aee1a6a935</guid>
      <link>http://blog.zabiello.com/articles/2006/09/08/sun-zatrudni%C5%82-programist%C3%B3w-jruby#comment-220</link>
    </item>
    <item>
      <title>"Sun zatrudni&#322; programist&#243;w JRuby" by lopex</title>
      <description>&lt;p&gt;aaaa&amp;#8230; i:
&lt;a href="http://www.codinghorror.com/blog/archives/000679.html" rel="nofollow"&gt;http://www.codinghorror.com/blog/archives/000679.html&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 13 Sep 2006 18:36:43 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:160556cf-df2d-4c12-be08-98061326ff42</guid>
      <link>http://blog.zabiello.com/articles/2006/09/08/sun-zatrudni%C5%82-programist%C3%B3w-jruby#comment-219</link>
    </item>
    <item>
      <title>"Sun zatrudni&#322; programist&#243;w JRuby" by lopex</title>
      <description>&lt;p&gt;rs: &amp;#8220;Kompilacja rubiego do bajtkodu javy nie poprawi jego wydajno&#347;ci ze wzgl&#281;du na r&#243;&#380;nice semantyczne mi&#281;dzy tymi j&#281;zykami&amp;#8221;&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://smallthought.com/avi/?p=16" rel="nofollow"&gt;http://smallthought.com/avi/?p=16&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;tak samo si&#281; mylisz jak Joel z kt&#243;rego si&#281; teraz wszyscy &#347;miej&#261; ;)&lt;/p&gt;</description>
      <pubDate>Wed, 13 Sep 2006 18:35:21 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:b277609e-d5fd-4fc8-9f96-8ff8eb135ca8</guid>
      <link>http://blog.zabiello.com/articles/2006/09/08/sun-zatrudni%C5%82-programist%C3%B3w-jruby#comment-218</link>
    </item>
    <item>
      <title>"Sun zatrudni&#322; programist&#243;w JRuby" by rsz</title>
      <description>&lt;p&gt;Przy odpowiednio wybranym przyk&#322;adzie te&#380; mog&#281; wykaza&#263; dowolnie du&#380;e r&#243;&#380;nice wydajno&#347;ci pomi&#281;dzy dowolnymi dwoma j&#281;zykami/platformami ;) Liczby, z kt&#243;rymi si&#281; ja spotka&#322;em, s&#261; zgodne z tym, co piszesz odno&#347;nie IronPythona i to nie jest &#380;aden du&#380;y wzrost wydajno&#347;ci. Natomiast je&#347;li chodzi o yarv&amp;#8217;a spotka&#322;em si&#281; raczej z ostro&#380;nymi szacowaniami 2-3x wzrostu wydajno&#347;ci (s&#261; np. gdzie&#347; w sieci wyniki z language shootout), ale uwaga: przy za&#322;o&#380;eniu, &#380;e dany kod W OG&#211;LE DZIA&#321;A. Jak osi&#261;gni&#281;cie &lt;strong&gt;poprawno&#347;ci&lt;/strong&gt; YARV&amp;#8217;a odbije si&#281; na wydajno&#347;ci, pozostaje pytaniem otwartym, a wnioskuj&#261;c po do&#347;wiadczeniach tw&#243;rcy IronPythona mo&#380;na przypuszcza&#263;, &#380;e niepozytywnie.&lt;/p&gt;


	&lt;p&gt;Z drugiej strony patrz&#261;c, wydaje si&#281;, &#380;e tw&#243;rcy yarv&amp;#8217;a s&#261; do&#347;&#263; kompetentni, skoro zaimplementowali direct threading (stara dobra technika z Fortha kt&#243;r&#261; ignoruj&#261; developerzy CPythona) i inline method cache (tudzie&#380; stara technika, chyba ze smalltalk&#243;w).&lt;/p&gt;</description>
      <pubDate>Wed, 13 Sep 2006 15:17:20 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:dd1389aa-8d50-4a8c-bf3b-734cdf313957</guid>
      <link>http://blog.zabiello.com/articles/2006/09/08/sun-zatrudni%C5%82-programist%C3%B3w-jruby#comment-217</link>
    </item>
    <item>
      <title>"Sun zatrudni&#322; programist&#243;w JRuby" by Jaros&#322;aw Zabie&#322;&#322;o</title>
      <description>&lt;p&gt;To &#380;adna tajemnica, &#380;e &lt;a href="http://www.python.org/~jeremy/weblog/031209a.html" rel="nofollow"&gt;z wydajno&#347;ci&#261; IronPythona by&#322;o bardzo dobrze&lt;/a&gt;.
Jak pokazuje standardowy bechmark PyStone &amp;#8211; IronPython jest &lt;a href="http://www.idg.pl/news/87164.html" rel="nofollow"&gt;ponad p&#243;&#322;tora razy szybszy od Pythona 2.4&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;Za&#347; co do YARV to jest sporo info w necie. Ostatnio by&#322;a dyskusja na comp.lang.ruby (w&#261;tek &amp;#8220;Pros/Cons of Turbogears/Rails&amp;#8221;) Zobacz &lt;a href="http://devnull.blogs.banot.net/articles/2006/07/24/algunos-n%C3%BAmeros-de-yarv" rel="nofollow"&gt;ten link&lt;/a&gt;. Artyku&#322; jest po hiszpa&#324;sku ale da si&#281; odczyta&#263; liczby. W porywach &lt;a href="http://www.atdot.net/yarv/" rel="nofollow"&gt;YARV&lt;/a&gt; daje przy&#347;pieszenie nawet do 20 razy!&lt;/p&gt;</description>
      <pubDate>Wed, 13 Sep 2006 15:04:03 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:9b4424c4-b0ab-43e6-8e7a-ea6a6737f5fb</guid>
      <link>http://blog.zabiello.com/articles/2006/09/08/sun-zatrudni%C5%82-programist%C3%B3w-jruby#comment-216</link>
    </item>
    <item>
      <title>"Sun zatrudni&#322; programist&#243;w JRuby" by rsz</title>
      <description>&lt;p&gt;a&amp;#8217;propos wydajno&#347;ci IronPythona polecam:&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://lists.ironpython.com/pipermail/users-ironpython.com/2006-July/002954.html" rel="nofollow"&gt;http://lists.ironpython.com/pipermail/users-ironpython.com/2006-July/002954.html&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 13 Sep 2006 14:52:48 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:b65c9cfa-1b84-4b43-8216-3bc0a1c055e8</guid>
      <link>http://blog.zabiello.com/articles/2006/09/08/sun-zatrudni%C5%82-programist%C3%B3w-jruby#comment-215</link>
    </item>
    <item>
      <title>"Sun zatrudni&#322; programist&#243;w JRuby" by rsz</title>
      <description>&lt;p&gt;Ale co ma IronPython i YARV do wydajno&#347;ci JRubiego? I sk&#261;d masz te informacje o wydajno&#347;ci IronPythona i YARV&amp;#8217;a?&lt;/p&gt;</description>
      <pubDate>Wed, 13 Sep 2006 14:43:41 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:308400eb-a702-4000-86fa-27122ce46613</guid>
      <link>http://blog.zabiello.com/articles/2006/09/08/sun-zatrudni%C5%82-programist%C3%B3w-jruby#comment-214</link>
    </item>
    <item>
      <title>"Sun zatrudni&#322; programist&#243;w JRuby" by Jaros&#322;aw Zabie&#322;&#322;o</title>
      <description>&lt;p&gt;Fakty s&#261; takie, &#380;e np. Ruby na YARV popyla do 10x szybciej ni&#380; klasycznie. A to m.in. znaczy, ze Ruby2 na swej maszynie wirtualnej ma szans&#281; spokojnie pobi&#263; wydajno&#347;ciowo Pythona. IronPython te&#380; niby nie powinien by&#263; szybszy od swej standardowej (w C) implementacji, a jest szybszy.&lt;/p&gt;</description>
      <pubDate>Wed, 13 Sep 2006 14:37:04 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:fc869c50-3af0-4b85-92e1-3d0f853a2e90</guid>
      <link>http://blog.zabiello.com/articles/2006/09/08/sun-zatrudni%C5%82-programist%C3%B3w-jruby#comment-213</link>
    </item>
    <item>
      <title>"Sun zatrudni&#322; programist&#243;w JRuby" by rsz</title>
      <description>&lt;p&gt;Acha, no i wygenerowanie tego samego bajtkodu z Rubiego co z Javy nie jest mo&#380;liwe, bo Ruby w sensie semantyki operacyjnej maszyny wirtualnej jest Javy podzbiorem. Zawsze wi&#281;c b&#281;d&#261; sekwencje bajtkodu, kt&#243;re mo&#380;na wygenerowa&#263; z Javy, a nie mo&#380;na z Ruby&amp;#8217;ego.&lt;/p&gt;</description>
      <pubDate>Wed, 13 Sep 2006 14:31:59 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:f3b28e70-84d9-4eea-a426-01ac5eb7f704</guid>
      <link>http://blog.zabiello.com/articles/2006/09/08/sun-zatrudni%C5%82-programist%C3%B3w-jruby#comment-212</link>
    </item>
    <item>
      <title>"Sun zatrudni&#322; programist&#243;w JRuby" by rsz</title>
      <description>&lt;p&gt;Kompilacja rubiego do bajtkodu javy nie poprawi jego wydajno&#347;ci ze wzgl&#281;du na r&#243;&#380;nice semantyczne mi&#281;dzy tymi j&#281;zykami (g&#322;&#243;wnie brak mo&#380;liwo&#347;ci ekstrakcji informacji o typach i przep&#322;ywie kontroli z kodu w j&#281;zykach dynam. typu Ruby). Podobnie, jak za&#322;o&#380;enie opon Pirelli do ma&#322;ego fiata nie sprawi, &#380;e b&#281;dzie on popyla&#322; jak Ferrari.&lt;/p&gt;


	&lt;p&gt;Pisanie takich wprowadzaj&#261;cych ludzi w b&#322;&#261;d rzeczy (&#380;e JRuby dopali w stos. do normalnego) &#347;wiadczy o ignorancji w kwestii implementacji j&#281;zyk&#243;w i maszyn wirtualnych.&lt;/p&gt;


	&lt;p&gt;Jedynym (i bardzo wa&#380;nym) celem tego projektu jest integracja z bardzo bogat&#261; (no, przyznajcie to Rubi&#347;ci) infrastruktur&#261; i bibliotekami ju&#380; dost&#281;pnymi w Javie.&lt;/p&gt;</description>
      <pubDate>Wed, 13 Sep 2006 14:28:53 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:dd74f4c3-26fc-4232-9029-69d9fe617d96</guid>
      <link>http://blog.zabiello.com/articles/2006/09/08/sun-zatrudni%C5%82-programist%C3%B3w-jruby#comment-211</link>
    </item>
    <item>
      <title>"Sun zatrudni&#322; programist&#243;w JRuby" by Jaros&#322;aw Zabie&#322;&#322;o</title>
      <description>&lt;p&gt;Mam tu dzi&#347; atak debilnych spamer&#243;w z jakimi&#347; kasynami online i co chwil&#281; wrzucaj&#261; &#347;mieci do r&#243;znych artyku&#322;&#243;w.&lt;/p&gt;</description>
      <pubDate>Wed, 13 Sep 2006 13:50:47 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:5ae1ac5b-3502-4134-8fc4-c70df4af7b69</guid>
      <link>http://blog.zabiello.com/articles/2006/09/08/sun-zatrudni%C5%82-programist%C3%B3w-jruby#comment-210</link>
    </item>
    <item>
      <title>"Sun zatrudni&#322; programist&#243;w JRuby" by Wo&#322;ek</title>
      <description>&lt;p&gt;czemu moj komentarz musi byc zatwierdzony przez moderatora?&lt;/p&gt;</description>
      <pubDate>Wed, 13 Sep 2006 13:20:21 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:2c3a84ba-a57e-46a0-bac3-901fe29e8734</guid>
      <link>http://blog.zabiello.com/articles/2006/09/08/sun-zatrudni%C5%82-programist%C3%B3w-jruby#comment-209</link>
    </item>
    <item>
      <title>"Sun zatrudni&#322; programist&#243;w JRuby" by Wo&#322;ek</title>
      <description>&lt;p&gt;Moze i jest mniejsza fragmentacja, ale za to dochodza dodatkowe cykle zwiazane z garbage collectorem no i zzera wiecej pamieci bo nie jest ona odrazu zwalniana. Wiec nie widze tu jakiegos wzrostu wydajnosci, a nawet jego spadek Skoro w tej bibliotece co podales tyle cykli zegara traci sie na czeste zwalnianie pamieci, powinna ona uzywac jakiegos menagera pamieci i zwalniac ja co jakis czas, to juz jest blad projektowy, ale nie da sie ukryc ze przemawia to na korzysc modelu pamieci dostepnego w javie.&lt;/p&gt;</description>
      <pubDate>Wed, 13 Sep 2006 13:19:32 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:8c2020d4-ad85-4c71-a357-e5034a4c7647</guid>
      <link>http://blog.zabiello.com/articles/2006/09/08/sun-zatrudni%C5%82-programist%C3%B3w-jruby#comment-208</link>
    </item>
    <item>
      <title>"Sun zatrudni&#322; programist&#243;w JRuby" by lopex</title>
      <description>&lt;p&gt;W Javie problem fragmentacji pami&#281;ci i m&#281;czenia systemowego memory managera nie jest tak widoczny jak w C++&lt;/p&gt;</description>
      <pubDate>Tue, 12 Sep 2006 23:05:19 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:9cf91890-3ea8-4d42-884f-dd56cb32d603</guid>
      <link>http://blog.zabiello.com/articles/2006/09/08/sun-zatrudni%C5%82-programist%C3%B3w-jruby#comment-206</link>
    </item>
    <item>
      <title>"Sun zatrudni&#322; programist&#243;w JRuby" by lopex</title>
      <description>&lt;p&gt;S&#261;, w&#322;a&#347;nie amortyzacja zwalniania pami&#281;ci&lt;/p&gt;</description>
      <pubDate>Tue, 12 Sep 2006 23:02:24 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:717696e5-2ae6-40f8-9cee-2ba27c9b9855</guid>
      <link>http://blog.zabiello.com/articles/2006/09/08/sun-zatrudni%C5%82-programist%C3%B3w-jruby#comment-205</link>
    </item>
    <item>
      <title>"Sun zatrudni&#322; programist&#243;w JRuby" by Wo&#322;ek</title>
      <description>&lt;p&gt;To so najprawdopodobniej blendy implementacji bo nie ma zadnego powodu dla ktorych c++ ma byc wolniejszy.&lt;/p&gt;</description>
      <pubDate>Tue, 12 Sep 2006 22:51:01 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:3ec5e7f0-a071-47e2-b3ba-a408e656dfe4</guid>
      <link>http://blog.zabiello.com/articles/2006/09/08/sun-zatrudni%C5%82-programist%C3%B3w-jruby#comment-204</link>
    </item>
    <item>
      <title>"Sun zatrudni&#322; programist&#243;w JRuby" by lopex</title>
      <description>&lt;p&gt;Sparsuj jakiegos du&#380;ego g&#322;&#281;bokiego xmla xercesem w Javie i C++ bez w&#322;asnego menad&#380;era pami&#281;ci &amp;#8211; zobaczysz jak C++ kwiczy bez amortyzacji&amp;#8230;&lt;/p&gt;</description>
      <pubDate>Tue, 12 Sep 2006 22:41:08 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:c881dc1f-fea3-4454-8cba-2c50ecb01efe</guid>
      <link>http://blog.zabiello.com/articles/2006/09/08/sun-zatrudni%C5%82-programist%C3%B3w-jruby#comment-203</link>
    </item>
  </channel>
</rss>
