PHP zdobył przed laty popularność jako język skryptowy do tworzenia stron internetowych. Wzięła się ona z pewnością stąd, że jeszcze kilka lat temu nie było alternatywy dla szybkiego, prostego i dostosowanego do potrzeb WWW języka. Dziś jest inaczej. Prezentujemy języki i technologie, które również powstały z myślą o programowaniu webowym.
Sam PHP może się podobać z uwagi na jego prostotę. Brak skomplikowanych typów i struktur danych oraz generalna filozofia, która sprawia, że PHP pilnuje za programistę niemal wszystkiego. Ponieważ dodatkowo PHP jest językiem interpretowanym, to wszystkie wprowadzane do kodu zmiany są natychmiast widoczne na serwerze.
PHP posiada jednak wielu przeciwników. Zarzuca mu się zbyt daleko idące uproszczenia oraz to, że pozostaje daleko w tyle za innymi nowoczesnymi językami programowania.
Warto zdać sobie sprawę, że dzisiejsze problemy PHP wynikają z historii jego rozwoju. To, co w PHP3 wystarczało do tworzenia prostych stron (i w zasadzie do niczego więcej), w miarę wzrastających aspiracji do miana kompleksowego języka właściwego dla programowania aplikacji internetowych, okazało się już zbyt małą funkcjonalnością. Dodawano więc nowe rozwiązania, ale przyzwyczajenia użytkowników oraz chęć zachowania jak najszerszej kompatybilności istotnie blokowały rozwój PHP.
Szybkiej ewolucji nie ułatwiał także brak wsparcia ze strony dużych producentów oprogramowania oraz ograniczone dopuszczenie programistów Open Source do rozwoju projektu (wszystkie zmiany i tak muszą być nadzorowane przez firmę Zend).
Przez to nawet dzisiaj PHP5 oraz nadchodzący PHP6 wyglądają dość mizernie na tle konkurencyjnych technologii. Główny zarzut formułowany pod ich adresem to dopiero raczkująca obiektowość. Krytycy narzekają również na słabe środowiska zintegrowane, czyli programy wspierające pisanie oraz debugowanie kodu PHP. Omawiany język nie doczekał się dotąd również własnych serwerów aplikacji, które mogłyby wydatnie zwiększyć szybkość wykonywania skryptów.
Nasuwa się więc pytanie: jeśli nie PHP, to co?
Python
Jest to język, który dopiero od pewnego czasu jest szeroko wykorzystywany do tworzenia aplikacji internetowych. Wcześniej znany był jako świetne rozwiązanie do programów i skryptów okienkowych oraz uruchamianych jako narzędzia systemowe.
Serwis Grono.net jest przykładem udanego polskiego wdrożenia projektu w oparciu o {link_wew 4790}framework Django{/link_wew} (Python)
Python jako język może się wydawać początkowo dość egzotyczny. Inne słowa kluczowe, nieznacznie odmienna składnia, inny sposób funkcjonowania klas, metod i atrybutów. Wreszcie specyficzny sposób konstrukcji kodu – dla wydzielania bloków kodu nie stosuje się tutaj nawiasów klamrowych, tylko usystematyzowane „wcięcia”. Ale zdaniem zwolenników Pythona, uczy to porządku. To, czy specyficzna składnia kodu Pythona to zaleta czy wadą, jest kwestią subiektywną i pozostawimy ją bez jednoznacznego rozstrzygnięcia.
Pomimo tych wszystkich różnic, Python jest językiem bardzo czytelnym. Po zapoznaniu się ze składnią programowanie przebiega szybko. A przy tym – co stanowi dużą zaletę – Python od początku tworzony był jako język obiektowy.
Obecnie jednak dobry język programowania to nie tylko ten, który posiada ciekawszą składnię czy imponującą ilość obsługiwanych bibliotek (Python ma ich dużo).
Równie ważne jest dobre wsparcie ze strony frameworków. Python takie wsparcie posiada – Django jest świetnym frameworkiem do prostych systemów internetowych na bazie CMS, a Pylons i TurboGears wpasowują się tam, gdzie możliwości konfigurowania Django okazują się zbyt małe. Django i Pylons stanowią dojrzałe, rozwijane od wielu lat systemy. Również TurboGears zdobywa coraz więcej zwolenników.
Zaletą Pythona jest ponadto to, że uruchamiane skrypty są automatycznie kompilowane do bajtkodu. Programy można w takiej postaci dystrybuować – utrudnia to odczytanie pierwotnego kodu źródłowego programu. PHP taką funkcjonalność posiada dopiero po wykupieniu dodatkowego oprogramowania zewnętrznego (np. ionCube). Bajtkod niestety przyspiesza tylko nieznacznie wykonywanie się programów, a pomimo jego zastosowania Python wciąż pozostaje językiem interpretowanym, a nie kompilowanym.
Wady Pythona? Jeśli jako wadę PHP uznaliśmy brak wsparcia ze strony dużych korporacji, to uczciwie należy tę cechę wpisać również po stronie wad Pythona. O ile jednak PHP ma co nadrabiać, to Python jest już językiem dojrzałym. Python jest w pełni rozwijany jako projekt open source, a zarządzanie kierunkiem rozwoju nie jest uzależnione od żadnego przedsiębiorstwa (rozwój niekomercyjny) – tej siły nie ma PHP.
Po stronie wad Pythona zapisać można niezbyt dobrze rozwinięte środowiska programistyczne do przyjemnego pisania kodu i debuggingu – patrząc na edytory Javy czy .net jest czego zazdrościć. Na szczęście Python posiada serwer aplikacji, zaimplementowany w postaci mod_python, czyli modułu dołączanego do Apache.
Czytaj więcej:
- Wprowadzenie do Pythona:
{link2}http://serwis.magazynyinternetowe.pl/artykul/3423,1,1205,wprowadzenie_do_pythona_-_jezyk_oprogramowania_inny_niz_wszystkie.html{/link2} - Django: {link2}http://serwis.magazynyinternetowe.pl/artykul/4790,7,2309,django_-_framework_szybki_jak_ror_i_wydajny_jak_php.html{/link2}
Ruby (On Rails)
Ruby to język, który powstał 14 lat temu, jednak przez długie lata cieszył się marginalną popularnością. Zmieniło się to dopiero, gdy w oparciu o ten właśnie język powstał framework Ruby On Rails. Jest to dedykowany system do tworzenia aplikacji internetowych, który szybko zaskarbił sobie sympatię wielu programistów. Nic dziwnego, RoR powstał w 2003 roku, czyli w czasie gdy PHP nie miał jeszcze żadnych sensownych frameworków. Przesiadka z PHP na RoR była więc jak zmiana samochodu, z malucha na coś znacznie większego i szybszego.
Dziś Ruby On Rails to dojrzały projekt, kompletne rozwiązanie do tworzenia serwisów WWW oraz systemów internetowych bazujących na przeglądarce. Wspierany jest przez coraz szerszą społeczność użytkowników. Faktem jest, że nie jest ona tak ogromna jak społeczność programistów PHP, a co za tym idzie – ilość różnorakich poradników dostępnych w internecie jest mniejsza. Z drugiej jednak strony, programowaniem w RubyOnRails zajmują się zwykle już bardziej doświadczeni użytkownicy, a więc jakość porad jest znacznie wyższa.
Zaznajomienie się z samym językiem Ruby nie powinno przysporzyć problemów żadnemu programiście PHP. Nie jest to język bardziej skomplikowany do opanowania, choć z pewnością można powiedzieć, że jest inny. Sposób pisania w Ruby może wydawać się programistom PHP początkowo nie do końca jasny, ale jeden weekend z poradnikami powinien sprawić, że będziesz już w miarę swobodnie posługiwać się tym językiem.
Część funkcjonalności może wydawać się zupełnie nowa – na przykład „lambdy” (stosowane także w Pythonie). Ale nie przejmuj się, nie są one niezbędne do pisania programów w Ruby, a z czasem i te nowe funkcje poznasz.
Ruby jest w pełni obiektowy, co daje programiście większe możliwości działania i skraca czas pisania programów. Obiektowość była w Ruby od początku, nie trzeba więc przechodzić przez trudny okres dojrzewania, co ma miejsce obecnie w PHP.
Zarówno Ruby, jak i Ruby On Rails są rozwijane przez środowiska open source. Podobnie jak przy Pythonie, wadą jest brak wsparcia ze strony dużych korporacji, ale RoR nadrabia to w pełni za sprawą niezależnych programistów zrzeszonych wokół projektu. RoR posiada kilka serwerów aplikacji (np. mongrel oraz od niedawna mod_rails dla Apache), nie zawsze pozbawionych wad, ale stale rozwijanych. Dzięki temu nadaje się do profesjonalnych zastosowań produkcyjnych.
Czytaj więcej:
- Programowanie w Ruby:
{link2}http://serwis.magazynyinternetowe.pl/artykul/2849,1,906,programowanie_w_ruby.html{/link2} - Ruby On Rails:
{link2}http://serwis.magazynyinternetowe.pl/artykul/2979,1,989,ruby_on_rails.html{/link2} - Ruby On Rails dla zaawansowanych:
{link2}http://serwis.magazynyinternetowe.pl/artykul/3331,1,1185,ruby_on_rails_dla_zaawansowanych_-_tworzymy_system_newsow.html{/link2}
Java (J2EE)
Java nie jest nowym językiem. Jego szczegółowa prezentacja nie wydaje się konieczna, znany jest bowiem od lat. To język w pełni obiektowy, o przemyślanej składni oraz dostępnych już obecnie bibliotekach do obsługi niemal wszystkiego, czego programista może potrzebować. Kod programu w Java przypomina nieco ten pisany w PHP, pod tym względem programista nie będzie mieć wielu problemów z „przestawieniem się”.
Ale trzeba też wiedzieć, że Java nie upraszcza tak wielu rzeczy jak PHP. Dla kogoś, kto nigdy wcześniej nie miał styczności z innymi językami programowania, pewne rzeczy będą nowością (nawet tak proste jak typy i struktury danych).
Java początkowo była używana jako język do tworzenia głównie aplikacji okienkowych, jednak od 1999 roku rozwijany jest projekt Java Platform Enterprise Edition (znana również jako J2EE), dedykowany do obsługi architektury klient-serwer. Aplikacja Java jest tutaj uruchamiana po stronie serwera (jako serwlet lub skrypt JSP – ten drugi jest bardziej podobny do PHP, ten pierwszy do aplikacji w Pythonie).
Do swojego uruchomienia Java wymaga serwera aplikacji. Jest ponadto językiem kompilowanym, ściślej kompilowanym do specjalnego bajtkodu, uruchamianego następnie przez maszynę wirtualną Javy. Zarówno konieczność używania maszyny wirtualnej, serwera aplikacji, jak i kompilowania mogą nieco zmniejszyć wygodę tworzenie aplikacji (Java nadrabia to jednak dobrym oprogramowaniem do pisania kodu).
Jednak po uruchomieniu programów napisanych dla J2EE w środowisku produkcyjnym ukazuje się prawdziwa potęga Javy (zwłaszcza przy większych systemach). Użyte technologie będą działać szybko i sprawnie tam, gdzie PHP wykazywałoby już problemy wydajnościowe.
Rozwój Javy (a raczej technologii wokół Javy) wspierają środowiska open source oraz różnego rodzaju firmy i korporacje z Sun i IBM na czele, dla których jest to podstawowa technologia tworzenia oprogramowania. Java posiada również kilka ciekawych frameworków (np. Struts, Spring). W oparciu o J2EE i frameworki webowe z powodzeniem tworzony jest portal Gazeta.pl wraz z kilkudziesięcioma serwisami społecznościowymi skupionymi wokół niego.
Czytaj więcej:
- Struts – aplikacje internetowe w Javie:
{link2}http://serwis.magazynyinternetowe.pl/artykul/679,1,580,struts_-_aplikacje_internetowe_w_javie.html{/link2} - Tapestry – framework JSP od drugiej strony:
{link2}http://serwis.magazynyinternetowe.pl/artykul/3319,1,1180,tapestry_framework_jsp_od_drugiej_strony.html{/link2}
Platforma .net
Szukając profesjonalnych alternatyw dla PHP można skierować swoją uwagę także na platformę .net, rozwijaną przez Microsoft. To technologia, w obrębie której można tworzyć oprogramowanie w kilku językach, głównie w C/C++, C# oraz ASP.NET.
Platforma .net posiada również wsparcie dla tworzenia aplikacji internetowych, gdzie warstwa logiki biznesowej znajduje się po stronie serwera i współpracuje z serwerem HTTP, przekazując dane do przeglądarki użytkownika. Czyli zastosowanie analogiczne do skryptów PHP.
Zaletą platformy .net jest z pewnością profesjonalizm rozwiązania (nie ustępujący Javie), a także wsparcie Microsoft i rzeszy firm informatycznych skupionych wokół Microsoftu. Jest jednak rozwiązaniem zamkniętym. Ponadto wymaga platformy Windows, co podnosi koszty wdrożenia napisanych w oparciu o .net programów.
Problem z hostingiem
W każdym przypadku przedstawionych tutaj rozwiązań problemem może być zapewnienie hostingu dla tworzonych aplikacji. O ile PHP obecnie jest obsługiwany na serwerach niemal wszystkich dostawców hostingu, o tyle z pozostałymi technologiami bywa różnie.
Dość często na platformach hostingowych można spotkać Pythona uruchamianego jako skrypt CGI (bez FastCGI). Nie sprzyja to wydajności i raczej nie nadaje się do obsługi większych serwisów. Specjalną konfigurację serwerów zoptymalizowaną pod kątem Pythona prezentuje niewielu dostawców usług hostingowych.
Jeszcze gorzej jest w przypadku pozostałych technologii. RubyOnRails oraz Java wymagają uruchamiania specjalnego serwera aplikacji i z punktu widzenia dostawcy hostingu, ich obsługa jest kosztowna. Z kolei platforma .net będzie działać tylko na Windows, a większość usług hostingowych dostępnych w internecie jest oparta o system operacyjny Linux lub Unix.
Nie oznacza to jednak, że hostowanie aplikacji oparte o Pythona, RoR, Javę czy .net jest niemożliwe. W wyszukiwarce łatwo znajdziesz odpowiednie usługi, będą one jednak droższe od hostingu dla PHP. Można również zakupić usługi typu VPS lub serwery dedykowane i skonfigurować środowisko samodzielnie, choć to może stanowić dodatkowe utrudnienie.
Czy warto szukać innych rozwiązań?
Z całą pewnością warto pomyśleć o technologiach alternatywnych do PHP. Zwłaszcza przy większych projektach czynią one programowanie szybszym, wygodniejszym i w części przypadków bardziej wydajnym sprzętowo. Wydaje się, że w najbliższych latach PHP będzie tracić programistów na rzecz innych języków. Ale jest mało prawdopodobne, aby udało się go zdetronizować – wciąż pozostanie najpopularniejszym językiem do tworzenia stron. Szczególnie, że wciąć powstają coraz lepsze frameworki (np. chwalona przez wielu Kohana).
Kolejne wersje PHP powinny go coraz bardziej zbliżać do konkurencyjnych rozwiązań. Ale konkurencja także stale się rozwija. Czy PHP zdoła ją dogonić?
Co ważne, porównując opisane technologie nie należy koncentrować się wyłącznie na językach samych w sobie. Ważne jest to jakie frameworki oferują – jakie mają możliwości oraz jaką prezentują wygodę programowania. Dobrze będzie, jeśli poczytasz szerzej o każdym z nich i wybierzesz ten, w którym pracuje ci się najwygodniej. To, w jakim języku będziesz operować, jest sprawą drugorzędną.
Zachęcamy do wpisywania w komentarzach „za” i „przeciw” PHP oraz innym językom programowania. Z jakich frameworków korzystacie?