PHP na maturze
30 Sep 2004
Na dzieńdobry link do źródła. A teraz mięso, czyli dlaczego PHP nie powinien znaleźć się na maturze.
- Nie jest językiem ogólnego przeznaczenia. Można krzyczeć ile sił, że w PHP da się pisać aplikacje działające standalone. Ba, sam nawet miałem randez-vous z PHPGTK, jednak nie ma to wielkiego sensu. Ten język utrudnia do bólu pisanie takich aplikacji. Sama struktura rich-aplikacji jest znacząco odmienna od struktury web-aplikacji. Aplikacja webowa jest jednoprzebiegowa, punkt wejścia, punkty wyjścia i pośrodku cały pasztet: od uwierzytelniania, autoryzacji, badania stanu sesji, przez otwarcie połączeń z db, synchronizacja cache, powoływanie instancji silnika szablonów, wreszcie core logic. Tak się nie pisze aplikacji client-side. W porównaniu z elegancją GTK# PHP to zezowaty bękart bez jednej nogi.
- Nie jest językiem do nauki algorytmów. Wprowadza za duże zamieszanie. Wszystko to, co można osiągnąć w PHP da się bez problemu zrobić w C++, a że przy okazji delikwent zapozna się ze sposobem radzenia ze stringami, wyjdzie mu tylko na zdrowie. Wiedzy o zarządzaniu pamięcią nigdy za wiele.
- Nie jest językiem do budowania skutecznych algorytmów. Trudno, ale niestety szybkość implementacji ma się zazwyczaj ortogonalnie do szybkości wykonania. Produkując skuteczny algorytm należy wiedzieć ile czasu zajmie wykonanie danego etapu, jaka jest jego złożoność obliczeniowa, co należy zbuforować, a czego buforować się nie opłaci. W PHP takie rozważania to ruletka. Każda kolejna wersja interpretera może robić z kodem cuda na kiju i szukaj wiatru w polu gdy nagle wyskakuje timeout wykonania. Szczególnie niepewne jest w PHP zarządzanie obiektami i tablicami. Przy przejściu z wersji 3 na 4 i 4 na 5 obszar ten stał się grzęzawiskiem wciągających nierozważnych wyrobników kodu. Ponadto przy optymalizacji algorytmu nie można pozwolić sobie na zwalenie brudnej roboty na śmieciarkę, lepiej nawet nie mieć jej do dyspozycji. Zwłaszcza, że pehapowa śmieciarka raczej "działa" niż działa, pozwalając na alokację gigantycznych ilości pamięci.
- Wyrabia fatalne nawyki. PHP jest beztypowy. Obrzydliwie beztypowy i niekonsekwentny. Oczywiście istnieją takie króliczki jak
is_integer,is_array,is_[...], ale nawet jawne przypisanie$a=0spowoduje pozytywne rozpatrzenie warunkuif($a==NULL). Stąd protezy w postaci===i!==, które nie pozwalają nawet na zastosowanie logiki trójstanowej (tylko od razu wielostanową). PHP nie wymaga inicjalizacji zmiennych, co prowadzi do trudnych w wychwyceniu błędów związanych właśnie z porównaniami (nie każdy jest na tyle karny, by stosowaćif($a===0)zamiastif(!$a)). PHP pozwala zapomnieć o wartościach początkowych zmiennych. To błąd. Wiele razy zdarzyło mi się odwołać do tablicy jak do zmiennej skalarnej. Język o silnej kontroli typów w migł by to wychwycił, a tak? grzebanina zvar_dumptablicy, której pola referują do obiektów i innych śmieci wypluwających debug na 15 ekranów. Wszystkie te "udogodnienia" PHP sprawiają, że jest on po prawdzie potężnym narzędziem, ale początkujący programista z łatwością może postrzelić się w nogę (i w dodatku nie dowiedzieć się o tym). Ten język wręcz zachęca do dziadostwa w kodzie i bez twardej szkoły jaką daje C nie sądzę, by osoba (przeważnie) tak słabo doświadczona jak maturzysta mogła sobie poradzić z ujeżdżaniem tego mustanga. A raczej konia pociągowego, sądząc po prędkości działania.
Z powodów powyższych lepiej dla samych maturzystów byłoby, gdyby męczyli się z jakimiś klasycznymi językami, które uczą dyscypliny i niedpouszczają stosowania różnych kukieł zależnych od implementacji interpretera. PHP dopiero niedawno zaczął nadawać się do czegokolwiek ponad endżin forum czy maszynkę do liczenia głosów. Skończyły się harce z włączonym by default register_globals i pclp zalała fala postów od dłubaczy. Ostatnio, z wprowadzeniem nowej semantyki operatora przypisania w stosunku do obiektów przybyło kolejnych wyjątków, sytuacji szczególnych i niekonsekwencji, jakby FALSE==NULL==0==0.0==''==array() nie wystarczyło. Do starego, strukturalnego śmiecia doszły interfejsy, iteratory, autoloadery i inne bajery. Nie, ten język nie nadaje się do ogólnego sprawdzianu umiejętności. Jest zbyt zbyt wyspecjalizowany i pełen ciemnych zakamarków. Lubię ten język, bardzo nawet, ale dla maturzysty zdecydowanie nie.
- zgoda (jarek)
Amen, brother!
- chojnac
Tylko zastanawia mnie czemu nie wrzucili javy
- str()
Właśnie, też mnie to trochę zastanawia. Ale, gdyby pozwolili korzystać ja Javy pełne prawo walczyć o swoje mieliby miłośnicy C# i Pythona. A może i nawet Parrota/Perla.
- MiMaS
Miłośnicy C# chyba mają swoje - w implementacji microsoftowej jest na liście.
A Javy nie ma np. dlatego, że jest to środowisko zbyt rozbudowane i trudne do ogarnięcia przez CKE ;-) Poza tym Java jest ostatnio postrzegana jako co raz mnie koszerna, a równocześnie nie chronią jej utarte przyzwyczajenia jak w przypadku np. TP7 czy DJGPP -- w efekcie o Javie najwygodniej jest zapomnieć.
BTW - gdzie można zagłosować przeciw PHP na maturze?- MacBirdie
Chyba trzeba zrobić własną petycję "przeciw", bo niestety nie spotkałem takiej. ;)







