Vir slike: pixabay.com

Preden tukaj začnem hladno vojno, med ljudmi, ki uporabljajo Rails (Ruby) in PHP, naj vam povem, da nisem tu, da bi razpravljal o tem, kateri jezik je boljši. Zame ali za katerega koli izkušenega programerja bi bilo tako ali tako. Samo vprašanje ljubezni je, kdo ima raje, kaj in kaj jim je enostavno.

V tem blogu bi večinoma razpravljal o pomenu obeh in o tem, kako se med seboj razlikujeta. Če ste novi pri Rails in PHP, potem bi to lahko bil popoln blog za vas, če želite izbrati enega od obeh. Torej, začnimo. Ali bomo?

Nekaj ​​osnovnega ozadja

Za začetek je PHP skriptni jezik, medtem ko je RAILS okvir za razvoj spletnih strani, ki temelji na skriptnem jeziku Ruby. PHP je široko uporabljen programski jezik za spletna mesta, kot so Facebook, WordPress, Yahoo, Flickr in še več. PHP je izjemno hiter, n-krat bolj stabilen kot Rails in ima celo večjo skupnost razvijalcev, ki ga podpira.

Rails v celoti temelji na Rubyju. Izjemno enostaven za uporabo in začetek uporabe. Okolje v Rubyju je zelo avtomatizirano. Ruby je res neverjeten jezik. Za razliko od PHP-ja, je v resnici predmet usmerjen od začetka. Njegova koda je zelo jedrnata in močna. Gems (razširitve) vam omogočajo, da privijte potrebno funkcijo. Po kodiranju v Rubyju se mi zdi kodiranje v PHP precej dolgočasno.

Dobri, slabi in grdi

  1. PHP

Moj nasvet je PHP, ker je uporaba PHP na osnovni ravni zelo enostavna, tam je veliko ljudi, ki vedo, da kopirajo / prilepijo neko kodo predloge, spremenijo konfiguracijske datoteke in jim lahko rečejo celo PHP programerji, kar PHPu da zelo slabo ime, za katerega mislim, da si ne zasluži.

Za pravega programerja v resnici ni pomembno, kateri jezik uporablja, pomembno je, kaj kodira in kako kodira. Ko se naučite nekaj programskih jezikov, razumete, da je večina njih pravzaprav zelo podobna, ponavadi je sintaksa drugačna (zlasti v njihovem osnovnem mehanizmu, tudi za različne programske paradigme).

Najprej bi se morali naučiti pisati čisto in berljivo kodo in ne pisati preveč prefinjene kode, saj je težje odpraviti napake in zmede za nekoga, ki ne pozna posebnih trikov jezika (s PHP-om lahko naredite vse vrste zapletenih stvari, vsi programerji niso očitni).

V primerjavi s PHP je Rails tudi neprijazen, ko gre za napake. S PHP bo izpustil napake pri vas pri razvoju in sporočila o napakah so dejansko smiselna. Običajno bo stran prikazana, vendar bo prikazan del z napako, v kateri vrstici je prišlo do napake in sporočilo je koristno. V Rails-u običajno razstreli celotno aplikacijo.

Žal mi je, da sem tukaj užalil nekatere ljudi, toda Ruby preprosto ni tako preprost kot PHP za učenje. Vsekakor je izredno močan jezik. Odločila sem se za uporabo Rubyja preprosto zato, ker kot razvijalec menim, da je veliko boljši jezik kot PHP. A z vidika učenja to ni. Ruby ima številne funkcije, ki jih začetnik programer preprosto ne razume. Eden takšnih konceptov so bloki, procs in lambdas, ki jih Rails močno uporablja.

Klasični primer Ruby on Rails, ki ga bom uporabil, je za ustvarjanje obrazca:

  1. ŽELEZNICE

Ruby je dinamično, nujno objektno usmerjeno programiranje. Kot v PHP je dinamično vtipkan, tako da vam ni treba skrbeti, da bi morali prijaviti spremenljivke. Tirnice so odprte, delujejo na več platformah in jih je mogoče vgraditi v jezik označevanja hiperteksta. Je jezik na zelo visoki ravni. Ponuja celo enkapsulacijo podatkovnih metod znotraj predmetov.

