Wstęp
Moja przygoda z pythonem rozpoczęła się stosunkowo niedawno - kilka tygodni temu przy okazji tworzenia nowej wersji dloadera, wcześniej moje kontakty z tym językiem były raczej sporadyczne. Zanim zacząłem mój romans z pythonem, przeczytałem kilka wpisów na blogach osób starających się porównać języki które wymieniłem w tytule pod względem przydatności do tworzenia stron internetowych, niestety troszkę się zawiodłem. Większość ludzi, jak wynika z moich prywatnych obserwacji, porównuje Django z PHP co jest rażącym błędem. Nie widzę dobrego sposobu, a nawet sensu, porównywania frameworka z językiem programowania. Postaram się w obiektywny sposób przedstawić oba te języki, nie omieszkam również sięgnąć w stronę najpopularniejszych frameworków.
Popularność
W tej kategorii PHP jest niekwestionowanym zwycięzcą, według TIOBE(stan ze stycznia bieżącego roku) PHP jest na 6 miejscu, natomiast Python na 8. Ranking o którym wspomniałem dostępny jest na KLIK
Czytelność kodu
Tu moim zdaniem zdecydowanie przeważa python, swoją składnią wymusza on pozytywne zachowania podczas tworzenia kodu. Wcięcia znacznie ułatwiają czytanie kodu, czytając kod nawet po początkującym programiście jesteśmy w stanie zrozumieć jego działanie w kilka sekund, co niestety niema miejsca w PHP. Oczywiście w PHP również można zachować reguły formatowania znane z pythona jednak większość ludzi stosuje różne style układania kodu co często utrudnia pracę zespołową.
Zwięzłość/Szybkość pisania
Python wydaje się być bardziej elastyczny, kod zazwyczaj da się znacznie skrócić nie tracąc na czytelności. Z informacji które ostatnio do mnie dotarły wynika iż PHP dąży w dobrą stronę, twórcy w nowej wersji wprowadzają znaczne usprawnienia, jednak to co teraz jest wprowadzane do PHP w innych językach funkcjonuje już od wielu lat. Pomijając wszystkie wprowadzane właśnie innowacje przedstawię dwa fragmenty kodu realizujące to samo zadanie. Postaram się wyciągnąć treść z pomiędzy znaczników HTML <p>a b c d</p> bez użycia wyrażeń regularnych.
html = '<p>a b c d</p>'
p = html.split('<p>')[1].split('</p>')[0]
$html = '<p>a b c d</p>';
$e = explode('<p>', $html);
$e = explode('</p>', $e[1]);
$p = $e[0];
Bez zbędnych wyjaśnień, punkt dla pythona.
Prędkość wykonania
Tutaj nie trzeba dawać żadnych przykładów, samo to że Python jest przetwarzany do bytecode i następnie wykonywany, a PHP tylko wykonywane, daje mu sporą przewagę. Wszystko zależy od zastosowania i optymalizacji kodu, Python nie gwarantuje programiście na tyle dużej przewagi w szybkości wykonania ażeby pisały w nim osoby znające bardzo dobrze PHP, a pythona miernie, w celu uzyskania poprawy szybkości wykonania konkretnego zadania.
Frameworki
Na cel wziąłem Django i CodeIgniter. Moim zdaniem ciężko porównać te frameworki ponieważ składają się z różnych elementów, stosują różną filozofię i są napisane w różnych językach, więc tylko pokrótce je przedstawię.
Podsumowanie
W tym porównaniu wynikiem 3 do 1 wygrywa Python. Być może rzeczy które tu wymieniłem nie są najważniejsze, jednak z całą pewnością są ważne. Myślę że to który z języków powinno się wybrać zależy od zadania jakie musimy zrealizować, no i oczywiście od umiejętności programisty;)
PS.
Pewnie zaraz rzuci się na mnie kilku `kiboli PHP-a` za tak słaby wynik ;)
Witam, dawno się nie odzywałem - sorry, miałem dużo pracy. Co mnie skłoniło do nowej mini-notki? Dziś przebywając na konferencjach xmpp napotkałem kolejną mutację mojego starego projektu, "jBot". Po chwili zastanowienia i powtórzeniu materiału, z lekcji matematyki, z początków szkoły podstawowej - naliczyłem iż jest to już 7(!) modyfikacja tego skryptu. Chciałem Wam pokazać wszystkie "mody" ale już nie pamiętam(czasem też nie chce pamiętać) adresów oraz autorów poszczególnych "wersji". Swoją drogą - ciekawe ile jeszcze jest wersji o których nie wiem?
Jak zapewne wiecie, na rozwiązanie jednego „problemu” jest kilka różnych sposobów - który wybrać? Odpowiedź jest oczywista, ten który wykona się najszybciej i będzie zużywał najmniej zasobów maszyny.
Często potrzebuję skrócić czas wykonania skryptu. Postanowiłem przetestować szybkość wykonania, odpowiadających sobie, fragmentów kodu. Niżej przedłożę klasę której używałem do testów, testowane fragmenty kodu oraz wyniki „badań”.
Tam-ta-ram-tam-tam! Czas opublikować kurs PHP! Może nie jest idealny ale spełnia swoją rolę - dwie osoby, których nicków nie ujawnię ponieważ nie dostałem na to pozwolenia, zdołały opanować PHP do tego stopnia że jeden pisze swoją własną stronę domową(już widać efekty pracy), a drugi... ekhm... no cóż... próbuje znaleźć pracę jako programista PHP(nie mam serca go wyśmiać xP) z oczywistym skutkiem;]. Muszę się przyznać że zapomniałem opisać instrukcji switch - tak wiem jutro wyruszam na kolanach do Redmond - ale sądzę że każdy po przeczytaniu tego kursu będzie w stanie opanować switcha w kilka minut odwiedzając Manuela. Zapraszam do lektury kursu oraz komentowania.
Ostatnio dotarły do mnie informacje że ktoś o nicku "Atro" próbuje sprzedawać mój skrypt czatu na GG oparty o API GG. Skandal! Udostępniam kod nie pobierając żadnej opłaty, a tu trafia się jakiś złodziej, bo inaczej tego nazwać nie można, i sprzedaje moją pracę podpisując się pod nią. Takich ludzi powinno się kastrować żeby nie przekazywali swoich "lewych" genów potomstwu...
Dla zainteresowanych kodem: [PHP][API]CzatGG.tar.gz - PHP + MYSQL