Sursa imaginii: pixabay.com

Deci, înainte de a începe un război rece aici, între oamenii care folosesc Rails (Ruby) și PHP, permiteți-mi să vă spun că nu sunt aici pentru a dezbate dacă limba este mai bună. Pentru mine sau pentru orice programator experimentat, oricare ar fi la fel. Este doar o chestiune de probabilitate cu privire la cine preferă ce și ce le este ușor.

În acest blog, aș discuta mai ales despre importanța ambelor și despre modul în care acestea diferă unele de altele. Deci, dacă sunteți nou pentru Rails și PHP, atunci acesta ar putea fi blogul perfect pentru dvs., dacă doriți să selectați unul dintre oricare dintre cele două. Asadar, haideti sa începem. Vom?

Câteva date de bază

Pentru început, PHP este un limbaj de script, în timp ce RAILS este un cadru de dezvoltare web, care se bazează pe limbajul de script Ruby. PHP este un limbaj de programare utilizat pe scară largă pentru site-uri web precum Facebook, WordPress, Yahoo, Flickr și chiar mai mult. PHP este extrem de rapid, de două ori mai stabil decât Rails și are chiar o comunitate mai mare de dezvoltatori care să o susțină.

Rails este complet bazat pe Ruby. Este extrem de ușor de utilizat și de început. Mediul în Ruby este foarte automatizat. Ruby este într-adevăr un limbaj uimitor. Spre deosebire de PHP, acesta este într-adevăr orientat pe obiecte de la sol. Codul său este foarte concis și puternic. Gems (extensii) vă permit să vă bazați pe funcționalitatea necesară. După codarea în Ruby, mi se pare destul de obositoare codificarea în PHP.

Cel bun cel rau si cel urat

  1. PHP

Sfatul meu este PHP, deoarece utilizarea PHP la nivel de bază este foarte ușoară, există o mulțime de oameni care știu să copieze / să lipească un cod de șablon, să modifice fișierele de configurare și chiar ar putea să le numească selecționate de programatori PHP, ceea ce oferă PHP un nume foarte rău pe care nu cred că merită.

Pentru un programator adevărat, nu contează cu adevărat ce limbă folosește, ci este ceea ce el codează și modul în care el codează care contează. După ce ai învățat câteva limbaje de programare, înțelegi că majoritatea dintre ele sunt de fapt foarte asemănătoare, de obicei, sintagma este diferită (în special în mecanismul lor principal, chiar și pentru diferite paradigme de programare).

Primele lucruri pe care ar trebui să le înveți este să scrii cod curat și de citit și să nu scrii cod prea sofisticat, întrucât este mai greu de depanat și confuz pentru cineva care nu cunoaște trucurile speciale ale limbii (cu PHP, poți face tot felul de complicate chestii, nu toate sunt evidente pentru alți programatori).

Față de PHP, Rails este de asemenea neprietenos atunci când vine vorba de erori. Cu PHP, vă vor scăpa erorile în dezvoltare, iar mesajele de eroare au sens. De obicei, o pagină va fi redată, dar partea cu eroarea vă va arăta, ce linie a apărut eroarea și mesajul este util. În șine, de obicei întreaga aplicație se afișează.

Îmi pare rău că am jignit unii oameni aici, dar Ruby nu este pur și simplu atât de simplu ca PHP de învățat. Este un limbaj extrem de puternic. Aleg să folosesc Ruby pur și simplu pentru că în calitate de dezvoltator simt că este un limbaj mult mai bun decât PHP. Dar din perspectivă de învățare, nu este. Ruby are multe caracteristici care pur și simplu nu sunt simple pentru un programator începător să le înțeleagă. Un astfel de concept sunt blocurile, procuri și lambdas, pe care Rails le folosește intens.

Exemplul clasic Ruby on Rails pe care îl voi folosi este pentru crearea unei forme:

  1. ȘINE

Ruby este o programare dinamică, imperativă orientată pe obiecte. Este tastat dinamic, ca în PHP, deci nu trebuie să vă faceți griji cu privire la faptul că trebuie să declarați variabile. Șinele sunt deschise, funcționează pe mai multe platforme și poate fi încorporat în limbajul de marcare hipertext. Este un limbaj de nivel foarte înalt. Acesta oferă chiar și încapsularea metodelor de date în obiecte.

