Na PHP patrzę jako na narzędzie pracy, a nie sens życia, ideologię lub coś podobnego. Pracuje mi się na nim dość wygodnie, ale każdy śledzący regularnie Dzienniki zyxowe pamięta, że nie szczędziłem też mu słów krytyki. Na pozór ciężko się nie zgodzić z argumentami Splatcha, lecz na zdrowy rozsądek część jest napisana z podejścia "PHP jest B od A do Z".
API, technologie. Splatch zarzuca projektowi brak jakiegokolwiek API dla rozszerzeń oraz wsparcia przy ich tworzeniu. Było to prawdą w erze PHP 2 i 3, lecz już przy pisaniu "czwórki" zwrócono uwagę, że monolityczna struktura jest nienajlepszym pomysłem. Aktualnie każdy, kto chce napisać nowe rozszerzenie do PHP, musi tylko znać język C, znać cel swej pracy oraz przeczytać rozdział 46 dokumentacji PHP zatytułowany "Zend API: Hacking the Core of PHP" i poświęcony właśnie tworzeniu modułów. Kod źródłowy PHP pełen jest makr i funkcji, których celem jest automatyzacja i uproszczenie niemal wszystkich rutynowych czynności związanych z podpinaniem dowolnego kawałka kodu źródłowego pod silnik. Ogromna ilość modułów standardowych oraz drugie tyle w PECL'u coś musi oznaczać.
PDO. Rozszerzenie to powinno pojawić się już w wersji 5.0, ale niestety twórcy wpadli na pomysł jego napisania po jej premierze. Porównywanie PDO do ADODB jest w niektórych miejscach dość nietrafione. Lodówka i zamrażarka na pozór wykonują podobne zadanie, ale porównywanie ich to dziwny pomysł (jedna utrzymuje temperaturę powyżej zera, druga zamraża, ale czy jest lepsza? Nie, po prostu ma inne zadanie). Nawet dokumentacja o tym wspomina: PDO provides a data-access abstraction layer, which means that, regardless of which database you're using, you use the same functions to issue queries and fetch data. PDO does not provide a database abstraction; it doesn't rewrite SQL or emulate missing features. You should use a full-blown abstraction layer if you need that facility. PDO jest jednolitym interfejsem. Projekt ten nie miał nigdy poprawiać po egoistycznie nastawionych twórcach baz danych oraz ich kreatywnym podejściu do implementacji standardu ANSI SQL, ale na plus należy zaznaczyć, że niektóre braki bibliotek klienckich są emulowane (np. podpinanie). Trudno nie odnieść wrażenia, że coś jeszcze by się przydało, ale według mnie PDO w obecnej formie pozostać także powinno, właśnie przez to, że dawałoby wybór: kiedy nie pasuje Ci z jakichś względów rozwiązanie gotowe, nadal możesz wykorzystać API niższego poziomu i stworzyć to, co cię satysfakcjonuje.
Użyty przez Splatcha zwrot Z czym się do tej pory kojarzy PHP? Ze “stronkami” produkowanymi przez gimnazjalistów i licealistów. wmurował mnie w ziemię. Pora rozejrzeć się wokół! Internet to nie tylko komercha i wielkie projekty enterprise. Programowanie to nie tylko strony internetowe i projekty enterprise. Ja PHP bym raczej określił mianem bardzo uniwersalnego języka, który jakiś czas temu rozpoczął marsz TAKŻE w kierunku tegoż mitycznego enterprise'u (a czy kroczy właściwą drogą to inna sprawa). To nie jest cel sam w sobie, to po prostu jedno z kolejnych wyzwań. PHP spotkasz na witrynach wielkich firm, choć ich ilość na pewno nie jest tak duża, jak w przypadku innych technologii z powodu wymienionych przez Splatch'a niektórych wad lub opóźnień w stosunku do konkurencji. Ale tak, jak pisałem - Internetu nie tworzą korporacje. Tak naprawdę duszą sieciowej pajęczyny są właśnie te lekceważone "stronki gimnazjalistów i licealistów", niekomercyjne witryny tematyczne, projekty prezentujące własne dokonania. Na filozoficzne dywagacje tego stanu przyjdzie czas kiedy indziej, ale od strony technologicznej PHP jest tu nie do zdarcia. Może byłoby inaczej, gdyby społeczność takiej Javy czy ASP wzięła się za tworzenie tutoriali, forów dyskusyjnych, baz kodu czy "tanich Volksserverów" tak samo, jak to robią ludzie od PHP. Właśnie takie akademickie podejście odstrasza mnie od tamtych technologii, brak chęci do dzielenia się otwartym kodem. Co mi ze składni i opisu bibliotek standardowych? W 3 tygodnie to opanuję i dalej nie będę mógł stworzyć poważniejszych rzeczy z powodu braku wyczucia języka. Listing jednego kompletnego programu zawsze zastąpi mi sto najlepszych tutoriali, gdyż da mi jakiś wzór, obraz tego, jak te klocki można wykorzystać, by wykonać zadanie. W tym miejscu to właśnie te zaawansowane języki stoją daleko za lekceważonym PHP. Tu można przebierać do woli: ściągać, analizować, porównywać, opiniować i wreszcie tworzyć własne. W ten sposób buduje się "wyczucie języka". Osobiście wolę znać niewielką grupę technologii na wylot, niż całe mnóstwo po łebkach. W PHP włożyłem już 5 długich lat czasu. Testowałem najmniejsze głupoty języka, by mieć obraz jego działania. Czytałem do poduszki kod źródłowy i modyfikowałem dla zabawy Zend Engine. Gdybym miał to teraz przekreślić, pozostałoby mi tylko napisać na Zyxist.com wielki napis "JESTEM FRAJEREM". Żeby była jasność - na znajomości tylko PHP bynajmniej pozostać nie zamierzam. Ale głupotą byłoby negowanie go tylko dlatego, że w kwestiach wielkoskalowych ma braki, a Zend ostatnio stosuje dziwne podejście w kwestii doboru priorytetów i debugowania swego sztandarowego projektu.
Według mnie głównymi wadami PHP są:
- Mnóstwo archaizmów z dawnych czasów, które już dawno powinno się wywalić w diabły.
- ... co powoduje chaos w artykułach, kodzie źródłowym w miarę, jak jest tych coraz więcej.
- ... i daje argument firmom hostingowym do nieistalowania PHP5, choć w tym wypadku bardziej świadomi programiści powinni stanąć murem i rzec, że w takim wypadku niechaj sobie tacy potłuką o kant d*** swoje serwery.
- Dziwna polityka Zend Company w kwestii wyznaczania priorytetów rozwoju (debatowanie nad oczywistościami w stylu wbudowanego zrzutnika bytecode'u na HDD) i debugowania PHP (spróbujcie sobie zgłosić nawet oczywisty błąd, a zobaczycie).
- Brak standaryzacji w nazewnictwie i kolejności parametrów.
PHP ma otwarty kod źródłowy. PHP ma trochę wad. Ludzie mają trochę umiejętności. Ci sami ludzie nie rozumieją polityki Zend.com. Zastanówmy się... które założenie idei "open-source" pasuje do tej sytuacji? Podpowiedź: PHP już raz z niego w swej historii skorzystał.







Napisał SPECTATOR w wtorek, 18 lipca 2006 o 00:36
Spróbuj PYTHON'a :).
_W pewnych aspektach ma przewage nad PHP._
_Ma bytecode na HDD_
_DJANGO - interesujący FRAMEWORK_