Articles

Recent Posts

Wyjmijmy to z drogi już na początku: PHP jest dziwnym i brzydkim językiem. Nie jest wyjątkowo szybki. Nie jest piękny składniowo. Nie jest sformułowany wokół jasnej opinii na temat dobrych praktyk tworzenia oprogramowania. I wciąż jest tym, w którym piszę dużo oprogramowania. Oczywistym pytaniem jest: dlaczego? Dlaczego używać PHP?

Jest wiele dobrych powodów, poza osobistymi idiosynkratycznymi preferencjami. Tutaj jest miejsce, aby dokładnie to omówić. Dlaczego PHP jest moim językiem programowania stron internetowych?

Co to jest PHP?

„Co to jest PHP?” Albo, bardziej potocznie, „co to jest PHP?”. W skrócie, PHP jest językiem programowania stworzonym dla sieci, zbudowanym na bazie języka programowania C, który używa idiosynkratycznych znaczników (lub sigili) podobnych do HTML, aby zawrzeć swój kod. Język programowania PHP jest używany głównie po stronie serwera, co oznacza, że działa on na Twoim serwerze WWW, który zwyczajowo serwuje HTML Twoim gościom.

PHP początkowo oznaczało „Osobistą Stronę Domową”. Ponieważ to dość dokładnie ograniczało znaczenie i celowość używania tego języka do ogólnego użytku, język ten obecnie oznacza „PHP: Hypertext Preprocessor”. To jest to, co nazywa się akronimem rekurencyjnym (nazwa, która zawiera nazwę). Frajerzy je uwielbiają.

Co potrafi PHP?

Do czego służy PHP? W zasadzie wszystko, co chcesz zrobić na serwerze WWW, możesz zrobić za pomocą PHP. Zrobić bloga? Tak. Stworzyć pełnowartościową aplikację typu software-as-a-serivce? Absolutnie. Napisać mały skrypt, który przetworzy kilka danych w kilka sekund? PHP świetnie się do tego nadaje. Napisać skomplikowany zestaw skryptów, który przypadkowo stanie się dobrze prosperującą firmą programistyczną? PHP jest często używany w ten sposób.

Jeśli mi nie ufasz, strona PHP wymienia następujące zastosowania:

  • Skryptowanie po stronie serwera
  • Skryptowanie z wiersza poleceń
  • Pisanie aplikacji desktopowych

Nie jestem pewien, czy zachęcałbym do ostatniego punktu, ale jest to możliwe. Ale pierwsze dwa są powszechne i dobre powody, aby używać PHP w 2019 roku.

To prowadzi do jednego ważnego i nieuniknionego faktu…

PHP jest WSZĘDZIE

Jest wiele powodów, aby znać i kochać PHP, z których prawdopodobnie najsilniejszym i ważnym jest to: jest używany i działa WSZĘDZIE, gdzie robi to sieć. Twoje tanie konto hostingowe za 3$ miesięcznie może pozwolić Ci na uruchomienie aplikacji internetowej w Pythonie lub Ruby, jeśli dobrze poszukasz. Ale na pewno będzie działał PHP. Oznacza to, że możesz na niego liczyć gdziekolwiek jesteś.

Symony is one of the reasons that people choose PHP

A ponieważ PHP działa wszędzie i łatwo z nim zacząć, wiele bardzo popularnych programów jest napisanych w PHP. WordPress jest przykładem dla mnie największym i najbardziej znanym, ale narzędzia takie jak Joomla, Drupal, Magento, ExpressionEngine, vBulletin (yep, to wciąż istnieje), MediaWiki i wiele innych działają w PHP na serwerze.

Istnieje też więcej frameworków aplikacji PHP, niż można sobie wyobrazić: Symfony, Zend, Laravel, Aura, CakePHP, Yii, a nawet czcigodny CodeIgnitor. Z pewnością możesz stworzyć listę frameworków internetowych o jakiejś długości dla prawie każdego innego języka. A dla powszechnie używanych języków, takich jak Python, Ruby czy Node/JavaScript, możesz nawet być w stanie zgromadzić konkurencyjną listę. Ale sama ilość stron działających w PHP jest ogromna.

