Wściekły Zed i dyskusja wokół Rubiego i Railsów

Opublikowane przez Jarosław Zabiełło Sun, 06 Jan 2008 22:49:00 GMT

Ostatnio jest trochę szumie w branży po bezpardonowym (i niewybrednym) ataku Zeda Shaw uderzającym w kilka znanych postaci z kręgów Rubiego i Rails. Pewnie nikt by na to nie zwrócił uwagi gdyby nie to, że Zed jest autorem znanego projektu Mongrel. Choć wpis się źle czyta (bo jest rozwlekły i niepotrzebnie przeplatany ciągłymi przekleństwami autora) to zwrócił uwagę na kilka istotnych problemów.

Autor zwraca uwagę, że core team Railsów dosyć opornie i wolno reaguje na podsyłane uwagi i poprawki. Fakt, jedną z poprawek jaką kiedyś podesłałem odnośnie źle działającej funkcji render_to_string uwzględniono po.. ośmiu miesiącach. Zed się wkurzył, że ignorowano jego uwagi a potem i tak wychodziło na jego. Tak z połowa core teamu to wg niego banda idiotów z wypłukanymi przez PHP mózgami. Ze swej strony bym mógł do tej listy niekompetencji owej “bandy” też coś dołożyć, ale to nie jest najważniejsze. Jest reszta, która dobrze robi swoją robotę. Ale może taka krytyka podziała jak kubeł zimnej wody i w końcu cały core team zacznie skupiać się na jakości i optymalizacji już istniejącego kodu. Bo jak nie, to programiści Rails zaczną sukcesywnie przesuwać się do konkurencyjnego projektu Merb. Ezra Zygmuntowicz udowodnił, że można napisać “lepsze Railsy” (szybsze, wielowątkowe i bardziej przejrzyste). Podoba mi się inżynieryjne podejście Ezry Zygmuntowicza. Jego Merb jest bardzo ładny, przejrzysty i szybki. Co ciekawe, Ezra zatrudnił kilku developerów Rubiniusa. Zapowiada się że Railsy w końcu spotkały bardzo trudną konkurencję (i bardzo dobrze). Sytuację Ralsów pogłębia to, że nowe ORM’y takie jak DataMapper i Sequel również stanowią zagrożenie dla dominacji Active Record nawet w kontekście Railsów.

PickAxe i inne książki

Zed przeprowadził bardzo ciekawą krytykę chwalonej PickAxe. Ostro rozjechał autora za używanie głupich przykładów, niezgodnego z konwencjami Rubiego nazewnictwem zmiennych, i co najważniejsze, ominięcie szerokim łukiem najważniejszej i najbardziej atrakcyjnej cechy Rubiego – łatwości metaprogramowania. PickAxe, zdaniem Zeda, odwołuje się do starych praktyk projektowania obiektowego z roku 2001. Zed idzie nawet dalej, uważa że ta książka promuje złe nawyki programistyczne i zachęca do pisania złego kodu. Twierdzi nawet, że ta książka zamiast pomóc, zaszkodziła Rubiemu aby wcześniej wypłynął na szeroką scenę.

Faktycznie, w latach 2001-2004 o Ruby praktycznie nikt nie słyszał. Jakieś nieliczne wyjątki uczyły się Rubiego na książce Dave’a Thomasa ale język jako taki był czymś bardzo malo znanym. Sytuację zmieniło dopiero pojawienie Ruby on Rails w 2005 roku, ktore spowodowały znaczący wzrost popularności Rubiego (ja sam też zainteresowałem się też Railsami, a dopiero później Rubim). Dopiero Railsy pokazały piękno i moc metaprogramowania w Ruby, coś co zachwyciło rzesze ludzi, coś czego nie mają inne języki. I nie wiem jak by się wysilano, nie da się uzyskać tak pięknego i eleganckiego metaproramowania w PHP, Javie, czy nawet Pythonie. Zed bezpardonowo stwierdził, że PickAxe tylko zaszkodził Rubiemu zamiast mu pomóc.

Wpierw mnie zaskoczyła ta opinia, ale później, jak się zastanowiłem, to muszę przyznać że dużo w tym racji. Nigdy do mnie nie przemawiały użyte w książce przykłady. Ceniłem ją głównie za to, że w ogóle jest cokolwiek na temat Rubiego, i że opisano bibliotekę standardową Rubiego. Jestem ciekaw, co Zed by powiedział na książkę Hala Fultona “The Ruby Way”. Jej drugie wydanie właśnie zostało wydane po polsku. Szkoda tylko, że ma w polskim wydaniu mylący tytuł sugerujący, że to tylko jakiś zestaw 400 przykładów. Książkę się dosyć dobrze czyta. Lepiej niż PickAxe. Tą pierwszą trochę traktuję jak podręcznik do bibliotek Rubiego.

Co ciekawe, dostało się też trochę książce Agile :) Ale generalnie dużo nie ma co się przyczepić. Książka jest raczej dobrze napisana, szkoda tylko, że opisuje starsze Rails 1.2 a nie 2.0. No cóż, nie wiadomo czy wyjdzie trzecie wydanie, bo DHH jakoś się do niego nie pali.

