Ohjelmointi

Node.js vs. PHP: Eeppinen taistelu kehittäjien mielenjaosta

Se on klassinen Hollywood-juoni: taistelu kahden vanhan ystävän välillä, jotka kulkivat eri tavoin. Usein kitka alkaa, kun toinen kaveri herättää kiinnostusta toisen kaverin sanattomaan alueeseen. Tämän elokuvan ohjelmointikieliversiossa Node.js: n käyttöönotto tekee kaverista leffaottelun: PHP ja JavaScript, kaksi kumppania, jotka kerran hallitsivat Internetiä yhdessä, mutta nyt huutavat sen kehittäjien mielen osaksi.

Vanhoina päivinä kumppanuus oli yksinkertaista. JavaScript käsitteli vähän selaimen yksityiskohtia, kun taas PHP hallitsi kaikkia palvelinpuolen tehtäviä portin 80 ja MySQL välillä. Se oli onnellinen liitto, joka tukee edelleen monia Internetin keskeisiä osia. WordPressin, Drupalin ja Facebookin välillä ihmiset tuskin pääsevät minuuttiin verkossa siirtymättä PHP: hen.

Sitten joku fiksu lapsi huomasi voivansa saada JavaScriptiä palvelimella. Yhtäkkiä ei ollut tarvetta käyttää PHP: tä seuraavan sukupolven palvelinpinoiden rakentamiseen. Yksi kieli riitti Node.js: n ja asiakkaalla toimivien kehysten rakentamiseen. "JavaScript kaikkialla" tuli joillekin mantra.

Tämän löydön jälkeen JavaScript on räjähtänyt. Node.js-kehittäjät voivat nyt valita jatkuvasti kasvavan valikoiman erinomaisia ​​kehyksiä ja rakennustelineitä: React, Vue, Express, Angular, Meteor ja paljon muuta. Luettelo on pitkä ja suurin ongelma on valita erinomaisista vaihtoehdoista.

Jotkut katsovat Node.js: n puomia todisteena siitä, että JavaScript voittaa ratkaisevasti, ja tätä näkemystä voidaan tukea runsaasti raakatietoja. GitHub kertoo, että JavaScript on suosituin kieli arkistokokoelmassaan, ja myös JavaScriptin suuteleva serkku, TypeScript, kasvaa nopeasti. Monet tyylikkäimmistä projekteista on kirjoitettu JavaScriptissä, ja monet suosituimmista hashtageista viittaavat siihen. Sillä välin PHP on pudonnut kolmannesta sijasta neljänneksi tässä listassa, ja se on luultavasti laskenut vielä enemmän lehdistötiedotteiden, tuotteiden julkaisun ja muiden voimakkaasti markkinoitujen hetkien määrässä.

Mutta hype heikkenee ja ohjelmistot voivat elää vuosikymmenien ajan. Suurin osa PHP-koodikannasta ei aio siirtyä, ja se palvelee edelleen suuria osia päivittäin lukemastamme tekstistä. Joidenkin arvioiden mukaan 40 prosenttia katsomistamme sivuista alkaa jossain muodossa PHP: llä. Osa tästä johtuu siitä, että PHP syntyy edelleen uudestaan. Viime vuosina PHP: tä käyttävien järjestelmien sisut on kirjoitettu kokonaan uudelleen. Se ei ole sama PHP-koodi, joka toimi isovanhempasi verkkosivustolla.

PHP: n zippy, juuri-in-time-kääntäjä tuottaa vastauksia nopeammin kuin koskaan samojen älykkäiden tekniikoiden ansiosta, jotka saivat aikaan Node.js-vallankumouksen. Nyt PHP 7.2 ja HHVM tarjoavat monia samoja älykkäitä lennon optimointeja, jotka V8 toi Chromelle ja Node.js: lle. Ei vain sitä, mutta HHVM: llä on Hack, älykäs PHP-murre, joka tarjoaa täyden tuen hienostuneille ohjelmointiominaisuuksille, kuten lambdoille, geneerisille tuotteille ja kokoelmille. Joten jos tarvitset näitä ominaisuuksia, sinun ei tarvitse etsiä täysipainoisempaa pinoa.

