Doprawdy nie spodziewałem się, że zarejestruję się kiedyś na tym forum, ale skoro trochę osób wchodzi z tego adresu na moją stronę, to wypadałoby się przynajmniej pokrótce odnieść do tego, co tu zostało napisane. W szczególności:
Cytat(qqrq @ 8.04.2008, 13:17:01 )

A, i koniecznie przeczytajcie jak autor tekstu w w/w linku wypowiada się o swoich "przebojach" z PHP. Ręce opadają! Tak to jest jak się człowiek za coś bierze od dupy strony...
Nie wiem, czy od złej, czy od dobrej strony zabrałem się do PHP. Zadanie polegało na napisaniu systemu CMS w ciągu dwóch, czy trzech tygodni (dodam, że było to gdzieś w okolicach roku 2004), do strony, która była już zbudowana (przez grafika) w oparciu o statyczny HTML i Flasha. Kupiłem więc książkę z Helionu "Zaawansowane programowanie w PHP" (czy jakoś tak - czerwona okładka z twarzami programistów). Może to właśnie ta lektur sprowadziła mnie na złą drogę? Nikt jednak nie wspominał w niej ani o gotowych systemach CMS (całkiem zrozumiałem), ani o frameworkach do tworzenia stron (to już bardziej dziwne), ani nawet o szablonach (całkowicie niezrozumiałem). A przecież PHP jest językiem pomyślanym do tworzenia stron internetowych, czyż nie?
W każdym razie mając mocno ograniczony czas na przerobienie tej strony, nie mogłem poświęcić tygodnia czasu na zgłębianie jakiegoś gotowego CMS-a, czy innego tego typu rozwiązania. Tym bardziej, że nikt przy projektowaniu tej strony nie myślał w ogóle o tym problemie. Summa summarum - stronę napisałem, ale nie było to zbyt przyjemne doświadczenie, w szczególności biorąc pod uwagę fakt, że wszystko musiałem napisać od zera...
Przy kolejnym projekcie skorzystałem z Mambo - jeden z najlepszych systemów CMS napisanych w PHP. Skoro tak - to powinienem się czegoś nowego na nim nauczyć, większość rzeczy powinna być załatwiona automagicznie, czyż nie?
Prawa jest taka, że Mambo "niewiele" różniło się od mojego autorskiego projektu. Oczywiście nie chodzi mi tutaj o stopień jego zaawansowania od strony użytkownika końcowego, tylko o wnętrze - to co ogląda programiasta.
W szczególności - integracja z bazą danych praktycznie niewiele lepsza niż wywoływanie funkcji API (to, że ktoś to upchnął w jednym obiekcie, to żaden postęp); szablony HTML? - chyba nikt o nich nie słyszał - realizacja wzorca MVC polegała na umieszczeniu części kodu w jednym pliku, gdzie była przewaga PHP, a części w drugim, gdzie była przewaga HTML-a; migracje schematu DB - a co to takiego?; wtyczki - integracja z resztą systemu gorzej niż łopatologiczna; etc. etc.
Czy doprawdy zabrałem się za PHP od złej strony? W każdym razie to co oferował wtedy ten język (i nadal oferuje), a także to co powstało przy jego użyciu - raczej mi się nie spodobało...
A co do samego języka, jako języka (a nie platformy budowania aplikacji internetowych) - ma on parę zalet:
- hosting jest wszędzie
- jest w miarę szybki
- uruchomienie aplikacji w PHP jest bardzo proste
- jak ktoś zna nieco C lub Javę, to czuje się (niemal) jak w domu
To chyba wszystko dobrego co na jego temat mogę napisać. Nie chcę pisać nic złego, dlatego jeszcze raz zapytam o takie cechy (które można znaleźć w Rubim i/lub Phytonie):
-
bloki (a co to w ogóle jest? po co to komu?
apohllo.pl/dydaktyka/ruby/intro/struktury-jezyka)
-
obiektowość - przecież jest w PHP! ok...
* ...a dokąd jest wysyłane np. mysql_query? do
aktywnej bazy danych, tzn. jest sobie jakaś
zmienna globalna (ktoś słyszał o wątkach?), która trzyma tę informację;
* ...a czym jest łańcuch znaków? - co za głupie pytanie, łańcuchem znaków... ok teraz rozumiem, do czego służy funkcja
strlen; tablica? - tablicą, hmm, jej rozmiar badamy przez
count, a obiekt? - obiektem, ilość jego "właściwości" badamy przez niech zgadę...
prop_count, ależ skąd
count! WTF?
-
metaprogramowanie - nie będę się nad tym rozwodził, napiszę tylko tyle, że dzięki niemu np. dodanie wersjonowania (przechowywania historii modyfikacji stron) w Frameworku Ruby on Rails, sprowadza się do zainstalowania pluginu (jedna linijka w konsoli) i dodania odpowiedniego wpisu w modelu (acts_as_versioned), dodanie komentarzy do strony - jw.; dodanie ocen - jw.; wykorzystanie nowego języka szablonów - jw., etc., etc.
Podsumowując - nie będę mówił, że PHP jest zły, albo Ruby najlepszy, bo nie jest to prawda. Czasami jednak warto zapoznać się z innymi językami programownia (w szczególności polecam: LISP-a, Smalltalka oraz Erlanga), żeby zobaczyć, że pewne rzeczy mogą być prostsze, oczywistsze, przyjemniejsze, bardziej spójne, mniej podatne na błędy etc. etc. niż w naszym ukochanym języku. To trochę tak jak z nauką języków obcych - zawsze można powiedzięć, że polski jest najlepszy, najlepsiejszy, najnasiejszy i najcudowniejszy, ale jednak obecnie najwięcej osób mówi w angielskim, a kiedyś łacina była w powszechnym użyciu. Kiedy zna się te języki, to przynajmniej można spojrzeć na polski z innej strony i odkryć, że nie każdy język jest fleksyjny (vide angielski), a niektóre bardziej ekspresywne (vide łacina)...