Evo kako se web „server sajd“ stara garda i novajlija od strane okrenu jedan protiv drugog

To je klasični holivudski zaplet: rasprava između dva stara prijatelja koji su otišli u dva pravca. Često počinje kada jedan prijatelj izazove interesovanje za ono što je oduvijek bio neizgovoreni domen drugog prijatelja. U verziji programskog jezika ovog filma, to je uvod u Node.js koji laganu varnicu pretvara u vatrenu raspravu: PHP i JavaScript, dva partnera koji su nekada vladali internetom zajedno, ali sada im se  programerska mišljenja razilaze.

Prije je partnerstvo je bilo jednostavno. JavaScript bi obradio malo detalja u pretraživaču, dok bi PHP upravljao svim zadacima na serverskoj strani između porta 80 i MySQL-a. Bila je to sretna sibioza koja i dalje podržava mnoge ključne dijelove interneta. Između WordPress-a, Drupala i Facebook-a, ljudi teško mogu da provedu minut na web-u bez pokretanja PHP-a.

Onda je neki pametni dječak otkrio da može da pokrene JavaScript na serveru. Iznenada, nije bilo potrebe da se koristi PHP da bi se izgradila nova generacija servera. Jedan jezik je sve što je potrebno da se izgradi Node.js i okviri koji se izvode na klijentu. „JavaScript svuda“ je postao mantra za neke.

Od tada, obe platforme su nastavile da se šire i poboljšavaju. Node.js programeri sada mogu da biraju između sve većeg broja kolekcija odličnih frejmvorka i platformi: Express, Angular, Meteor i još mnogo toga. Lista je duga i najveći problem je izbor između odličnih opcija.

Međutim, PHP takođe ubrzava u pravo vrijeme sa kompajlerom koji obrađuje zadatke brže nego ikad zahvaljujući istim tehnikama koje pokreću Node.js revoluciju. Sada PHP 7.0 i HHVM nude mnogo istih pametnih „on-the-fly“ optimizacija koje je V8 ​​donio Chromeu i Node.js. I ne samo to, ali HHVM ima Hack, pametan jezik koji nudi punu podršku za sofisticirane funkcije programiranja kao što su lambde, generici i kolekcije.

Naravno, to nije kraj. Za svakog kodera koji čita o čistoći Node.js i jednostavnosti JavaScripta svugdje, tu je još jedan koji je zadovoljan dubokom bazom koda i dugo shvaćenom stabilnošću PHP-a. Hoće li stari koder pobediti noviji server? Da li će JavaScript srušiti svog starog prijatelja kako bi postigao svjetsku dominaciju? Stavite drugu hrpu kokica u mikrovalku i sjednite. PHP ili Node.js? Saznajmo:

Gdje pobjeđuje PHP: miješanje koda sa sadržajem

Kucate zajedno, sipate misli u tekst za vašu web lokaciju, a želite dodati granu procesu, malo „if-then“ stejtment kako bi izgledala lijepo, recimo, zavisno od nekog parametra u URL-u. Ili možda želite da umiksate u tekst ili podatke sadržaj iz baze podataka. Sa PHP-om, otvarate čarobne PHP tagove i počinjete pisati kod za nekoliko sekundi. Nema potrebe za šablonima – sve je „template“! Nema potrebe za dodatnim fajlovima ili razrađenim arhitekturama, samo programabilna logistička snaga na dohvat ruke.

Gdje dobija Node: Razdvajanje

Miješanje koda sa sadržajem je štaka koja vas može oboriti. Naravno, zabavno je miješati kod sa HTML-om prva dva ili tri puta. Ali uskoro vaša baza koda postaje zapetljana zbrka logike. Pravi programeri grade strukturu i odvajaju kozmetički sloj od logičkog sloja. Kod je čistiji za nove programere da ga razumiju i lakše ga održavaju. Frejmvorke koji se izvode na Node.js grade programeri koji znaju da je život bolji kada su model, izgled i kontroler (MVC – model, view, controller) odvojeni. Ali opet da se ne zavaramo i PHP ima svoje MVC fremvorke: Laravel, Symfony, CodeIgniter, YII2, Zend…

