PHP 8.2: Co nowego?
Nowa wersja PHP jest tuż za rogiem. Jakie są nowe implementacje, o których powinieneś wiedzieć? Sprawdź ten artykuł, aby się dowiedzieć!
Jako programista PHP wciąż pamiętam czasy PHP4, pierwszą (opcjonalną!) implementację GC w PHP5 i przeżyłem _hype_ związany z pojawieniem się PHP7 i jego konsekwencjami.
Przez lata wiele osób pytało mnie, dlaczego zawracam sobie tym głowę programowanie w PHPi przez wiele lat słyszałem jak mantrę dwa powtarzające się argumenty, dlaczego powinienem przestać i zacząć pisać komercyjne oprogramowanie w językach takich jak Java lub C#.
Dzisiaj przytoczę te argumenty i spróbuję zmienić twoje nastawienie do PHP przynajmniej trochę. Tak, tytuł tego artykułu to absurdalny clickbait.
PHP umiera z roku na rok. Niegdyś najpopularniejszy język internetowy z miesiąca na miesiąc traci na popularności, głównie na rzecz JavaScript.
Gdy spojrzy się na liczby, prawda jest otrzeźwiająca! W ciągu ostatniego roku, PHP stracił oszałamiające 1,6% swojego udziału jako język zaplecza sieci.
Jeśli PHP kontynuuje ten trend spadkowy, w ciągu 18 lat PHP spadnie poniżej 50% backendowej technologii webowej!
Ale dobra, żarty na bok - chociaż liczby są prawdziwe jak donosi W3CTechs.
Pierwsza wzmianka, że PHP umiera można znaleźć w sieci od 2013 roku. Wtedy Software Gunslinger opublikował artykuł (którą przy okazji gorąco polecam!), mówiąc, że PHP umrze, ponieważ nie obsługuje długotrwałych procesów i ponieważ brakuje mu asynchroniczności.
I to jest fakt, PHP nie został do tego stworzony!
jeśli masz tylko młotek, wszystko wygląda jak gwóźdź
Wracając jednak do liczb - spójrzmy na zeszłoroczne dane dotyczące PHP wersje używane w pakietach Packagist. Najnowsze dane są dostępne na stronie źródłowej packagist.org
Czy jest to krzywa adopcji nowych wersji umierającego języka programowania?
Jeśli to nie wystarczy, sprawdźmy nasz "współczynnik zgonów PHP" w porównaniu z innymi językami.
Dane do analizy pochodzą zGitHut 2.0, który generuje wykres liczby git push
na język na Githubie od 2012 roku, zgodnie ze schematem - "Procentowy rozkład języków na wykresie liniowym pokazuje 10 najlepszych (lub ręcznie wybranych) języków od 2012/Q2".
Jak widać PHP jak również inne popularne języki, takie jak Ruby, C/C++, Python doświadczyły znacznego spadku popularności na Githubie w ostatnich latach, jednak istnieje tendencja wzrostowa i spodziewamy się, że po dłuższym okresie bocznym powrócą na wysokie pozycje. (nie jest to porada inwestycyjna)
Początkowy szum
dla języka Javascript można zobaczyć na tym samym wykresie. Wnioski i jego analizę pozostawiam już Tobie, drogi czytelniku.
Ale z drugiej strony - umierający język nie powinien zwiększać liczby ofert pracy dla programistów, prawda?
W chwili pisania tego artykułu mogę wybierać spośród 171 ofert pracy na jednym z wiodących portali pracy w Polsce. Polskaw tym aż 50 dla juniorów. PHP umiera, prawda?
A skoro mowa o pieniądzach... czy wiesz, że PHP i jego źródło kod jest utrzymywana od listopada 2021 r. przez niezależny Open Source społecznośćFundacja PHP który płaci znaczne pieniądze deweloperom OpenSource za wkład w php-src
?
W przeciwieństwie do innych języków i frameworków, które często są własnością dużych firm, rdzeń rozwoju zespół jest wypłacana bezpośrednio z konta fundacji, które jest prowadzone przez wpłaty od prywatnych firm, takich jak JetBrains i Symfony Corp, ale także przezniewielki wkład poszczególnych deweloperów.
Open Source w całej okazałości!
Tak, ten argument zawsze pada z ust programistów, którzy zapoznali się z silnie typowanymi, porównywalnymi językami.
Patrząc na wykres danych zebranych podczasAnkieta StackOverflow z 2021 r. widać, że aż 10 834 respondentów, co stanowi prawie 60% ogółu, uznało PHP za "straszny".
Jako stara szkoła Programator PHPRozumiem, dlaczego tak jest. Od razu przypomina mi się klasyczny przykład problemów z pamięcią w PHP:
<?php
class FOO {
public $f;
}
class BAR {
public $f;
}
while(1) {
$a = new FOO();
$b = new BAR();
$a->f = $b;
$b->f = $a;
print "Wykorzystanie pamięci: " . number_format(memory_get_usage(true)) . " bytesn";
unset($a);
unset($b);
}
Dla niewtajemniczonych - tak, powyższy kod powoduje błąd pamięci. A to nie wszystko. Od idiotycznego nazewnictwa metod i kompletnego braku logiki w kolejności ich parametrów (tak, wszyscy kochamy str_
i array_
) do najsłynniejszego błędu PHP T_PAAMAYIM_NEKUDOTAYIM
- PHP jest pełen dziwactw i wad starych wersji. Nie oznacza to jednak, że to, o czym słyszeliśmy PHP sprzed kilku lat jest nadal aktualna. Język przeszedł ogromną metamorfozę i dziś z przyjemnością przyglądam się moim definicjom obiektów:
readonly class NotificationEvent
{
public function __construct(
public string $context,
public User $user,
public string $body,
public DateTime $issuedAt,
) {}
}
Co więcej Ekosystem PHP ogromnie się rozwinęła i mamy teraz niesamowite możliwości tworzenia dobrego, wysoce typowego i dobrze przetestowanego kodu. Możemy używać Symfony do tworzenia aplikacji DDD bez większych problemów, a problem synchronizacji PHP możemy obejść używając Message Bus.
I choć sam nie uważam PHP nadaje się do tworzenia długotrwałych procesów backendowych i ma ogromne problemy z wydajnością, jeśli chodzi o synchronizację stanów, mam równieżstworzył grę konsolową PHP używając Symfony + Docker własnymi rękami jako przykład, że PHP wciąż może mieć niekonwencjonalne zastosowania.
Inny Zalety PHP jest niska bariera wejścia dla nowych deweloperów. Dokumentacje dwóch popularnych frameworków Symfony iLaravel i PHP Sama dokumentacja wystarczy, by z ich pomocą wejść do backendowego świata. Świat, który w PHP nie jest idealny, ale pozwala na wiele. Korzystając z dodatkowych bibliotek takich jak Laravel Nova jesteśmy w stanie stworzyć niemal każdy komponent naszego systemu za pomocą zaledwie dwóch komend.
Czy PHP umierający?
Nie, ale ma problem z wizerunkiem i wymaga wiele pracy, aby go poprawić. My, programiści, musimy wykonać tę pracę, ucząc nowe pokolenie i przekazując najlepsze praktyki w formie artykułów, bibliotek i wskazówek.
Jako język, który był na rynek przez dwadzieścia lat, który przetrwał już więcej niż jeden szum
(pamiętacie Objective-C?) Myślę, że sobie poradzi i znajdzie swoją niszę.
A kto wie, może moje przewidywania okażą się słuszne i PHP 10.x znów przeżyje boom za dwa lata?