WordPress dumnie chwali się, że zasila ponad 30% internetu. Nie musisz nawet ufać temu faktowi, aby zdać sobie sprawę, że duża część internetu musi używać PHP, jeśli ten fakt jest w ogóle możliwy do pomyślenia.

PHP ma kilka bardzo dobrych cech

Easy Dynamism is Baked into PHP

PHP logo

PHP wykonuje renderowanie HTML i programowanie łatwiej niż prawie jakikolwiek inny język. Tak więc zamiana HTML na PHP jest całkiem prosta. Wystarczy zmienić file.html na file.php, dodać trochę dynamiki wewnątrz kilku znaczników <?php i ?>. Większość serwerów WWW będzie już tak skonfigurowana, że zajmie się resztą za Ciebie. Jest to tak proste, że prawie każdy może zacząć bez potrzeby większego zrozumienia programowania niż to. Ponieważ PHP jest tak przyjaznym językiem do nauki, wiele złego kodu jest w nim pisane.

Gdy zdasz sobie sprawę, że większość złego PHP jest pisana przez początkujących programistów, większość strachu i nienawiści do PHP, które napotkasz na świecie, pochodzi z jednego zasadniczego problemu: PHP nigdy nie było zaprojektowane z wizjonerskim pomysłem, dlaczego jest idealnym językiem dla twojego serwera WWW. Zamiast tego, jest wynikiem szerokiej współpracy w otwartym procesie, który służy jako tygiel, przez który każdy dobry pomysł – i kilka złych – musi przejść.

Object-Orientation with (Great) Package Management is now the Norm in PHP

Composer PHP language
Composer is a great reason to use PHP

And bad ideas can make it through that crucible. Najpopularniejszym przykładem jest to, że PHP 5.3 – osobno uważane za pierwszą nowoczesną wersję PHP – wprowadziło instrukcję goto, która jest generalnie albo wyśmiewana, albo uważana za łatwe źródło błędów.

Podobne złe rzeczy w PHP, które wynikły z procesu, przez który język się rozwijał: orientacja obiektowa została po raz pierwszy zaimplementowana jako wadliwa i ograniczona koncepcja, biblioteka standardowa jest pełna niespójnych nazw i porządkowania parametrów, a (w przykładzie, który ostatnio przykuł sporo uwagi) token :: jest wywoływany przez interpreter w sposób niezrozumiały dla anglojęzycznych użytkowników: T_PAAMAYIM_NEKDOTAYIM.

Ale dziś OOP jest w pełni zrealizowany w PHP. Niewiele języków posiada tak wiele praktyki OOP podobnej do Javy jak PHP. Co więcej, w przeciwieństwie do Javy, PHP posiada jeden i powszechnie lubiany menedżer pakietów, zwany Composer. Jest on bardzo dobry, więc łatwość dołączania innych dobrze napisanych i dobrze utrzymanych bibliotek w PHP jest nie do pogardzenia.

PHP Has Gotten a Lot Faster

Ale te rzeczy powiedziawszy, PHP ewoluuje w interesujący sposób. Staje się w pełni funkcjonalnym, obiektowym językiem podobnym do Javy (na dobre i na złe). I podobnie jak Java, zyskuje łatwe abstrakcje dla programowania funkcyjnego, które jest obecnie bardzo modne. Rozwija się też całkiem niezły zestaw narzędzi – PHP kocha Composera, i to nie bez powodu – oraz godny pochwały wysiłek, aby wszystkie te duże projekty open source w PHP współpracowały ze sobą nieco lepiej.

Oh, i nie powinniśmy zapominać o aktualnej gorącej sprawie: zwiększeniu prędkości PHP w serii wydań PHP 7. Jest to powszechnie uważane za zapoczątkowane przez HHVM wychodzące z Facebooka. Przez krótki czas istniało ryzyko, że prędkość HHVM spowoduje rozłam w społeczności PHP. Ale tak się nie stało. Zamiast tego PHP stało się o tyle szybsze, że ludzie w większości zapomnieli o istnieniu HHVM.

PHP ma OGROMNĄ społeczność; jest przyjazny do nauki

Jeśli decydujesz się na użycie jakiejś nowej technologii, to myślę, że często zbyt mało uwagi poświęca się temu, jak to jest pogodzić się z językiem. Jak to jest uczyć się PHP? Samouczki PHP są powszechne i często całkiem dobre.