Gdje PHP pobjeđuje: „Deep code base“ ogromna količina dostupnog koda

Web je ispunjen PHP kodom. Najpopularnije platforme za izradu web stranica (WordPress, Drupal, Joomla) napisane su u PHP-u. Ne samo da su platforme otvorenog koda (Open source), već i većina njihovih dodataka (plugins). PHP kod postoji svuda, i samo čeka da ga preuzmete, modifikujete i koristite za svoje potrebe.

Gdje Node pobjeđuje: Noviji kod znači modernije značajke

Naravno, postoje hiljade odličnih PHP open source fajlova, ali neki su 8-godišnji WordPress plaginovi koji se nadaju i mole da ih neko preuzme. Ko želi da provede sate, dane ili sedmice sa kodom koji nije ažuriran godinama? Node.js plaginovi nisu samo noviji, oni su izgrađeni uz puno poznavanje najnovijih arhitektonskih pristupa. Napravili su ih programeri koji shvataju da bi moderne web aplikacije trebale gurati većinu inteligencije do klijenta.

Iako JavaScript ima mnogo malih idiosinkrazija (preosjetljivosti) koje dovode do ludila, uglavnom je to moderan jezik koji posjeduje modernu sintaksu i nekoliko korisnih funkcija kao što su „Closure“. Možete ga ponovo konfigurisati i proširiti, čineći izradu moćnih biblioteka poput jQuery-a mogućom. Možete baratati  funkcijama kao objektom. Zašto se ograničiti?

Gdje PHP pobjeđuje: Jednostavnost

U PHP-u nema mnogo mudrolije: nekoliko varijabli i osnovnih funkcija za žongliranje nizova i brojeva. To je tanki sloj koji ne čini mnogo osim što se podaci sa porta 80 prebace u bazu podataka i nazad. To je ono što u stvari i treba da uradi. Moderna baza podataka je čarobna alatka, i ima smisla prepustiti teške stvari njoj. PHP je upravo potrebna količina složenosti za posao koji ne bi trebao biti složen.

Onda opet, ako ste programer koji želi da uradi više od interakcije sa bazom podataka i formatira rezultate, sada možete učiniti više sa PHP-om. Facebookov HHVM dodaje podršku za Hack, kompletan jezik ispunjen modernim karakteristikama kao što su tipske napomene (annotations), generici i lambda izrazi. Koristeći ovo ograničava vaš kod da se pokreće samo na HHVM, ali to nije najgora stvar na svijetu. Vrlo je brz.

Gde dobija Node: Na desetine jezičkih opcija

Ako su korisnici PHP-a sretni da dobiju pristup Hack-u, trebali bi razmisliti o premještanju u svijet Node.js jer se mnogi glavni jezici mogu kompajlirati za pokretanje u JavaScriptu. Postoje dobro poznate opcije kao što su Java, C #, ili Lisp i desetine drugih kao što su Scala, OCaml i Haskell. Postoje čak i varijante za nostalgične ljubitelje BASIC-a ili Pascala. Ova lista jezika koji se kompajliraju u JavaScriptu od Džeremija Aškenasa je prilično sveobuhvatna. Plus JavaScript rođaci poput TypeScripta i CoffeeScripta nude nešto drugačiji i poboljšani pristup istoj igri.

Gdje PHP pobjeđuje: Nije potrebna klijentska aplikacija

Svi razgovori o korišćenju istog jezika u pretraživaču i na serveru su dobri, ali šta ako ne morate da koristite bilo koji jezik u pregledaču? Šta ako pošaljete podatke u HTML obliku? Šta ako gradite spartanski, statički sajt koji će vam striktno pružiti ono što je potrebno bez interaktivnog sjajila? Brauzer se pojavljuje, a nema nikakvih glavobolja ili grešaka prouzrokovanih preskakanjem JavaScript procesa koji pokušavaju da kreiraju stranicu na brauzeru iz dvadesetak poziva na web servise. Čisti HTML radi bolje nego bilo šta drugo, a PHP je optimiziran da to kreira. Zašto se brinete za JavaScript na pregledniku? Napravite sve na serveru i izbegavajte preopterećenje malog preglednika na slabijem telefonu.

