PHP vs Python, czyli co mi się podoba a co nie

Ten post został zainspirowany dyskusją z forum języki skryptowe na golden-line. Jako, że poszedł tam dość duży flejm i jak zwykle ludzie zaczęli sobie skakać do gardeł (właściwie nie wiadomo po co) postanowiłem niejako podsumować toczącą się tam dyskusje kilkoma własnymi przemyśleniami.

Chciałem się skupić w tym poście bardziej na samej składni i sposobie pisania w obu językach niż na dostępnych do nich narzędziach czy możliwościach jakie oferują, A więc zaczynajmy…

Nawiasy, nawiasiki i kurli brejse ( { )

Pisząc w Pythonie pierwszą rzeczą jaką zauważa każdy jest brak nawiasów i wydzielania bloków przy pomocy klamerek. Bloki zaznacza się wcinając kod. Jest to dosyć fajne i eleganckie pod warunkiem, że kod który piszemy będzie ostateczny i nie będziemy go musieli poprawiać czy wykomentowywać jakieś podbloki w blokach.

Pisząc pewien skrypt miałem z tym dość duże problemy. Jak dla mnie ten feature składni jest troche chybiony. Natomiast podoba mi się to, że w strukturach kontrolnych (if, for, etc) nie muszę stosować nawiasów. W PHP zawsze mi to jakoś zaciemnia kod. Dla mnie idealnym rozwiązaniem były by klamerki dla bloków i brak nawiasów w strukturach kontrolnych.

Wynik: w zasadzie żadne z rozwiązań mi w stu procentach nie odpowiada. Remis

Refleksja

Nie wgłębiałem się szczególnie w Refleksje w Pythonie (w przeciwieństwie do Refleksji w PHP). Muszę powiedzieć, że samo podejście ideologicznie bardziej podoba mi sie w Pythonie, czyli klasy jako first class objects.

Wynik: +1 dla Pythona

Mechanizmy obiektowości

Głęboki temat. Patrząc na ficzery obu języków, to pod względem możliwości zmiany zachowania klas wygrywa. Ma przesłanianie operatorów, wielodziedziczenie, funkcje dekoratorowe, transparentne gettery i settery i całą wielką armadę magicznych funkcji. Z drugiej strony PHP ma dość prosty model obiektowy w zasadzie żywcem przejęty z Javy. Dodatkowo jest kilka magicznych funkcji i interfejsy przez których implementacje można się „wczepiać” w składnie języka (Iterator, ArrayAccess). Python ma również podobne możliwości na tym polu, jednak sposób implementacji nie bardzo mi się podoba. Wole interface od magicznych funkcji.

Wynik: remis, ze wskazaniem ideologicznym na PHP

Pakiety, przestrzenie nazw

Na tym polu oba języki w zasadzie różnią się tylko składnią.

Wynik: remis

Biblioteka standartowa

Ten temat jest polem do ewentualnego flejma :P. Generalnie rzecz biorąc oba języki mają przepastne biblioteki standartowe. Biblioteka PHP składa się w przeważającej części z funkcji z dodatkiem kilku klas. Natomiast Pythonowa jest raczej obiektowa. Przez większe obeznanie w PHP lepiej porusza mi się po jego bibliotece. Nie wykluczam jednak, że jak bym zaczął dużo pisać w Py, to oswoił bym się i z jego biblioteką.

Wynik: remis (do wszystkiego da się przyzwyczaić)

Rzeczy irytujące

Kilka szybkich rzeczy o których jeszcze nie mówiłem a irytują:

  • PHP: niespójność nazewnictwa funkcji,
  • Python: zbyt duża konsekwencja w trzymaniu się reguł

Podsumowując, dla mnie oba języki mają swoje zady i walety (jak to mówi Marsjano). Pisząc coś dla siebie w tej chwili wybrał bym Pythona z czystej ciekawości. Natomiast pisząc coś konkretnego kierował bym się zupełnie innymi kryteriami niż te których użyłem do porównania obu języków. Wybrał bym technologie/platformę, która była by najlepsza do danego zastosowania.

Co do samej struktury języków, chętnie zainteresowałbym się językiem, który łączył by zalety obu.

Leave a Reply

Informuj mnie o odpowiedziach poprzez e-mail. Możesz również subskrybować wpis bez zostawiania komentarza.