Ruby are tehnici super avansate de manipulare a textului și a textului, care pot fi conectate cu ușurință la DB2, MySQL, Oracle și Sybase. Programele mari scrise în Ruby sunt ușor de întreținut. Are sintaxa curată și ușoară, care permite noilor dezvoltatori să învețe Ruby foarte rapid și ușor. Nu numai că are capacitatea de a scrie aplicații cu mai multe fire cu o API simplă, dar oferă și o clasă avansată de matrice și posibilitatea de a scrie biblioteci externe în Ruby sau C.

Ruby Permite folosirea „cuvântului rezervat” ca identificator atât timp cât analizorul nu percepe o ambiguitate. În comparație cu PHP, Ruby are multe caracteristici de securitate și o manipulare puternică a șirurilor.

Deci, întrebarea deceniului este … Cu toate aceste caracteristici, face Ruby o perspectivă mai bună în comparație cu PHP?

Din păcate, nu este atât de alb-negru și multe variabile intră în joc atunci când se stabilește dacă PHP sau rubinul de pe șine ar trebui utilizat pentru a dezvolta.

De exemplu, Ruby on Rails este un limbaj mult mai complex pentru a configura un mediu de dezvoltare. În consecință, cunoștințele tacite necesare pentru Ruby ridică imediat prețul pe piața de programare în comparație cu dezvoltarea PHP. Pe de altă parte, un dezvoltator PHP poate utiliza pur și simplu un pachet convențional, cum ar fi WAMP, MAMP, pentru a obține configurarea mediului dev în mai puțin de 5 minute.

Când am început să codez în Ruby, Gems m-a confundat mai mult decât au ajutat, deoarece exista prea multă „magie”. Odată ce am aflat că poți (și ar trebui) să citești doar codul sursă pentru pietre, totul avea mult mai mult sens. Datorită naturii conectabile a pietrelor și a standardelor comunității, pietrele pot oferi aplicației dvs. o cantitate extraordinară de funcționalitate foarte rapid.

Câteva nestemate pe care nu le pot trăi fără: Devise (autentificare - gestionează autentificări ale utilizatorilor, conectare socială, uitați fluxurile de lucru cu parola și multe altele), Paperclip (încărcări de fișiere - chiar și manipulări de încărcare la S3, decupare de imagini / re-eșantionare), Simplu Formularul face forme incredibil de simple de standardizat și de redat pe site-uri.

PHP a fost conceput ca un pre-procesor hipertext, ceea ce înseamnă că se execută numai atunci când există o solicitare web. Comparativ cu Ruby, care conduce un proces. În șine, puteți configura cu ușurință lucrări de fundal folosind Sidekiq sau Resque. Acest lucru se adaugă, de asemenea, capacității Rail de a scala cu ușurință. În aplicațiile noastre, mutăm o mulțime de lucruri care pot încetini cererile precum e-mail-ul utilizatorilor în joburi de fundal.

Acum, PHP poate face lucrări de fond folosind Gearman, dar asta nu este standardizat - trebuie să instalați extensia PECL. În Ruby / Rails, lucrările de fundal nu sunt o problemă. Doar o faci.

Tugul de război

Acum că ați citit multe despre PHP și șinele, permiteți-le să le analizăm. Să verificăm care este la egalitate în ceea ce privește utilizarea resurselor și chiar în ceea ce privește performanța (viteza).

Cursuri recomandate

  • Curs de certificare online în Java Hibernate
  • Program pe Java Spring
  • Curs de certificare WordPress
  • Curs de rubin

Utilizarea și viteza resurselor

În ceea ce privește utilizarea memoriei, în general va fi Python> Ruby> PHP, ceea ce duce desigur la Django> Rails> PHP. Nu doar memoria, dar asta tinde și ca rubinul brut pe șine și performanța php. Un lucru demn de remarcat aici este faptul că, desigur, nu există absoluturi aici. Există o mulțime de scenarii de utilizare în care Ruby va învinge Python, cu mâinile în jos. Cred că putem fi cu toții de acord că Ruby și Python vor bate întotdeauna PHP.