Ruby ima zelo napredne tehnike upravljanja z vrvicami in besedilom, ki jih je enostavno povezati z DB2, MySQL, Oracle in Sybase. Veliki programi, napisani v Rubyju, so zlahka vzdržni. Ima čisto in enostavno skladnjo, ki novim razvijalcem omogoča, da se Ruby naučijo zelo hitro in enostavno. Ima ne samo možnost pisanja večnamenskih aplikacij s preprostim API-jem, ampak ponuja tudi napreden razred matrike in možnost pisanja zunanjih knjižnic v Ruby ali C.

Ruby Dovoli, da se "identificirana beseda" uporablja kot identifikator, dokler razčlenjevalec ne zazna dvoumnosti. V primerjavi s PHP ima Ruby številne varnostne funkcije in zmogljivo upravljanje z vrvicami.

Vprašanje desetletja je torej… Ali ima Ruby boljšo perspektivo v primerjavi s PHP z vsemi temi lastnostmi?

Na žalost ni tako črno-belo, in veliko spremenljivk pride v poštev pri določanju, ali je treba uporabiti PHP ali rubin na tirnicah za razvoj.

Na primer, Ruby on Rails je veliko bolj zapleten jezik za postavitev razvojnega okolja. Posledično tiho znanje, ki ga zahteva Ruby, takoj dvigne ceno na programskem trgu v primerjavi z razvojem PHP. Razvijalci PHP na drugi strani lahko preprosto uporabijo običajni paket, kot je WAMP, MAMP, da lahko v manj kot 5 minutah nastavijo svoje okolje za razvoj.

Ko sem začel kodirati v Rubyju, me je Gems bolj zmedel, kot so pomagali, ker je bilo preveč 'čarovnije. Ko sem izvedel, da lahko (in bi morali) samo prebrati izvorno kodo draguljev, je bilo vse tako bolj smiselno. Zaradi narave draguljev in standardov skupnosti lahko dragulji aplikaciji zelo hitro omogočijo ogromno funkcionalnosti.

Nekateri dragulji, brez katerih ne morem živeti: Obdelati (avtentikacija - ureja uporabniške prijave, družabni vpis, pozabite na delo z geslom in tako veliko več), Zapenjalnik papirja (nalaganje datotek - celo ročaje za nalaganje v S3, obrezovanje slik / ponovno vzorčenje), Enostavno Obrazec naredi obrazce neverjetno preproste za standardizacijo in upodabljanje na spletnih mestih.

PHP je bil zasnovan kot predobdelovalec hiperteksta, kar pomeni, da se izvaja le, kadar obstaja spletna zahteva. V primerjavi z Ruby, ki vodi postopek. V Rails lahko preprosto nastavite opravila v ozadju s Sidekiq ali Resque. To dodaja tudi Railovo sposobnost, da zlahka meri. V naših aplikacijah premaknemo veliko stvari, ki lahko upočasnijo zahteve, kot je pošiljanje e-pošte uporabnikom, v opravila v ozadju.

Zdaj lahko PHP opravi opravila v ozadju s pomočjo Gearmana, vendar to ni standardizirano - namestiti morate PECL končnico. V rubriki Ruby / Rails se osnovna opravila ne izdajajo. Samo narediš.

Tega vojne

Zdaj, ko ste že veliko prebrali o PHP in Rails, si oglejte primerjavo. Preverimo, katera je enaka po porabi virov in celo po zmogljivosti (hitrosti).

Priporočeni tečaji

  • Spletni tečaj za certificiranje v mirovanju Jave
  • Program na pomladi Java
  • WordPress tečaj za potrjevanje
  • Tečaj Ruby

Uporaba virov in hitrost

Kar zadeva porabo pomnilnika, bo to običajno Python> Ruby> PHP, kar seveda vodi do Django> Rails> PHP. Ne samo spomin, ampak tudi zadržuje za surovo rubin na tirnicah in php zmogljivosti. Tu je treba opozoriti tudi, da tu seveda ni absolutov. Obstaja veliko scenarijev uporabe, v katerih bo Ruby premagal Pythona z roko navzdol. Mislim, da se lahko vsi strinjamo, da bosta Ruby in Python vedno premagala PHP.