Z ciekawości sprawdziłem inną książkę, polecaną przez Zeda, The Rails Way. Faktycznie wygląda na dobrze napisaną i uwzględnia nowsze cechy Railsów. Jest dostępna online (choć nie za darmo) przez O’Reilly Safari Books Online (tak w ogóle to świetny serwis, który warto sobie zaprenumerować).

Rubinius, JRuby i Jubinius

Zed się wkurzył, nabluzgał, ale zwrócił uwagę na kilka ważnych kwestii. Także odnośnie samego Rubiego to pochwała dostała się JRuby i Rubiniusowi. Szczególnie ten drugi może wkrótce kompletnie zagrozić dominacji MRI jaki jest używany w dzisiejszej, opartej na C, implemementacji Rubiego. Jeśli szybko nie powstanie kompletnie ukończony YARV (włączony do Ruby 1.9), to Rubinius zwycięży. Temat Rubiniusa jest on tematem naszych dyskusji na kanale IRC #rubyonrails.pl. Podejście jest tu trochę podobne do pythonowego PyPy, choć Rubinius nawiązuje bardziej do 30 lat doświadczeń Smalltalka. Celem jest stworzenie najszybszej wirtualnej maszyny Rubiego oraz łatwego i szybkiego rozwoju dla samego Rubiego. Dzięki temu, że mamy tu do czynienia z Ruby którego implementacja napisana jest w Ruby, znacznie łatwiej jest rozwijać język.

Co ciekawe, autorzy JRuby zastanawiają się czy nie zrobić podobnie. I już są dyskusję o tym aby stworzyć analogicznie Jubiniusa. Tak jak Rubinius w łatwy sposób wciąga biblioteki napisane w C, Jubinius wciągałby te napisane w Javie. Jubinius miałby dodatkowo o tyle wygodniejszą sytuację, że implementacja całej biblioteki standardowej Rubiego jest już przepisana do Rubiego. Jubinius mógłby z marszu wykorzystać ten kod.

Tagi , , , , , , , , ,  | 17 comments