Experiența mea este că utilizarea memoriei Rails poate fi ridicată, în special pe mașini pe 64 de biți (minimul este de aproximativ 95-100 MB, la fel de subțire ca și front-end-ul web). PHP tinde să fie utilizat cu diferite modele, astfel încât este un pic dificil de comparat direct.

Acestea fiind spuse, este încă foarte ușor să faceți o aplicație Django proastă, lentă și ineficientă și o aplicație Rails slabă, rapidă și eficientă sau invers. Abilitatea, cunoștințele și expertiza cu sistemul pe care îl utilizați vor face mult mai mult pentru amprenta sa și pentru performanța sa decât doar cadrul propriu.

Optimizările bazei de date, alegerile și arhitecturile serverului (Apache vs. configurațiile proxy folosind nginx / lighttpd, etc.), iar deciziile fundamentale de proiectare vor suplini destul de repede caracteristicile inerente ale cadrului.

Dacă executați valori de referință tipice între Ruby și alte limbi, Ruby pierde. Probabil că Ruby nu vă va servi bine pentru a scrie o aplicație de procesare digitală a semnalului în timp real sau orice fel de sistem de control în timp real. Ruby (cu VM-urile de astăzi) s-ar sufoca probabil pe un computer cu resurse, cum ar fi smartphone-urile.

Amintiți-vă că o mare parte din procesarea pe aplicațiile dvs. web se realizează de fapt prin software dezvoltat în C. ex. Apache, Thin, Nginx, SQLite, MySQL, PostgreSQL, multe biblioteci de analizare, RMagick, TCP / IP etc. sunt programe C utilizate de Rubin. Ruby asigură lipiciul și logica de afaceri.

Întrebarea este „DE CE PHP atunci?”

Acum să vorbim despre PHP. PHP rulează extrem de lent pe serverul apache. Chiar dacă încercați să rulați o pagină PHP chiar și fără niciun script, doar o pagină php goală, va fi nevoie de 10 ori mai mult timp pentru a încărca comparația cu JSPs sau Java. Dar, din nou, întrebarea unui milion de secole este că, dacă este așa, atunci de ce Facebook nu a scăzut încă PHP? Motivul pentru care Facebook nu a migrat departe de PHP este că inginerii Facebook au reușit să lucreze la multe dintre defectele sale printr-o combinație de patch-uri la toate nivelurile stivei și o disciplină internă excelentă prin convenție și stil de cod.

Cele mai grave atribute ale limbajului sunt evitate, iar stilul de codare este aplicat rigid printr-o cultură destul de strânsă a revizuirii codului (nerespectând stilul și „mergând cowboy” prin scrierea codului sloppy rezultă în derâdere fără milă de către colegii săi). Managementul ingineriei nu a fost niciodată nevoit să ia o mână puternică aici; acest lucru a apărut în mare parte datorită principalilor lideri tehnici interni, doar un fel de a-i face pe toți ceilalți.

Și Facebook nu folosește doar PHP, desigur. De asemenea, include C ++ ca nucleu. Așadar, pentru PHP folosiți un fel de cache opcode precum APC sau eAccelerator, altfel PHP trebuie să analizeze fișierele dvs. la fiecare cerere. Pentru reglarea generală a apache, ar trebui să faceți niște funcții googling, câteva lucruri cum ar fi dezactivarea fișierelor .htaccess vin în minte, dar ar trebui totuși să fie mai rapid decât JSP.

Concluzie

Așadar, în cele din urmă, presupun că ceea ce spun este dacă îți treci prin Rails, decât ar trebui să te duci prin Rails, atâta timp cât nu intenționezi să începi un proiect complet nou bazat pe PHP și să începi o companie împreună cu acesta.

Articole recomandate

Iată câteva articole care vă vor ajuta să obțineți mai multe detalii despre Rails vs PHP, așa că treceți doar prin link.

  1. Ghid uimitor pentru dezvoltarea Rails Learn
  2. Ruby vs Ruby On Rails - Care este mai bun?
  3. Ruby vs PHP-Care tehnologie este cea mai bună?
  4. Top 10 Cele mai grozave întrebări de interviu PHP pentru experimentați