Újabb bejegyzések
Legyünk túl rajta korán: A PHP egy furcsa és csúnya nyelv. Nem kivételesen gyors. Nem szép szintaktikailag. Nincs megfogalmazva a jó szoftverfejlesztési gyakorlatokról alkotott egyértelmű vélemény. És még mindig ez az, amin sok szoftvert írok. A nyilvánvaló kérdés: miért? Miért használjuk ma a PHP-t?
Ezeknek rengeteg jó oka van, a személyes idioszinkratikus preferenciákon túlmenően. Itt van a hely, hogy pontosan erre térjünk ki. Miért a PHP az általam választott nyelv a webfejlesztéshez?
Mi a PHP?
“Mi az a PHP?” Vagy gyakrabban “mi az a PHP?”. Röviden, a PHP egy webre készült programozási nyelv, amely a C programozási nyelvből épül fel, és amely sajátos HTML-szerű címkéket (vagy szigetek) használ a kódjának tárolására. A PHP programozási nyelvet többnyire szerveroldalon használják, ami azt jelenti, hogy a webszerver szoftverén fut, amely szokás szerint a HTML-t fogja kiszolgálni a látogatóknak.
A PHP eredetileg a “Personal Home Page” rövidítése volt. Mivel ez elég alaposan korlátozta a nyelv általános használatának jelentését és kívánatos voltát, a nyelv ma már a “PHP: Hypertext Preprocessor”. Ezt nevezik rekurzív betűszónak (olyan név, amely tartalmazza a nevet). A kockák imádják őket.
Mire képes a PHP?
Mire használják a PHP-t? Alapvetően bármit, amit egy webkiszolgálón meg akarsz csinálni, megteheted a PHP-vel. Blogot készíteni? Aha. Teljes értékű szoftver mint szolgáltatás alkalmazást létrehozni? Abszolút. Írj egy kis szkriptet, amely néhány másodperc alatt feldolgoz néhány adatot? A PHP kiválóan alkalmas erre. Írjon egy bonyolult szkriptkészletet, amely véletlenül sikeres szoftverüzletté válik? A PHP-t sokszor használják így.
Ha nem bízol bennem, a PHP honlapja a következő felhasználási lehetőségeket sorolja fel:
- Szerveroldali szkriptek
- Kommandósori szkriptek
- Asztali alkalmazások írása
Nem biztos, hogy az utolsó pontra bátorítanám, de lehetséges. Az első kettő azonban gyakori és jó ok arra, hogy a PHP-t használjuk 2019-ben.
Ez elvezet egy fontos és megkerülhetetlen tényhez…
A PHP MINDENHOL
Egy csomó ok van arra, hogy ismerjük és szeressük a PHP-t, amelyek közül talán a leghatásosabb és legérvényesebb a következő: MINDENHOL használják és fut a weben. Az olcsó kis havi 3 dolláros tárhely-fiókodon Python vagy Ruby nyelven futtathatsz webes alkalmazást, ha körültekintően vásárolsz. De biztosan PHP-t fog futtatni. Ez azt jelenti, hogy bárhol számíthatsz rá.
És mivel mindenhol fut, és könnyű belekezdeni, sok nagyon népszerű szoftver PHP-ben íródott. A WordPress a legnagyobb és számomra legismertebb példa, de az olyan eszközök, mint a Joomla, a Drupal, a Magento, az ExpressionEngine, a vBulletin (igen, az még mindig létezik), a MediaWiki és még sok más, mind PHP-t futtatnak a szerveren.
És több PHP alkalmazás keretrendszer is van, mint ahányat csak meg tudsz rázni: Symfony, Zend, Laravel, Aura, CakePHP, Yii, és még a tiszteletre méltó CodeIgnitor is. Bizonyára szinte bármely más nyelv esetében is összeállítható egy hosszabb webes keretrendszerekből álló lista. Az olyan gyakran használt webes nyelvek esetében pedig, mint a Python, a Ruby vagy a Node/JavaScript, akár egy számszerűen versenyképes listát is összeállíthat. De a PHP-t futtató webhelyek puszta mennyisége óriási.
A WordPress büszkén büszkélkedik azzal, hogy az internet több mint 30%-át működteti. Még csak bíznod sem kell ebben a tényben ahhoz, hogy rájöjj, hogy az internet nagy része PHP-t használhat, ha ez a tény egyáltalán elképzelhetően igaz.
A PHP-nak van néhány nagyon jó tulajdonsága
Egyszerű dinamizmus van beépítve a PHP-be
A PHP szinte minden más nyelvnél könnyebben teszi a HTML megjelenítést és programozást. Tehát elég egyszerű a HTML-t PHP-re cserélni. Csak változtasd meg a file.html
-t file.php
-ra, adj hozzá egy kis dinamizmust néhány <?php
és ?>
tagen belül. A legtöbb webszerver már úgy van beállítva, hogy a többit elintézze helyetted. Ez annyira egyszerű, hogy szinte bárki belevághat anélkül, hogy ennél sokkal több programozási ismeretre lenne szüksége. Mivel a PHP-vel olyan barátságos a fogak vágása, rengeteg rossz kódot írnak benne.
Mihelyt rájössz, hogy a legtöbb rossz PHP-t kezdő programozók írják, a világban a PHP-vel szembeni félelem és gyűlölet nagy része egy másik alapvető problémából fakad: a PHP-nak soha nem volt nagyszabású tervezete, amely egy látnoki elképzeléssel rendelkezett volna arról, hogy miért éppen ez a tökéletes nyelv a webszerverhez. Ehelyett széleskörű együttműködés eredménye egy nyílt folyamaton keresztül, amely olyan olvasztótégelyként szolgál, amelyen minden jó ötletnek – és néhány rossznak is – át kell mennie.
Az objektumorientáltság (nagyszerű) csomagkezeléssel most a PHP normája
És a rossz ötletek is átjuthatnak ezen a tégelyen. A legnépszerűbb példa erre, hogy a PHP 5.3 – amelyet külön-külön széles körben a PHP első modern verziójának tartanak – bevezette a goto
utasítást, amelyet általában vagy gúnyolnak, vagy könnyű hibaforrásnak tartanak.
Hasonlóan rossz dolgok a PHP-ban, amelyek a nyelv fejlődésének folyamatából adódtak: az objektumorientáltságot először hibás és korlátozott koncepcióként valósították meg, a szabványkönyvtár tele van következetlen nevekkel és paraméterrendezéssel, és (egy nemrég nagy figyelmet kapott példában) a ::
tokent az angolul beszélők számára megfejthetetlenül hívja az értelmező: T_PAAMAYIM_NEKDOTAYIM
.
De ma már az OOP teljesen megvalósult a PHP-ben. Kevés nyelvben van annyi Java-szerű OOP gyakorlat, mint a PHP-ben. Ráadásul a Javával ellentétben a PHP-nak egyetlen és széles körben kedvelt csomagkezelője van, a Composer. Ez nagyon jó volt, és így a PHP-ben más, jól megírt és karbantartott könyvtárak könnyű behúzása nem megalkuvás.
A PHP sokkal gyorsabb lett
De ezeket a dolgokat mondta, a PHP érdekes módon fejlődik. Egyre inkább egy eléggé teljes értékű Java-szerű (jobb vagy rosszabb) objektumorientált nyelvvé válik. És a Javához hasonlóan egyre könnyebb absztrakciókat kap a funkcionális programozáshoz – ami vitathatatlanul a jelenlegi divat. Emellett egyre több a fantasztikus eszközkészlet – a PHP imádja a Composert, és nem véletlenül -, és dicséretes erőfeszítéseket tesz arra, hogy ezek a nagy nyílt forráskódú PHP-projektek egy kicsit jobban együttműködjenek.
Ó, és ne feledkezzünk meg a jelenlegi forróságról sem: a PHP sebességnövekedése a PHP 7-es kiadási sorozatban. Ezt széles körben úgy tartják, hogy a Facebookból kijövő HHVM kezdeményezte. Egy rövid ideig fennállt a veszélye annak, hogy a HHVM sebessége megtöri a PHP közösséget. De nem így történt. Ehelyett a PHP csak annyival gyorsabb lett, hogy az emberek többnyire elfelejtették, hogy a HHVM létezik.
A PHP-nak hatalmas közössége van; tanulható
Ha arról döntesz, hogy milyen menő új technológiát használj, szerintem gyakran túl kevés figyelmet kap az, hogy milyen a nyelvvel megbarátkozni. Milyen a PHP-t megtanulni? A PHP oktatóanyagok gyakoriak és gyakran elég jók.
A PHP népszerűségének egyik hátulütője, hogy találhatsz néhány nem túl jó oktatást olyan emberektől, akik nem tudnak eleget arról, hogy milyen is valójában az eszköz használata. Vagy akik utoljára olyan “legjobb gyakorlatokat” követtek, amelyek egy évtizeddel ezelőtt voltak aktuálisak. De összességében ez elég ritka ahhoz, hogy szerintem ez ne tántorítson el. Rájönni, hogy egy gyakorlat, amit néhány hónapja használsz, nem nagyszerű, ritka, és nem jelent hatalmas problémát.
Közös összehasonlítások a PHP-vel
Egy csomó programozással kezdő ember nagyon általános nyelvek szembeállítását keresi. Szóval, itt jönnek ezek. Az összes nyelvnek, amit itt leírok, a következő közös vonásai vannak a PHP-vel:
- Nyílt forráskódúak. Ez azt jelenti, hogy a mögöttes nyelvet ingyen (ingyen) használhatod, és ha akarod, megnézheted és megértheted a mögöttes programot.
- Gyakran használják őket webfejlesztésre. Elég egyértelmű, ezeket a nyelveket sokat használják webfejlesztéshez. Néhányat ezen a helyszínen kívül is széles körben használnak, de nem mindet.
- Ezek magas szintű, lazán és dinamikusan tipizált nyelvek. Ez azt jelenti, hogy egy változó megváltoztathatja a típusát, és hogy a változó definiálásakor nem kell meghatározni, hogy milyen típusú dolgokat (számok vs. karakterláncok vs. objektumok stb.) fog tárolni. Ezt általában előnyben részesítik a webes programozásban, de nem mindenhol.
- A közösségeik jó méretűek vagy jobbak. Rengeteg érdekes nyelv van, amelyek rendelkeznek a fent felsorolt tulajdonságokkal, de nincs nagy gyakorlóközösségük. Ezeket itt most félreteszem.
Miért használjuk a PHP-t? Miért nem JavaScript?
A PHP-t talán a legfontosabb nyelv, amellyel összehasonlíthatjuk, a JavaScript. A modern fejlesztés megköveteli, hogy minden projekt legalább egy kis JavaScriptet használjon a kliensoldali fejlesztéshez és interaktivitáshoz. A Node-dal viszonylag egyszerűvé vált a JS használata a szerveren is. Az ötlet, hogy ugyanazt a nyelvet “izomorfikusan” használjuk a kliensen és a szerveren, nagyon vonzó.
A PHP-hoz hasonlóan a JavaScript is egy eklektikus és néha csúnya nyelv, rengeteg hibával és “gubancokkal”. De a JavaScript az elmúlt évtizedben óriási fejlődésen ment keresztül, így a mellette szóló érvek valósak. Miért válassza a PHP-t a JavaScript helyett? Ha van szakértelme vagy szüksége van PHP-könyvtárak használatára. Egyébként szerintem a JavaScript jobb választás lehet.
PHP vs Active Server Pages ((.Net) Core)
Az Active Server Pages a Microsoft zárt forráskódú webes programozási nyelveként indult. Eléggé közvetlenül hasonlított a PHP-hoz, de Windows Server környezetben futott. Ezt váltotta fel az ASP.net. Amit mostanra az ASP.NET Core váltott fel. Ez utóbbi kettő ma már nyílt forráskódú nyelv, akárcsak a PHP. És én személy szerint soha nem írtam egy csepp ASP-t sem, semmilyen változatban.
Az ASP-t akkor részesíteném előnyben, ha Microsoft szervereket használnék és szeretnék. Ellenkező esetben kérem a PHP-t. A közösségek mérete és nagyságrendje nem igazán hasonlítható össze.
Ruby-t vagy PHP-t használjak?
A Ruby, pontosabban a Ruby on Rails egy évtizeddel ezelőtt nagyon népszerű volt. A Ruby még mindig egy nagyon kedvelt nyelv, ami az én szememben sokkal elegánsabb, mint a PHP. Ennek ellenére a közössége kisebb. És úgy érzem, hogy a Ruby már nem a “menő nyelv” (a JavaScript váltotta fel ebben a szerepben). A Ruby gyönyörű, és van elég jó ember, aki ért hozzá, ezért nem kerülném el emiatt. De a már jártas emberek felvétele továbbra is nehezebb lesz, mint a PHP-ban. (Bár szerintem egy átlagos Ruby fejlesztő képzettsége valószínűleg magasabb, mint ugyanez a PHP esetében.)
Python vs PHP: Melyik a jobb?
Az utolsó nyelv, amelynek egy az egyben van értelme a PHP-vel való összehasonlításban, a Python. A Pythont a webfejlesztésnél sokkal több kontextusban használják (a statisztikában és az adatelemzésben is nagyon népszerű). Emellett az egyik legstabilabb és legjobban megtervezett nyelv a közmegegyezés szerint.
A Python (akárcsak a Ruby, és a JavaScript) egy kicsit nehezebben futtatható webszervereken, mint a PHP. De szebb nyelv, és változatosabban használják, mint a PHP-t. Ez az egyik olyan nyelv, amit nehezen gondolnék meg, hogy előnyben részesítsem a PHP-vel szemben, ha minden más dolog (külső könyvtárhoz való hozzáférés, szakértelem felvétele stb.) egyenlő.
PHP vs Go? Scala? Java? stb?
Az elején említettem, hogy sok a hasonlóság az összes korábbi közvetlen nyelvi összehasonlításommal. De ha ezeket a megkötéseket elhagyjuk, akkor rengeteg más nyelvet is össze tudnánk hasonlítani. Tehát, hogy röviden kitérjek néhányra:
- A Java rendkívül népszerű, és nagyon gyors. Android alkalmazások, asztali alkalmazások és webes alkalmazások készítésére használják. Bár nem dinamikusan tipizált, ami jobb teljesítménygaranciákat biztosít, de rosszabb a webes programozás egyszerűsége.
- A Go egy újabb és egyre növekvő, a Google által támogatott nyelv. Webszerverekre koncentrál, de valamivel alacsonyabb szintű (inkább C-hez hasonló), mint a PHP. Gyors, de a gyakorlóközösség kisebb.
- A Scala egy népszerű JVM-en futó (Java-kompatibilis) nyelv, amelynek népszerűsége még mindig növekedni látszik. Elegánsabban van megtervezve, mint a PHP, de sok mást nem tudok róla magabiztosan mondani.
Még ennyi, úgy érzem, elég kontextusom van ahhoz, hogy hozzányúljak. De van még több lehetőség is, amit megfontolhatsz. De itt a vége azoknak a konkrét alternatíváknak, amelyeket a PHP-vel szemben megvizsgálok.
A programozási nyelvválasztás a kontextusról szól
Az összehasonlítások ismeretében miért használjuk a PHP-t? Felsoroltam néhány dolgot, ami rossz a PHP-ben, és néhányat rendszeresen érzem is. A keresési funkciók tű és szénakazal ellentmondásossága havonta legalább egyszer megharap, amikor gyorsan csinálok valamit automatikus kitöltés nélkül.
Egy valódi és teljes zöldmezős projekt esetében, ahol nincs szükség semmilyen más rendszerrel való együttműködésre, vagy bármilyen tetszőleges környezetben való futtatásra, ahol nincs meglévő szakértelem a csapatban, elég mélyen elgondolkodnék, mielőtt a PHP-t ajánlanám. A Python nagyon tetszik nekem ebben a forgatókönyvben. De ezek nagyon sok fenntartás. Nagyszerű okok szólnak amellett, hogy még egy friss, zöldmezős projektet is PHP-ben írjunk.
Minden modern webes nyelv segíthet jó weboldalak és alkalmazások készítésében. És mindegyiknek vannak olyan tulajdonságai, amelyek nem ideálisak. A PHP, mint bármelyik, megköveteli, hogy valóban megértse az Ön számára a projektjében rejlő kompromisszumokat, hogy eldönthesse, van-e értelme az Ön számára. De én személy szerint továbbra is úgy találom, hogy – ahogy Keith Adams fogalmazott egy nagyszerű előadásában – “megdöbbentően produktív lehet PHP-ben.”
Ha van egy Python-programozókból álló csapata, írja az alkalmazását Pythonban. Ha van egy társalapítója, aki ismeri a Javát, írja a SaaS-t abban. A szoftverek személyi szempontjainak mindig fontosabbnak kell lenniük, mint a nyelvi szempontoknak.