Jedną z wad popularności PHP jest to, że możesz znaleźć niezbyt dobre szkolenia od ludzi, którzy nie wiedzą wystarczająco dużo o tym, jak naprawdę wygląda używanie tego narzędzia. Albo którzy ostatnio stosowali „najlepsze praktyki”, które były aktualne dekadę temu. Ale ogólnie rzecz biorąc, zdarza się to na tyle rzadko, że nie sądzę, aby powinno Cię to zniechęcać. Odkrycie, że praktyka, której używasz od kilku miesięcy, nie jest świetna, jest rzadkie i nie stanowi wielkiego problemu.

Wspólne porównania do PHP

Wielu ludzi początkujących w programowaniu szuka bardzo ogólnych porównań języków. Tak więc, oto one. Wszystkie języki, które zamierzam tutaj opisać, mają następujące cechy wspólne z PHP:

  • Są open-source. Oznacza to, że możesz używać języka bazowego za darmo (bez żadnych kosztów) i jesteś w stanie zobaczyć i zrozumieć program bazowy, jeśli chcesz.
  • Są często używane do tworzenia stron internetowych. Dość proste, są to języki używane często do tworzenia stron internetowych. Niektóre są również szeroko stosowane poza tym miejscem, ale nie wszystkie.
  • Są wysokopoziomowe, luźno i dynamicznie typowane. Oznacza to, że zmienna może zmieniać typy, i że nie musisz definiować, kiedy definiujesz zmienną, jaki typ rzeczy (liczby vs ciągi vs obiekty, itp.) będzie przechowywać. Jest to ogólnie preferowane dla programowania sieciowego, ale nie powszechnie.
  • Ich społeczności są dobrej wielkości lub lepsze. Istnieje wiele interesujących języków, które mają cechy wymienione powyżej, ale które nie mają dużej społeczności praktyki. Pomijam je tutaj.

Dlaczego warto używać PHP? Dlaczego nie JavaScript?

Prawdopodobnie najważniejszym językiem, do którego można porównać PHP, jest JavaScript. Nowoczesny rozwój wymaga, aby każdy projekt używał przynajmniej odrobiny JavaScript do rozwoju i interaktywności po stronie klienta. Z Node, stało się to stosunkowo łatwe do użycia JS również na serwerze. Idea używania tego samego języka „izomorficznie” na kliencie i serwerze jest bardzo pociągająca.

Podobnie jak PHP, JavaScript jest eklektycznym i czasami brzydkim językiem z wieloma wadami i „gotchas”. Ale JavaScript stał się niezwykle szybki w ostatniej dekadzie, więc argumenty przemawiające za nim są prawdziwe. Dlaczego warto wybrać PHP zamiast JavaScript? Masz doświadczenie lub potrzebujesz używać bibliotek w PHP. W innym przypadku, myślę że JavaScript może być lepszym wyborem.

PHP vs Active Server Pages ((.Net) Core)

Active Server Pages rozpoczął życie jako zamknięty język Microsoftu do programowania stron internetowych. Był on dość bezpośrednio porównywalny do PHP, ale działał w środowisku Windows Server. Został on zastąpiony przez ASP.net. Który teraz został zastąpiony przez ASP.NET Core. Te dwa ostatnie są obecnie językami open-source, podobnie jak PHP. A ja osobiście nigdy nie napisałem ani odrobiny ASP, w żadnej odmianie.

Wspierałbym ASP, gdybym używał i kochał serwery Microsoftu. W przeciwnym razie, daj mi PHP, proszę. Rozmiar i skala społeczności nie są tak naprawdę porównywalne.

Should I Use Ruby or PHP?

Ruby, a konkretnie Ruby on Rails, był bardzo popularny dekadę temu. Ruby jest wciąż bardzo lubianym językiem, który w moich oczach jest o wiele bardziej elegancki niż PHP. To powiedziawszy, jego społeczność jest mniejsza. I mam wrażenie, że Ruby przestał być „gorącym językiem” (został zastąpiony w tej roli przez JavaScript). Ruby jest piękny i jest w nim wystarczająco dużo dobrych ludzi, że nie unikałbym go z tego powodu. Ale zatrudnianie osób już znających ten język będzie trudniejsze niż w przypadku PHP. (Chociaż uważam, że umiejętności przeciętnego programisty Rubiego są prawdopodobnie wyższe niż PHP.)

