Temat: PHP VS Ruby VS Python - prosze o wypowiedź zaawansowanych...
W PHP piszę od czasów wyjścia wersji 3, w pythonie mnie więcej tyle samo (wcześniej perl). Co do ruby to przeczytałem tylko 2 książki (dużą i małą :) ) i napisałem parę skryptów więc można tego nie liczyć.
W PHP używam Symfony (praktycznie tylko webdev) pythona używam w wielu innych dziedzinach, dla www używałem zope2 (staram się teraz nawrócić do zope3 po przerwie) i trochę django.
Patrząć ogólnie na programowanie dla web PHP plasuje się dla mnie w wartwie szablonu (taka jego geneza). Działa i zachowuje się całkiem dobrze jako język szablonów, nie przejmując się niezdefiniowanymi zmiennymi, czy używaną pamięcia (szablon raczej nie jest długo działającym demonem).
Oprócz samej warstwy szablonów dostarcza też wielu innych funkcji (czasem obiektów) by do warstwy szablonu dostarczyć jakieś informacje z baz danych czy je po drodze obrobić. Jednak ta 'warstwa' nadal dziedziczy zachowania specyficzne dla warstwy szablonu, co sprawdza się przy pewnych uproszczeniach.
w/g mnie nadaje się na mniejsze aplikacjie typu blog/forum/prv.page, jakiś mały ecommerce itp, gdzie nieprzechwycone notice, niezgłaszane błędy w obliczeniach (przepełnienia) nie są krytyczne dla naszej aplikacji, zaś kod nie jest zbyt duży (możemy żyć bez namespaces, ilość obiektów nie jest duża, więc nie obciąża naszego softu)
W symfony widać obejścia na czas działania, np admin/crud generator.W django jest to po prostu aplikacja admin, zainstancjonowana, działająca w trybie stateful, i generator jest zbędny. Cache zrzucany do plików (wraz z losowym usuwaniem przeterminowanych plików z cache, niestety bez sprawdzania zależności tych plików co czasem kończy się fatalem w symfony ~1.0.17), w django dobrze sprawuje się procmem.
Ilość operacji dyskowych potrzebnych do wczytywania dziesiątków partiali + plików cache obciąża mocno każdy request (php zawsze wstaje), czego nie mamy np w django.
Element, który też przeszkadza w PHP to community. Pytania na pl.comp.lang.php rzadko dotyczą programowania, częściej podstawowych pytań o składnię, lub problem z rozwiązaniem prostych problemów z dobrze znanymi algorytmami poprzez bardzo dziwny kod. Osoby te potem tworzą np pluginy do symfony, których użyteczność wynosi 0. Niekonfigurowalne, zahardcodowane zlepki prawie losowych funkcji php. Jeżeli plugin nie został napisane przez Fabien'a lub kogoś kto jest prawdziwym programistą, rezygnuję i poświęcam czas na napisanie własnego.
W Pythonie zaś większość pakietów i dodatków, którę znajduję są napisane użytecznie. Sam język jest zaprojektowany, zawiera najbardziej użyteczne elementy z dobrze zaprojektowanym, spójnym interfejsem (nie ma chaosu nazewnictwa, niekonsekwencji w kolejności parametrów i 5 funkcji realizujących prawie to samo, ale zadna tego czego potrzebujesz - to znam z php). Konsewencja i spójność skutkuje tym, że nawet po przerwie w pisaniu w Pythonie, gdy potrzebuję coś napisać praktycznie nie muszę sięgać do dokumentacji, albo pamiętam gdyż jest proste lub po prostu robię to co jest intuicyjne (i o dziwo, najczęściej działa) :).
Reasumując,
PHP może i tak, jeśli od kodu nie wymagasz dużej odpowiedzialności, czyli coś w warstwie prezentacji (pobierać i wyświetlać, ew. zapisać).
Gdy soft jest duży, ma być wspierany przez długi czas i przez wiele osób (które w trakcie wiele razy się zmienią) + wymagamy od kodu odpowiedzialności (jeżeli program ma zawieść niech zrobi to jak najszybciej i z wielkim hukiem), zamiast 'zadziałania' do końca na niezdefiniowanych zmiennych, nieprzekazanych lub przekazanych zbyt wielu parametrach (głupi błąd, ale bywa) i niszczenia lub fałszowania wyników z powodu zasady 'byle do końca', wtedy wybieram python'a (ew. jeszcze coś innego).