Tietysti loppua ei ole vielä kirjoitettu. Jokaiselle kooderille, joka puhuu Node.js: n puhtaudesta ja nuoruudesta sekä JavaScriptin yksinkertaisuudesta kaikkialla, on toinen, joka on tyytyväinen syvään koodipohjaan ja pitkään ymmärrettyyn PHP: n vakauteen. Voittako vanha koodaaja takaisin palvelinpuolen ylöspäin? Kaatuuko JavaScript vanhan ystävänsä saavuttaakseen maailmanvallan? Laita toinen popcornierä mikroaaltouuniin ja istu alas.

Missä PHP voittaa: Koodin sekoittaminen sisältöön

Kirjoitat mukana, kaatat ajatuksia verkkosivustosi tekstiin ja haluat lisätä prosessiin haaran, pienen if-then-lauseen, jotta se näyttää kauniilta esimerkiksi URL-osoitteessa olevan parametrin mukaan. Tai ehkä haluat sekoittaa tekstiä tai tietoja tietokannasta. PHP: n avulla avaat maagiset PHP-tunnisteet ja aloitat koodin kirjoittamisen muutamassa sekunnissa. Ei tarvita malleja - kaikki on malli! Ei tarvita ylimääräisiä tiedostoja tai monimutkaisia ​​arkkitehtuureja, vain ohjelmoitava logistinen voima käden ulottuvilla.

Missä solmu voittaa: Huolenaiheet erotetaan

Koodin sekoittaminen sisältöön on kainalosauva, joka voi lopulta lamauttaa sinut. Toki, on hauskaa sekoittaa koodi HTML-koodiin kaksi tai kolme ensimmäistä kertaa. Mutta pian koodikannastasi tulee sekava logiikka. Todelliset ohjelmoijat lisäävät rakenteen ja erottavat kosmeettisen kerroksen loogisesta kerroksesta. Uusille ohjelmoijille on puhtaampaa ymmärtää ja helpompi ylläpitää. Node.js: ssä käynnissä olevat kehykset rakentavat ohjelmoijat, jotka tietävät, että elämä on parempi, kun malli, näkymä ja ohjain ovat erilliset.

Missä PHP voittaa: Syvä koodikanta

Verkko on täynnä PHP-koodia. Suosituimmat sivustojen rakentamisalustat (WordPress, Drupal, Joomla) on kirjoitettu PHP: llä. Alustat eivät ole vain avoimen lähdekoodin, mutta myös useimmat niiden laajennukset. PHP-koodia on kaikkialla, ja se odottaa sinua lataamista, muokkaamista ja käyttöä varten.

Missä solmu voittaa: nykyaikaisempia ominaisuuksia

Toki on tuhansia upeita avoimen lähdekoodin PHP-tiedostoja, mutta jotkut ovat 12-vuotiaita WordPress-laajennuksia, jotka toivovat ja rukoilevat, että joku lataa ne. Jokaisessa Symfony-nykyaikaisessa versiossa on pölyinen, kauan unohdettu kirjasto, jota kukaan ei päivitä.

Kuka haluaa viettää tunteja, päiviä tai viikkoja apinoinnilla koodilla, jota ei ole päivitetty vuosia? Node.js-laajennukset eivät ole vain uudempia, vaan ne on rakennettu tietäen uusimmat arkkitehtoniset lähestymistavat. Ne ovat rakentaneet ohjelmoijat, jotka ymmärtävät, että nykyaikaisten verkkosovellusten tulisi siirtää suurin osa älykkyydestä asiakkaalle.

Ja vaikka JavaScriptillä on monia pieniä omituisuuksia, jotka ajavat hulluiksi, suurimmaksi osaksi se on moderni kieli, joka harjoittaa modernia syntaksia ja muutamia hyödyllisiä ominaisuuksia, kuten sulkemiset. Voit määrittää sen uudelleen ja laajentaa sitä helposti, jolloin tehokkaat kirjastot, kuten jQuery, ovat mahdollisia. Voit siirtää toimintoja esineiden ympärille. Miksi rajoittaa itseäsi?

