Poprzedni wpis (WARPY #3) | Następny wpis (64MB RAM na Megiteam.pl)
Pylons zniechęca
Podkusiło mnie i postanowiłem zrobić tutorial Pylons, trochę z ciekawości, a trochę podążając za modą. Ogólne wrażenie było raczej... marne. Zarówno jeżeli chodzi o Pylons, jak i o sam tutorial.
Przede wszystkim, tutorial stanowił nie lada wyzwanie. W pewnym momencie zalecane do wykonania polecenie zakończyło się bardzo brzydkim tracebackiem, który niewiele mówił. Nie wiedząc, co zrobiłem źle, darowałem sobie dalsze przerabianie materiału, ale następnego dnia zaświtała mi pewna idea i po sprawdzeniu okazało się, że miałem rację — kilka sekcji dalej omówione zostało ustawienie konfiguracji, którego brakowało. Po pokonaniu tej przeszkody udało się dobrnąć do końca.
Teraz trochę o wrażeniu, jakie robi automatycznie wygenerowany szkielet aplikacji. Zawiera on dużo więcej, niż szkielet, jaki generuje Django. W prawie każdym pliku używana jest konstrukcja from package.module import * co powoduje, że właściwie nie wiadomo, skąd co pochodzi. Dodatkowo autor tutoriala ma zadziwiający zwyczaj używania jednoliterowych skrótów, jak np. "h" dla "helpers" czy "c" dla "context" (wygląda to na dość powszechny obyczaj). Ilość tekstu do napisania się zmniejsza, ale traci na tym czytelność. Do tego dokłada się jeszcze duża ilość modułów, które importowane są na wszelki wypadek, a przynajmniej bez jakiegokolwiek wytłumaczenia. Wszystko to składa się na ogólne wrażenie chaosu.
A teraz o samej ramówce, a raczej o tym, co jest zalecane jako jej elementy w wersji 0.9.6.1 (bieżącej w chwili pisania tego artykułu). SQLAlchemy jest potężne, skomplikowane i nieprzyjemne. Routes jest potężne, skomplikowane i nieprzyjemne. System szablonów Mako jest potężny, skomplikowany i nieprzyjemny. Paster jest potężny, skomplikowany i nieprzyjemny. W efekcie Pylons jako całość jest potężne, skomplikowane i nieprzyjemne. Zupełnie jak Spring. Na pewno można przy jego użyciu zrobić milion sprytnych rzeczy, ale nie chodzi o to, żeby robić sprytne rzeczy, tylko żeby zrobić co trzeba i mieć przy okazji trochę dobrej zabawy.
Konkluzja jest dość oczywista — dopóki nie będę musiał, nie porzucę Django dla Pylons. Z pracy przy projektach w Django mam przynajmniej sporą dozę radochy...
Etykiety: django free software / open source programowanie python
Komentarze (22)
#2 jarek skomentował(-a) 11 stycznia 2008 o 14:18
Dziękuję, ale nie skorzystam. Tutaj nikt mnie nie może posądzić o trollowanie.
#3 Katharsis skomentował(-a) 11 stycznia 2008 o 22:45
Możesz być spokojny, forum trzyma poziom i żadnego spamu czy "trollopodobnego" zajścia tam nie znajdziesz. Mimo wszystko rozumiem Twoją decyzję.
Czekam na Tutorial.
#4 jarek skomentował(-a) 14 stycznia 2008 o 09:53
Przecież ja nie napisałem żadnego tutoriala, tylko spróbowałem przejść ten ze strony Pylonsów...
#5 bluszcz skomentował(-a) 20 stycznia 2008 o 23:00
ROTFL - katharsis, z której bajki się urwałeś?
#6 Dominik Szopa skomentował(-a) 29 stycznia 2008 o 00:52
Ja również kiedyś pomyślałem że spróbuje zrobić tutorial z Pylons, jednak poległem na nim :]]]]
Pamiętam że w django zacząłem czytać tutorial wszystko ładnie wytłumaczone, przyjrzycie od razu czytajac kod, wiedziałem co jak działa. W 10 Min miałem gotowa aplikacje z tutoriala.
Tutaj w Pylons w ogóle nie potrafiłem odkryć co jak to do kupy razem zebrac. Nie potrafiłem sie jakoś przestawić że w Django sobie ładnie schludnie mogę model zdefiniować po prostu klasa i pola jakie posiada, sposób zapisu jakoś do mnie nie przemawia ten w Pylons, mało to eleganckie.
Potem postanowiłem poszukać coś w dokumentacji, ale kurde konia z rządem temu co znajdzie gdzie jest dokumentacja np do modeli, pewnie na jakieś innej stronie zupełnie. Po godzinie chodzenia po stronie i szukania jak co działa, stwierdziłem NIE!!! Wracam do dokumentacji Django tam wszystko jest ładnie przejrzyście opisane, co potrzebuje to znajdę w jednym miejscu.
W przedostatnim zdaniu trafiłeś Jarek w sedno sprawy:
>> Na pewno można przy jego użyciu zrobić milion sprytnych rzeczy, >> ale nie chodzi o to, żeby robić sprytne rzeczy, tylko żeby zrobić co >> trzeba i mieć przy okazji trochę dobrej zabawy.
Dokładnie to jest to :)))) Jak sie z czegoś ma frajde to znacznie i przyjemniej się robi i szybciej. Adrian Holovaty i Jacob Kaplan-Moss to powinni dostać nagrodę Nobla za tą frajdę jaką dali programistom webowym. Myślę że to jest jak z przesiadką z Mercedesa na malucha, jak już zakosztujesz przyjemności to chętnie się nie zamienisz :)
Troche sie rozpisałem :)
Pozdrawiam
#7 riklaunim skomentował(-a) 13 lutego 2008 o 23:06
Ja mam uzależnionych od Panelów Admina Django handlowców i co chwilę pojawiają się pomysły na nowe "panele" :D Przy okazji robi się wiele ciekawych rozwiązań, trochę reportlaba, trochę gadania między serwerami itd :)
Co do Pylonsów - to nie jest to dla "perfekcjonistów Z terminami" :D
#8 climbus skomentował(-a) 14 lutego 2008 o 08:26
Jeżeli chodzi o c, h, g, to nie wymysł autora tutoriala tylko zmienne globalne w Pylonsie. Taka konwencja. Kwestia poznania i przyzwyczjenia.
Routes czy jest skomplikowany? Moim zdaniem nie. Jest dużo czytelniejszy od resolvera django.
Dzięki Pylons mogłem bez problemu wejść w istniejącą strukturę danych itp. Nie ważne jakie bazy, ile przypada na jeden serwis, jaka konwencja nazywania, z jakim cms trzeba zintegrować. Nie musiałem wywracać wszystkiego do góry nogami (wcześniej używany był Cheetah, nie ma problemu używać go dalej). Ale przyznaje, że do monolitycznych aplikacji ze swoją strukturą danych Django wydaje się odpowiedniejsze.
O ile da się zainstalować na windzie. Spróbuj zrobić jakikolwiek tutorial Django na windzie. Nie zrobisz bo bez własnej ingerencji nie zainstalujesz Django. Są błędy, których chyba nie zamierzają poprawiać :(
#9 jarek skomentował(-a) 14 lutego 2008 o 09:32
Co kto woli.
A co do instalacji Django na Windows -- robiłem to wiele razy, zarówno 0.91 jak i 0.95. I działało.
#10 Dominik Szopa skomentował(-a) 14 lutego 2008 o 22:57
Ja również kiedyś jak jeszcze używałem windows'a( teraz jestem szczęśliwym użytkownikiem linuxa-:)) instalowałem django pod windows'em i nie było z tym problemów, instalowałem zarówno 0.91 jak i wersje z trunka.
Jakie to błędy o których mówisz, które utrudniają instalacje pod windows ???
#11 jeffar skomentował(-a) 15 lutego 2008 o 06:58
Dołączę do narzekań na Pylonsy. Wykonałem co prawda nie oryginalny tutorial, ale ten od Zabiełły, ale i tak nie przypadł mi do gustu.
Podobnie jak reszta pozostaję przy Django...
#12 climbus skomentował(-a) 15 lutego 2008 o 19:25
Przy instalacji wersji 0.96:
http://code.djangoproject.com/ticket/4128
Przy instalacji z trunka nie kopiuje katalogów templates i media z panelu admina. Wywala wyjątek, że nie może znaleźć szablonu. Ręczne kopiowanie pomaga.
#13 nechor skomentował(-a) 21 lutego 2008 o 13:29
Tutorial Pylons jest zniechecajacy - wlasciwie trzeba osobno przerobic Pythona, SQLAlchemy i Mako... Niemniej po zrobieniu jednej prostej aplikacji jestem w tym jzakochany. Pylons to szybkosc, prostota i nowoczesnosc. W Django mialem wrazenie naprawde odwrotne. Najpierw bylem zachwycony, pozniej napoytkalem na coraz wieksze gory i problemy. W koncu zrezygnowalem. Dla mnie najdziwniejsze jest to ze nikt nie pokusil sie o kompleksowe i PRZYJAZNE dokladne opisanie chocby tych podstawowych, praktycznych kwestii pylons. Teraz czytajac manuale rozumiem je, ale na poczatku to byla mordega. Przerobilem podstawy Railsow, Django, TurboGears i Pylons i moim zdaniem ostatniemu naleza sie najwieksze brawa.
#14 Dryobates skomentował(-a) 11 marca 2008 o 22:22
Ja się męczę zawodowo z Pylons od prawie roku :/ To sobie tutaj trochę ponarzekam, jakby kogoś kusiło wykorzystać Pylons. Co ja bym dał, żeby projekt był zaczęty w Django a nie w Pylons.
Routes - może jestem dziwny, ale nie pasuje mi zmiana porządnego sprawdzonego narzędzia (regexp) na takie cyrki. Ciarki mnie przechodzą, jak słyszę pomysły, żeby do Django takie coś dorzucić :/ Ale koniec końców, nie licząc słabej dokumentacji i moich przyzwyczajeń - działa i da się przyzwyczaić.
SQLAlchemy - na wysokim poziomie nie tak wygodne jak ORM z Django. Na niskim poziomie i tak muszę schodzić do klepania tekstowo, bo zapytania stają się zbyt skomplikowane, aby można było czytelnie zapisać w SQLAlchemy. Zapewne na plus można by zaliczyć elastyczność, z jaką może wpiąć się w istniejącą bazę. Tylko , że ja miałem zaorane pole, więc mi to wiele nie pomagało.
Mako - z tym chyba najwięcej problemów było na początku, bo musiały się go nauczyć osoby nieobeznane z pythonem, nieobeznane z innymi podobnymi szablonami. Ostatecznie jakoś idzie, chociaż konieczność includowania bibliotek wewnątrz każdej funkcji i brak bloków takich jak w Djangowych szablonach (trzeba wywoływać self.funkcja), trochę psuje wygląd kodu. Nadmienię, że w Django i tak używam Jinja zamiast natywnych szablonów. Troszkę elastyczniejsze :)
Paster - uh... Chyba największy ból. I z fcgi i z proxy, z różnymi pulami wątków itp. Stawałem na głowie, żeby wykorzystywało maksimum możliwości serwera, nie padało przy dużym obciążeniu, potrafiło przełknąć pliki o rozmiarach kilkuset MB. Wciąż się męczę :/ W tym jednym miejscu nie mam porównania do Django. Do tej pory nie kazałem łykać tak dużych plików Django.
Podsumowując: Pylons jest na prawdę elastyczne. Ale nie ma sensu głaskać kotka przy pomocy młotka.
#15 asdf skomentował(-a) 1 września 2008 o 14:51
http://docs.pylonshq.com
#16 muncul@gmail.com skomentował(-a) 1 października 2008 o 09:27
czlowieku ! skąd tyś sie urwał ?
Pylons jest naprawdę prosty i przyjemny. A że wymaga trochee pomyślunku to przykro mi ale taka jest praca programisty. W każdym razie mogą cie obudzić o północy i wiesz o co biega a z django nie jest tak różowo.
#17 jarek skomentował(-a) 1 października 2008 o 09:48
Mogę powiedzieć dokładnie to samo:
Django jest naprawdę proste i przyjemne. A że wymaga trochę pomyślunku, to przykro mi, ale taka jest praca programisty. W każdym razie mogą cię obudzić o północy i wiesz o co biega, a z Pylonsami nie jest tak różowo.
#18 muncul@gmail.com skomentował(-a) 10 października 2008 o 20:31
hehe :)
#19 Tomasz Nazar skomentował(-a) 24 lutego 2009 o 01:17
Skomentuje głowny wywód autora: Aby napisac po kolei 4 razy, ze cos jest "potężne, skomplikowane i nieprzyjemne", to trzeba miec dobre powody. Rozumiem, ze autor poswiecil duzo czasu na okielznanie SQLA, Mako, Routes i Pastera? :)
No ja juz pracuje prawie 2 lata z Pylons i powyzszymi i twierdze, ze przegiales z tymi opiniami.
SQLAlchemy jest z pewnoscia potezne. Kwestia przyjemnosci jest subiektywna. Z pewnoscia jest to kolejny ORM, ktorego jezyka trzeba sie nauczyc. Po analizie dokumentacji i doswiadczeniach z ORM i spojrzeniem krytycznym okiem - oddaje z siebie duzo.
O Mako nawet nie ma co dyskutowac - jest OK. Zawsze mozna wymienic na cos innego. Z tymi importami to nieprawda - mozna zrobic globalny import w szablonie: <!%
O Routes, rowniez nie ma co opowiadac. Kilkanascie linijek kodu w naszej aplikacji.. Ostatnio, moze pol roku temu tam cos dotykalem. Procentowo to margines "waznosci" Pylonsow.
W sprawie Pastera, to jeszcze mniejszy margines dla mnie. Co innego jakis specyficzny deployment. Z tym - to fakt - mialem problem, z powodu niedoskonalej dokumentacji, ale zdaje sie, ze PylonsBook naprawia ten akcent.
A w sprawie samych Pylons - to troche inna filozofia frameworku. Tu jest tak .. surowo. Nie ma nic extra, i nie czuje sie takiej potrzeby. Potrzebne komponenty aplikacji webowej sa na miejscu.
Coz wiecej potrzeba?
Kilka konkretow na koniec: chyba w aktualnej oficjalnej wersji juz nie ma "import *", a z pewnoscia ja sam usunalem u siebie.
Porownanie do Springa jest chybione o lata swietlne! Gdziez jedno z drugim?! Nawet trudno je postawic obok siebie do porownania. Spring obejmuje wiecej aspektow (+aspekty ;) ) niz Pylons oczywiscie, a w tych gdzie sie da porownac, to wybieram Pylons (+stos).
Polecam na spokojnie potworzyc kod elementow aplikacji tworzonych na codzien.. Pylonsy jako framework po prostu stoi z boku, pozwalajac programiscie pracowac [...]
Tomasz
#20 kr skomentował(-a) 24 lutego 2009 o 07:46
ehhh;) Aby napisac po kolei 4 razy, ze cos jest "potężne, skomplikowane i nieprzyjemne", to trzeba miec dobre powody. Fakt - trzeba;) I ja również się pod tym podpisuje - mógłbym napisać równie długi wywód... ale widać, że nie pracowałeś z django. Pylons jest potężniejsze niż django, jest bardziej skomplikowane i o wiele bardziej nieprzyjemne. Pylons ma ubogą dokumentację i mało tego czegoś co się określa jako "batteries included". Można jest narzędziem RAD wśród frameworków webowych - Pylons to po prostu framework webowy (kolejny). A co do porównania do Springa - można je postawić na jednej wspólnej półce z etykietą "potężne, skomplikowane i nieprzyjemne";)
#21 jabollo skomentował(-a) 18 marca 2009 o 15:05
niestety, im potezniejsze i bardziej skomplikowane projekty chcesz pisac, to te potezne i skomplikowane narzedzia ci to ulatwia. takie zycie.
dlatego w django napiszesz banalna stroniczke, w pylonsie niewiele lepsza, natomiast do zastosowan enterprise siegniesz po jave (ew. zope).
btw. boje sie pomyslec, co autor artykulu napisze o zope3 :>
#22 jarek skomentował(-a) 18 marca 2009 o 15:38
Nic nie napiszę. Nie mam zamiaru dotykać się do tego potwora, J2EE mi wystarczy.



#1 Katharsis skomentował(-a) 11 stycznia 2008 o 12:38
Byłbym bardzo wdzięczny, jak swoje wypociny zamieścisz na forum projektu Polish Python Coders Group:
www.ppcg.eu.org/forum
Znajduje się tam specjalny dział "Python Web Frameworks" poświęcony m.in. Django i Pylonsowi.
Powodzenia w pisaniu.
Katharsis.