26 Lis

Python vs PHP

Jeśli wszystko potoczy się po mojej myśli niedługo zacznę pracę nad nowym, sporym projektem. Podczas rozmowy z "szefem" rzuciłem pomysł napisania wszystkich skryptów w Pythonie. Później sam zacząłem się zastanawiać dlaczego właściwie odstąpić od dobrze wszystkim znanego PHP na rzecz stosunkowo mało popularnego Pythona.

Poczytałem trochę w internecie i rozszerzyłem swoją wiedzę na ten temat. Wcześniej miałem już styczność z pajtonem, ale nie można było tego nazwać tworzeniem skryptów, a raczej dziecinną zabawą. Z PHP za to walczę już od kilku dobrych lat, więc raczej nic mnie już zaskoczyć nie może (choć mogę się mylić :P ). Postanowiłem zebrać w punktach dlaczego warto zostać przy PHP:

  • język znam już od dawna
  • duże doświadczenie w tworzeniu skryptów
  • łatwość implementacji algorytmów
  • posiadam masę gotowych funkcji, metod i klas, które znacznie ułatwiają mi pracę

Dla równowagi zebrałem sobie też punkciki przemawiające za tym, aby odejść od PHP:

  • pod względem ilości funkcji dostępnych w języku PHP zostaje w tyle (brak przestrzeni nazw, raczkująca obiektowość)
  • PHP jest stosunkowo wolno rozwijane minie dużo czasu, zanim PHP nadrobi te straty
  • czasem dziwne i nieintuicyjne nazwy funkcji

Python i Django oferują programiście połączenie łatwego i schludnego języka, oraz rozbudowanego frameworka do tworzenia serwisów WWW. Na wstępie mamy do dyspozycji prosty (ale zawsze!) panel admina, oraz interface do implementacji systemu użytkowników. Poza tym ORM wysokiego poziomu, który według mnie jest łatwiejszy w obsłudze, bardziej intuicyjny, a przede wszystkim bardziej obiektowy niż PHP-owy PDO. Aplikacje w Pythonie mogą być wielowątkowe, co także pozwala na zwiększenie wydajności naszej aplikacji. Dodatkowym atutem przemawiającym za przestawieniem sie na pajtona jest to, że nie jest on językiem stworzonym przede wszystkim do pisania stron. Dzięki temu będzie można łatwo zintegrować np. bota gg/irc z serwisem WWW.

Podsumowująć... PHP jest stworzony do pisania stron internetowych i jest do tego celu bardzo dobry. Z drugiej strony nie oferuje on programiście funkcjonalności dostępnych w innych językach już od bardzo dawna. Co prawda developerzy wypuszczają nowe wersje, jednak jak sami twierdzą implementacja niektórych funkcjonalności nie jest możliwa bez całkowitego przebudowania języka. Python nie był tworzony z myślą o podboju internetu. Dzięki takim frameworkom jak Django, czy Pylons stał się do tego celu dobrym narzędziem. Na wstępie oferuje narzędzia przydatne podczas tworzenia serwisów internetowych. Odciąża programistę od zabawy z SQL-em, wiele rzeczy robi automatycznie. Dlatego moim zdaniem warto jest zmienić przyzwyczajenia i poznać alternatywne rozwiązania.

Komentarze

  1. michal
    26 Lis 2007 | #

    Fajny tekst. Kompletnie nie interesowałem się nigdy Pythonem, piszę tylko w php. Nie wiedziałem, że Python ma framework do tworzenia serwisów - teraz wiem i zacznę się tym interesować, brak możliwości stworzenia czegoś pod desktop w php (wiem, że można cos kombinowac z gtk itp. itd, ale to nie to samo co "zwykly" desktop, wydajność itp.;p) jest czasami odczuwalny.

  2. 26 Lis 2007 | #

    Gdybym miał już chyba wybrać frameworka opartego o Pythona wybrałbym Pylons :P ponoć jest on bardziej, jak by to nazwać "flexible" :)

  3. 26 Lis 2007 | #

    Powodzenia... mam nadzieję, że zapoznasz nam z czasem i kosztami jakie poniosła firma wdrażając Twoją myśl ;>

    Osobiście jednak nie przekonałbyś mnie bo argument, że nie ma przestrzeni nazw jest dość błahy w moim mniemaniu - każdy projekt w PHP używa unikalnych klas i nie ma problemu, że gdzieś nazwa klasy się dubluje.. może są takie przypadki, ale osobiście się z nimi nie spotkałem.

    Pozostałe wymienione minusy też są dziwne.. python się rozwija szybciej niż PHP? Zobacz sobie daty wydania :P

    Problem z nazwami funkcji świadczy tylko o bałaganie, ale o niczym więcej i tak w poszukiwaniu odpowiednich funkcji sięgamy do manuala jaki to nie będzie język.

    Pozdrawiam ;)

  4. 26 Lis 2007 | #

    jeszcze jedno ten framework nie jest wcale taki rozbudowany i wiele rzeczy trzeba do niego dopisać

  5. 27 Lis 2007 | #

    jak coś to szukamy pythonowców pracujących w Django.

  6. 27 Lis 2007 | #

    @snipe: wybór frameworka można porównać do wyboru komunikatora, czy systemu operacyjnego - co komu pasuje.
    @php devblog: Przestrzenie nazw porządkują nieco kod i moim zdaniem są dość przydatne. A co do funkcji to powiem tak: chodzi po prostu o wygodę programisty. O wiele łatwiej (przynajmniej dla mnie) programuje się jeśli nazwy funkcji są krótkie, mówiące coś o funkcji i wygodne w użyciu. Jeszcze lepiej jeśli język opiera się na obiektach, bo w moim wypadku daje to dużo większą wygodę i przejrzystość kodu. A jeśli chodzi o "rozwijanie" to może użyłem niefortunnego sformułowania. Chodziło mi o to, że minie jeszcze dużo czasu zanim PHP nadrobi straty do innych języków.

  7. 27 Lis 2007 | #

    PHP od 6 ma mieć namespace, a do 5 można sobie dokompilować.

    Tym niemniej - co żeś zrobił, że wczoraj oglądając Fakty i trzymając żonę w objęciach drugą ręką przewijałem tutorial Pythona i jak na razie mi nie przeszło to ja nie wiem ;-)

  8. 27 Lis 2007 | #

    Bo Python to bardzo miły język. Nie trzeba pamiętać o średnikach (choć czasem automatycznie je dopisuję), nie ma klamer, które często nieco psują kod. Po prostu czyta elegancja :D

  9. 27 Lis 2007 | #

    No właśnie ten brak klamer mi najbardziej doskwiera ;-)

  10. 27 Lis 2007 | #

    @BTM: Da się przyzwyczaić ;) To samo jest w Rubim :)

  11. 27 Lis 2007 | #

    Klamry są dobre, dopóki się nie spróbuje pisania z samymi wcięciami. Wtedy zaczyna się zupełnie inna bajka :)

Napisz komentarz