Comments

  1. Avatar Ris powiedział about 10 hours later:

    Taka propozycja. Widzę, że używacie IRC, może by założyć czat na skype. Jak ktoś chce zobaczyć jak to wygląda, grupa użytkowników javy: tinyurl.com/25pnzq

  2. Avatar Seban powiedział about 10 hours later:

    Ris po prawej menu ,,Public chat Skype. Rails, Django, Pylons …’’ ;-) Co do całej sprawy to staram się przejść obok tego powstrzymując się od komentowania. Może faktycznie przyda się kilka takich mocnych słów społeczności zaangażowanej w rozwój RoR i Ruby.

  3. Avatar Zahariash powiedział about 11 hours later:

    @Seban

    Zgadzam sie. Towarzystwo zaczynalo popadac momentami w samouwielbienie.

  4. Avatar Jarosław Zabiełło powiedział about 12 hours later:

    Niestety, na Mac OS X jest dostępny tylko Skype 2.x a na nim te chaty w Skype nie działają. Ja od jakiegoś czasu pracuję tylko na Macintoshu więc nie za bardzo sam korzystam z tego chatu. IRC jest lepszym rozwiązaniem, bo jest multiplatformowy (mamy też dostępny zapis rozmów, więc jak ktoś wejdzie, nawet jak nic się w danej chwili nie dzieje, może poczytać sobie co się działo na kanale)

  5. Avatar Ris powiedział about 16 hours later:

    :/ Klikam na ten chat i po 2 sekundach łączenia mam komunikat, że jest problem i mam pobrać ostatnią wersję skype, którą już mam :/

  6. Avatar Jarosław Zabiełło powiedział about 17 hours later:

    @Ris: coś jest źle z mym linkiem. Tzn. wcześniej działało na pewno. Coś Skype się zmienił. Twój chat mi działa pod OSX.

  7. Avatar Ris powiedział about 20 hours later:

    @Jarosław Zabiełło A mnie wasz nie :) Może to wina Visty.

  8. Avatar Jarosław Zabiełło powiedział 2 days later:

    @Ris: czaty Skype, nawet publiczne wymagają nieustannego zalogowania twórcy aby można było cokolwiek pisać. Potrzebuję chyba jakiegoś bota (ale pod Linuksa, bo sobie bym postawił na serwerze) aby mi utrzymywał kanał. Robiłem trochę prób z Skype3/win32 i zauważyłem, że jak zamknąłem Skype i próbowałem ponownie wejść na link swojego (innego) czatu publicznego to Skype mi nie pozwala nic pisać. :( Dopóki nie rozwiążę tego problemu, chowam info o czacie ze swego bloga. Na razie zostaję przy IRC.

  9. Avatar pg powiedział 4 days later:

    Niezly tekst, naprawde mozna sie nauczyc “prawdziwego” angielskiego. A nawiazujac do przeslania tekstu, to tak jak ci mowilem, jednak wracam niebawem full time do Java Platform, a jako ze bardzo lubie Rubiego, to JRuby wciaz bedzie na mych uslugach. Projekt jest zadbany i przemyslany oraz ma “korporacyjne dofinansowanie” dzieki czemu nie wyladujemy jak Zed na bezrobociu przez ignorancje lansujacych sie kolesi, rowniez dolozylbym tu czas zmarnowany na poprawianie niedokonczonych lub wymarlych pluginow railsowych stworzonych przez “gwiazdy” The Rails Show. Niestety jak opensourcu sie nie wezmie za pysk (Sun, IBM, RedHat, Google) to sie robi anarchia, tak wiec nie wpuszczaj Pythona z rak! :) Do zobaczenia w robocie! PS. Moze niebawem pochwale sie jakims projektem powered by Merb on JRuby ;-)

  10. Avatar Ris powiedział 4 days later:

    @pg Nie lepiej groovy?

  11. Avatar pg powiedział 4 days later:

    @Ris oczywiscie – Groovy swoja droga, ale jako Java Dev zainwestowalem troche w poznanie i prace z Ruby i teraz JRuby, wiec mysle, ze JRuby jest naturalnym krokiem ewolucyjnym. Poza tym moje obecne projekty sa oparte na Railsach i trudno je odrazu przeniesc do Grooviego (Grails lub ew. Seam 2.0). Lepiej na spokojnie RoR->JRoR->JRoM->? . Pozdrawiam

  12. Avatar Michal powiedział 6 days later:

    Kupilem “The Rails Way” na safari i musze przyznac ze jest to najlepsza pozycja jaka pojawila sie o Rails. Przemyslana, przystepnie napisana, z dobrymi i aktualnymi przykladami.

    Jest szansa ze ta ksiazka zwiekszy popularnosc RoR.

  13. Avatar Piotrek powiedział 18 days later:

    Cytat z tekstu: “PickAxe, zdaniem Zeda, odwołuje się do starych praktyk projektowania obiektowego z roku 2001. Zed idzie nawet dalej, uważa że ta książka promuje złe nawyki programistyczne i zachęca do pisania złego kodu.”

    I do tego fragmentu mam 2 pytania: 1. Czy ktoś wie o jakie to praktyki chodzi, które były dobre w 2001 roku a teraz już nie są? 2. Jakie są najnowsze praktyki w programowaniu obiektowym?

    W odpowiedzi wystarczą hasła, ale jak ktoś rozwinie temat to byłoby fajnie.

    BTW, Zed zaszalał, ale niektóre fragmnenty są bardzo ciekawe i IMO cenne.

  14. Avatar Ris powiedział 19 days later:

    @Piotrek Zamiast MVC MVP lub Passive View. Jakieś poprawne stosowanie Singeltona, itp. itd.

  15. Avatar Piotrek powiedział 19 days later:

    @Ris: Dzięki za odpowiedź.

    Jednak MVP czy Passive View (chyba dwie nazwy odwołujące się do jednej idei), to przypadek szczególny MVC, więc chyba Zedowi nie o to chodziło. Tym bardziej, że proponuje autorowi PickAxe użycie MVC: “Model/View/Controller would have been a nice start.” – Zed. (Chyba że, to ironia Zeda, której nie odnotowałem). Wydaje mi się, że wyłączenie połączenia View <-> Model jest raczej naturalne.

    Może sprecyzuje o co mi chodzi. Zed napisał, że jak przeczytał tą książkę (PickAxe) to nie zobaczył nic nowego w Ruby, czego nie było w innych językach (mniej więcej). Ale potem zobaczył (dzięki RoR), że Ruby jest fajnym językiem umożliwiającym eleganckie meta-programowanie. I moje pytanie brzmi (ponieważ dopiero zaczynam programować i chcę ze świadomością czytać książki): co ma meta-programowanie do praktyk programowania obiektowego, bo za bardzo nie rozumiem tego fragmentu w artykule Zeda.

  16. Avatar Ris powiedział 19 days later:

    @Piotrek Ja też nie wiem co miał na myśli :) może bredził od rzeczy ;)

  17. Avatar Jarosław Zabiełło powiedział 19 days later:

    @Piotrek, nie chodzi o to czy praktyki programistów z roku 2001 były złe czy dobre. Chodzi o to, że wtedy ci, co pisali w C++, Javie czy C# niespecjalnie zwracali uwagę na metaprogramowanie które jest świetnie rozwinięte i jest główną atrakcją w Rubim. Z tego powodu PickAxe przez lata zamiast zachęcać do Rubiego, tylko zniechęcała (bo pomijała kluczowe cechy Rubiego które odróżniają go od innych języków). Dopiero Rails ze swym silnym naciskiem na metaprogramowanie pokazał jak atrakcyjny może być Ruby. Ruby swój renesans zaczął przeżywać od czasu pojawienia się Railsów. Ja sam też nie widziałem wcześniej nic atrakcyjnego w Ruby (na tle Pythona). Dopiero Rails mnie zainteresował do tego aby przyjrzeć się bliżej Rubiemu. I muszę przyznać, że choć w Pythonie też jest możliwe silne metaprogramowanie, to nie jest ono tak ładne jak w Ruby.

(leave url/email »)

   Pomoc języka formatowania Obejrzyj komentarz