Missä PHP voittaa: Yksinkertaisuus (eräänlainen)

PHP: ssä ei ole paljon: muutama muuttuja ja perustoiminnot merkkijonojen ja numeroiden kanssa. Se on ohut kerros, joka ei tee paljoakaan, paitsi siirtää tiedot portista 80 tietokantaan ja takaisin. Sitä sen pitäisi tehdä. Moderni tietokanta on maaginen työkalu, ja on järkevää jättää raskas nostaminen sille. PHP on oikea määrä monimutkaisuutta työhön, jonka ei ole tarkoitus olla monimutkainen.

Jälleen kerran, jos olet ohjelmoija, joka haluaa tehdä enemmän kuin olla vuorovaikutuksessa tietokannan kanssa ja muotoilla tuloksia, voit nyt tehdä enemmän PHP: llä pitämättä nenääsi. Facebookin HHVM lisää tuen Hackille, joka on täydellinen kieli, joka on täynnä moderneja ominaisuuksia, kuten tyyppihuomautuksia, yleisiä ja lambda-lausekkeita. Tämän käyttö rajoittaa koodisi toimimaan vain HHVM: llä, mutta se ei ole pahin asia maailmassa. Se on erittäin nopeaa.

Missä solmu voittaa: Kymmeniä kielivaihtoehtoja

Jos PHP-käyttäjät pääsevät mielellään Hackiin, heidän tulisi harkita siirtymistä Node.js-maailmaan, koska monet tärkeimmät kielet voidaan koota ristiin toimimaan JavaScript-muodossa. On tunnettuja vaihtoehtoja, kuten Java, C # tai Lisp ja kymmeniä muita, kuten Scala, OCaml ja Haskell. On jopa lahjoja nostalgisille BASICin tai Pascalin ystäville. Tämä luettelo kielistä, jotka Jeremy Ashkenasista kootaan JavaScriptiksi, on melko kattava. Lisäksi JavaScript-serkut, kuten TypeScript ja CoffeeScript, tarjoavat hieman erilaisia ​​ja parannettuja lähestymistapoja samaan peliin.

Missä PHP voittaa: Asiakassovellusta ei tarvita

Kaikki puheet saman kielen käytöstä selaimessa ja palvelimessa ovat mukavia, mutta entä jos sinun ei tarvitse käyttää mitään kieltä selaimessa? Entä jos lähetät tiedot HTML-muodossa? Entä jos rakennat spartalaisen, staattisen verkkosivuston toimittamaan tarkasti tarvitsemasi ilman interaktiivista blingia? Selain ponnahtaa sen esiin, eikä väärinkäyttävien JavaScript-ketjujen aiheuttamia päänsärkyä tai häiriöitä, jotka yrittävät luoda sivun selaimelle kahdesta kymmenestä verkkopalvelupuhelusta. Pure HTML toimii useammin kuin mikään muu, ja PHP on optimoitu luomaan se. Miksi vaivautua selaimen JavaScriptiin? Rakenna kaikki palvelimella ja vältä pienen selaimen ylikuormitusta pienessä puhelimessa.

Missä solmu voittaa: Palvelupuhelut ovat ohuempia kuin HTML-rasvaiset PHP-puhelut

Vaikka AJAX-hulluissa HTML5-verkkosovelluksissa voi olla liikaa liikkuvia osia, ne ovat hienoja - ja erittäin tehokkaita. Kun JavaScript-koodi on selaimen välimuistissa, ainoa asia, joka liikkuu johtoja pitkin, on uudet tiedot. HTML-merkintöjä ei ole paljon, eikä koko sivun lataamiseen ole toistuvia matkoja. Vain tiedot ovat muuttuneet. Jos olet valmis käyttämään aikaa luoda tyylikäs selainpuolen verkkosovellus, on suuri voitto. Node.js on optimoitu toimittamaan tiedot ja vain tiedot verkkopalvelujen kautta. Jos sovelluksesi on monimutkainen ja runsaasti tietoja, se on hyvä perusta tehokkaalle toimitukselle.

