Pe cand eram inca in clasa a 6-a am vrut sa invat PHP. Ma jucasem cu ceva template-uri gratuite luate de pe internet si am vazut ca imi place sa „fac site-uri” (chiar daca nu le faceam eu ci modificam ceva ce deja exista). Apoi am zis ca nu este destul atata. Tin minte si acum cand m-am apucat sa parcurg un tutorial de PHP. Era vacanta de primavara si ma plictiseam. Am parcurs tutorialele de aici. Ma chinuiam eu la inceput pentru ca nu aveam niciun fel de cunostinta despre limbajele de programare. Dar in cateva luni am ajuns sa fiu capabil sa fac un script cap-coada. Iar de atunci am invatat tot mai multe si am ajuns ca astazi sa fiu un web developer datorita acestui inceput.
Revenind la o perioada mai recenta, tot auzisem despre Ruby si despre faimosul framework Ruby on Rails. Iar atunci cand am castigat un an gratuit la Tuts+, am urmat un curs despre introducerea in limbajul Ruby si despre Rails. Ce pot sa zic decat ca este un limbaj minunat! Pur orientat pe obiecte, iar eu incepusem in ultimul timp sa lucrez doar cu PHP5. In acest post voi incerca sa compar putin cele 2 limbaje.
Nu compari merele cu portocalele cumva?
Intr-un fel da. PHP a fost scris special pentru web, pe cand Ruby este un limbaj de programare general. Cand vine vorba despre Web Development, nu putem vorbi despre Ruby fara sa amintim de Ruby on Rails – celebrul framework – desi exista si alte framework-uri, dar care nu se bucura de aceeasi popularitate, pe cand pentru PHP exista foarte multe framework-uri gen Yii, Codeigniter, Laravel etc.
PHP – Puncte tari
Simplu si usor de invatat
Ce imi place la PHP este faptul ca e usor de folosit. Daca ai deja o pagina HTML, ii schimbi extensia in .php, pui un cod <?php //cod aici ?> si totul merge din prima. Este foarte simplu sa scrii un script asa si sa il si publici foarte repede. Asta este unul si punctele tari din PHP – designerii si oamenii care nu stiu PHP pot totusi sa inteleaga destul de usor cum functioneaza.
Totusi asta vine cu un cost – fiecare poate sa scrie codul dupa cum il taie capul. De aceea framework-urile te obliga sa urmezi un pattern, ca sa fie un cod care se supune cat de cat unor reguli. Totusi, pentru ca este atat de simplu sa scrii cod PHP, exista o multime de developeri care sunt disponibili sa lucreze, spre deosebire de programatori Ruby care in Romania abia ii gasesti si cand ii gasesti sunt destul de scumpi.
Documentatia pentru PHP este si ea foarte faina. Ceea ce gasesc pe php.net este mult mai clar si mai usor de gasit decat pe RubyDocs. De asemenea pe php.net gasesti comentarii de la useri care de multe ori te ajuta mai mult decat documentatia in sine.
Este facut pentru web
Unu din lucrurile bune la PHP este ca a fost gandit special pentru web. Nu este un limbaj de programare general ca si Ruby,C,C++ etc. Multe din functiile disponibile sunt menite pentru a usura munca developerilor web. De exemplu daca vrei sa trimiti un header la browser folosesti functia header().
Daca vrei sa encodezi o parola, ai functiile md5() sau sha1(). In Ruby nu este chiar asa de usor sa faci aceste chestii.
Multe resurse
Tocmai pentru ca este un limbaj cu destul de multa vechime, gasesti foarte multe resurse scrise pentru PHP. WordPress, Joomla, Drupal – toate sunt scrise in PHP. Sa nu mai zic de zeciile de framework-uri scrise pentru PHP.
Usor de facut deploy
Este foarte usor sa faci deploy pentru o aplicatie PHP. Scrii cod, salvezi si urci pe un server FTP (sau git). Nu ai nevoie sa scrii comenzi in linux, nu nimic. Doar dai upload si merge din prima. Gasesti foarte multe site-uri care ofera gazduire si absolut toate in ziua de astazi iti ofera si php. Chiar si sa folosesti un framework gen Codeigniter nu implica sa stii sa scrii comenzi in SSH. Copiezi toate fisierele pe server si asta e.
PHP – Puncte slabe
Evolutia lui a dus la un cod prost
La inceput PHP a fost un simplu limbaj de programare si pe masura ce a evoluat, au tot fost introduse chestii. La inceput nu exista partea de Orientare pe Obiecte, a fost introdusa pas cu pas, de fiecare data a mai fost adaugat ceva dar a fost si codul vechi pastrat. De asemenea, exista inconsistente in denumirea functiilor. Odata functia e strlen() odata e str_replace().
Problema mare la acest capitol este ca tu faci un program in PHP5. Dar cand vine vorba sa pui pe alt server, care are o versiune mai veche de PHP, s-ar putea sa ai probleme.
Cod greu de mentinut
Fiecare programator scrie cod in stilul lui, iar atunci cand vine vorba sa corectezi codul altcuiva, s-ar putea sa iti ia ceva timp.
Ruby on Rails – puncte tari
Framework matur
Cu cat mai mult folosesc Rails, cu atat mai mult gasesc utile anumite chestii si descopar tot mai multe. In timp foarte scurt poti sa ai deja un prototip de calitate inalta – adica ai si protectie CSRF(Cross Site Request Forgery) din start, fara ca tu sa mai faci ceva. Apoi ai partea de Active Record cu care faci modele de date foarte rapid.
Viteza & programare placuta
Imi place foarte mult sa lucrez cu Rails. Iti face viata mai usoara pentru ca are atatea chestii care sunt automatizate. Tocmai pentru ca ai atatea optiuni de automatizare, te poti concentra mai mult pe cum sa rezolvi o problema fara ca sa te gandesti la modul in care o faci folosind framework-ul. La acest aspect merita mentioante:
- Generatoare & Scaffolding – Iti ofera o cale rapida de a genera modele si alte lucruri care le folosesti des,
- Gem-uri – comunitatea Ruby on Rails iti ofera o multime de asa numite „gem-uri” pe care doar le adaugi la Gemfile si apoi le poti folosi. Asta te ajuta foarte mult pentru ca nu mai trebuie sa faci tot de la 0, o multime de clase deja sunt facute si te asteapta sa le folosesti.
- Active Record ORM – nu mai trebuie sa stii sa scrii o multime de query-uri SQL iar daca vrei sa schimbi baza de date de la MySQL la SQLite, este foarte usor
- Testare – Rails vine cu partea de Testing din start – poti face teste la codul scris de tine fara sa mai instalezi PHPUnit sau alte prostii.
Ca si un limbaj orientat pe obiecte, este foarte misto. Spre deosebire de PHP, Ruby este un limbaj complet orientat pe obiecte. Codul este foarte concis si simplu. Va dau un exemplu doar:
Cod php:
<?php $nume = "Filip Pacurar"; $lungime = strlen($lungime); echo $lungime; ?>
Cod Ruby
nume = "Filip Pacurar" puts nume.length
In Ruby pana si cifra „1” este un obiect, apartine de clasa Fixnum. Ceea ce da o flexibilitate limbajului. Dupa ce te obisnuiesti sa scrii in Ruby, PHP ti se pare asa de greoi.
Ruby on Rails – Puncte Slabe
Greu de invatat pentru incepatori
Ca sa folosesti Ruby cum trebuie, ai nevoie de Linux, Ruby merge si pe Windows, dar s-ar putea sa ai probleme cu unele gemuri. Eu am stat o noapte intreaga sa fac o aplicatie sa mearga pe Windows, pe cand in Linux a mers instant. Ca sa nu mai zic ca trebuie sa stii ce si cum sa instalezi. Pe scurt – trebuie sa stii putin Linux.
Ca sa publici o aplicatie scrisa in Ruby nu este asa usor ca si cu PHP. Trebuie sa gasesti gazduire care abia o gasesti mai ales in Romania. Trebuie sa stii sa folosesti Phusion mod_rails, trebuie sa stii sa folosesti migrarile cum trebuie.
Mi-a luat ceva timp, dar acum am un server de Develop si unul de Productie, iar atunci cand am facut un feature il pun pe Git si instant il am si pe Productie.
Ruby nu este un limbaj usor
In multe privinte, Ruby este mai greu de invatat decat PHP. Sunt multe lucruri care nu sunt atat de clare precum in PHP. Ruby pentru mine acum pare mult mai simplu, dar ca un incepator vei avea multe intrebari.
<%= form_for @user do |f| %> <%= f.label :first_name %> <%= f.text_field :first_name %> <% end %>
Stai putin, ce e „f”, ce face, de ce este numit asa?
Tot ce vreau sa zic este ca daca stii deja PHP, C, C++, Ruby se va juca putin cu nervii tai.
Concluzie
Dupa toate acestea, ce pot zice?
PHP este mai prietenos cu tine daca il folosesti pe partea de web. Ajuta si faptul ca gasesti foarte multe resurse si ajutoare.
Ruby/Rails este superior PHP-ului si toate framework-urile deja existente, in opinia mea. Imi place sa lucrez mai mult in Ruby decat in PHP mai nou, desi PHP este limbajul meu „de suflet”. Am un proiect personal de care ma ocup in timpul liber pe care momentan vreau sa il tin secret, dar cred ca pentru un anumit segment de oameni o sa fie de folos. Totusi, nu este mai usor sa scrii cod in Ruby.
Astept vremea cand vei gasi mai multa gazduire pentru Ruby si Rails. Pentru proiectele personale voi folosi Rails iar la Web Efficient vom scrie in continuare in PHP ca limbaj primar.
Bonus
Uite cat de simplu este in Ruby sa aflii diferenta in zile dintre 2 date:
diferentaZile = TimeDifference.between(Time.now.to_time, data1.to_time).in_days.to_i
Lasă un răspuns