PHP, Python, Techblog »

[20 stycznia, 2012 | 22 komentarze | Poziom: 0 ]

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.

PYTHON:

html = '<p>a b c d</p>'
p = html.split('<p>')[1].split('</p>')[0]

PHP:

$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ę.

  • Django
  • MVT
  • ORM
  • DRY
  • CACHE
  • automatycznie generowany panel administracyjny
  • czytelny i logiczny system szablonów
  • wielojęzyczność
  • obsługa wielu baz danych
  • CodeIgniter
  • MVC
  • AR
  • budowa modułowa
  • wbudowane zabezpieczenia
  • zarządzanie sesjami
  • wielojęzyczność
  • obsługa wielu baz danych

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 ;)

C Sharp, Techblog »

[05 grudnia, 2010 | 19 komentarzy | Poziom: 0 ]

Kiedyś zauważyłem że ciężko znaleźć w miarę sensownie napisaną, czy raczej narysowaną, Paproć Barnsleya. Paproć Barnsleya, to fraktal, obiekt samopodobny. Jego nazwa pochodzi od wyglądu przypominającego liść paproci. "Rysunek" jest złożony z punktów wyznaczonych poprzez użycie 4 wzorów w sposób losowy z odpowiednim dla nich prawdopodobieństwem. Dziś jako że zacząłem naukę C# postanowiłem zaimplementować ową paprotkę.

Czytaj dalej »

Ogólne, Techblog »

[27 sierpnia, 2010 | 32 komentarze | Poziom: 0 ]

Od czasu kiedy dowiedziałem się że większe firmy rejestrują polskie domeny za darmo, czekałem na pojawienie się czegoś więcej... Oto jest, firma 1&1, jeden z największych operatorów hostingowych wkroczyła na nasz rynek po drodze miażdżąc pakietem "na Dzień Dobry" konkurencję.

Czytaj dalej »

Ogólne, PHP, Techblog »

[22 sierpnia, 2010 | 15 komentarzy | Poziom: 0 ]

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ń”.

Czytaj dalej »

Linux, Perl, Projekty, Przeniesione, Techblog »

[09 lutego, 2010 | 10 komentarzy | Poziom: 1 ]

Debian powrócił do łask, czemu? Sabayon zajmował mi zbyt wiele czasu, a przecież "system jest dla mnie, a nie ja dla niego". Zaraz po ponownej instalacji w/w systemu przyszedł czas na odpalenie neostrady...

Czytaj dalej »