Missä PHP voittaa: SQL

PHP on rakennettu olemaan rinnakkain MySQL: n ja sen monien muunnelmien, kuten MariaDB: n, kanssa. Jos MySQL ei ole aivan oikein, Oraclelta ja Microsoftilta löytyy myös muita hienoja SQL-tietokantoja. Koodisi voi vaihtaa muutamalla muutoksella kyselyihisi. Valtava SQL-maailma ei pääty sen rajoille. Jotkut vakaimmista, hyvin kehitetyistä koodeista ovat liittymässä SQL-tietokantaan, mikä tarkoittaa, että kaikki tämä teho voidaan myös helposti integroida PHP-projektiin. Se ei ehkä ole yksi täydellinen, onnellinen perhe, mutta se on iso. Paitsi että, tietokantamaailma paranee hitaasti, kun kehittäjät löytävät tapoja lisätä tietokantaan enemmän älykkyyttä, joten sinun ei tarvitse työskennellä niin kovasti.

Missä Node.js voittaa: JSON

Jos sinulla on oltava pääsy SQL: ään, Node.js: llä on siihen kirjastot. Mutta Node.js puhuu myös JSON-kieltä, joka on vuorovaikutus monien uusimpien NoSQL-tietokantojen kanssa. Tämä ei tarkoita sitä, ettet voi hankkia JSON-kirjastoja PHP-pinoasi varten, mutta JSONin kanssa työskentelemisen yksinkertaisuudessa JavaScriptiä käytettäessä on jotain sujuvaa. Se on yksi syntaksi selaimesta verkkopalvelimeen tietokantaan. Paksusuolet ja kiharat sulut toimivat samalla tavalla kaikkialla. Pelkästään se säästää sinut tuntikausien turhautumiselta.

Missä PHP voittaa: Koodaamisnopeus

Useimmille kehittäjille PHP: n kirjoittaminen verkkosovelluksille tuntuu nopeammalta: ei kääntäjiä, ei käyttöönottoa, ei JAR-tiedostoja tai esiprosessoreita - yksinkertaisesti suosikkieditorisi ja joitain PHP-tiedostoja hakemistossa. Mittarilukema vaihtelee, mutta projektin nopeassa yhdistämisessä PHP on hyvä työkalu käytettäväksi.

Missä Node.js voittaa: Sovelluksen nopeus

JavaScript-koodin kirjoittaminen on hieman vaikeampi, kun lasket kiharaisia ​​sulkeita ja sulkeita, mutta kun se on valmis, Node.js-koodisi voi lentää. Soittomekanismi on loistava, koska se säästää sinua jongleeraamasta ketjuja. Ydin on hyvin rakennettu ja suunniteltu tekemään kaikki puolestasi. Eivätkö kaikki sitä halua?

Missä PHP voittaa: Kilpailu

Taistelu PHP-kehittäjien sydämistä ja mielistä on edelleen kesken. HHVM-tiimi ja Zend-tiimi tekevät kovasti töitä saadakseen nopean koodin kaikille. Riippumattomat vertailuarvot näkyvät, ja kaikki työntävät koodipohjia rajaan. Tämä tarkoittaa vain parempaa suorituskykyä.

Missä Node.js voittaa: Solidaarisuus

Haluatko todella kaksi erilaista koodipohjaa? Toki kilpailu auttaa, mutta pirstoutuminen seuraa pian. Mitä tapahtuu, kun koodisi toimii vain yhdellä näistä kahdesta? Kilpailu ei tee mitään hyvää, jos joudut viettämään viikkoja tai kuukausia koodin uudelleenkirjoittamiseen. Vaikka Node.js koki oman sirpaloitumisensa muutama vuosi sitten, io.js: n julkaisun myötä Node.js-universumi on sittemmin yhdistynyt, mikä antaa sille sellaisen kielisolidaarisuuden, jota PHP-kehittäjät saattavat pian kaipaamaan.

Missä PHP voittaa: Perussovellukset