Python vs PHP: Which is Better?

Ostatnim językiem, który ma sens w porównaniu jeden do jednego z PHP jest Python. Python jest używany w wielu innych kontekstach niż tworzenie stron internetowych (jest również bardzo popularny w statystyce i analityce danych). Jest to również jeden z bardziej stabilnych i dobrze zaprojektowanych języków, w powszechnej opinii.

Python (podobnie jak Ruby i JavaScript) jest nieco trudniejszy do uruchomienia na serwerze WWW niż PHP. Ale jest to ładniejszy język i bardziej różnorodnie używany niż PHP. Jest to jeden z języków, nad którym mocno bym się zastanawiał, czy preferować PHP, wszystkie inne rzeczy (dostęp do zewnętrznej biblioteki, dostęp do ekspertyzy, etc) są równe.

PHP vs Go? Scala? Java? etc?

Wspomniałem na górze, że było wiele podobieństw z wszystkimi poprzednimi bezpośrednimi porównaniami języków, które zrobiłem. Ale jeśli porzucimy te ograniczenia, istnieje mnóstwo innych języków, które moglibyśmy porównać. Tak więc, aby krótko dotknąć kilku:

  • Java jest ogromnie popularna i bardzo szybka. Jest używana do budowania aplikacji na Androida, aplikacji desktopowych i aplikacji internetowych. Nie jest ona jednak dynamicznie typowana, co daje lepsze gwarancje wydajności, ale gorszą łatwość programowania webowego.
  • Go jest nowszym i rozwijającym się językiem wspieranym przez Google. Skupia się na serwerach internetowych, ale jest nieco niższego poziomu (bardziej jak C) niż PHP. Jest szybki, ale społeczność praktyków jest mniejsza.
  • Scala jest popularnym językiem działającym na JVM (kompatybilnym z Javą), który wciąż wydaje się zyskiwać na popularności. Jest bardziej elegancko zaprojektowany niż PHP, ale nie mogę powiedzieć o nim wiele więcej z pewnością siebie.

Znowu, to wszystko, co czuję, że mam wystarczający kontekst, aby dotknąć. Ale jest jeszcze więcej opcji, które możesz rozważyć. Ale to już koniec konkretnych alternatyw, które rozważę w stosunku do PHP.

Programming Language Choice is About Context

Mając na uwadze te porównania, dlaczego używać PHP? Wymieniłem już kilka rzeczy, które są złe w PHP, a niektóre z nich odczuwam regularnie. Niespójność funkcji wyszukiwania w stogu siana i igieł gryzie mnie co najmniej raz w miesiącu, gdy szybko robię coś bez autocomplete.

Dla prawdziwego i kompletnego projektu od podstaw, bez potrzeby współdziałania z jakimkolwiek innym systemem, lub potrzeby działania w dowolnym środowisku, bez istniejącego doświadczenia w zespole, zastanowiłbym się dość głęboko, zanim poleciłbym PHP. Python naprawdę przemawia do mnie w takim scenariuszu. Ale to jest wiele zastrzeżeń. Istnieją świetne powody, dla których nawet świeży projekt od podstaw powinien być napisany w PHP.

Każdy nowoczesny język webowy może pomóc Ci w tworzeniu dobrych stron i aplikacji. Każdy z nich ma też cechy, które nie są idealne. PHP, jak każdy z nich, wymaga od Ciebie prawdziwego zrozumienia jego kompromisów w Twoim projekcie, abyś mógł określić, czy ma on dla Ciebie sens, czy też nie. Jednak dla mnie osobiście, nadal uważam, że można być – jak to ujął Keith Adams w świetnym wykładzie – „szokująco produktywnym w PHP.”

Jeśli masz zespół programistów Pythona, napisz swoją aplikację w Pythonie. Jeśli masz współzałożyciela, który zna Javę, napisz swój SaaS w tym języku. Względy personalne dotyczące oprogramowania powinny zawsze przeważać nad językowymi.

.