Gdje Node pobjeđuje: Pozivanje servisa je kraće od HTML-PHP poziva

Dok blesav AJAX HTML5 web aplikacije u mogu imati previše pokretnih dijelova, one su kul i vrlo efikasne. Jednom kada je JavaScript kod u kešu preglednika (browser), jedina stvar koja se kreće kroz kabel su novi podaci. Nema tonu HTML oznaka, a nema ponovljenih zahtjeva za preuzimanje cijele stranice. Mijenjaju se samo podaci. Ako ste voljni da uložite vrijeme za stvaranje brze web aplikacije, isplatiće vam se. Node.js je optimizovan za isporuku podataka i samo podataka putem web servisa. Ako je vaša aplikacija složena i bogata podacima, to je dobra osnova za učinkovitu isporuku.

Gdje PHP pobjeđuje: SQL

 

PHP je napravljen da koegzistira sa MySQL-om i njegovim brojnim varijantama, kao što je MariaDB. Ako MySQL nije baš pravi, postoje i druge velike SQL baze podataka od Oracle-a i Microsoft-a. Vaš kôd se može prebaciti s nekoliko izmjena vaših upita. Ogroman SQL svijet ne završava na svojim granicama. Neki od najstabilnijih, dobro razvijenih kodova će se povezati sa SQL bazom podataka, što znači da se sva ta moć može lako integrisati u PHP projekat. Možda nije jedna savršena, srećna porodica, ali je velika. I ne samo to, svijet baza podataka polako postaje sve bolji jer programeri pronalaze načine da dodaju više inteligencije u bazu podataka tako da ne morate raditi tako naporno.

Gdje pobjeđuje Node.js: JSON

Ako morate imati pristup SQL-u, Node.js ima biblioteke za to. Ali Node.js takođe govori JSON, jezik nerazumljiv za interakciju sa mnogim najnovijim NoSQL bazama podataka. To ne znači da ne možete dobiti JSON biblioteke za vaš PHP skladište, ali postoji nešto tečno u vezi jednostavnosti rada sa JSON-om kada koristite JavaScript. To je jedna sintaksa od brauzera do web servera do baze podataka. Kolone i vitičaste zagrade rade svuda na isti način. Samo to će vas spasiti od sati frustracije.

Gdje PHP pobjeđuje: Brzina kodiranja

Za većinu programera, pisanje PHP-a za web aplikacije se osjeća brže: bez kompajlera, bez implementacije, bez JAR datoteka ili predprocesora – jednostavno vaš omiljeni text/code editor i neke PHP datoteke u direktoriju. Vaša kilometraža će se razlikovati, ali kada je u pitanju brzo lupanje projekta, PHP je dobar alat za korištenje.

Gdje pobjeđuje Node.js: Brzina aplikacije

Pisanje JavaScript koda je malo teže kada brojite vitičaste zagrade, tačke i zareze, ali kada se to završi, vaš Node.js kod može letjeti. Mehanizam povratnog poziva je briljantan jer vas štedi od žongliranja tridova. Jezgro je dobro izgrađeno i dizajnirano da sve to radi za vas. Zar to nije ono što svi žele?

Gdje pobjeđuje PHP: Takmičenje

Borba za srca i umove PHP programera se još uvek odvija. HHVM i Zend tim naporno rade kako bi svima pružili brz kod. Pojavljuju se nezavisni reperi, i svi guraju bazu koda do granice. To samo znači bolje performanse.

Gdje pobjeđuje Node.js: Solidarnost