Muutaman viime vuoden aikana muutamat kehittäjät ovat käynnistäneet verkkosovelluksia ja joutuneet turhautumaan hitaasta käyttäytymisestä. Kaikkia näitä liikkuvia kappaleita ajava JavaScript voi olla kymmeniä tuhansia tavuja, joskus satoja tuhansia. Kun kaikki paketit saapuvat, ne on jäsenneltävä, koottava ja lopulta suoritettava - kaikki toimittamaan muutama tavu, kuten lämpötila ja ennuste.

Vastareaktio tätä rococco-hulluutta vastaan ​​löytyy tiimeistä, jotka rakentavat staattisia sivustogeneraattoreita (463 tässä kirjoituksessa) ja poistetuista verkkosivuista AMP-muodossa. PHP on luonnollinen valinta tiimille, joka haluaa keskittää älykkyyden palvelimelle, jotta asiakas ei ole ylikuormitettu.

Missä Node.js voittaa: Rikkaus

Rakennusten arkkitehti Ludwig Mies van der Rohe sanoi kerran: "Vähemmän on enemmän." Toinen arkkitehti Robert Venturi tuli mukaan ja vastasi: "Vähemmän on tylsää". Älypuhelimissa on enemmän virtaa kuin huoneessa, joka on täynnä Cray-tietokoneita. Pöytäkoneissa on näytönohjaimia, joissa on useita tuulettimia, jotta ne pysyvät viileinä koko käsittelyn ajan. Miksi meidän pitäisi riisua koodi ja elää kuin masennuksen aikakauden uhri Steinbeck-romaanissa? Elää se ylös. Suuret, tyylikkäät verkkosivustot, jotka ovat täynnä JavaScript-koodia, ovat huomiota herättäviä, dramaattisia ja ennen kaikkea hauskoja. Toki on säädytöntä tuhlata niin paljon kaistanleveyttä muutamalle bitille dataa, mutta kaistanleveys ei ole koskaan ollut halvempaa. Elää vähän!

Missä molemmat voittavat: Päätön

Sana "headless" viittaa palvelimessa ajettavaan PHP-koodiin. Viime aikoina jotkut suosituimmista PHP-sovelluksista, kuten Drupal, ovat kurkistaneet käytävän yli ja tulevat hämmästyneiksi JavaScript-kehysten, kuten React, Angular tai Vue, rakentamista hienostuneista käyttöliittymistä. Sen sijaan, että yrittäisivät kilpailla heidän kanssaan, he luovuttavat asiakkaan hallinnan ja keskittyvät tekemään hyvää työtä palvelimen taustapuolella.

Jos olet investoinut melko vähän palvelimessa olevaan PHP-koodiin, tämä voi olla tapa nauttia molempien lähestymistapojen parhaista ominaisuuksista. Vanha vakiintunut PHP-koodi toimii etuovena tietokantaan, joka tarkistaa pyynnöt uudelleen, puhdistaa tiedot ja tarjoaa yleensä kaiken liiketoimintalogiikan. Asiakaspuoli on progressiivinen verkkosovellus, joka on kirjoitettu uusimmalla JavaScript-kehyksellä. Kun se tarvitsee tietoja, se lähettää AJAX-pyynnön PHP-koodille.

Tällä ei ehkä ole järkevää, kun joku aloittaa tyhjästä, mutta jos olet luottanut PHP: hen vuosien ajan ja haluat siirtyä eteenpäin asteittain, tämä voi olla onnellinen kompromissi.

Missä molemmat voittavat: mikropalvelut ja palvelimet

Nousevat mikropalvelut tai palvelimettomat paradigmat tarjoavat JavaScript- ja PHP-koodille tavan elää palvelimen kanssa ja tulla toimeen. Molemmat ratkaisut jakavat työn kymmeniin pienempiin palveluihin tai toimintoihin, jotka voivat toimia itsenäisesti ja pysyä kaistoillaan. Jotkin osat, yleensä sovelluksen vanhemmat ja vakaimmat osat, voivat käyttää PHP: tä. Muut osat, usein uudemmat, kirjoitetaan Node.js: ssä. Kieli LÄHETTÄÄ tai SAADA voi olla lingua franca, joka yhdistää heidät kaikki.