<?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: Aplikacja webowa - wyb&#243;r technologii</title>
    <link>http://blog.zabiello.com/articles/2007/08/25/aplikacja-webowa-wybor-technologii</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>moje notatki, linki, komentarze</description>
    <item>
      <title>Aplikacja webowa - wyb&#243;r technologii</title>
      <description>&lt;p&gt;Do&#347;&#263; cz&#281;sto spotykam si&#281; z pro&#347;b&#261; o to, jak&#261; technologi&#281; (i framework) bym poleci&#322; do tworzenia aplikacji webowych. Dziedzina aplikacji webowych rozwija si&#281; bardzo pr&#281;&#380;nie i trudno tak naprawd&#281; przewidzie&#263;, co b&#281;dzie najlepszym wyborem za par&#281; lat. Niniejszy artyku&#322; stanowi kr&#243;tkie podsumowanie moich do&#347;wiadcze&#324; w tej dziedzinie na dzie&#324; &lt;em&gt;dzisiejszy&lt;/em&gt;.&lt;/p&gt;


	&lt;h3&gt;Nie wierz&#281; w przysz&#322;o&#347;&#263; architektur webowych opartych na j&#281;zykach kompilowanych,  statycznie typowanych.&lt;/h3&gt;


	&lt;p&gt;Na ten temat mo&#380;na by du&#380;o dyskutowa&#263;. Po prostu nie wierz&#281; w przysz&#322;o&#347;&#263; budowania aplikacji webowych w j&#281;zykach C# czy Java. Ka&#380;da zmiana kodu wymaga rekompilacji, wymiany dll itp. Mam z&#322;e do&#347;wiadczenia z &lt;span class="caps"&gt;ASP&lt;/span&gt;.NET. Bardzo wolno i mozolnie si&#281; tworzy i debuguje kod. Z kolei Java (tzn. aplikacja webowa pisana napisana w tym j&#281;zyku) jest ci&#281;&#380;ka i skomplikowana. Aplikacje webowe s&#261; dosy&#263; specyficzne. Znacznie lepiej sprawdzaj&#261; si&#281; tam j&#281;zyki wysokopoziomowe i &lt;em&gt;interpretowane&lt;/em&gt;. Nie trzeba nic restartowa&#263;, rekompilowa&#263;, efekty zmian s&#261; prawie natychmiastowo dost&#281;pne. My&#347;l&#281;, &#380;e wi&#281;kszo&#347;&#263; aplikacji webowych, szczeg&#243;lniej ma&#322;ej i &#347;redniej klasy z&#322;o&#380;ono&#347;ci, zostanie opanowana przez j&#281;zyki interpretowane. Po cz&#281;&#347;ci ju&#380; to uczyni&#322; &lt;span class="caps"&gt;PHP&lt;/span&gt;. Jednak&#380;e&amp;#8230;&lt;/p&gt;


	&lt;h3&gt;Nie wierz&#281; w przysz&#322;o&#347;&#263; &lt;span class="caps"&gt;PHP&lt;/span&gt;.&lt;/h3&gt;


	&lt;p&gt;Na temat wszystkich wad &lt;span class="caps"&gt;PHP&lt;/span&gt; m&#243;g&#322;bym du&#380;o pisa&#263;. W ka&#380;dym razie nie mog&#281; si&#281; nadziwi&#263;, dlaczego jego tworcy wci&#261;&#380; inspiruj&#261; si&#281; sk&#322;adni&#261; Perla i Javy zamiast wzorowa&#263; si&#281; na prostocie i elegancji Pythona czy Ruby.  &lt;span class="caps"&gt;PHP&lt;/span&gt; nie nadaje si&#281; do modularyzacji, tworzenia komponent&#243;w. Pr&#243;bowa&#322;em ju&#380; kiedy&#347; uzyska&#263; efekt komponent&#243;w w &lt;a href="http://smarty.php.net/"&gt;Smarty&lt;/a&gt;. Nie da si&#281;. G&#322;&#243;wnym problemem jest kolizja nazw klas i funkcji. Przestrze&#324; nazw mia&#322;a by&#263; dodana w &lt;span class="caps"&gt;PHP5&lt;/span&gt;. Nie dodali, bo nie umieli. &lt;span class="caps"&gt;PHP&lt;/span&gt; brnie wi&#281;c nadal w swoim chaosie wielkiej, wsp&#243;lnej przestrzeni nazw dla swych wszystkich, chaotycznie nazwanych funkcji o niesp&#243;jnej kolejno&#347;ci przekazywanych parametr&#243;w. Czy w &lt;span class="caps"&gt;PHP&lt;/span&gt; nie da si&#281; napisa&#263; dobrej aplikacji? Owszem, da. Jak kto&#347; si&#281; uprze to i w Assemblerze tak&#261; napisze. Tylko jakim kosztem&amp;#8230; Kierunek rozwoju tego j&#281;zyka wygl&#261;da na przypadkowy. Sam j&#281;zyk jest &#378;le zaprojektowany. Nie wierz&#281; w jego przysz&#322;o&#347;&#263; tym bardziej, &#380;e wyros&#322;a mu powa&#380;na konkurencja.&lt;/p&gt;


	&lt;h3&gt;Fenomem Ruby on Rails.&lt;/h3&gt;


	&lt;p&gt;Powodem rosn&#261;cej popularno&#347;ci &lt;a href="http://rubyonrails.org"&gt;Ruby on Rails&lt;/a&gt;, wbrew zazdrosnym opiniom co niekt&#243;rych, na pewno nie jest &lt;em&gt;tylko&lt;/em&gt; efekt dobrego marketingu. To tak&#380;e efekt pewnej, nowej filozofii w podej&#347;ciu do tematu. Rails mocno postawi&#322; na prostot&#281; i elegancj&#281; kodu po&#322;&#261;czon&#261; z kompleksowo&#347;ci&#261; rozwi&#261;zania. Do tego dobrze dobrane warto&#347;ci domy&#347;lne (ograniczaj&#261;ce ilo&#347;&#263; niezb&#281;dnych konfiguracji) plus wygodne generatory kodu prowadz&#261; cz&#322;owieka dos&#322;ownie za r&#281;k&#281;. Rails doczeka&#322; si&#281; te&#380; &lt;a href="http://deadlock.netbeans.org/hudson/job/ruby/"&gt;dobrego &lt;span class="caps"&gt;IDE&lt;/span&gt;&lt;/a&gt; co powoduje, &#380;e w tym frameworku pracuje si&#281; dosy&#263; przyjemnie. Jest przejrzysty i czytelnie zorganizowany. Zainspirowa&#322; i znalaz&#322; ju&#380; wielu na&#347;ladowc&#243;w, ale nigdy nie uzyskaj&#261; one jego elegancji i prostoty z prostej przyczyny: si&#322;&#261; Rails jest prostota i dynamika j&#281;zyka &lt;a href="http://ruby-lang.org"&gt;Ruby&lt;/a&gt;. Dynamika wi&#281;ksza nawet od &lt;a href="http://python.org"&gt;Pythona&lt;/a&gt;. Sukces Rails&#243;w wzmacnia tak&#380;e &lt;a href="http://weblog.rubyonrails.org/2007/5/7/ruby-and-rails-continues-book-bonanza"&gt;lawinowo rosn&#261;ca ilo&#347;&#263; ksi&#261;&#380;ek&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;Rails zaczyna si&#281; wdziera&#263; do rozwi&#261;za&#324; korporacyjnych. Nie zast&#261;pi on z pewno&#347;ci&#261; Javy, ale na pewno lepiej od niej nadaje si&#281; do szybkiego stworzenia dynamicznych interfejs&#243;w webowych. Z chwil&#261; okrzepni&#281;cia JRuby (javowej implementacji Rubiego), Rails oparty na Javie (ale ze sk&#322;adni&#261; Rubiego) mo&#380;e zrobi&#263; jeszcze sporo zamieszania.&lt;/p&gt;


	&lt;p&gt;Jednak&#380;e, jest technologia, mo&#380;e nie a&#380; tak prosta, ale na pewno pod wieloma wzgl&#281;dami dojrzalsza i szybsza.&lt;/p&gt;


	&lt;h3&gt;Django i Pylons.&lt;/h3&gt;


	&lt;p&gt;Tak jak Rails, &lt;a href="http://djangoproject.com"&gt;Django&lt;/a&gt; powsta&#322; na bazie aplikacji zastosowywanej komercyjnie. Podobnie te&#380; do  Rails, stara si&#281; podchodzi&#263; kompleksowo podaj&#261;c na tacy okre&#347;lony (autorski) &lt;span class="caps"&gt;ORM&lt;/span&gt;, system szablon&#243;w i spos&#243;b rozwi&#261;zywania adres&#243;w &lt;span class="caps"&gt;URL&lt;/span&gt;. Django jest  szybsze od Rails&#243;w. Wynika to dw&#243;ch rzeczy. Python (jako j&#281;zyk) jest szybszy od Rubiego oraz Django od pocz&#261;tku by&#322;o projektowane z my&#347;l&#261; o optymalizacji wydajno&#347;ciowej. (Rails skupia&#322; si&#281; od pocz&#261;tku na uzyskaniu funkcjonalno&#347;ci, zrzucaj&#261;c optymalizacj&#281; na p&#243;&#378;niej). O zaletach Django &lt;a href="http://blog.zabiello.com/articles/2006/05/27/django-wy%C5%BCszy-poziom-abstrakcji"&gt;pisa&#322;em rok temu&lt;/a&gt;. Django po&#380;era te&#380; wyra&#378;nie mniej pami&#281;ci ni&#380; Rails odpalany na &lt;a href="http://mongrel.rubyforge.org/"&gt;mongrelach&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;Niestety, mo&#380;na si&#281; przyczepi&#263; do kilku rzeczy. G&#322;&#243;wna krytyka Django dotyczy jego zbytniej monolityczno&#347;ci i mniejszej elastyczno&#347;ci. Rails pozwala podpina&#263; si&#281; do wielu baz, Django tylko do jednej. Rails posiada migracje do kontrolowania ewolucji struktury bazy. Django nic takiego nie posiada (tzn. jest w fazie rozwojowej gdzie&#347; w bocznych ga&#322;&#281;ziach repozytorium &lt;span class="caps"&gt;SVN&lt;/span&gt;). Rails posiada &#347;wietne helpery do  generowania adres&#243;w &lt;span class="caps"&gt;URL&lt;/span&gt;. Djangowy system adres&#243;w jest znacznie gorszy. Nie ma mo&#380;liwo&#347;ci zmiany struktury aplikacji i wygenerowania zmienionych link&#243;w we wszystkich szablonach. Rails, dzi&#281;ki helperom to umo&#380;liwia. Rails posiada &#347;wietne helpery i specjalne szablony uproszczaj&#261;ce korzystanie z &lt;span class="caps"&gt;AJAX&lt;/span&gt;&amp;#8217;a, Django nic tu nie oferuje.&lt;/p&gt;


	&lt;p&gt;Wiele z wymienionych wy&#380;ej wad nie posiada pythonowy konkurent Django &amp;#8211; &lt;a href="http://pylonshq.com"&gt;Pylons&lt;/a&gt;. Pisalem o tym &lt;a href="http://blog.zabiello.com/articles/2006/03/04/pylons-czyli-si%C5%82a-myghty-i-wygoda-rubyonrails"&gt;ponad roku temu&lt;/a&gt;,  &#380;e Pylons skopiowa&#322; prawie wszystkie helpery jakie posiada Rails. Rozwi&#261;zuje adresy te&#380; w podobny spos&#243;b umo&#380;liwiaj&#261;c bardziej elastyczne modyfikowanie struktury kontroler&#243;w. Wszystkie zale&#380;ne adresy &lt;span class="caps"&gt;URL&lt;/span&gt; s&#261; generowane za pomoc&#261; helper&#243;w w spos&#243;b podobny do Rails. Pylons w zasadzie to taka sklejanka zewn&#281;trznych bibliotek Pythona. Wykorzystuj&#261;c standardowy mechanizm &lt;a href="http://www.python.org/dev/peps/pep-0333/"&gt;&lt;span class="caps"&gt;WSGI&lt;/span&gt;&lt;/a&gt;, Pylons pozwala na wymian&#281; prawie ka&#380;dego swojego elementu, od &lt;span class="caps"&gt;ORM&lt;/span&gt;, po system szablon&#243;w czy resolver adres&#243;w &lt;span class="caps"&gt;URL&lt;/span&gt;.&lt;/p&gt;


	&lt;p&gt;Wiele z element&#243;w, jakie domy&#347;lnie oferuje Pylons przewy&#380;sza elastyczno&#347;ci&#261; i mo&#380;liwo&#347;ciami to, co dost&#281;pne jest w Django.  Np. Pylons korzysta domy&#347;lnie z &lt;a href="http://www.sqlalchemy.org/"&gt;SQLAlchemy&lt;/a&gt;, kt&#243;ry jest pot&#281;&#380;niejszy od tego w Rails i Django&lt;sup&gt;&lt;a href="#fn1"&gt;1&lt;/a&gt;&lt;/sup&gt;. Nie tylko bez problemu pozwala podpi&#261;&#263; si&#281; do kilku baz, ale tak&#380;e do bardziej skomplikowanych struktur&lt;sup&gt;&lt;a href="#fn2"&gt;2&lt;/a&gt;&lt;/sup&gt;. Domy&#347;lny system szablon&#243;w &lt;a href="http://makotemplates.org"&gt;Mako&lt;/a&gt; jest najlepszym systemem jaki znam. Oferuje rozbudowan&#261;&lt;sup&gt;&lt;a href="#fn3"&gt;3&lt;/a&gt;&lt;/sup&gt; obiektowo&#347;&#263;, prost&#261; sk&#322;adni&#281;, doskona&#322;y cache dowolnego fragmentu i wg dowolnych zasad. Co&#347;, o czym np. Rails mo&#380;e tylko pomarzy&#263;&lt;sup&gt;&lt;a href="#fn4"&gt;4&lt;/a&gt;&lt;/sup&gt;. No i Pylons udost&#281;pnia szybki, wielow&#261;tkowy serwer &lt;span class="caps"&gt;HTTP&lt;/span&gt; kt&#243;ry mo&#380;na bez problemu u&#380;ywa&#263; zar&#243;wno do deweloperki jak i produkcyjnie. Ani Django ani Rails nie obs&#322;uguj&#261; wielow&#261;tkowo&#347;ci. Pylons obs&#322;uguje, dzi&#281;ki czemu te&#380; ma mniejsze zapotrzebowanie na pami&#281;&#263;.&lt;/p&gt;


	&lt;p&gt;Pylons oferuje wi&#281;c wi&#281;cej mo&#380;liwo&#347;ci, ale kosztem wi&#281;kszej z&#322;o&#380;ono&#347;ci. Django jest troch&#281; prostszy do opanowania. Ca&#322;a dokumentacja jest w jednym miejscu. Nauka Pylons wymaga si&#281;gni&#281;cia do oddzielnej dokumentacji SQLAlchemy, Mako czy &lt;a href="http://routes.groovie.org/"&gt;Routes&lt;/a&gt;. Sam SQLAlchemy jest te&#380; bardzo rozbudowany i trudniejszy do opanowania.&lt;/p&gt;


	&lt;h3&gt;Zope 3 &amp;#8211; najwy&#380;sza poprzeczka.&lt;/h3&gt;


	&lt;p&gt;Napisany w Pythonie, obiektowy, wielow&#261;tkowy serwer aplikacyjny &lt;a href="http://zope.org"&gt;Zope&lt;/a&gt; od dawna uchodzi&#322; za &amp;#8220;zab&#243;jcz&#261; aplikacj&#281;&amp;#8221; Pythona. Powsta&#322;o do niego tysi&#261;ce plugin&#243;w. Jednym z najs&#322;ynniejszych jest &lt;a href="http://plone.org"&gt;Plone &lt;span class="caps"&gt;CMS&lt;/span&gt;&lt;/a&gt; (wg mnie najlepszy &lt;span class="caps"&gt;CMS&lt;/span&gt; jaki napisano). Zope 2.x by&#322; jednak&#380;e krytykowany za zbytni&#261; z&#322;o&#380;ono&#347;&#263; i ba&#322;agan w &lt;span class="caps"&gt;API&lt;/span&gt;. Nauczenie si&#281; Zope wymaga&#322;o sporo wysi&#322;ku tak&#380;e z powodu s&#322;abej dokumentacji. Wi&#281;kszo&#347;&#263; lekkich framework&#243;w Pythona powsta&#322;o troch&#281; na bazie kontestacji Zope. Na szcz&#281;&#347;cie, tw&#243;rcy wyci&#261;gn&#281;li lekcj&#281; z Zope 2 i kod dla wersji 3 zosta&#322; napisany od zera. Znacznie uproszczono i uporz&#261;dkowano &lt;span class="caps"&gt;API&lt;/span&gt;.&lt;/p&gt;


	&lt;p&gt;Rails, Django czy Pylons s&#261; gro&#378;n&#261; konkurencj&#261; przede wszystkim dla popularnego &lt;span class="caps"&gt;PHP&lt;/span&gt;. To jest mniej wi&#281;cej dziedzina ich zastosowa&#324;. Zope za&#347; to troch&#281; inna filozofia i inna  grupa docelowa. Zope ma ambicj&#281; aby konkurowa&#263; z najpowa&#380;niejszymi zastosowaniami klasy enterprise opanowanymi g&#322;&#243;wnie przez Jav&#281;.&lt;/p&gt;


	&lt;p&gt;Przede wszystkim Zope to serwer aplikacyjny w pe&#322;ni obiektowy i o budowie komponentowej. Ka&#380;dy komponent ma &#347;ci&#347;le zdefiniowane interfejsy&lt;sup&gt;&lt;a href="#fn5"&gt;5&lt;/a&gt;&lt;/sup&gt;. Zope korzysta standardowo z &lt;a href="https://launchpad.net/zodb"&gt;prawdziwej bazy obiektowej&lt;/a&gt;. Nie potrzebuje &#380;adnego wspierania si&#281; wrapperami &lt;span class="caps"&gt;ORM&lt;/span&gt;. Baza obiektowa zapisuje ca&#322;e obiekty Pythona w spos&#243;b transparentny i stanowi naturalne przed&#322;u&#380;enie pisanego kodu. Zope 3 ma oczywi&#347;cie wbudowane wszystko co potrzebuje typowa aplikacja webowa, dobry cache, wbudowane mechanizmy bezpiecze&#324;stwa, przep&#322;ywu danych, lokalizacji interfejsu (i18n, l10n) itp. Pozwala te&#380; na prze&#322;adowywanie komponent&#243;w bez restartu serwera. Je&#347;li potrzeba nowej funkcjonalno&#347;ci, wystarczy napisa&#263; nowy komponent i podpi&#261;&#263; do serwera. Nie ma znaczenia czy tym komponentem b&#281;dzie &amp;#8220;artyku&#322;&amp;#8221;, czy &amp;#8220;plik graficzny&amp;#8221; czy ca&#322;y system redakcyjny, b&#261;d&#378; &lt;span class="caps"&gt;CMS&lt;/span&gt;.&lt;/p&gt;


	&lt;p&gt;Te mo&#380;liwo&#347;ci jednak nie s&#261; bez wad. Do najwi&#281;kszych zaliczy&#322;bym s&#322;ab&#261; promocj&#281; (to w og&#243;le jaka&#347; przypad&#322;o&#347;&#263; Pythona i jego aplikacji) oraz wci&#261;&#380; za s&#322;ab&#261; dokumentacj&#281;. Na szcz&#281;&#347;cie ta ostatnia rzec si&#281; troch&#281; poprawi&#322;a. Nawet s&#261; ju&#380; ksi&#261;&#380;ki dedykowane &lt;a href="http://worldcookery.com/"&gt;specjalnie dla Zope 3.3&lt;/a&gt;. Zope potrzebuje te&#380; znacznie wi&#281;cej pami&#281;ci ni&#380; taki Django czy Pylons.&lt;/p&gt;


	&lt;h3&gt;Ku przysz&#322;o&#347;ci.&lt;/h3&gt;


	&lt;p&gt;Dziedzina aplikacji webowych rozwija si&#281; bardzo dynamicznie i trudno co&#347; przewidzie&#263; w dalszej przysz&#322;o&#347;ci. W zwi&#261;zku z dynamicznym rozwojem procesor&#243;w wielordzeniowych, kto wie, czy renesansu nie prze&#380;yje j&#281;zyk &lt;a href="http://pl.wikipedia.org/wiki/Erlang_%28j%C4%99zyk_programowania%29"&gt;Erlang&lt;/a&gt; (bo doskonale si&#281; nadaje do programowania wsp&#243;&#322;bie&#380;nego). By&#263; mo&#380;e renesans prze&#380;yj&#261; serwery kontynuacyjne, kt&#243;re zapewniaj&#261; zachowanie stanu dla aplikacji webowej eliminuj&#261;c potrzeb&#281;  u&#380;ywania sesji. W serwerze kontynuacyjnym, pisanie kodu dla aplikacji webowej, czy desktopowej, prawie niczym si&#281; nie r&#243;&#380;ni. Na razie najbardziej znanym serwerem tego typu jest napisany w Smalltalku &amp;#8211; &lt;a href="http://en.wikipedia.org/wiki/Seaside_%28software%29"&gt;Seaside&lt;/a&gt;. Du&#380;y potencja&#322; ma te&#380; Ruby, bo posiada wbudowan&#261; obs&#322;ug&#281; kontynuacji.&lt;/p&gt;


	&lt;p&gt;Na pewno obawa co do znalezienia pracy w Rails czy Pythonie raczej nie ma du&#380;ego uzasadnienia. Jest wiele firm u&#380;ywaj&#261;cych Pythona. Najlepszym przyk&#322;adem jest Google, kt&#243;ry prawie wszystko ma oparte na Pythonie. Od czasu do czasu pojawiaj&#261; si&#281; w Polsce dramatyczne ;) wo&#322;ania o programist&#243;w Pythona, wi&#281;c cho&#263; ofert nie ma tyle co dla Javy i .NET, to mo&#380;na co&#347; wyszuka&#263;. Je&#347;li chodzi o Ruby on Rails, to ofert zaczyna by&#263; coraz wi&#281;cej, jest ju&#380; troch&#281; wi&#281;cej ni&#380; dla Pythona. Rails p&#281;dzi na pe&#322;nej szybko&#347;ci i dzi&#281;ki dobre promocji wdziera si&#281; coraz szerzej do &#347;wiadomo&#347;ci programist&#243;w g&#322;&#243;wnego nurtu. Sam pracuj&#281; w firmie gdzie g&#322;&#243;wny system oparty jest na Springu i Hibernate, technologiach Javy. Jednak&#380;e do tworzenia aplikacji webowej zosta&#322; wybrany Ruby on Rails.&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;Podsumowuj&#261;c&lt;/strong&gt; powiedzia&#322;bym, &#380;e wsp&#243;&#322;czesny programista musi operowa&#263; kilkoma j&#281;zykami i technologiami. Dzisiaj pracuje si&#281; w heterogenicznym &#347;rodowisku i wykorzystuje mieszane technologie. Kto my&#347;li, &#380;e nauczy si&#281; tylko jednego, doskona&#322;ego j&#281;zyka i tylko jednego frameworka, pewnie mocno si&#281; rozczaruje w zderzeniu z rzeczywisto&#347;ci&#261;&lt;sup&gt;&lt;a href="#fn6"&gt;6&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;


	&lt;p&gt;Do lekkich webowych interfejs&#243;w z du&#380;&#261; ilo&#347;ci&#261; &lt;span class="caps"&gt;AJAX&lt;/span&gt;&amp;#8217;a wybra&#322;bym Rails. Tak&#380;e dla os&#243;b pocz&#261;tkuj&#261;cych, pragn&#261;cych nabra&#263; dobrych nawyk&#243;w, wybra&#322;bym Rails&lt;sup&gt;&lt;a href="#fn7"&gt;7&lt;/a&gt;&lt;/sup&gt;.  Tam, gdzie wymagane jest jednak dobre wsparcie dla Unicode oraz gdzie wydajno&#347;&#263; jest bardziej kluczowa, wybra&#322;bym Pylons&lt;sup&gt;&lt;a href="#fn8"&gt;8&lt;/a&gt;&lt;/sup&gt;. Z kolei, je&#347;li chcemy uderzy&#263; w rynek bardziej kompleksowych rozwi&#261;za&#324; dla biznesu, Zope 3 b&#281;dzie raczej trudny do pobicia. I w ko&#324;cu, tam, gdzie potrzebujemy gotowego, dobrego forum i taniego hostingu najlepiej sprawdzi si&#281; &lt;span class="caps"&gt;PHP&lt;/span&gt; (tak, najlepsze, gotowe do u&#380;ycia forum s&#261; napisane w &lt;span class="caps"&gt;PHP&lt;/span&gt;).&lt;/p&gt;


	&lt;p&gt;&lt;em&gt;Apendix&lt;/em&gt;: Jest dost&#281;pne &lt;a href="http://www.makotemplates.org/trac"&gt;kolorowanie sk&#322;adni&lt;/a&gt; Mako dla kilku edytor&#243;w (TextMate, Emacs, Vim i Komodo). &lt;small&gt;(2007-09-12)&lt;/small&gt;&lt;/p&gt;