Moja lastna izkušnja je, da je poraba pomnilnika Rails lahko velika, zlasti na 64-bitnih strojih (minimalna je približno 95-100 MB s tako tanko kot spletno prednjo stran). PHP se običajno uporablja z različnimi vzorci, zato jih je malo težko primerjati.

Kljub temu je še vedno zelo enostavno narediti nerodno, počasno in neučinkovito aplikacijo Django ter vitko, hitro in učinkovito aplikacijo Rails ali obratno. Spretnost, znanje in znanje s sistemom, ki ga uporabljate, bodo za njegov spomin in uspešnost naredili veliko več kot le sam okvir.

Optimizacije baz podatkov, izbira strežnika in arhitekture (nastavitve Apache v primerjavi s proxyji z uporabo nginx / lighttpd itd.) In temeljne oblikovalske odločitve bodo verjetno precej hitro prevladale lastne značilnosti okvira.

Če med Ruby in drugimi jeziki uporabljate značilne primerjalne vrednosti, Ruby izgubi. Ruby vam verjetno ne bi dobro služil pri pisanju aplikacije za digitalno obdelavo signalov v realnem času ali kakršnega koli sistema za nadzor v realnem času. Ruby (z današnjimi VM-ji) bi se verjetno zadušil na računalniku z omejenimi viri, kot so pametni telefoni.

Ne pozabite, da veliko procesiranja vaših spletnih aplikacij dejansko izvaja programska oprema, razvita v C. Na primer Apache, Thin, Nginx, SQLite, MySQL, PostgreSQL, številne knjižnice za razčlenjevanje, RMagick, TCP / IP itd. So programi C, ki jih uporablja Ruby. Ruby zagotavlja lepilo in poslovno logiko.

Vprašanje je "ZAKAJ PHP potem?"

Zdaj pa govorimo o PHP. PHP deluje zelo počasi na apache strežniku. Tudi če poskusite zagnati stran PHP tudi brez kakršnega koli skripta, samo prazno php stran, bo še vedno trajalo približno 10-krat več časa za nalaganje v primerjavi z JSP ali Java. Toda spet vprašanje milijona stoletij je, da če je temu tako, zakaj potem še ni Facebook odnesel PHP-ja? Razlog, da se Facebook ni preselil stran od PHP-ja, je zato, ker so Facebookovi inženirji uspeli odpraviti številne pomanjkljivosti s kombinacijo popravkov na vseh nivojih skladanja in odlično interno disciplino s pomočjo kode in stila.

Izogibamo se najslabšim lastnostim jezika, slog kodiranja pa se strogo uveljavlja s pomočjo dokaj stroge kulture pregledovanja kode (če se ne držijo stila in "gre za kavboja" s pisanjem ponorele kode, pride do nespametnega posmeha vrstnikov). Tukaj inženirskega vodstva ni bilo treba nikoli sprejeti močne roke; to se je v veliki meri pojavilo zaradi ključnih notranjih tehničnih voditeljev, ki so nekako nadlegovali vse ostale.

In Facebook seveda ne uporablja samo PHP. Kot svoje jedro vključuje tudi C ++. Torej, za PHP uporabite nekakšen predpomnilnik kod, kot sta APC ali eAccelerator, sicer mora PHP ob vsaki zahtevi razčleniti vaše datoteke. Za splošno nastavitev apache bi morali narediti nekaj googlinga, nekaj stvari, kot je onemogočanje .htaccess datotek, pride na misel, vendar bi vseeno moralo biti hitrejše od JSP.

Zaključek

Torej na koncu mislim, da govorim, če greš skozi Rails, potem pa bi se moral držati skozi Rails, dokler ne nameravaš začeti povsem novega projekta, ki temelji na PHP-ju in skupaj z njim ustanoviti podjetje.

Priporočeni članki

Tukaj je nekaj člankov, ki vam bodo pomagali, da boste dobili več podrobnosti o Rails vs PHP, zato pojdite po povezavi.

  1. Neverjeten vodič o razvoju Learn Rails
  2. Ruby vs Ruby On Rails- Kateri je boljši?
  3. Ruby vs PHP-katera tehnologija je najboljša?
  4. Top 10 najbolj osupljivih vprašanj za intervju s PHP za izkušene