Da li zaista želite dva različita načina kodiranja? Naravno, konkurencija pomaže, ali uslijedi fragmentacija. Šta se dešava kada vaš kod radi samo na jednom od ova dva? Konkurencija ne čini ništa dobro ako morate potrošiti nekoliko sedmica ili mjeseci na ponovno pisanje koda. Dok je Node.js iskusio sopstveno cijepanje pre nekoliko godina, sa lansiranjem io.js, Node.js svemir je od tada ponovo ujedinjen, dajući mu onu vrstu jezičke solidarnosti o kojoj PHP programeri mogu sanjati.

Gde pobjeđuje PHP: Osnovne aplikacije

U poslednjih nekoliko godina, nekoliko programera je pokrenulo web aplikacije i našlo se frustrirano zbog sporog ponašanja. JavaScript koji pokreće sve te pokretne dijelove može biti nekoliko desetaka hiljada bajtova, ponekad stotine hiljada. Kada svi paketi stignu, oni moraju biti analizirani, kompajlirani i na kraju izvršeni – sve to samo da dostave nekoliko bajtova kao što su temperatura i vremenska prognoza.

Protiv ovog rokoko ludila može se naići u timovima koji grade statične generatore sajta i uklonjene web stranice u AMP formatu. PHP je prirodan izbor za svaki tim koji želi da koncentriše inteligenciju na server tako da klijent nije preopterećen.

Gdje pobjeđuje Node.js: Bogatstvo

Ludwig Mies van der Rohe, arhitekta zgrada, jednom je rekao: „Manje je više.“ Robert Venturi, drugi arhitekta, je došao i uzvratio: „Manje je dosadno.“ Pametni telefoni imaju više snage od sobe pune računara. Desktop računari imaju grafičke kartice sa više ventilatora da bi ih ohladili tokom čitave obrade. Zašto bismo trebali ogoliti naš kod i živjeti kao žrtva iz doba depresije u Steinbeckovom romanu? Živite. Velike web stranice pune JavaScript koda su privlačne, dramatične i najviše zabavne. Svakako je nepristojno trošiti toliko propusnog opsega na nekoliko bitova podataka, ali propusni opseg nikada nije bio jeftiniji. Živi malo!

Gdje oba pobjeđuju: Bezglavi

Riječ „Headless“ odnosi se na PHP kod koji se izvodi na serveru. Nedavno su neke od najboljih PHP aplikacija kao što je Drupal gledale preko prolaza i oduševljene sofisticiranim korisničkim interfejsima koje su napravili JavaScript okviri poput React-a, Angular-a ili Vu-a. Umjesto da pokušavaju da se takmiče sa njima, oni prenose kontrolu na klijenta i koncentrišu se na dobar posao sa pozadinskim serverom.

Ako imate dosta uloženog u PHP kod koji radi na serveru, to može biti način da uživate u najboljem od oba pristupa. Stari, uspostavljeni PHP kod djeluje kao ulazna vrata u bazu podataka, dvostruko provjerava zahtjeve, čisti podatke i uopšteno pruža svu poslovnu logiku. Klijentska strana je progresivna web aplikacija napisana najnovijim JavaScript frejmvorkom. Kada je potrebna informacija, šalje AJAX zahtjev PHP kodu.

Ovo možda nema smisla za nekoga ko počinje od nule, ali ako ste se godinama oslanjali na PHP i želite da se krećete naprijed, to može biti srećan kompromis.

Gdje obe pobjeđuju: Mikroservsi i serverless

Porast mikroservisne ili serverless paradigme nude način da JavaScript i PHP kod kohabitiraju na serveru i da se slažu. Oba rješenja dijele rad na desetine manjih usluga ili funkcija i one mogu raditi samostalno i ostati u svojim stazama. Neke dijelove, obično stariji i najstabilniji dijelovi aplikacije, može pokretati PHP. Ostali dijelovi, često noviji, biće napisani u Node.js. Jezik POST-a ili GET-a može biti lingua franca koja ih sve ujedinjuje.

Šta vi mislite o svemu, PHP ili Node.js?

Izvor: infoworld.com