&lt;hr size="1" /&gt;

	&lt;p id="fn1"&gt;&lt;sup&gt;1&lt;/sup&gt; Tak w og&#243;le to kwestia por&#243;wnania Active Record, SQLAlchemy i Django nie jest taka oczywista. Ka&#380;dy posiada co&#347;, czego nie posiada drugi. Np. Active Record posiada eleganckie walidatory, kt&#243;rych nie ma w SQLAlchemy. Z kolei Django nie umie podpi&#261;&#263; si&#281; do wielu baz, ale posiada wygodne, wysokopoziomowe pola w modelu. SQLAlchemy za&#347; podepnie si&#281; do najbardziej pogmatwanej struktury, wielu baz i to wszystko w elegancki, obiektowy spos&#243;b, a nie z brutalnymi wstawkami kodu &lt;span class="caps"&gt;SQL&lt;/span&gt;, jak ma miejsce w Active Record. Poza tym SQLAlchemy potrafi optymalizowa&#263; zapytania tak, aby kilka polece&#324; wykona&#263; mo&#380;liwe najmniejsz&#261; ilo&#347;ci&#261; kwerend i po&#322;&#261;cze&#324; z baz&#261;.&lt;/p&gt;


	&lt;p id="fn2"&gt;&lt;sup&gt;2&lt;/sup&gt; Rails nie ma problemu podpi&#281;cia si&#281; do wielu baz. Za&#347; struktury takie jak z&#322;o&#380;one klucze g&#322;&#243;wne potrafi obs&#322;u&#380;y&#263; za pomoc&#261; &lt;a href="http://compositekeys.rubyforge.org/"&gt;odpowiednich plugin&#243;w&lt;/a&gt;.&lt;/p&gt;


	&lt;p id="fn3"&gt;&lt;sup&gt;3&lt;/sup&gt; Mako pozwala na wi&#281;cej ni&#380; proste dziedziczenie tak jak ma Django. Pozwala na &lt;a href="http://www.makotemplates.org/docs/inheritance.html#inheritance_next"&gt;kaskad&#281; dziedziczenia&lt;/a&gt;.&lt;/p&gt;


	&lt;p id="fn4"&gt;&lt;sup&gt;4&lt;/sup&gt; Rails ma s&#322;abe mo&#380;liwo&#347;ci w zakresie buforowania danych. Np. nie potrafi buforowa&#263; fragment&#243;w szablon&#243;w w oparciu o unikalny klucz (z parametr&#243;w adresu &lt;span class="caps"&gt;URL&lt;/span&gt; lub w oparciu o inne kryteria).&lt;/p&gt;


	&lt;p id="fn5"&gt;&lt;sup&gt;5&lt;/sup&gt; Sam Python nie posiada wbudowanej sk&#322;adni do tworzenia interfejs&#243;w czy klas abstrakcyjnych. Autorzy Zope 3 jednak je cz&#281;&#347;ciowo zasymulowali korzystaj&#261;c z tego, co oferuje j&#281;zyk.&lt;/p&gt;


	&lt;p id="fn6"&gt;&lt;sup&gt;6&lt;/sup&gt; W tym wszystkim za ma&#322;o pad&#322;o o znajomo&#347;ci JavaScript. Nie jest to zbyt prosty i intuicyjny j&#281;zyk, a ma spore mo&#380;liwo&#347;ci i jest bardzo dynamiczny. Jego znajomo&#347;&#263; jest absolutnie niezb&#281;dna dla ka&#380;dej osoby chc&#261;cej tworzy&#263; aplikacje internetowe. &lt;span class="caps"&gt;O CSS&lt;/span&gt; i &lt;span class="caps"&gt;XHTML&lt;/span&gt; nie wspominam, bo to oczywiste podstawy.&lt;/p&gt;


	&lt;p id="fn7"&gt;&lt;sup&gt;7&lt;/sup&gt; Rozpoczynanie przygody z tworzeniem aplikacji webowych od &lt;span class="caps"&gt;PHP&lt;/span&gt; jest najgorsz&#261; rzecz&#261; jak&#261; mo&#380;emy zrobi&#263;. &lt;span class="caps"&gt;PHP&lt;/span&gt; za bardzo zach&#281;ca i utrwala z&#322;e nawyki programistyczne. To w&#322;a&#347;nie mia&#322; na my&#347;li &lt;span class="caps"&gt;DHH&lt;/span&gt;, tw&#243;rca Rails, kiedy por&#243;wna&#322; &lt;span class="caps"&gt;PHP&lt;/span&gt; do&amp;#8230; diab&#322;a. :)&lt;/p&gt;


	&lt;p id="fn8"&gt;&lt;sup&gt;8&lt;/sup&gt;  A co z Django? Je&#347;li mam wybiera&#263; mi&#281;dzy Django a Pylons, to wol&#281; Pylons. Ma wi&#281;ksze mo&#380;liwo&#347;ci i osi&#261;gn&#261;&#322; wystarczaj&#261;c&#261; dojrza&#322;o&#347;&#263; aby podwa&#380;y&#263; dominacj&#281; i popularno&#347;&#263; Django w kr&#281;gach pythonistas. Jedn&#261; z polskich firm, kt&#243;ra wdro&#380;y&#322;a i u&#380;ywa z sukcesem Pylons&#243;w jest firma, w kt&#243;rej sp&#281;dzi&#322;em par&#281; lat i gdzie wdro&#380;y&#322;em kiedy&#347; Pythona &amp;#8211; &lt;a href="http://www.muratordom.pl"&gt;Wydawnictwo Murator&lt;/a&gt;. Pozdrowienia dla ekipy. :)&lt;/p&gt;</description>
      <pubDate>Sat, 25 Aug 2007 21:22:00 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:f173a45f-730a-4ea9-97f1-330d88a27cc0</guid>
      <author>Jaros&#322;aw Zabie&#322;&#322;o</author>
      <link>http://blog.zabiello.com/articles/2007/08/25/aplikacja-webowa-wybor-technologii</link>
      <category>python</category>
      <category>ruby</category>
      <category>php</category>
      <category>rails</category>
      <category>django</category>
      <category>pylons</category>
    </item>
    <item>
      <title>"Aplikacja webowa - wyb&#243;r technologii" by MaRiAnO ItAlIaNo</title>
      <description>&lt;p&gt;Wymi&#281;k&#322;em przy kilkudziesi&#261;tym komentarzu, mam nadziej&#281;, &#380;e p&#243;&#378;niej nie by&#322;o odpowiedzi na pytanie:
&amp;gt; skoro wielko&#347;&#263; znak&#243;w nie jest znacz&#261;ca to po co przyjmowa&#263; tak&#261; konwencj&#281;?&lt;/p&gt;


	&lt;p&gt;Z prostego powodu &amp;#8211; przegl&#261;daj&#261;c kod, &#322;atwiej OdczytaszNapisyU&#380;ywaj&#261;ceCameli ni&#380;napisyichnieu&#380;ywaj&#261;ce.&lt;/p&gt;


	&lt;p&gt;(Cameli powinno by&#263; w cudzys&#322;owiu :))&lt;/p&gt;</description>
      <pubDate>Tue, 29 Jul 2008 01:05:35 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:02fb008d-0047-46e3-86b0-31abc6948710</guid>
      <link>http://blog.zabiello.com/articles/2007/08/25/aplikacja-webowa-wybor-technologii#comment-1754</link>
    </item>
    <item>
      <title>"Aplikacja webowa - wyb&#243;r technologii" by Jachu</title>
      <description>&lt;p&gt;Bardzo ciekawe por&#243;wnanie. Z por&#243;wnaniem PHP do diab&#322;a to fakt ;) Ci&#281;&#380;ko si&#281; przesi&#261;&#347;&#263; &amp;#8230;&lt;/p&gt;</description>
      <pubDate>Thu, 19 Jun 2008 19:28:35 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:50f0994a-faee-4063-b5bf-27ec90a54414</guid>
      <link>http://blog.zabiello.com/articles/2007/08/25/aplikacja-webowa-wybor-technologii#comment-1702</link>
    </item>
    <item>
      <title>"Aplikacja webowa - wyb&#243;r technologii" by respectum</title>
      <description>&lt;p&gt;No c&#243;&#380;, to chyba trzeba si&#281; troch&#281; po&#347;wi&#281;ci&#263;&amp;#8230;&lt;/p&gt;</description>
      <pubDate>Thu, 01 May 2008 16:19:50 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:eb03a49e-36a3-43f8-8bc8-80808abb392e</guid>
      <link>http://blog.zabiello.com/articles/2007/08/25/aplikacja-webowa-wybor-technologii#comment-1593</link>
    </item>
    <item>
      <title>"Aplikacja webowa - wyb&#243;r technologii" by Jaros&#322;aw Zabie&#322;&#322;o</title>
      <description>&lt;p&gt;Nie u&#380;ywa&#322;em Catalysta wi&#281;c si&#281; nie wypowiadam (u&#380;ywa&#322;em troch&#281; Masona). Og&#243;lnie nie przepadam za Perlem. Wol&#281; przejrzysto&#347;&#263; i czyst&#261; obiektowo&#347;&#263; Rubiego, wzgl&#281;dnie Pythona.&lt;/p&gt;


	&lt;p&gt;Ten tekst by&#322; napisany jaki&#347; czas temu. Teraz ponad Rails postawi&#322;bym &lt;a href="http://www.merbivore.com/" rel="nofollow"&gt;Merba&lt;/a&gt; cho&#263; czekam jeszcze a&#380; wyjdzie wersja 1.0.&lt;/p&gt;</description>
      <pubDate>Wed, 05 Mar 2008 22:46:17 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:325fdb89-c16f-4ed2-8285-b9768ee3507c</guid>
      <link>http://blog.zabiello.com/articles/2007/08/25/aplikacja-webowa-wybor-technologii#comment-1471</link>
    </item>
    <item>
      <title>"Aplikacja webowa - wyb&#243;r technologii" by weos&#322;y kosiarz</title>
      <description>&lt;p&gt;Widz&#281;, &#347;wi&#281;ty Perl i jego Catalyst nie za&#322;apa&#322; si&#281; na uwzgl&#281;dnienie w  zestawieniu.&lt;/p&gt;</description>
      <pubDate>Wed, 05 Mar 2008 22:32:12 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:5bc1898a-c56e-418c-93aa-9c70a07aa45d</guid>
      <link>http://blog.zabiello.com/articles/2007/08/25/aplikacja-webowa-wybor-technologii#comment-1470</link>
    </item>
    <item>
      <title>"Aplikacja webowa - wyb&#243;r technologii" by piotrko</title>
      <description>&lt;p&gt;qqrq: &amp;#8220;A co do &#8220;pi&#281;kna kodu&#8221;, to takich dyskusji unikajmy, bo s&#261; ja&#322;owe&#8230;&amp;#8221;&lt;/p&gt;


	&lt;p&gt;Poniek&#261;d. Jednak przejrzysto&#347;&#263; i zwi&#281;z&#322;o&#347;&#263; sk&#322;adni ma znaczenie dla szybko&#347;ci i wygody pisania, jak te&#380; analizy kodu &amp;#8211; a te cechy przekonuj&#261; mnie do tego j&#281;zyka.&lt;/p&gt;


	&lt;p&gt;Inspiruj&#261;cy artyku&#322;, ciekawa dyskusja.
Dzi&#281;ki i pozdrawiam.&lt;/p&gt;</description>
      <pubDate>Sat, 24 Nov 2007 04:14:00 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:5c953313-3765-443d-a1d2-6bc526fa3eed</guid>
      <link>http://blog.zabiello.com/articles/2007/08/25/aplikacja-webowa-wybor-technologii#comment-1245</link>
    </item>
    <item>
      <title>"Aplikacja webowa - wyb&#243;r technologii" by qqrq</title>
      <description>&lt;p&gt;Wydaje mi si&#281;, &#380;e niepotrzebnie przekre&#347;la Pan PHP, Panie Jarku. Popularno&#347;&#263; PHP jest w tym przypadku o tyle wad&#261;, &#380;e naprawd&#281; dobre biblioteki/rozszerzenia czasami gubi&#261; si&#281; w&#347;r&#243;d zalewu miernoty (kt&#243;rej jest duuu&#380;o). 
Trzeba te&#380; wzi&#261;&#263; poprawk&#281; na przesz&#322;o&#347;&#263; PHP i doceni&#263; ten j&#281;zyk, jako naprawd&#281; przydatny i prosty. Jak si&#281; umie, to da rad&#281; napisa&#263; co&#347; porz&#261;dnego.
A co do &amp;#8220;pi&#281;kna kodu&amp;#8221;, to takich dyskusji unikajmy, bo s&#261; ja&#322;owe&amp;#8230;&lt;/p&gt;</description>
      <pubDate>Fri, 02 Nov 2007 15:18:40 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:243ee01c-df7a-4995-8809-40fd917483f2</guid>
      <link>http://blog.zabiello.com/articles/2007/08/25/aplikacja-webowa-wybor-technologii#comment-1179</link>
    </item>
    <item>
      <title>"Aplikacja webowa - wyb&#243;r technologii" by Jaros&#322;aw Zabie&#322;&#322;o</title>
      <description>&lt;p&gt;Flash? Zapomnij. Google nie indeksuje podstron. Trudno si&#281; w tym pisze i debuguje (programowanie asynchroniczne, zdarzeniowe). Flash jest dobry do prezentacji lub jako wstawki. Ale oparcie wszystkiego na nim to pomy&#322;ka. Troch&#281; na bazie kontestacji aplet&#243;w i Flasha rozwin&#261;&#322; si&#281; AJAX.&lt;/p&gt;</description>
      <pubDate>Wed, 31 Oct 2007 22:50:04 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:c88c1a36-fef2-4062-b63b-37140c380066</guid>
      <link>http://blog.zabiello.com/articles/2007/08/25/aplikacja-webowa-wybor-technologii#comment-1155</link>
    </item>
    <item>
      <title>"Aplikacja webowa - wyb&#243;r technologii" by flah tada</title>
      <description>&lt;p&gt;a co z technologia adobe flex ?&lt;/p&gt;</description>
      <pubDate>Wed, 31 Oct 2007 22:07:10 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:240dead1-4c7a-42bf-b048-976122cf32ed</guid>
      <link>http://blog.zabiello.com/articles/2007/08/25/aplikacja-webowa-wybor-technologii#comment-1152</link>
    </item>
    <item>
      <title>"Aplikacja webowa - wyb&#243;r technologii" by Jaros&#322;aw Zabie&#322;&#322;o</title>
      <description>&lt;p&gt;O dobrych programist&#243;w w og&#243;le trudno. Je&#347;li chodzi o Pythona (lub Ruby), to je&#347;li trudno znale&#378;&#263; do&#347;wiadczonych programist&#243;w, trzeba albo ich podebra&#263; innej firmie, albo podkupi&#263; jakiego&#347; jednego dobrego, dobrze go op&#322;aci&#263; aby pom&#243;g&#322; zbudowa&#263; zesp&#243;&#322; programist&#243;w. Oczywi&#347;cie musi umie&#263; w miar&#281; dobrze przekazywa&#263; wiedz&#281; i zach&#281;ca&#263; m&#322;odych aby omijali miny i kierowali si&#281; ku dobrym, &amp;#8220;pythonistycznym&amp;#8221; praktykom.&lt;/p&gt;</description>
      <pubDate>Fri, 19 Oct 2007 01:22:30 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:4b9ac7f8-e0f8-40f1-b5e8-105aa836233f</guid>
      <link>http://blog.zabiello.com/articles/2007/08/25/aplikacja-webowa-wybor-technologii#comment-1097</link>
    </item>
    <item>
      <title>"Aplikacja webowa - wyb&#243;r technologii" by Andrew</title>
      <description>&lt;p&gt;Hmm, wida&#263; &#380;e znasz si&#281; na rzeczy. Inne j&#281;zyki obserwuje tylko z boku i w&#322;a&#347;nie zauwa&#380;y&#322;em, &#380;e mimo i&#380; np do php dost&#281;pny jest ten Zend, to ludzie w komercyjnych projektach u&#380;ywaj&#261; przero&#347;ni&#281;tych notatnik&#243;w i debugowania poprzez wyrzucanie stuff&amp;#8217;u na konsole :-\&lt;/p&gt;


	&lt;p&gt;Co do Pythona to rzeczywi&#347;cie wygl&#261;da na to, &#380;e kiedy&#347; b&#281;dzie dominowa&#322; w niekt&#243;rych zastosowaniach. Komputery s&#261; coraz szybsze&amp;#8230; I wiem, &#380;e google na nim stoi :)&lt;/p&gt;


	&lt;p&gt;Co do pierwszych j&#281;zyk&#243;w dynamicznych, z tego co ja czyta&#322;em (R. C. Martin), to odwr&#243;t by&#322; powi&#261;zany ze zbyt du&#380;&#261; ilo&#347;ci&#261; b&#322;&#281;d&#243;w i s&#322;ab&#261; jako&#347;ci&#261; produktu wynikowego przez to. Teraz j&#281;zyki dynamiczne powracaj&#261; dzi&#281;ki TDD (rzadko stosowane w polsce na razie, ale moda na j. dyn. przysz&#322;a zza oceanu).&lt;/p&gt;


	&lt;p&gt;Co do Springa to go wykorzystuje si&#281; RAZEM z j2ee, ale ma te&#380; inne zastosowanie. J2EE s&#322;u&#380;y do budowy logiki aplikacji, a Spring do zarz&#261;dzania ni&#261; i innymi warstwami. Fakt, w J2EE jest sporo nadmiaru (np EJB czasami), ale ten &amp;#8220;nadmiar&amp;#8221; bywa niezb&#281;dny. Oczywi&#347;cie nie w web-tier.&lt;/p&gt;


	&lt;p&gt;&amp;#8220;A widzia&#322;e&#347; jak &#347;miga Wikipedia&amp;#8221; &amp;#8211; w&#261;tpi&#281; czy tam skalowanie jest zrobione na poziomie serwera aplikacji. Raczej bazy.&lt;/p&gt;


	&lt;p&gt;A, s&#322;owo system u&#380;y&#322;em w znaczeniu systemu informatycznego (o kt&#243;rym pisa&#322;em) a nie operacyjnego. Nie wiem czemu ci si&#281; tak skojarzy&#322;o.
BTW: podobno cz&#281;&#347;&#263; Visty jest napisana w C# &amp;#8211; to t&#322;umaczy czemu jest taka wolna ;)&lt;/p&gt;


	&lt;p&gt;Na koniec jeden smutny fakt (a mo&#380;e nie taki smutny dla programist&#243;w ;) Wymieniasz sporo framework&#243;w, j&#281;zyk&#243;w, itp. Cz&#281;sto si&#281; m&#243;wi &amp;#8220;dobierz narz&#281;dzie do zadania&amp;#8221;, ok. ALE: w Szczecinie od d&#322;u&#380;szego czasu pewna firma szuka 20 programist&#243;w C+, w &#321;odzi firmy same jad&#261; po student&#243;w do Warszawy. Czyli brakuje programist&#243;w najpopularniejszych j&#281;zyk&#243;w (aktualnie Java, C+, C#). Jak z&#322;o&#380;ysz zesp&#243;&#322; 10-15 programist&#243;w Pythona/PHP, kt&#243;rzy znaj&#261; si&#281; na dobrym programowaniu i maj&#261; odpowiednie do&#347;wiadczenie? (zw&#322;aszcza o takich PHPowc&#243;w trudno, kt&#243;rzy wiedz&#261; co to warstwa logiki/domenowa). Na razie to jest problem :P&lt;/p&gt;</description>
      <pubDate>Thu, 18 Oct 2007 23:40:11 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:0c25ac8d-60e4-4509-993b-7ac710457501</guid>
      <link>http://blog.zabiello.com/articles/2007/08/25/aplikacja-webowa-wybor-technologii#comment-1094</link>
    </item>
    <item>
      <title>"Aplikacja webowa - wyb&#243;r technologii" by Jaros&#322;aw Zabie&#322;&#322;o</title>
      <description>&lt;p&gt;Z tymi IDE to przesadzasz. Chyba nie jeste&#347; na bie&#380;&#261;co. Python od dawna mia&#322; wiele dobrych IDE, we&#378;my np, &lt;a href="http://wingware.com/wingpro" rel="nofollow"&gt;WingIDE Pro&lt;/a&gt;, Eclipse/&lt;a href="http://pydev.sourceforge.net/" rel="nofollow"&gt;PyDEV&lt;/a&gt;, &lt;a href="http://pythonide.blogspot.com/" rel="nofollow"&gt;SPE&lt;/a&gt;, &lt;a href="http://activestate.com/Products/komodo_ide/" rel="nofollow"&gt;Komodo&lt;/a&gt;, &lt;a href="http://www.die-offenbachs.de/eric/" rel="nofollow"&gt;Eric 4&lt;/a&gt;, &lt;a href="http://activestate.com/Products/activepython/" rel="nofollow"&gt;PythonWin&lt;/a&gt; itp, itd. PHP ma sw&#243;j (b. dobry) &lt;a href="http://www.zend.com/products/zend_studio/professional_edition" rel="nofollow"&gt;Zend Studio Pro&lt;/a&gt;. Ruby doczeka&#322; si&#281; mocnego wsparcia ze strony &#347;wietnego &lt;a href="http://deadlock.netbeans.org/hudson/job/ruby/" rel="nofollow"&gt;Netbeans 6&lt;/a&gt;, &lt;a href="http://www.jetbrains.com/idea/features/ruby_rails.html" rel="nofollow"&gt;InteliJ IDEA&lt;/a&gt;, &lt;a href="http://activestate.com/Products/komodo_ide/" rel="nofollow"&gt;Komodo&lt;/a&gt;, czy Eclipse/&lt;a href="http://www.aptana.com/download_rails_rdt.php" rel="nofollow"&gt;Aptany&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;Je&#347;li chodzi o debugowanie, to jasne, &#380;e w takim Pythonie jest to zdecydowanie &#322;atwiejsze. Problemem w PHP jest zwykle s&#322;abej jako&#347;ci kod. Jednak dobrze napisany, jest dosy&#263; &#322;atwy do debugowania.&lt;/p&gt;


	&lt;p&gt;Co do szybko&#347;ci, to zapominasz, &#380;e nawet do PHP istniej&#261; r&#243;&#380;ne akceleratory kompiluj&#261;ce w locie kod. Kolejne odwo&#322;ania wykorzystuj&#261; taki prekompilowany kod. Poza tym wszystkie modu&#322;y ma napisane w C a najwolniejszym elementem wi&#281;kszo&#347;ci aplikacji webowych jest i tak baza danych a nie kod po stronie serwera. Python jest jeszcze szybszy od PHP, ale jego zasadnicz&#261; przewag&#261; jest nie tyle szybko&#347;&#263;, co b. czytelna sk&#322;adnia i sp&#243;jno&#347;&#263;, wbudowane docstringi, bytecode, porz&#261;dny Unicode &amp;#8211; jest j&#281;zykiem dobrze du&#380;o lepiej zaprojektowanym od PHP.&lt;/p&gt;


	&lt;p&gt;Jeste&#347; jaki&#347; oderwany od rzeczywisto&#347;ci. Je&#347;li chodzi o zastosowania webowe (bo g&#322;&#243;wnie o t&#261; dziedzin&#281; mi chodzi) to j&#281;zyki statyczne s&#261; w odwrocie. Pierwotne j&#281;z. dynamiczne (masz na my&#347;li Smalltalka?) by&#322;y za wolne na tamtym sprz&#281;cie. Dzi&#347; to si&#281; zmieni&#322;o i to radykalnie.&lt;/p&gt;


	&lt;p&gt;Sun zatrudni&#322; tw&#243;rc&#243;w JRuby. Microsoft zatrudni&#322; tw&#243;rc&#281; Jythona i IronPythona. Google zatrudni&#322;o tw&#243;rc&#281; Pythona (zreszt&#261; Google jest w znacznej mierze oparte na Pythonie je&#347;li tego nie wiesz) Poza tym to nie ASP.NET wywo&#322;uje najwi&#281;cej szumu w bran&#380;y, ale Ruby o Rails, kt&#243;ry wypiera zbyt przekombinowane &#347;rodowiska do budowania aplikacji webowych.&lt;/p&gt;


	&lt;p&gt;J2EE? A dlaczego nie l&#380;ejszy Spring? :) J2EE jest przekombinowane i ci&#281;&#380;kie jak betonowy blok. Zreszt&#261; tu chyba masz na my&#347;li jak&#261;&#347; naprawd&#281; wielk&#261; skal&#281;. Owszem. Tam Java rozwija skrzyd&#322;a. Z&#322;o&#380;one aplikacje webowe? Mo&#380;e nie Rails, ale Pylons, Django czy jeszcze lepiej &amp;#8211;  &lt;a href="http://wiki.zope.org/zope3/Zope3Wiki" rel="nofollow"&gt;Zope 3&lt;/a&gt; &amp;#8211; z &#322;atwo&#347;ci&#261; sobie dadz&#261; rad&#281;.&lt;/p&gt;


	&lt;p&gt;Skalowan&#261; aplikacj&#281; w PHP? A widzia&#322;e&#347; jak &#347;miga Wikipedia? :) Da si&#281;? Da. Je&#347;li chodzi o Rails, to skaluje si&#281; poprzez dodanie wi&#281;kszej ilo&#347;ci Mongreli.&lt;/p&gt;


	&lt;p&gt;A co do tworzenia system&#243;w, to do j&#281;zyk&#243;w systemowych u&#380;ywa si&#281; j&#281;zyk&#243;w systemowych: C, C++, Javy, C# itp. itd. Cho&#263; nie wiem czy taki Erlang te&#380; by si&#281; nie nada&#322;. Jest niesamowicie stabilny. Ericson ma w nim napisany sw&#243;j system, kilka milion&#243;w linii kodu i tylko par&#281; minut jakiego&#347; przestoju na&amp;#8230; rok.&lt;/p&gt;</description>
      <pubDate>Thu, 18 Oct 2007 22:00:27 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:e98831eb-f58f-474c-aaec-5694c6801bf0</guid>
      <link>http://blog.zabiello.com/articles/2007/08/25/aplikacja-webowa-wybor-technologii#comment-1093</link>
    </item>
    <item>
      <title>"Aplikacja webowa - wyb&#243;r technologii" by http://nandrew.blogspot.com/</title>
      <description>&lt;p&gt;Jeszcze zapomnia&#322;em dopisa&#263;: j&#281;zyki dynamiczne (PHP, Python, Rails) dobrze nadaj&#261; si&#281; do tworzenia interfejsu, a jakie maj&#261; wsparcie dla tworzenia logiki biznesowej? transakcji biznesowych? Czyli tego wszystkiego co powoduje, &#380;e du&#380;e projekty nie mog&#261; si&#281; obej&#347;&#263; bez J2EE.&lt;/p&gt;


	&lt;p&gt;Piszesz o ASP.NET, ale to jest tylko interfejs. Jak w Rails, PHP zrobi&#263; skalowaln&#261; aplikacj&#281;? (Aplikacje w sensie systemu, a nie GUI do bazy danych).&lt;/p&gt;</description>
      <pubDate>Thu, 18 Oct 2007 20:09:57 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:660b8d31-92d1-498b-a863-8ee9a14bc6ad</guid>
      <link>http://blog.zabiello.com/articles/2007/08/25/aplikacja-webowa-wybor-technologii#comment-1091</link>
    </item>
    <item>
      <title>"Aplikacja webowa - wyb&#243;r technologii" by http://nandrew.blogspot.com/</title>
      <description>&lt;p&gt;Z tymi j&#281;zykami statycznymi to przesadzi&#322;e&#347;. Ich zalet&#261; s&#261; porz&#261;dne IDE, kt&#243;re w&#322;a&#347;nie U&#321;ATWIAJ&#260; debugowanie! Wyszukiwanie b&#322;&#281;d&#243;w w j&#281;zykach dynamicznych jest trudniejsze, zw&#322;aszcza w PHP (ludzie nie u&#380;ywaj&#261; IDE, tylko rozbudowane notatniki).&lt;/p&gt;


	&lt;p&gt;W dodatku ASP.NET jest dwa razy szybszy ni&#380; PHP, bo strony s&#261; kompilowane a nie interpretowane za ka&#380;dym razem.&lt;/p&gt;


	&lt;p&gt;Co do j&#281;zyk&#243;w dynamicznych, ich &amp;#8216;u&#380;ywalno&#347;&#263;&amp;#8217; jest dobra tylko gdy projekt ma pe&#322;ne testy jednostkowe. Bez tego banalne b&#322;&#281;dy mog&#261; gubi&#263; projekt ju&#380; u klienta. (Pierwsze j&#281;zyki obiektowe by&#322;y dynamiczne, ale j&#281;zyki statyczne je wypar&#322;y w&#322;a&#347;nie przez jako&#347;&#263; tworzonego kodu).&lt;/p&gt;</description>
      <pubDate>Thu, 18 Oct 2007 20:00:43 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:fc3ca217-30fd-4da0-9e1b-4ecdb73a366a</guid>
      <link>http://blog.zabiello.com/articles/2007/08/25/aplikacja-webowa-wybor-technologii#comment-1089</link>
    </item>
    <item>
      <title>"Aplikacja webowa - wyb&#243;r technologii" by Leszek</title>
      <description>&lt;p&gt;Pono&#263; lepsze jest wrogiem dobrego tak?
A ja powiem inaczej: popularne jest wrogiem lepszego. C# i Java p&#243;jd&#261; w odstawk&#281; i pozostanie tylko Python i Ruby&amp;#8230; ROTFL&lt;/p&gt;</description>
      <pubDate>Mon, 08 Oct 2007 11:19:53 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:448e79a3-7707-41f7-ab3c-33cb77891a40</guid>
      <link>http://blog.zabiello.com/articles/2007/08/25/aplikacja-webowa-wybor-technologii#comment-1054</link>
    </item>
    <item>
      <title>"Aplikacja webowa - wyb&#243;r technologii" by ilear</title>
      <description>&lt;p&gt;Maly komentarz z troszke innej perspektywy, perspektywy laika (sic! that&amp;#8217;s me:D) ale mimo wszystko odpowiadajacy na jedno z &amp;#8220;domyslnych&amp;#8221; pytan ukrytych w tym artykule. Wyczulonych patryiotow ostrzegam &amp;#8211; brak polskich znakow w tekscie. Uzytkownicy world wide web nie potrzebuja krzaczkow;)&lt;/p&gt;


	&lt;p&gt;Ja tam jestem laik w programowaniu, bo co prawda w pascalu pisalem&amp;#8230;c++ nawet mocniej liznalem (w 3dni przerobilem symfonie pare lat temu i styklo na zaliczenie), troche skryptow pod linuksem i w dosie batow tez porobilem w swoim zyciu, nawet wiem ze w javie zmienne maja straszne dlugosci i duzo kropek:D Si. Troche glupio posrod tych szczytnych osiagniec wymieniac polroczna przygode z asemblerem ktorego faktycznie trzeba bylo zakumac na uczelni zeby puscili dalej, ale akurat to mialo swoj sens &amp;#8211; fajnie programowac na najnizszym poziomie:D. 
Wszystkie te jezyki programowania nie przekroczyly u mnie poziomu UTWORZENIA jakiejkowliek sensownej aplikacji, ktorej przeznaczneie bylo by inne niz &amp;#8220;na zaliczenie&amp;#8221; przedmiotu:) Why? Przez lata studiow (7;P) w krytycznych chwilach z pomoca przychodzila mi motorola a1000, ktora przemycala wiedze na zaliczenia i egzaminy w pdfach i wordach, pozwalajac zchilloutowanemu mnie na zabawe po klubach zamiast drentwego wkuwania danych do mozgu. No i dopadlo mnie;) Ostatni projekt -&amp;gt; bazy danych 2. Sql..yhh. niedosc ze SQL trza by liznac to jeszcze z tego co pamietalem SQL to nawet nie jezyk programowania i sam mi nie wystarczy do zaliczenia&amp;#8230;i strach zajrzal w moje oczy. Glownie ze wzgledu na wspomnienia z szybkiego kursu sciagnietego gdzies z neta, o html&amp;#8217;u ktory kiedys tam przerabialem z ciekawosci (akurat na uczelni jakos nikt nie wymagal znajomosci htmla:D:D:D chyba bylo oczywistym ze to kazdy umie&amp;#8230;gluptasy;)&lt;/p&gt;


	&lt;p&gt;Z tym bagazem doswiadczenia w programowaniu (sic!;) , z pelna swiadomoscia czekajacego mnie wyzwania podjalem probe wybrniecia z sytuacji.&lt;/p&gt;


	&lt;p&gt;Szybka konsultacja ze znajomym. Pada slowo Python. 1 dzien razem. 2 dni juz samemu. 2 nieprzespane noce, przegrzany dell inspiron;)...
Uff skonczylem:D 
Biblioteka szkolna, obsluga wypozyczen rezerwacji 4 poziomow dostepu pelny fulwypas! No moze brakuje obslugi drukarki i czytnika podczerwieni do kodow kreskowych&amp;#8230;no ale coz.. nie mialem 4 dni;p&lt;/p&gt;


	&lt;p&gt;...i to by bylo na tyle. Mimo ze dalej jestem laikiem jesli chodzi o aplikacje webowe..ba jesli chodzi o programowanie:D to ja juz wiem ktory jezyk moze najwiecej w najkrotszym czasie i w najintuicyjniejszy sposob:) 
Przy okazji tych 3 dni zakumalem sqla, poznalem htmla + css&amp;#8217;a, nauczylem sie robic w photoshopie sliczne refleksy :D a to wszystko polaczylem pythonkiem i baza jest jak znalazl:) Teraz tylko jeszcze jeden dzien na napisanie 30stronnicowej (sic!) wmaganej przez pania kuzwa profesor dokumentacji i projekt gotowy.&lt;/p&gt;


	&lt;p&gt;Tenkju pythonq;)&lt;/p&gt;


	&lt;p&gt;Ku pokrzepieniu serc? ;)&lt;/p&gt;</description>
      <pubDate>Mon, 08 Oct 2007 01:41:35 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:32d9d5db-1ceb-43d4-a477-6a5283ffe021</guid>
      <link>http://blog.zabiello.com/articles/2007/08/25/aplikacja-webowa-wybor-technologii#comment-1053</link>
    </item>
    <item>
      <title>"Aplikacja webowa - wyb&#243;r technologii" by Jaros&#322;aw Zabie&#322;&#322;o</title>
      <description>&lt;p&gt;arag0rn: Ten tekst nic nie m&#243;wi o RoR. M&#243;wi tylko sporo o tym &#322;osiu, co wysmarowa&#322; ten tekst. Nie ma co si&#281; egzaltowa&#263;. Tu masz m&#243;j obszerniejszy &lt;a href="http://forum.rubyonrails.pl/viewtopic.php?pid=3468#p3468" rel="nofollow"&gt;komentarz do tego artyku&#322;u&lt;/a&gt;.&lt;/p&gt;</description>
      <pubDate>Thu, 04 Oct 2007 15:22:40 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:7f9ad7ee-332f-4980-9b7d-681415ce2601</guid>
      <link>http://blog.zabiello.com/articles/2007/08/25/aplikacja-webowa-wybor-technologii#comment-1034</link>
    </item>
    <item>
      <title>"Aplikacja webowa - wyb&#243;r technologii" by arag0rn</title>
      <description>&lt;p&gt;Kamyczek do ogr&#243;dka rails&#243;w:&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.oreillynet.com/ruby/blog/2007/09/7_reasons_i_switched_back_to_p_1.html" rel="nofollow"&gt;http://www.oreillynet.com/ruby/blog/2007/09/7_reasons_i_switched_back_to_p_1.html&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Thu, 04 Oct 2007 13:31:09 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:5ed388e2-273b-4b95-903f-51e5138fa759</guid>
      <link>http://blog.zabiello.com/articles/2007/08/25/aplikacja-webowa-wybor-technologii#comment-1033</link>
    </item>
    <item>
      <title>"Aplikacja webowa - wyb&#243;r technologii" by grzejnik</title>
      <description>&lt;p&gt;Zazdroszcze Wam wiedzy :-(
Troszke liznalem PHP (aplikacja do wyswietlania newsow). Obecnie wykorzystuje darmowe aplikacje CMS Joomla do robienia stronek oraz rozszerzenia do tego systemu. Czuje jednak, ze przy grzebaniu w kodzie brakuje mi wiedzy zeby zrozumiec co autor mial na mysli. Myslicie, ze wiek 29 lat to nie za pozno na zabranie sie do poznania tych wszystkich technologii???&lt;/p&gt;</description>
      <pubDate>Thu, 27 Sep 2007 20:09:54 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:5248b75c-47f0-4506-b976-ca9ad3c8b5c0</guid>
      <link>http://blog.zabiello.com/articles/2007/08/25/aplikacja-webowa-wybor-technologii#comment-999</link>
    </item>
    <item>
      <title>"Aplikacja webowa - wyb&#243;r technologii" by Piotr N.</title>
      <description>&lt;p&gt;Swietnu artuku&#322; graruluje.
Daje fajny og&#243;lny przegl&#261;d sytuacji.
Mog&#281; powiedzie&#263;, &#380;e skorzysta&#322;em :D&lt;/p&gt;</description>
      <pubDate>Wed, 26 Sep 2007 11:24:07 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:edc0df85-1b8c-4706-8e42-98fff728b117</guid>
      <link>http://blog.zabiello.com/articles/2007/08/25/aplikacja-webowa-wybor-technologii#comment-998</link>
    </item>
    <item>
      <title>"Aplikacja webowa - wyb&#243;r technologii" by Zyx</title>
      <description>&lt;p&gt;Zwolennicy Ruby -&amp;gt; wy jakie&#347; kompleksy leczycie takimi tr&#261;caj&#261;cymi fundamentalizmem wpisami i komentarzami? Obiektywnie Ruby oraz jego framework wygl&#261;da zach&#281;caj&#261;co, ale m&#322;yn robiony przez jego wielu u&#380;ytkownik&#243;w tak mnie zniesmacza, &#380;e szkoda s&#322;&#243;w.&lt;/p&gt;</description>
      <pubDate>Sat, 22 Sep 2007 14:34:51 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:e45cece6-8948-464e-9a7e-9ecd1e4d774a</guid>
      <link>http://blog.zabiello.com/articles/2007/08/25/aplikacja-webowa-wybor-technologii#comment-997</link>
    </item>
    <item>
      <title>"Aplikacja webowa - wyb&#243;r technologii" by dreamweb</title>
      <description>&lt;p&gt;zgadzam sie z ostatnim postem&lt;/p&gt;</description>
      <pubDate>Wed, 19 Sep 2007 16:25:15 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:16c7bb08-6706-4e1a-a4e3-0a591e5f2baa</guid>
      <link>http://blog.zabiello.com/articles/2007/08/25/aplikacja-webowa-wybor-technologii#comment-996</link>
    </item>
    <item>
      <title>"Aplikacja webowa - wyb&#243;r technologii" by Doniek</title>
      <description>&lt;p&gt;Wed&#322;ug mnie najlepsza jest ta technologia kt&#243;ra pozwala ci osi&#261;gn&#261;&#263; to co chcesz w najprostszy spos&#243;b. A gadanie &#380;e A jest lepsze od B bo B szybciej wykonuje funkcj&#281; kt&#243;r&#261; u&#380;ywasz raz na rok jest o kant sto&#322;u pot&#322;uc&lt;/p&gt;</description>
      <pubDate>Mon, 17 Sep 2007 15:17:40 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:c7b45ac8-a3da-4675-8d92-90f715980fb0</guid>
      <link>http://blog.zabiello.com/articles/2007/08/25/aplikacja-webowa-wybor-technologii#comment-993</link>
    </item>
    <item>
      <title>"Aplikacja webowa - wyb&#243;r technologii" by rsz</title>
      <description>&lt;p&gt;dr&#281;twa prowokacja :)&lt;/p&gt;</description>
      <pubDate>Sun, 16 Sep 2007 18:26:01 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:7b195cce-8010-40ae-9458-b42e4bab5736</guid>
      <link>http://blog.zabiello.com/articles/2007/08/25/aplikacja-webowa-wybor-technologii#comment-992</link>
    </item>
    <item>
      <title>"Aplikacja webowa - wyb&#243;r technologii" by anonymous coward</title>
      <description>&lt;p&gt;&amp;#8220;mam zbyt du&#380;o pracy&amp;#8221; no c&#243;&#380;&amp;#8230; nick sam m&#243;wi za siebie.&lt;/p&gt;</description>
      <pubDate>Sat, 15 Sep 2007 20:41:35 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:e1e4259a-9cf6-4f43-8b2e-f029e56666ef</guid>
      <link>http://blog.zabiello.com/articles/2007/08/25/aplikacja-webowa-wybor-technologii#comment-989</link>
    </item>
  </channel>
</rss>
