Kā PHP izstrādātājs es joprojām atceros PHP4 dienas, pirmo (neobligāto!) GC implementāciju PHP5, un es pārdzīvoju PHP7 parādīšanās un tās sekas.
Gadu gaitā daudzi cilvēki man ir vaicājuši, kāpēc es uztraucos. programmēšana PHP, un daudzus gadus esmu kā mantru dzirdējis divus argumentus, kāpēc man vajadzētu pārtraukt un sākt rakstīt komerciālu programmatūru tādās valodās kā Java vai C#. Šodien es grasos citēt šos argumentus un mēģināt mainīt savu attieksmi pret PHP vismaz nedaudz. Jā, šī raksta virsraksts ir absurds.
#1 PHP mirst
PHP mirst gadu no gada. Kādreiz vispopulārākais tīmekļa vietne valoda tagad zaudē popularitāti ar katru mēnesi, galvenokārt uz JavaScript.
Kad aplūkojat skaitļus, patiesība ir ļoti skumja! Pēdējā gada laikā, PHP zaudēja satriecošu 1,6% daļu no tās kā tīmekļa backend valodas.
Ja PHP turpina šo lejupslīdošo tendenci, 18 gadu laikā PHP samazināsies zem 50% no backend Web tehnoloģijas!
Bet labi, joki malā - lai gan skaitļi ir reāli. kā ziņo W3CTechs.
Pirmais pieminēt, ka PHP mirst, ir atrodams tīmeklī kopš 2013. gada. Toreiz programmatūras Gunslinger publicēts raksts (kuru, starp citu, es ļoti iesaku!), sakot, ka PHP nomirs, jo tas neatbalsta ilgstošus procesus un tam trūkst asinhronitātes.
Un tas ir fakts, PHP tam nebija radīts!
ja tev ir tikai āmurs, viss izskatās kā nagla.
Bet, atgriežoties pie skaitļiem, aplūkosim pagājušā gada rādītājus. dati vietnē PHP Packagist pakotnēs izmantotās versijas. Jaunākie dati ir pieejami avota vietnē packagist.org
Vai tā ir mirstošas programmēšanas valodas jauno versiju pieņemšanas līkne?
Ja ar to nepietiek, pārbaudīsim mūsu "PHP mirstības koeficientu" salīdzinājumā ar citām valodām.
Dati analīzei ir ņemti noGitHut 2.0, kas ģenerē diagrammu par to, cik daudz git push katrai valodai Github kopš 2012. gada, saskaņā ar shēmu - "Valodu procentuālais sadalījums līnijveida diagrammā parāda 10 populārākās (vai manuāli atlasītās) valodas kopš 2012. gada/ 2. ceturkšņa".
Kā redzat PHP kā arī citas populāras valodas, piemēram, Rubīns, C/C++, Python pēdējos gados ir piedzīvojušas ievērojamu popularitātes kritumu Github, tomēr ir vērojama augšupejoša tendence, un mēs sagaidām, ka pēc ilgāka sānsoļa perioda tās atgriezīsies augstās pozīcijās. (tas nav padoms par ieguldījumiem)
Sākotnējais hype tajā pašā diagrammā redzams arī Javascript valodas lietojums. Secinājumus un to analīzi es jau atstāju jums, dārgais lasītāj.
Bet, no otras puses, mirstošai valodai nevajadzētu palielināt darba piedāvājumu skaitu programmētājiem, vai ne?
Šī raksta rakstīšanas brīdī es varu izvēlēties no 171 darba piedāvājuma vienā no vadošajiem darba portāliem. Polija, no kurām 50 ir paredzētas jauniešiem. PHP mirst, vai ne?
Un, runājot par naudu... vai zinājāt, ka PHP un tā avots kods kopš 2021. gada novembra uztur neatkarīga atklātā pirmkoda kopienaPHP fonds kas maksā ievērojamus naudas līdzekļus. atvērtā pirmkoda izstrādātājiem par ieguldījumu php-src?
Atšķirībā no citām valodām un ietvarstruktūrām, kas bieži vien pieder lieliem uzņēmumiem, izstrādes kodols. komanda tiek maksāts tieši no fonda konta, kas tiek uzturēts no privātuzņēmumu, piemēram, JetBrains un Symfony Corp, iemaksām, kā arī nonelieli ieguldījumi no individuāliem izstrādātājiem..
Atvērtā koda programmatūra visā tās krāšņumā!
#2 PHP ir briesmīgs
Jā, šis arguments vienmēr izskan no to izstrādātāju mutes, kuri ir iepazinuši stipri tipizētas, salīdzināmas valodas. Aplūkojot diagrammu ar datiem, kas savāktiStackOverflow aptauja no 2021. gada, var redzēt, ka 10 834 respondenti, kas ir gandrīz 60% no kopējā respondentu skaita, atzina PHP par "briesmīgu".
Kā vecās skolas PHP programmētājs, es saprotu, kāpēc tas tā ir. Es uzreiz atceros klasisku piemēru par atmiņas problēmām. PHP:
<?php
klase FOO {
public $f;
}
klase BAR {
public $f;
}
while(1) {
$a = new FOO();
$b = new BAR();
$a->f = $b;
$b->f = $a;
print "Atmiņas izmantošana: " . number_format(memory_get_usage(true)) . " dzīvoklis";
unset($a);
unset($b);
}
Nespeciālistiem - jā, iepriekš minētais kods izraisa atmiņas kļūdu. Un vēl. Sākot ar idiotisko metožu nosaukšanu un pilnīgu loģikas trūkumu to parametru secībā (jā, mums visiem patīk str_ un masīvs_) līdz PHP slavenākajai kļūdai T_PAAMAYIM_NEKUDOTAYIM - PHP ir pilns ar veco versiju dīvainībām un trūkumiem. Tas nenozīmē, ka tas, ko mēs dzirdējām par PHP pirms dažiem gadiem, joprojām ir taisnība. Valoda ir piedzīvojusi milzīgu metamorfozi, un šodien es ar prieku aplūkoju savas objektu definīcijas:
readonly klase NotificationEvent
{
publiskā funkcija __construct(
public string $context,
public User $user,
public string $body,
public DateTime $issuedAt,
) {}
}
Turklāt PHP ekosistēma ir ievērojami paplašinājies, un tagad mums ir neticamas iespējas radīt labu, labi tipizētu un pārbaudītu kodu. Mēs varam izmantot Symfony izstrādāt DDD lietojumprogrammas. bez lielām problēmām, un mēs varam apiet PHP sinhronitātes problēmu, izmantojot ziņojumu kopni.
Un, lai gan es pats nedomāju, ka PHP ir piemērots, lai radītu ilgstošu backend procesus un ir milzīgas veiktspējas problēmas, kad runa ir par valsts sinhronizāciju, Esmu arīizveidoja PHP konsoles spēli izmantojot Symfony + Docker ar savām rokām kā piemēru tam, ka PHP joprojām var izmantot netradicionāli.
Vēl viens PHP priekšrocība ir tās zemā ienākšanas barjera jauniem izstrādātājiem. Divu populāru karkasu dokumentācijas Symfony unLaravel un PHP dokumentācija pati par sevi ir pietiekama, lai ar tās palīdzību iekļūtu backend pasaulē. Pasaulē, kas nav perfekta PHP, bet ļauj daudz ko. Izmantojot papildu bibliotēkas, piem. Laravel Nova mēs varam izveidot gandrīz jebkuru mūsu sistēmas komponentu, izmantojot tikai divas komandas.
Afterglow
Vai PHP mirst?
Nē, bet tai ir problēmas ar tēlu, un ir daudz jāstrādā, lai to uzlabotu. Mums, programmētājiem, šis darbs ir jāveic, mācot jauno paaudzi un nododot labāko praksi rakstu, bibliotēku un padomu veidā.
Kā valoda, kas ir bijusi tirgus divdesmit gadus, kas jau ir pārdzīvojis vairāk nekā vienu hype (atceraties Objective-C?) Es domāju, ka tā tiks galā un atradīs savu nišu. Un kas zina, varbūt manas prognozes izrādīsies pareizas un pēc diviem gadiem PHP 10.x atkal piedzīvos uzplaukumu?