Miért utálják ilyen sokan a PHP nyelvet?
Rengeteg "közvéleménykutatásban látszik, hogy az egyik legkevésbé szimpatikus a széles körben használt nyelvek közül.
Mi ennek az oka?
forrást is tudsz csatolni?
a PHP elég elterjedt nyelv, igaz vannak azóta újabb technológiák amikkel pótolható, de még így is elég népszerű
1..: Beírod google-be hogy "PHP hate" és kijön párszáz oldal.
Kíváncsi vagyok a GYK-s embereke véleményére is hogy mi lehet ennek az oka.
Például ez a diagramm sokmindent elárul:
Ez egy összetett probléma. A PHP egy elterjedt, fejlett szerver oldali scriptnyelv, számos nagyon jó keretrendszer van hozzá, valamint a sebessége és skálázhatósága is jó (legalább is a 7-es verziónak).
A közútálat főként két ok miatt létezik. Az egyik, hogy a PHP egy könnyen tanulható nyelv. Ez azt eredményezi, hogy rengetegen programoznak benne, viszont mivel már az elején sikerélményük van és úgy néz ki, hogy "minden működik", így kevesen vannak, akik tényleg mélyre ásnak és kitanulják a PHP bonyolultabb részét is, pl OOP, absztrakciók, interface-ek, stb. Az eredmény az, hogy rengeteg rossz minőségű, elavult, konvenciókat nem követő kód van. Ha pedig valaki, aki tényleg ért a PHP-hez megörököl egy ilyen kódot, az igencsak szidni fogja az előző "programozót" és a PHP-t is, mert kínszenvedés karban tartani. Én is láttam már olyan kódot, hogy a fülem kettéállt: pl saját függvény a return helyett globális változóban adta vissza az értéket.
A másik ok, hogy a PHP kiadások között elég nagy "lyukak" voltak, több év is eltelt egy-egy új verzió között és sokáig hiányoztak a PHP-ből olyan dolgok, amik más nyelvekben megvoltak, pl. változók típusossága, kivételkezelés, namespace, stb. Emiatt kissé lenézett, "alacsonyabb rendű" nyelvként könyvelték el egyesek. Ez viszont mára már nem igaz, de a régi beidegződéseket nehéz levetkőzni.
Mindenesetre a PHP alkalmas nagy és bonyolult rendszerek fejlesztésére, lásd Facebook.
"PHP hate"
Ha beírod, hogy meztelen nagyi, akkor meg egy rakás pucér idős nőt fogsz találni, na és?
Én is azt gondoltam sokáig, hogy különösen nincs nagyobb baj a PHP-vel, nyilván minden nyelvnek megvannak a maga hülyeségei és sajátosságai, ha az ember megtanulja ezeket, akkor nincs gond. Aztán olvastam egy írást: [link]
Volt, amiről tudtam.
Volt, amire ebből az írásból jöttem rá, és nem szoktam se indokolatlanul káromkodni, sem magamban beszélni, de hangosan kicsúszott a számon egy b+. (Pl. string összehasonlítások használhatatlansága, ami komolyabb galibák forrása lehet, ha nem tud az ember róla.)
Volt, amire meg azt mondtam, hogy nem értem, hogy nem tűnt fel, hogy mekkora káosz van ebben a nyelvben. (Pl. a függvények elnevezéseiben. Pedig itt még nem is működésről, tényleges kódról van szó, csak arról, hogy milyen nevet adunk egy függvénynek.)
És itt vannak komolyabb problémák, ami nem „Basztok rendesen tanulni, és ezért nem szeretitek” kérdése, nem a kódnak és nem a programozónak, hanem magának a programnyelvnek a hibája. Mert fából készült vésővel a legtehetségesebb szobrász sem tud tisztességes márványszobrot faragni. Vagy ha mégis, nem a leghatékonyabb módja lesz a szobrászatnak, és nem fogja dicsérni a vésőt, akkor sem, ha végül is tudott vele alkotni.
A fent becitált írás elolvasása óta próbálom mantrázni magamnak, hogy a PHP nem egy életveszélyes tákolmány. És vannak pillanatok, amikor el is hiszem, de ezek hamar tovaszálló pillanatok. Jó, nyilván használom a PHP-t, meg azt hiszem valahol szeretem továbbra is, de már nem tudok úgy nézni rá, mint az írás elolvasása előtt. De én régóta weben utazom, aki mondjuk egy C# nyelv után szembesül egy PHP-val, megértem, ha bottal böködni sincs igazán kedve, vagy a nyelv használata során kap idegbajt.
És az a durva, hogy a világ egyre inkább webalkalmazások irányába megy el. A szerver oldalon a legjellemzőbb a PHP, ami egy tákolmány. Kliens oldalon meg a Javascript, ami egy tákolmány. A HTML, CSS is egy tákolmány. Én meg lassan már csak ezekhez értek. Innen már csak azon csodálkozom, hogy vannak egyáltalán 100 sornál hosszabb, működőképes kódok…
6.:
Pontosan ez az amit én sem értek igazán.
Ahogyan írtad a server oldalon a leggyakoribb nyelv a PHP, messze number one és még egy jódarabig az is marad.
A hibái amiket leírtál mindig is megvoltak.
De felteszema kérdést:
Az utóbbi 20-30 évben nem jutott eszébe senkinek kijavítsa és "modernizálja a nyelvet"? Szerintem jó üzlet lenne:
Nem hinném hogy a világon csak, mi vettük észre hogy a PHP-vel gondok vannak...
#6:
Elolvastam a cikket. Oké, a PHP gyenge típusosságát és az explicit típuskonverziót én is utálom, de azért egy jó része a cikkben említett problémáknak elkerülhető megfelelő kóddal.
Pl:
$arg = 'T';
$vehicle = ( ( $arg == 'B' ) ? 'bus' :
( $arg == 'A' ) ? 'airplane' :
( $arg == 'T' ) ? 'train' :
( $arg == 'C' ) ? 'car' :
( $arg == 'H' ) ? 'horse' :
'feet' );
echo $vehicle;
Ehelyett a förmedvény helyett minden épeszű programozó egy switch-case blokkot használna. Oké, tényleg furcsa, hogy "horse" lesz az eredmény, de akkor is.
> Ahogyan írtad a server oldalon a leggyakoribb nyelv a PHP
Természetesen a PHP előtt is volt élet. A szerver oldali programozást jellemzően CGI alapon működött, jellemzően Perl, Python, esetleg C nyelveken. A PHP nem nyelvnek indult, hanem Perl nyelven írt makrók gyűjteményeként. És ez az egyik oka sikerének: könnyű elsajátítani az alapjait, ami más nyelven 5-10, vagy akár 20 soros kód lenne, arra a PHP-ban van egy külön függvény, hiszen pont az volt a eredeti cél, hogy a gyakran használt feladatokra legyen egy egyszerű makró.
Emiatt is az alapjainak az elsajátítása könnyű. Sok kezdő programozó a PHP-vel kezdett megismerkedni, és ha már ezzel kezdett dolgozni, ebben is mélyedt el. Ez is a sikerének a kulcsa.
Aztán van itt egy öngerjesztő folyamat, mivel a PHP a legsikeresebb, ezért sokkal több tutorial, segédanyag, fórum, több kódgyűjtemény, lib, framework áll rendelkezésre. Az elterjedtség oka tehát idővel maga az elterjedtség, ez egy öngerjesztő folyamat.
> Az utóbbi 20-30 évben nem jutott eszébe senkinek kijavítsa és "modernizálja a nyelvet"?
Rendet lehetett volna vágni mondjuk a függvények elnevezésében látható káoszon. Csak ennek az ára a kompatibilitás elvesztése. Ha az strpos a következő PHP verzióban str_pos lesz, akkor a régi kódokat lehet újraírni. Nézd meg, mi történt a mysql függvényekkel. Előbb elavultnak lettek titulálva. De elavult, vagy sem, egy csomóan még megszokásból ezeket használták, mert lehetett, mert ezt szokták meg. Aztán kivezették a nyelvből. Aztán az 5.5-ös PHP-től ezek E_DEPRECATED errort eredményeztek. A következmény? Számos olyan weboldal íródott, amit egyszer megírtak, majd gazdátlan lett. A régi kód egy saláta, azt egy új fejlesztő nem hajlandó felújítani, egy új rendszer megírása meg idő, pénz. És bár az 5.4-es verziónak lassan 5 éve volt az utolsó ráncfelvarrása, három éve jelent meg a PHP 7.x, a PHP 5.4 támogatása 2015 szeptemberében végleg megszűnt, biztonsági javítások sem érkeznek hozzá, ennek ellenére számos szerveren még mindig 5.4-es PHP fut, hogy a nyolc éve drágán megírt webshop működjön, mert azóta nem volt még pénz/idő írni/íratni egy újat.
Vagy volt a PHP-ben egy „jó ötletnek tűnt” funkció, a register_globals. De kiderült, hogy annyira nem jó ötlet, az 5.3-as PHP-től elavult, de még mindig van az kretén – már elnézést –, aki bekapcsolja egy 5.4-es PHP-ben.
Azt sem szabad elfelejteni, hogy ami az egyik oldalról olyan következetlenség, hülyeség, ami adott esetben bugok, biztonsági rések forrása lehet, az a másik oldalról meg lehet feature, amit lehet, hogy valaki kihasznált. Egy ilyen jellegű változtatás bár meg tudna oldani bizonyos problémákat, számos helyen pont ez lesz az új probléma forrása.
Az elképzelhetőbb út, hogy a PHP megmarad olyannak, amilyen, és a helyére egy új programnyelv fog lépni idővel. Ennek ellenére történtek kísérletek a PHP megreformálására is. Ott van pl. a Facebook által létrehozott Hack nyelv, ami számos előrelépést tett (pl. erősebb típusosdeklaráció), számos új, hiányolt lehetőséget hozott (többmagos processzor támogatás, asszinkron támogatás, előfordító). Elvileg ugyanúgy könnyen tanulható, számos téren kompatibilis és amúgy vegyíthető is a PHP-vel, de valahogy nem tudott elterjedni.
Kb. hasonló ez ahhoz, ahogy a javascript fölé próbáltak új réteget, vagy komplett úgy nyelvet tenni, pont azzal a céllal, hogy idővel ez legyen az új scriptnyelv, ami már önálló nyelv, és nem puszta szintaktikai máz, ami végül javascriptre fordul. Lásd: TypeScript, CoffeeScript, Dart, de akár egy kicsit ide tartozik a WebAssembly is. Ennek ellenére ezeknek a népszerűsége nem túl magas, és nem is nagyon növekszik.
~ ~ ~
Attól, hogy valami egyébként tulajdonképpen használható, és attól, hogy valami népszerű, attól még lehet igazán pocsék. Ha megnézzük az élet más területeit, gyakran a népszerűség fordítottan arányos a minőséggel. Ami minőségi, az kevesek érdeklődésére tart számot, ami meg népszerű, az nagyon sokszor gagyi.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!