Python okiem programisty PHP – kompletne porównanie
- Mateusz Żeromski | 2009-06-22 | Bazy danych Ciekawostki Php Python

Moja przygoda z pytonem zaczęła się w lutym 2008 i zakończyła się w czerwcu 2008. Szkic tego artykułu powstał pół roku temu, dziś mam nadzieję go ukończę i opublikuję. Zainteresowałem się tą technologią (python) z nadzieją, iż moje aplikacje będą o kilka poziomów lepsze. Aktualna praca pozwalała mi na małe R&D, więc po uzgodnieniu z szefem rozpocząłem projekt stosując pyhona a dokładnie django. Do bazy danych użyłem sqlAlchemy. Kolejny projekt stworzyłem używając pylons’a. Po wykonaniu tych projektów wróciłem do PHP :) Dlaczego? Po kolei opiszę czemu wróciłem do PHP, odwołując się do głównych zalet pythona.
Zajawka
Porównam php i python okiem programisty PHP – wezmę na warsztat wszystkie zalety pythona o jakich się rozpisują deweloperzy i wskażę że one nie maja większego znaczenia dla całości. Moim celem jest pokazanie iż pomimo iż php to śmieciowy język – nie jest on jakis straszny i można w nim tworzyć dobre aplikacje.
Mam świadomość, że mogę zostać za to zlinczowany – ale jak już to tylko w komentarzach. Po to mam swój własny prywatny blog aby pisać takie rzeczy :)
Panel administratora – django
Każdy kto pierwszy raz zainstaluje django, uruchamia panel admina i zaczyna się rewelucja – jakie to łatwe i przyjemne. Django na podstawie modeli baz danych automatycznie generuje dobre panele administracyjne. Lecz dla mnie to za mało. Tworząc aplikacje Web2.0 panel administracyjny musi być ładny przejrzysty i podporządkowany użytkownikom. Czyli ikony, pomoce itp. W django stworzenie takiego panelu jest możliwe – tylko trzeba się dość namęczyć, i trzeba mieć dużo doświadczenia w tej technologii – oznacza to permanentne klepanie takich cudaków.
Ostatecznie jak bym miał wykonać panel który by mnie zadowalał jako twórcę, i użytkowników jako którzy są zieloni i potrzebują ładnych rzeczy i tak bym musiał napisać tyle samo kodu css/js w python jak i php.
Aktualne aplikacje muszą być nowoczesne i ładne, w pełni ajaxowe – panele django są na poziomie który był jakieś dwa lata temu. W permanentnie zmieniającym się środowisku - to już przeszłość. Także panel admina nie przekonał mnie.
Z wiadomych względów w pythonie logika w pythonie byłaby troszkę prostsza do napisania ale znacząco by to nie przyspieszyło procesu tworzenia aplikacji – pętle, if’y – w php i python działają te rzeczy jednakowo – tylko składnia inna. W pythonie kod dzielimy wcięciami – w php klamrami.
Modele baz danych - sqlalchemy, orm django VS propel, doctrine
Python posiada super mapery baz danych a najlepszy sqlalchemy (opisywałem go na blogu). Lecz koniec końcem ilość modeli jest skończona. W php istnieją również mapery – w pełni obiektowe: propel i doctrine. Koniec końcem nie widzę znaczącej różnicy pomiędzy tymi tworami. Każdy z nich spełnia swoje zadanie – czyli zrzucenie bazy danych na modele, active object, relacje itp. Itd. Oczywiście mapery php są troszkę gorsze od pythonowych ale to wynik samego języka. Wiedząc o co chodzi o mapowaniu bazy na obiekty, po przeczytaniu dokumentacji sqlalchemy/propel/doctrine – każdy sobie ze wszystkim poradzi.
Znając wady i zalety – sqlAlchemy nie wywarł na mnie super wrażenia – to samo osiągam w doctrine/propel. W modelach nie ma zresztą wielkiej trudności – zależności i tyle.
Lecz abym nie wyszedł kogoś kto się nie zna :) sqlAlchemy pozwala na budowanie relacji pomiędzy tabelami w innych bazach danych – a nie tylko tabelami w tej samej bazie – lecz z takim praktycznym rozwiązaniem się nie spotkałem. No ale jest i to jest ciekawe w tym – na poziomie akademickim oczywiście :)
Szybkość wykonywania – bytecode
Tutaj niekwestionowanym liderem jest python, z tego powodu że każdy kod kompresuje to bytecodu i dopiero wykonuje. W php takie coś nie istnieje. Powiedzmy sobie szczerze – tyle aplikacji jest php’owych i nie sądzę aby zwykły użytkownik widział różnicę w prędkości podczas korzystania ze strony/aplikacji napisanej w php czy python. Także ta szybkość pythona nie jest super praktyczna.
Najwięcej czasu zazwyczaj zajmują zapytania do bazy danych, oraz generowanie widoków – to wszystko można zcachować i nie ma problemu. W przypadku dużego ruchu na serwisie aplikacji – trzeba optymalizować każdą część kodu – zarówno pod php jak i python.
Gdyby kod w php wykonywał się w 10 sekund, a te same operacje w pythonie 1 sek – byłbym zwolennikiem pythona – lecz logiki nie da się oszukać i taka sytuacja chyba nigdy praktycznie nie wystąpi (oczywiście na poziomie teoretycznym znajdzie się jakaś operacja nie stosowana przy aplikacjach web2.0 albo wykonywana na tyle rzadko, że nie ma to znaczenia dla całej aplikacji).
Przejrzystość kodu
Jak już wcześniej wspomniałem – python ma bardziej przejrzysty kod z wiadomego względu – w tej technologii pętle, funkcje itp. – oddziela się tabulacjami albo spacjami – w php klamrami co oczywiście pozwala na śmietnik. Lecz dobry programista nie pozwoli sobie na bałagan w kodzie, i również w php można stosować tabulacje :)
Przejrzystość kodu tez mnie nie przekonała do pythona – to za mało. Umiem pisać ładny kod w php, do swojego kodu mogę wracać kiedy chcę, biblioteki pisane dla php też są czytelne – nie jest to żaden problem.
Dokumentacja/społeczność
W tej kategorii php ustępuje znacząco. Lecz dla mnie to nie ma znaczenia, w php tak samo jak w python są frameworki. Zend,Symfony – one mają znaczące wsparcie i dobre dokumentacje, Propel/Doctrine – również. Także to, że dokumentacje django, pylons, sqlalchemy wyglądają ładniej nie ma większego znaczenia dla mnie.
Dokumentacja mnie nie przekonała bo końcowy użytkownik i tak nie zobaczy różnicy.
Zarobki
Nie uważam aby w pythonie można było super więcej zarobić niż w php – wszystko zależy od tego co się tworzy i gdzie :). Jeżeli ktoś jest dobry w programowaniu w języku X i ma otwarty umysł – bez problemu poradzi sobie z językiem Y. Ja od zawsze jestem zadowolony ze swoich zarobków – i na ich wysokość – nigdy nie wpłynęła umiejętność programowania w python – to nie argument. Ważniejsze jest „co” a nie „jak”.
Rynek pracy
No tutaj niestety, ale w php prędzej znajdziemy pracę :) Pomimo zajebistości pythona, rynek php się nie zmniejsza, z prostych powodów – programistą php można być po pół roku, a bycie programistą pythona na tym samym poziomie – zajmie troszkę więcej – także i kasy trzeba więcej zapłacić. Php jest popularniejszy i nie ma co się tutaj kłócić
Podsumowanie
Po poznaniu języka python – emocje opadły. Czy to ruby (tego tez poznałem :) ), python, php – panele zarządzania dla użytkowników trzeba napisać w js/css/html. Logikę należy zcachować, zapytania do bazy powinny być optymalne a kod wszędzie powinien być czytelny – niezależnie czy to kontroler, model czy widok.
Można powiedzieć, że od zawsze stawiałem na praktyczne zastosowanie, jakość, szybkość realizacji, niezawodność itp. – python to tylko inny język programowania, w którym tak samo jak w php należy napisać pętle, funkcje, modele, widoki itp. Django posiada bardzo dużo pomocy – tak samo jak Zend Framework, Symfony – oczywiście inaczej to wygląda – ale to z powodu języka, jego historii itp.
Jeżeli ktoś nie ma zacięcia do programowania to znajomość pythona nic mu nie da – nie będzie dzięki temu lepszy od programisty PHP.
Dlatego byłem, jestem będę programistą php z pełną świadomością zalet pythona i rubiego :)
Tagi: django, mysql, php, praca, pylons, python, sqlalchemy, symfony, zend
1 Marcin 2009-06-22 21:36:29
Cześć,
Warto napisać co do rynku pracy, że mówisz o Polsce. Głównym problemem PHP jest to że ono umiera, tak jest. PHP6 ? Wyjdzie pewnie z rocznym spóźnieniem, a serwisy hostingowe zaczną je hostować po 4 latach jako domyślny parser :D
Nie napisałeś o społeczności, ta php jest bardzo słaba.
Warto również wpomnieć o takich rzeczach jak hostowanie stron. Wydajność Pylons i ZF jest zupełnie inna.
2 Mateusz Żeromski 2009-06-22 21:55:48
Oczywiście że pisze o Polsce. Jest to wynik zacofania naszego kraju względem europy – widać to po rzadkości możliwości pracy zdalnej, wysokości zarobków itp. Średnio zamożny Polak (czyli dawny drugi próg podatkowy) nie mógł sobie pozwolić na kupno dużego mieszkania i samochodu – tu widać nasze zacofanie, więcej już chyba nie trzeba pisać. Pomimo tego żyje tutaj i się cieszę że jestem Polakiem, i nie wyjadę za granicę pracować – wolę rozwijać Polski kapitalizm, aby dorównać do europy :)
Odnośnie społeczności – masz rację, lecz ja nie potrzebuję tej społeczności – nie jest to dla mnie wartość. W pythonie jest ona mniejsza, bardziej profesjonalna i skupiona – a nie rozrzucona jak w przypadku php – to wynika ze specyfikacji języka, i osób które posługują się technologią.
Tak o hostowaniu nie wspominałem, ale nie sądzę aby to był problem, każdy obsługuje php, a jak trzeba pythona – zawsze coś się znajdzie. Zaś jeżeli chodzi o wydajność – końcowy użytkownik i tak nie zauważy różnicy – trzeba umieć programować i nie zwalać winy na ZF, czy symfony jak w bazie nie ma indexów tam gdzie być powinny :D
3 sprae 2009-06-22 22:48:22
Pisząc o budowaniu kapitalizmu, gdzie jednocześnie umniejszasz role społeczności trochę sobie przeczysz. To społeczności w tym środowisku są w stanie zbudować nowe narzędzia, które zwiększają wydajność pracy. Bez tego nie można mówić o znacznym zwiększeniu dochodów.
Przemawia też przez Ciebie dziwny dekadentyzm – piję tu do pogodzenia się z zarobkami. Nic w tym złego, ale dobre to też nie jest.
Dopóki ludzie są niezależnymi wyspami uważającymi, że wszystko sami zrobią najlepiej, taka właśnie będzie w Polsce wydajność pracy i takie dochody.
“W kupie siła”
Na początek polecam http://pl.wikipedia.org/wiki/Networking
4 cysiek10 2009-06-23 02:21:05
“Tutaj niekwestionowanym liderem jest python, z tego powodu że każdy kod kompresuje to bytecodu i dopiero wykonuje. W php takie coś nie istnieje.”
IMHO ten kod pośredni w Pythonie nie przyśpiesza wykonywania kodu tylko ładowanie (tak czytałem nie chce mi się szukać). W PHP dla odmiany jest zamiana w OP cody czyli coś w stylu bytecode (z tego co wiem). Który można cachować w pamięci za pomocą APC, więc nie byłbym na 100% pewien czy Python jest szybszy w zastosowaniach webowych.
5 Mateusz Żeromski 2009-06-23 08:32:34
@sprae: masz rację z tymi społecznościami, ale uwierz mi – w pracy wykonując projekt nie mam możliwości budowania społeczności. Muszę wykonać zadanie i tyle. A w domu – zamiast dołączać do społeczności wolę odpoczywać: intensywne życie – intensywny odpoczynek.
Odnośnie zarobków – pracuję od 15-go roku życia, mając 16 lat wyciągalem ok 800 zł miesięcznie czasem 1500 – administrując dwoma stronami www – jakoś się samo ułozyło. Im dalej w las tym było lepiej, z małą przerwami na maturę :)
Jak dotąd zawsze byłem zadowolony ze swoich zarobków i nie mam co narzekać, a to że PL jest zacofana względem EU – to fakt, i żadna społeczność tego nie pokona, trzeba wielu lat rozwoju całego kraju.
A jeżeli chodzi o mój wkład w Polski kapitalizm – jest to ok 30/40 tys przychodu miesięcznie, znaczy pomogłem trzem chłopakom wyrwać się z mieściny Hrubieszów (skąd mi się udało wcześniej) i teraz są dobrymi programistami :) Ja sam z tego nic nie mam hehe
@cysiek10: również masz rację. o to mi chodziło, że tego przyspieszenia to nie widać, bo to są tak małe wartości, że to nie ma znaczenia dla użytkownika końcowego. Ważne aby strona/aplikacja generowała się jak najkrócej, np: 0,5 sek to o wiele za duzo, ale 0,07 – już dobrze :) Słyszałem o tych apc, i innych accelatorach, memcache itp itd – kiedyś na to może spojrzę :)
6 eRIZ 2009-06-23 09:26:37
Po pierwsze: nie kompresja, tylko kompilacja, po drugie: w PHP jest co najmniej kilka akceleratorów, których głównym zadaniem jest właśnie wstrzykiwanie prekompilowanego kodu bezpośrednio do interpretera z pominięciem parsowania.
Chyba dane. :P
A poprzesz to jakimiś argumentami, że jest słaba? Ja bym powiedział, że wręcz przeciwnie.
W Polsce – niestety – patrzy się na praktyczne wykorzystanie. Reszta Ci się po prostu nie przyda albo będziesz rozwijał tylko jako hobby…
7 Pigletto 2009-06-23 11:08:35
Nie znam PHP i po przeczytaniu tego artykułu zadaję sobie pytanie, po co w ogóle miałbym ten, jak to określił Mateusz, śmieciowy język poznawać? Chyba tylko dla jakiejś wyszukanej, masochistycznej przyjemności ;)
8 Marcin 2009-06-23 11:29:44
@eRIZ, zobacz sobie forum.php.pl, niestety większość osób które się udzielają na tym forum nie mają dobrego pojęcia o programowaniu. Podające tam odpowiedzi na zadane pytania są często na niskim poziomie. Dużo osób stosuje zasadę “nie ważne jak, ważne że działa”.
Oczywiście to jest uogólnienie, są też użytkownicy którzy mają bardzo dobre umiejętności, no ale jakoś mi się tak utarło. Proszę mi wybaczyć, ale nie chcę nikogo urazić.
Nie jestem żadnym fanboyem py, php było moim pierwszym kontaktem z programowaniem i mam do niego sentyment. Kiedyś uważałem go za dobry język, ale od jakiegoś czasu uważam że PHP umiera.
PHP jest językiem do tworzenie stron, niektórzy twierdzą że jest to system szablonów. Python jest językiem skryptowy, który nie służy tylko i wyłacznie do tworzenia stron.
Porównywanie prędkości frameworków webowych raczej nie ma sensu. Mod_php działa zupełnie inaczej niż mod_wsgi który jest odpowiedzialny za pythona.
Każdy używa tego co mu się podoba i raczej nie ma sensu kogoś ewangelizować.
9 riklaunim 2009-06-23 14:31:25
Nie zgodzę się że strony MUSZĄ być ajaxowe, że Panel Admina musi mieć ikonki i inne bajery. W Goldenline z kilku ważnych intranetowych aplikacji korzystają handlowcy, zieloni w kategorii informatyki i zaawansowanych operacji na komputerze i nie mają żadnego problemu z Panelem Django. Też Django nie jest używany do prostych stronek dla klientów niskobudżetowych, których interesuje joomla itd. :D
10 teos 2009-06-23 14:48:25
joomla – to chyba mówi wszystko , btw dlaczego jeszcze nie zmienili nazwy na ser ? ;)
11 SeC 2009-06-23 14:54:02
A gdzie jakieś techniczne porównania? Jakieś testy? Fragmenty kodu? Widać, że autoir wogóle nie wie o czym pisze. Zapewne nigdy nie słyszał o eAccelerator czy też APC do PHP lub psyco do Pythona? A zrobienie panelu admina w czystym PHP zajmuje dla autora mniej czasu niż dostosowanie gotowego panelu z django – pogratulować. Szkoda, że nie ma wzmianki o np. obsłudze Unicode w PHP (tak wiem, będzie w 6…) czy też o śmietniku w języku np. 16 funkcji (!) do sortowania, ponad 3000 funkcji wbudowanych (wow), niejednolite nazewnictwo funkcji (ascii2ebcdic, bin2hex, deg2rad, ip2long, cal_to_jd, strtolower, strtotime), czasem jest _ czasem go nie ma, strcmp czy strcasecmp, sztuczna obiektowość, itp. I pytanie offtopic: czy osoba która ponoć tyle lat programuje słyszała kiedykolwiek o czymś takim jak obsługa błędow, bo przejrzalem kilka Pana projektów i niestety recę opadają jeśli chodzi o bezpieczeństwo…
12 riklaunim 2009-06-23 15:18:33
[quote]rozpocząłem projekt stosując pyhona a dokładnie django. Do bazy danych użyłem sqlAlchemy.[/quote]
Czyli bez Djangowskiego ORMa?
13 Mateusz Żeromski 2009-06-23 15:26:36
@riklaunim – pokaż mi aplikację web2.0 która posiada panel django dla zwykłego użytkownika – handlowiec to zaawansowany użytkownik, który może przejść szkolenie z obsługi,przeczytać instrukcję itp.
@SeC – jak byś zauważył nie porównywałem języków, z tekstu wynika jednoznacznie że python jest lepszy od php, co wcale nie oznacza, że każdy powinien bić brawo dla pythona, lub też że to co w python to zajebioza a php to dno, bo tak nie jest. To jest moje zdanie na temat python vs php – możesz mieć inne.
Panel administracyjny – otóż mam taką samą prośbę jak do @riklaunim – pokaż mi serwis społecznościowy który posiada panel django dla użytkownika. W tej kwestii pisałem iż tworzenie panelu dla mnie to przede wszystkim js, ajax, css.
Utf8 – to tak samo jak z tą prędkością pythona…
O tym że php jest śmieciowy – napisałem – w zajawce :)
Bezpieczeństwo moich projektów – to co Pan widzi w internecie to hobby, na które nie poświęcam więcej czasu niż to konieczne dlatego nie ma czym się przejmować jakimiś errorami itp. Nawet projekty komercyjne (zeromski.com.pl) – to również hobby, dla znajomych itp – robię to wszystko w czasie prywatnym, który jest dla mnie bardziej cenny niż jakieś tam błędy i bezpieczeństwo.
14 Mateusz Żeromski 2009-06-23 15:27:53
@riklaunim – orm django też poznałem ale ostatecznie zdecydowałem się na sqlAlchemy (w opisywanym projekcie) – miałem dość skomplikowaną bazę danych i orm django nie starczył :(
15 wlodek 2009-06-23 15:40:24
Rezygnować z języka, bo w jednym z ogromnej liczby dostępnych frameworków nie ma AJAX’owego Panelu Adm… wiem, że dość duże uogólnienie, ale do tego można sprowadzić cały wywód autora. żenada
Dobrze, że napisałeś, że jesteś “programistą PHP”, a nie programistą, bo bym nie uwierzył..
16 SeC 2009-06-23 15:44:19
“python-okiem-programisty-php-kompletne-porownanie” – kompletne porównanie czyli jednak nie porównanie? No bez jaj. Po przeczytaniu tego mam wrażenie, że miałeś do czynienia z pythonem przez 5min, a reszte doczytałeś (błędnie w niektórych sprawach) niewiadomo skąd. Nie chodzi o to który język jest lepszy – żaden. Jeśli coś porównujesz to przedstaw *konkrety*.
Co do panelu administratora – jest jakiś problem żeby użyc css/js/ajax w tym panelu od django? Korzystając z gotowego rozwiązania zyskujesz wiele wolnego czasu, który można wykorzystać na coś innego. Zamiast pisać obsługe CRUD dla modeli, dostajesz gotowe.
Unicode – proszę nie żartować z tym porównaniem… czyli rozumiem, że w żadnym projekcie nie widzi Pan możliwości użycia np. znaczka Euro?
Bezpieczeństwo, hobby czy nie hobby, te projekty działają online. Nieważne czy ktoś zapłacił czy nie, pewnych norm trzeba się trzymać. Ciekawe co Pana pracodawca powiedziałby jakby się dowiedział, że nie ma Pan czasu zajmować się jakimiś errorami :D W pracy też masz takie podejście? Rozumiem, że jeśli osoba dla której taki projekt był wykonany straci swoje dane, zgromadzone przez lata w prywatnym czasie, to będzie ok?
Chętnie zobaczę skomplikowaną strukturę bazy danych przy ktorem ORM z Django nie starczył (z użyciem django nie piszę, ale chętnie się temu problemowi przyjrzę).
Offtopic: tak zwany trend ‘web2.0′ umiera ostatnio, polecam trochę poczytać na ten temat, bo dość często ten skrót się tu przejawia…
17 wlodek 2009-06-23 15:56:34
Zaglądnąłem sobie w CV autora:
Znajomość/języki
– PHP, python
Znajomość/frameworki
– python: Django, Pylons
Hmm.. po 4 miesięcznej “przygodzie” z farmeworkami jak to sam autor nazwał można się chwalić w CV znajomością języka Python … (?) hmmm
18 eRIZ 2009-06-23 17:33:05
Tak się składa, że sytuację znam z tego forum doskonale.
No ok, ale to o co innego chodzi… Przynajmniej tak mi się wydaje.
No niestety, to jest ból – zamiast rzucać wyjątkami zostaje albo fatal error, albo zwykłe false.
Tak naprawdę, termin nie został jednoznacznie zdefiniowany i każdy może mieć własną definicję łebdwazero… Osobiście, dla mnie ona nigdy nie nastała. [;
19 riklaunim 2009-06-23 18:18:52
Panel Admin Django nie jest dla ZU do zgłaszania artykułów, dodawania komentarzy, czy oglądania własnego “profilu”. PA jest dla osób o wyższych uprawnieniach. Przykład high-endowego CMSa na Django – http://www.ellingtoncms.com/ i tam ładnie wykorzystywany jest PA Django+dodatki, co nie przeszkadza temu produktowi w udanym istnieniu ;)
Poza tym nie ma najmniejszego sensu używać Django bez jego ORMa (a tym samym PA, modeli itd.), jak SQLAlchemy to Pylons.
20 Jarosław Zabiełło 2009-06-25 15:08:41
Pehapowi żadne akceleratory nie pomogą obejść fundamentalnego sposobu działania PHP. PHP nie ma wątków ani dobrego garbage collectora i tym samym nie nadaje się w ogóle do pisania wydajnych aplikacji webowych pracujących w tzw. “trybie serwletowym”. Tzn. PHP pracuje w “stylu CGI”. Tzn., mod_php, FastCGI czy akcelerator może co prawda uniknąć ładowania pliku ale nic nie pomoże na to, że PHP za każdym requestem niszczy i tworzy na nowo wszystkie swoje zmienne i obiekty. Im większa aplikacja tym pehap jest wolniejszy. Aplikacje typu serwletowego pewne elementy kodu ładują i tworzą tylko raz (dotyczy to Javy, Scali, Pythona, Ruby itp). Odpada zatem narzut czasu na niszczenie i tworzenie wszystkiego od nowa i to za każdym requestem (sic!)
Co do bezpieczeństwa, czy w ogóle stabilności kodu, to pehap jest fatalny z powodu swoich głupich fatal errors zamiast wyjątków. Fatal error dotyczyć powinien tylko błędu składni, czyli kodu który nie ma prawa działać pod żadnym warunkiem. Natomiast PHP w licznych miejscach sypie fatal errorami który nie obsłuży żaden error handler. Wystarczy że jakaś metoda zwróci null’a zamiast obiekt i ktoś na nim wywoła metodę. Cała aplikacja się wywali do góry nogami. Tego NIE DA się w ogóle obsłużyć programowo! To jest po prostu żenada. http://gist.github.com/127274
Można by tak pisać i pisać, ten język jest choatycznie patchowanym językiem szablonów stworzonym przez bandę lamerów.
21 chupacabra 2009-06-25 15:13:48
Twoj wpis swiadczy o Twoim braku kompetencji, hipokryzji, checi wprowadzenia w blad czytelnikow itp. Nie chce mi sie odpierac wszystkich Twoich zarzutow, wezme pierwszy lepszy:
“Także ta szybkość pythona nie jest super praktyczna.”. Wlasnie zrobilem maly test, zapuscilem obrobke zdjec (skalowane, dodanie kaszety, …) pod PHP i Pythonem. Na duzym zbiorze PHP wykonywal ta operacje 26.2 sec., tymczasem Python uzbrojony w PILa wykonywal 2.9 sekundy.
Widze juz Twoja chec wyskoczenia mi z tekstem “Gdzie jest witryna web 2.0, ktora pozwala uzytkownikowi zuploadowac 5000 zdjec do obrobki, ZU tej szybkosci nie zauwazy przy jednym zdjeciu”.
Przyznam Ci racje, ze ZU tego nie zauwazy. Ale zauwazy to wlasciciel serwisu, ktory zamiast stawiac 15 maszynek webowych wstawi tylko 3.
Wujek Dobra Rada mowi: zajmij sie pisaniem stronek dla 150 uzytkownikow a rozwiazania HA zostaw dla pro :]
22 Bartosz Burclaf 2009-06-25 18:05:36
Zgadzam się z riklaunim – Django najlepiej sprawdza się dla aplikacji budowanych od podstaw z Djangowym ORM-em. Co do samego Pythona i PHP – to nie ma co porównywać – Python w mojej opinii jest znacznie szybszy, bardziej “logiczny”, znacznie bardziej przejrzysty, a społeczność jest po prostu oszałamiająca – wystarczy poczytać publikacje PEP, aby zorientować się, że jako programiści Python jesteśmy nastawieni na standardy. W PHP natomiast każdy sobie rzepkę skrobie i nie wiem do końca czy w ostatecznym rozrachunku programiści PHP nie podcinają gałęzi na której siedzą.
Z drugiej strony porównujesz bardziej frameworki niż same języki. Trzeba było zatytułować posta Django vs Zend Framework ;) i testować je na zbliżonej w działaniu aplikacji – byłoby bardziej wiarygodne.
Rozumiem natomiast, że wygodniejsze jest dla Ciebie PHP i trzeba to uszanować – sam miałem przygodę z Ruby i RoR zanim wróciłem do Pythona dla którego znalazłem Django – nie ze względu na jakieś wady czy zalety po prostu feeling był lepszy :D
Nie ma sensu usprawiedliwiać powrotu do PHP tym, że uważasz, że nie znalazłeś nic lepszego w Pythonie. Przyznaj się od razu, że wygodniej jest Tobie w PHP i już. Moim zdaniem 4 m-ce na nauczenie się 2 frameworków o których piszesz (nie wspominam o samym Pythonie) to strasznie mało czasu, więc nie można mówić o prawdziwym ich poznaniu, a co dopiero o wartości przedstawionej przez Ciebie opinii. Wspomniałeś też o tym, że robisz to w wolnym czasie – jak zaczniesz działać zupełnie komercyjnie to docenisz zalety znacznie szybszego stawiania aplikacji internetowych na Django niż za pomocą ZF :)
Nie można oczywiście zbesztać całkowicie języka PHP – jest to po prostu narzędzie ;)
Wujek Dobra Rada: Jeśli jedyne narzędzie jakie posiadasz to młotek, wówczas każdy problem przypomina gwóźdź.
23 Mateusz Żeromski 2009-06-25 20:46:53
@Marcin @Bartosz Burclaf – gratuluje trzeźwości umysłu
@Bartosz Burclaf – projekty o których pisałem jako hobby – to tylko stronki www które wykonuje po robocie, działam w pełni komercyjnie, m.in. jako programista, a kieruję się raczej na ‘managery’.
Testowanie php vs python, django/zend nie ma sensu bo wiem, że zawsze wygra python – poznałem ten język w stopniu wystarczającym abym zdecydował – czy idę w kierunku pythona czy php – wybrałem to drugie i tutaj opisałem czemu.
@chupacabra – na moim blogu mogę pisać co tylko mi się podoba – zobacz na inne wpisy dot. pythona – jeżeli z tego i innych artykułów nie wywnioskowałeś że python jest lepszy od php wedlug mnie jako narzędzie – przeczytaj jeszcze raz tytuł artykułu i odnieś się do treści wzgledem tytułu, wstępu i zakończenia
@Jarosław Zabiełło – ja myslę, że gdyby nie php ty bys nie byl taki zajebisty w porównaniu do bandy lamerów :) (btw.: to tylko żart, mam nadzieję że się nie obrazisz)
Zupełnie nie rozumiem was – uważacie, że jeżeli ktoś poznał zalety pythona i pomimo to zdecydował się nie pójść w tym kierunku rozwoju to jest “głupi”?
Czy jezeli ktoś inny nie podnieca się panelem administracyjnym django to tez jest “głupi”?
Jeżeli ktoś mówi otwarcie python nie jest dla mnie bo te jego wielkie zalety nie mają dla mnie znaczenia to też jest “głupi”?
Cała sytuacja w komentarzach jest dla mnie komiczna ponieważ ja napisałem dlaczego wole php od pythona. Sam tytuł mówi – python okiem programisty php. Z tego wszystkiego wyłonił mi się temat na nowy wpis – programista python vs programista php :)
Dziękuję za uwagę, jeżeli jeszcze jakiś programista python czuje oburzenie moim artykułem (jak to mozna nie wielbić pythona) – to niech zapamięta mój adres, moje dane i więcej nie czyta mojej twórczości :)
Myślę, że już wszystko zostało napisane na temat wielkości pythona, śmieciowatości php, i mojej niewiedzy o szczegółach tego lepszego.
Z tej racji, że jednak wszystkich bardzo szanuję – każdy w dalszym ciągu może dodać kolejny komentarz z cała pewnością o braku cenzury (no dobra – przekleństwa będę zamieniać na *****).
24 Jarosław Zabiełło 2009-06-25 22:31:56
Mateuszu, masz prawo do swoich upodobań, pehap czy brainfuck, kwestia gustu. Jednakże argumenty jakie podałeś są niepoważne. Moim zdaniem istnieją co najwyżej 3-4 powodu aby wybrać PHP.
1) konieczność pracy z już istniejącym kodem w PHP. Pracodawca ma dużą bazę w PHP, bo kiedyś dawno temu, tak wybrał, włożył w to kasę, jakoś to działa i zarabia, i teraz ryzykowanie wymiany wszystkiego na coś innego nie wchodzi w grę.
2) możliwość korzystania z gotowych rozwiązań zamiast przepisywanie wszystkiego na nowo w “lepszej technologii” (np. po co tworzyć na nowo soft do forum jak wiadomo, że napisanie czegoś o funkcjonalności forum Invision PowerBoard to zabawa na conajmniej kilka miesięcy),
3) jest możliwość wyboru technologii ale tak naprawdę nie znasz niczego na tyle dobrze co PHP i boisz się zainwestować czas w porządne poznanie (J)Ruby on Rails (o Merbie nie wspomnę, bo się połączył z Rails i wyjdą razem jako Rails 3). Z mego doświadczenia wynika, że jeśli chodzi o aplikacje webowe, to w Rails pisze się zdecydowanie łatwiej i prościej niż we frameworkach nie tylko pehapowych, ale też pythonowych. Python jest prostszym językiem od Ruby’ego ale sytuacja jest odwrotna odnośnie frameworków.
4) szaleństwo
Nie odniosłeś się też merytorycznie do tego co napisałem. PHP jest po prostu wolny i zwalnia w miarę zwiększania ilości kodu. Dobrym przykładem jest, w miarę przyzwoity, CMS – ezPublish. Bez włączonego akceleratora to w ogóle nie podchodź. :) Oczywiście wydajność to nie musi być problemem, bo dokładając odpowiednią liczbę serwerów można temu zaradzić. Lecz to podnosi koszta (Nie mówię o drobnych stronkach ale o czymś poważniejszym).
Jednakże PHP to także więcej czasu (i tym samym pieniędzy) jakie należy poświęcić na utrzymanie i rozwój kodu. Słaba obiektowość, konieczność uważania na fatal errory, których w żaden sposób nie da się wychwycić i spacyfikować, chaotyczna składnia, to wszystko powoduje, że w PHP się pisze WOLNO. Dużo wolniej niż w Ruby. Szybko w PHP to się pisze tylko śmieciowy spaghetti-code, który potem jest nie do utrzymania. W PHP nie da się łatwo pisać czytelnego kodu. Ten język robi wszystko aby tak się nie dało pisać. :) Zresztą najpiękniejszy nawet kod PHP przy pięknie kodu jaki można stworzyć w Ruby wygląda żałośnie. Jak byś nie wiedział, to Rails jest w rzeczywistości napisany nie tyle w Ruby co w DSL stworzonym w Ruby. Coś takiego jest niemożliwe w PHP ani Pythonie. Możliwe jest już bardziej w Scali (dzięki implicit conversion i notacji operatorowej Scala pozwala na tworzenie jeszcze ładniejszego DSL)
Oczywiście aplikacje webowe lepiej pisać za pomocą frameworka. Jednakże, jaki pehapowy framework byś nie wziął, jest nie tylko mniej czytelny, jest też dużo wolniejszy, nie tylko od Django ale też od Rails. Taki CakePHP (notabene mający być klonem Rails) jest koszmarnie wolny! Na dodatek wygląda żałośnie. Zresztą po co używać “klona” skoro oryginał jest lepszy praktycznie pod każdym względem?
Zgodzę się z tezą Marcina, że czas PHP minął. Nowych projektów nie ma sensu tworzyć w PHP. Większość to utrzymanie już stworzonych. Są dużo lepsze alternatywy. Tylko ktoś niedouczony będzie zaczynał od PHP. Zresztą to środowisko nigdy nie robiło wrażenia umiejętnościami programowania. Fakt, że łatwiej znaleźć pehapowca niż pythonistę czy programistę Ruby’ego, tylko co z tego, skoro zdecydowana większość pehapowców prezentuje naprawdę mierny poziom. W sumie wychodzi na to samo.
25 hmtt 2009-06-26 09:07:29
Witam!
Trochę Tobie współczuję bo pewnie ten artykuł a właściwie komentarze do niego zostawią trwały ślad w twojej psychice, twój programistyczny świat już nigdy nie będzie wyglądał tak samo. To jest twój blog i masz prawo pisać na nim co Ci ślina na język przyniesie ale mam wrażenie że następnym razem zastanowisz się dwa razy (a może razy++?) zanim coś napiszesz. Nie oceniam Ciebie źle bo pewnie intencje miałeś dobre.
Teraz bardziej merytorycznie ;)
Moim zdaniem język PHP wraca do korzeni. Miał być językiem wspomagającym tworzenie dynamicznych stron domowych i do tego się w swoim czasie bardzo dobrze nadawał. Łatwy deploy pozwolił mu na osiągnięcie popularności na miarę wielkiej gwiazdy. Niestety PHP zawsze zalatywał tandetą. Został gwiazdą, trwał w stanie zachłyśnięcia się swoją sławą i nie rozwijał się za bardzo, tracił swoją szanse. Dlaczego? Może dlatego że założenia samej technologii były dobre ale już jej fundamenty nie?
Jaka przyszłość czeka PHP? Jeśli nic się nie zmieni, osoby odpowiedzialne za rozwój tej technologii nie podejmą działań w stronę ulepszenia wielu aspektów PHP to mówiąc o PHP będziemy musieli wrócić do jego pełnej i pierwotnej nazwy „Personal Home Page Tools”. Język który odniósł sukces na miarę gwiazdy pop, dawał występy dla najlepszych, teraz stanie się lokalną gwiazdą i będzie bawił ludzi na wiejskich dyskotekach (lubię wieś, żeby nie było…).
To jakie technologie tworzenia aplikacji internetowych wybierzesz zależy tylko i wyłącznie od Ciebie ale dziwne jest dla mnie to co piszesz. Podajesz w wielu miejscach w swojej wypowiedzi argumenty na korzyść Pythona a nie chcesz z niego korzystać. Nie boisz się tego że trwasz w pewnej stagnacji? Że za jakiś czas obudzisz się pod płotem a obok będzie leżała wyrwana sztacheta która uświadomi Tobie że to już chyba jest najwyższy czas aby uciekać z wiejskiej zabawy?
Polska to piękny i specyficzny kraj, tu czas płynie trochę inaczej. Osobiście martwię się że najbliższe pięć lat w środowiskach akademickich będzie czasem w którym prym na uczelniach będą wiodły Java, PHP, $NET. Moim zdaniem to nie jest dobra sytuacja ale tutaj zdania mogą być bardzo zróżnicowane. Można usprawiedliwić taką sytuację zapotrzebowaniem rynku pracy na konkretnych specjalistów. Jednak z drugiej strony to programiści wytwarzają oprogramowanie, to ich praca i oni powinni sobie ułatwiać życie a nie je komplikować. Pisząc swojego bloga pamiętaj że jest on na swój sposób miejscem opiniotwórczym. Jeśli odnosisz się do innych technologii to musisz pamiętać żeby być bardzo rzetelnym. Twój artykuł ratuje się tym że w wielu miejscach podkreślałeś „to jest mój wybór”.
I pamiętaj! Python Community nie wybacza ;)
Serdecznie pozdrawiam! I szczerze życzę sukcesów w tym trudnym programistycznym fachu.
PS Zapraszam na PyCon PL 2009 ;)
26 Mateusz Żeromski 2009-06-26 09:43:45
@Jarosław Zabiełło @hmtt – gratuluję trzeźwości umysłu i rzeczowe komentarze, wnoszą one do dyskusji o wiele więcej jak bezsensowna krytyka innych
@hmtt – pisząc ten artykuł już znałem trochę tę społeczność pythona i wiedziałem że zostanę zlinczowany, co wcale mnie nie odstraszyło aby napisać to co myślę o pythonie :) – może taki był cel, aby uświadomić wam, że są ludzie którzy świadomie wybierają php zamiast python/java.
W innych artykułach na blogu – konkretnie i rzeczowo przedstawiam liczby, ten jest pierwszym z serii okiem programisty php, i tak jak zauważyłeś – podkreślałem tutaj, że jest to moje zdanie. Zapewne każdy z was mógłby to napisać i przy każdym moim argumencie napsać – właśnie dlatego wolę pythona :)
I muszę powiedzieć, że ze wszystkimi komentarzami się zgadzam (no oprócz tych które dotyczą bezpośrednio mnie, bo nie wiem jak ktoś może oceniać nie znając mnie – można oceniać to co piszę co wcale nie odzwierciedla to kim jestem), każdy ma prawo myśleć inaczej, a jak wiem czemu ktoś tak myśli to wiem więcej niż wcześniej :)
Panowie – bardzo proszę, już się nie powtarzajmy i piszmy puenty (nie oznacza to barku szacunku – ale nie powtarzajmy się).
27 DimmuR 2009-06-26 10:05:55
Czytając zarówno “kompletne porównanie” jak i (autora) odpowiedzi na komentarze do wypowiedzi odnoszę nieodparte wrażenie że autor stara się przekazać wiadomość w stylu :
“Stwierdzam że python jest lepszy ale nie chce mi się poznawać czegoś innego dokładniej, więc zostanę sobie przy php, bo tak. I niech świat o tym wie.”
Każdy może pracować z takimi narzędziami jakie zna i jakie akceptuje jego pracodawca, jednak pisząc – nie ważne czy to na swoim blogu, czy w innym miejscu – należy brać pod uwagę fakt, że wypowiedź zostanie oceniona, więc pisząc o ***kompletnym porównaniu*** (choć dotyczy to również “zwykłych” porównań) dobrze byłoby podać trochę więcej konkretów – zwłaszcza gdy autor stwierdza “lepszość” jednej technologii i świadomie wybiera tą gorszą.
28 Marcin 2009-06-26 10:40:03
“może taki był cel, aby uświadomić wam, że są ludzie którzy świadomie wybierają php zamiast python/java.’
Ta świadoma liczba osób które wybierają php, jest bardzo mała, reszta osób wybiera php dlatego bo jest.
29 lego 2009-06-27 08:28:50
Wpis można podsumować jednym zdaniem – “pitu, pitu”. Myślisz bardzo krótkowzrocznie, ogólnikowo i wyznajesz zasadę “nie ważne jak, ale żeby dzialało”. Tak porządni prgramiści się nie zachowują (hint: Twój kod będą później modyfikować inni). I do czego odnosi się człon tytułu “kompletne porównanie”? Bo jak napisałem ja tu widzę tylko jakieś pitu, pitu, a zero rzeczowych argumentów, wykresów, porównania składni etc.
Pytanie – jak duże aplikacje pisałeś w php? Jak bardzo skomplikowane? Z moich doświadczeń – im większa aplikacja tym większe problemy z zapanowaniem nad porządkiem w kodzie (brak namespace’ow, niedojarzałość pehapowych frameworków) i tym większe problemy z wydajnością (tak, tak – memcache to żaden silver bullet).
Jak dla mnie php dyskwalfikuje kilka czynników: skopana obiektowość, powolny rozwój samego języka, niedojrzałe community, kiepskie frameworki (w porównaniu do Rails i Django), brak frameworków BDD.
Co do zarobków – don’t make me laugh – nie oceniaj całego rynku pracy przez pryzmat swojej obecnej firmy. Pehapowcy zarabiają mało bo przeważnie mało potrafią, bardzo niewielu orientuje się w takich zagadnieniach jak optymalizacja, skalowalność, TDD (!), podstaw użytkowania i administracji uniksami (”u mnie na komputerze działa, to na serwerze też będzie”…) czy podstaw protokołu HTTP(!). Nie wspominam że większość nie ma pojęcia o obiektowości w JS, bardziej skomplikowanych (niż zmiana tła) zagadnieniach CSS itd (ale od tego w porządnych firmach są już ludzie od frontendu).
30 Mateusz Żeromski 2009-06-27 10:31:30
@lego – odnośnie projektów – napisz na priv dam Ci link do projektu (nie wiem czy Twój mail jest prawdziwy, a oficjalnie nie wypada mi się chwalić – btw: nie są to rzeczy tajne, i każdy rozsądny człowiek sam by doszedł do tego)
“nieważne jak aby działało” – zapraszam na inne artykuły tego bloga, gdzie dużo pisze o optymalizacji, cachowaniu, itp., już programuje 4 lata zawodowo (a w sumie to z 8) i wiem, że jak napiszę byle jak – to konsekwencję ponoszę ja, im większy projekt tym bardziej się trzeba przyłożyć. Dla mnie to oczywiste.
Frameworki php – nie wiem o jakim stanie piszesz ale aktualnie ZF, i Symfony są bardzo dobre, i o ile problem z prędkością nadal występuje (ale są rozwiązania) to o porządek nie trzeba się martwić. I w pthonie mozna napisać śmietnikowaty kod jak się nie ma o tym większego pojęcia – tak wiem pythonowcy tak nie robią :) Ale jak by porównać je do django i railsów to niestety by wypadło raczej kiepskawo, z wcześniej wymienionych powodów.
Odnośnie sytuacji na rynku pracy php – masz rację, bardzo mało ludzi zna unixy. Jeżeli chodzi zaś o js/css – to wszystko zależy od tego kto co robi, ja akurat bardzo dobrze w tym działam (dowód na priv), ale wiem że dla niektórych to czarna magia.
Zarobki – jest tak jak piszesz, bardzo wiele programistow php nie umie zdziałać cudów, robią małe/tanie aplikacje i dlatego zarabiają mało. Ale jak wszędzie są wyjątki i ja raczej się do nich załapuję. Jak szukałem pracy to mogłem zostać programistą python, bym zarabiał tego tysiąca wiecej, ale nie miałbym wpływu na to co robię (duże firmy, korporacje, dużo ważnych ludzi w firmie itp) dlatego wolę rzeźbić cuda w php, i sam ustalać w jakim kierunku idzie rozwój mój i aplikacji – chyba nigdy nie dam się wciągnąć w korporacyjne widełki rozwoj. Chodziło mi raczej o to, że jeżeli umiesz robić cuda w php – to znajdziesz pracodawcę który odpowiednio zapłaci za Twoje umiejętności.
31 lego 2009-06-27 16:26:55
Mail jest prawdziwy ;)
Przyznam się bez bicia że nie czytałem innych wpisów – wysnułem wnioski na podstawie tylko tego.
Odnośnie frameworków pehapowych – nie chce robić flejma – pracowałem w pehpaie ładnych parę lat, machnąłem sporo projektów (kilka całkiem dużych), głownie w Cake, później ZF, ale orientuje się w miarę na bieżąco – np. Zend dorobił się generatora kodu dopiero w wersji 1.8… Co do Symfony – po przeczytaniu dokumentacji głowa mnie rozbolała – sfTooOverFuckinComplicatedForSuchSimpleManAsMe ;)
Za to każdemu z nich brakuje “obłożenia” kodu testami jak to jest np. w RoR, no i balastem jest sam język który nie dorównuje w elastyczności ruby/pythonowi.
W każdym języku mozna napisać potworka, ale z racji popularności pehapa i błędnych decyzji podjętych przez twórców języka – w tym wystepuje to dużo częściej. Pythonowców i Rubystów jest sporo mniej, przeważnie są to entuzjaści dla których programowanie to fun a nie praca od 8 do 16, to i poziom dużo wyższy, generalizując :)
“Chodziło mi raczej o to, że jeżeli umiesz robić cuda w php – to znajdziesz pracodawcę który odpowiednio zapłaci za Twoje umiejętności.” – z tym bym się kłócił – jako w miare kumaty pehapowiec bardzo szybko (przeważnie po roku – 1,5) zaczniesz uderzać główą o sufit widełek płacowych i tego nie zmienisz, z jednego ważnego powodu – na Twoje miejsce można znaleźć 10 kolejnych, mniej kumatych, mniej doświadczonych ale się znajdą. Nie jesteś konkurencyjny na rynku pracy bo takich jak Ty jest wielu.
Nie sądze także że pracując jako programista pythona a zwłaszcza ruby można liczyć głównie na oferty pracy w korpo :)
32 brt 2009-07-03 00:32:44
My God, Python jak PIS. Albo z nami albo zginiesz. Jaks masakra normalnie.
33 Marek Wywiał 2009-07-24 09:26:59
God, Python, PIS, pani Zosia. O kim byś nie napisał mając ledwie mgliste pojęcie o nich oraz podobnie mgliste pojęcie o podmiocie, z którym ich porównasz … niczego innego się nie spodziewaj.
34 djDrachulik 2009-07-27 09:23:53
Czesc,
Moim skromnym zdaniem bijaca cecha tego wpisu w blogu jest to, ze autor wbrew pozorom nie ma duzego doswiadczenia w programowaniu w Pythonie, a i w PHP ma pewne braki. A to w moich oczach kwestionuje rzetelnosc wpisu.
Ja ze swojej strony dodam jeden argument przeciw PHP. Polecam wpis:
http://bugs.php.net/bug.php?id=38508
I moj komentarz.
Z tytulu KISS (a wiec utrzymania simplicity – tylko czemu gramatyki jezyka?), jezyk nie bedzie dalej sie rozwijal. Jaki jest dodatkowy tego efekt? Mamy jezyk programowania spelniajacy dogmat KISS, ale mamy tez aplikacje ktore ze wzgledu na bardzo prosty jezyk sa od KISSu dalekie.
Moim zdaniem jest to tak trafne jak strzelanie z łuku do tygrysa.
Cheers.
35 smentek 2009-11-29 21:19:59
Ten wpis to wywody w stylu: “Przez 8 miesięcy jeździłem nowym mercedesem, ale wróciłem do 15 letniego fiata punto bo przecież to też samochód, więc co za różnica…”.
Opisujesz dwa języki przy każdej z ich cech przyznajesz że python jest lepszy (a w każdym razie nie padło nigdzie, że jest gorszy) ale na koniec stwierdzasz, że jednak na to samo wychodzi? Nie przekonałeś mnie.
“programistą php można być po pół roku, a bycie programistą pythona na tym samym poziomie – zajmie troszkę więcej –” Ta sentencja to nieporozumienie. Tak mógłbyś napisać o javie, która wymusza obiektowo zoriętowane podejście. W pythonie podobnie jak w PHP można pisać proceduralnie.
Biblioteki pythona są bardziej uporządkowane i przemyślane i choćby z tego względu Pythona łątwiej się jest nauczyć. Także ‘gramatyka’ pythona bardziej przypomina język naturalny.
Jeżeli PHP ma większą popularność wynika nie z faktu, że łatwiej się go nauczyć. Moim zdaniem chodzi o wsparcie zapewniane przez społeczność skupioną na portalach typu forum.php.pl. którarzżekomo jest gorsza od tej pythonowej. Moim zdaniem jest lepsza. Jest lepsza dla nastoletniego amatora, który zaczyna programować. Programista z kilkuletnim stażem (90% pythonowców) nie potrzebuje już tego typu wsparcia. Z tąd python ma mniejszą popularność.