Ruby on Rails


Ako vas je ikada zanimalo (web) programiranje no niste znali s kojim jezikom početi – na pravom ste mjestu. Mi ćemo vas upoznati sa jednim vrlo popularnim jezikom i frameworkom – Ruby on Railsom.

Programiranje je trenutačno jedna od najtraženijih vještina na tržištu, no i dalje postoji nestašica (dobrih) programera. Kako u svijetu, tako i u Hrvatskoj. Postoje razna predviđanja da će samo Amerika kroz 10 godina morati „uvesti“ preko 1.5 milijuna programera, te Azija oko 500 000 programera. Također, velike su potrebe i u Europi. Da li je to dovoljan poticaj da se okušate u programiranju? Mi mislimo da jest, stoga smo vam danas odlučili predstaviti jedan vrlo traženi programski jezik – Ruby – te Rails framework koji slovi kao jedan od najboljih frameworka na tržištu, pogotovo ako govorimo o web programiranju. Ako nas poslušate i probate programirati, spremite se na sate i sate tipkanja po tipkovnici, čitanju tuđih kôdova, traženja funkcija i metoda po službenim i neslužbenim dokumentacijama, no vjerujte nam, isplatiti će vam se. Ako naučite Ruby, garantiramo da ćete moći naći posao bez problema. No, dosta o tome, pogledajmo što Ruby točno jest, kakav je to Rails framework, što možete napraviti s njime i što je sve u njemu napravljeno.

Piše: Boris Plavljanić

Ruby

Da biste shvatili što je Ruby on Rails, moramo krenuti određenim redom. Najbolje je prvo shvatiti što je Ruby, kakav je to jezik, a tek onda se pozabaviti spomenutim frameworkom. Stoga, najjednostavnija definicija je da je Ruby dinamični, open source, objektno orijentirani programski jezik kojeg je tijekom 90.-ih godina razvio računalni znanstvenik Yukihiro Matsumoto. Ruby je također i jedan od najmlađih programskih jezika u širokoj upotrebi, te su ga prihvatile mnoge velike kompanije koje se bave razvojem softvera, no vratiti ćemo se na tu temu kasnije. Sama sintaksa Rubyja je vrlo lagana i čitljiva, odnosno dizajnirana da ju možete samo „čitati“ i trebali biste vrlo lako shvatiti taj isti kôd koji čitate. U praksi to i nije uvijek tako, no sintaksa je vrlo user-friendly što se će svidjeti početnicima, ali i mnogim iskusnijim programerima koji tek počinju učiti ovaj jezik. Za razliku od nekih jezika gdje prvo morate pročitati 200-300 stranica teorije da biste mogli početi programirati, za Ruby vam je dovoljno 20-ak minuta da pohvatate one najosnovnije stvari i krenete pisati kôd.

Rekli smo da je Ruby objektno orijentirani (OO) programski jezik, no on ujedno u određenoj mjeri podržava i proceduralno, funkcionalno i imperativno programiranje što mu daje jedan dodatni plus kod programera. Zbog te podrške, Ruby je izrazito fleksibilan jezik i možete ga koristiti na onaj način koji vam najviše odgovara. Ipak, objektno orijentirana paradigma je „glava“ paradigma i trebali biste krenuti u tome smjeru, odnosno na taj način gledati na Ruby. Ako ne volite OOP jezike, najbolje je zaobići Ruby u širokom luku.

Ako pogledamo po čemu se razlikuje od Jave ili C#-a, onda je najočitija razlika u objektima. Spomenuta dva jezika imaju nekoliko podatkovnih tipova, te objekte, dok u Rubyju postoje samo objekti. To ćete vidjeti kada počnete koristiti jezik i to vas ne treba trenutačno zamarati. No, imajte to na umu, pogotovo ako ste programirali u nekom drugom programskom jeziku.

Ruby kao programski jezik je sasvim besplatan i možete ga koristiti za bilo koju potrebu – to može biti aplikacija koju ćete napraviti za sebe, za svoje poduzeće, aplikacija koju ćete prodavati i tako dalje. Uglavnom, niste ograničeni niti u jednom pogledu. To je jedan od razloga zašto je Ruby izrazito popularan kod razvoja web aplikacija. Tome pomažu i 2 popularna frameworka, Sinatra i Rails, koji olakšavaju razvoj takvih aplikacija. Isto tako, morate znati da i Ruby ima svojih mana. Koliko god ga mi hvalili.

Ono što nam najviše smeta je brzina kojom se Ruby izvodi. C++, Java, C#, Python … sve su to jezici koji su osjetno brži kod izvođenja programa. Iako, zadnje verzije su nešto brže nego one stare pa tu sporost možemo tolerirati. Barem u velikoj većini slučajeva. Nadalje, mnogi kažu da je Ruby „trendy“ programski jezik. Takvi jezici dođu, budu popularni neko vrijeme i onda nestanu sa „scene“. Mi ne bismo rekli da je Ruby takav jer mu popularnost raste još od 2005.-e godine i svakim danom sve više programera koristi Ruby u svakodnevnom programiranju. Da li će tako biti i za 10-ak godina? Možda da, možda ne – nije ni bitno. Bitno je da će narednih X godina Ruby biti popularan i da će postojati potražnja za tim programerima. Da se odmah nadovežemo na ovu zadnju rečenicu – puno je veća potražnja za Java/C#/PHP/… programerima, no i konkurencija je mnogo jača. Zato ponavljamo – dobri Ruby programeri će uvijek naći posao, bez obzira na sve.

Da li morate znati Ruby, prije nego krenete koristiti Rails?

Odgovor je – ne. Ali bilo bi dobro da posvetite barem nekoliko sati Rubyju kako biste naučili sintaksu i kako vas određene sitnice ne bi živcirale kada počnete razvijati web aplikaciju sa Rails frameworkom. Ruby ćete, kao i sve jezike, naučiti korištenjem, a u ovom slučaju je to tokom korištenja Rails frameworka. Postoji nekoliko web stranica (Try Ruby, RubyMonk …), koje bi bilo dobro posjetiti i proći tih nekoliko tutorijala za početnike. To će biti dosta da shvatite kako spomenuti jezik funkcionira. Ono što će vam u početku definitivno biti najteže za naučiti su imena struktura koje se koriste u većini tutorijala, no sa malo prakse ćete ih svladati bez problema. Ista stvar je sa nizovima (arrays) i hash tablicama i mapama koje bi bilo dobro svladati odmah u početku kako biste dobili dobre temelje za kasnije. Mogli bismo još nadodati i lambda izraze jer ćete se s njima stalno susretati, no to je za one koji vole malo teže stvari odmah u startu. Kada to svladate, Rails će biti užitak učiti i koristiti, ali prije toga vam preporučujemo da si nađete dobar IDE (Integrated development environment) u kojem ćete programirati. Ima nekoliko komerijalnih i besplatnih rješenja – mi smo koristili RubyMine (komercijalni, napravila ga je kompanija JetBrains), te NetBeans (Windows/Linux/OS X) i TextMate (OS X) kao nekomercijalna rješenja.

Rails

Zašto Rails, a ne neki drugi framework? Na to pitanje je prilično teško dati odgovor. Svaka web aplikacija ima kompleksne potrebe koje treba zadovoljiti – one uključuju generiranje i korištenje HTML-a, CSS-a, PHP-a, pristupanje bazi podataka i slično – i to Rails pokušava olakšati. Prosječan programer bez dobrog web frameworka to jednostavno ne bi mogao napraviti, odnosno čak i da uspije, trebali bi mu tjedni i mjeseci da napravi dobru web aplikaciju i cijelu infrastrukturu koja stoji iza nje.

Pojednostavljeno – Rails je web framework bez kojeg je nemoguće razvijati web aplikacija ako pri tome želite koristiti Ruby programski jezik. Ruby on Rails (RoR) je naziv koji se koristi za razvoj web aplikacija uz pomoć programskog jezika Ruby i spomenutog Rails frameworka.

Na Rails možete gledati i kao na skup libraryja koji vam pomažu u razvoju web aplikacija i jako puno posla će učiniti za vas ali na jedan specifičan način – „On Rails way“ kako se to naziva u Ruby zajednici. Takvo generiranje i pisanje web aplikacije pokušava zadržati jedan specifičan standard koji će svaki Rails programer razumjeti te će moći u malo vremena nadograditi aplikaciju koju možda on sam i nije pisao. Samim time, suradnja među Ruby on Rails timovima je olakšana i izbjegavaju se uobičajene greške koje se događaju kada se web aplikacije pišu uz pomoć „standardnih“ web tehnologija i jezika. Naravno, Rails framework se konstantno nadograđuje i nadopunjuje korisnim metodama koje se često koriste u praksi tako da vam je svakim danom sve lakše i lakše pisati web aplikacije.

Treba uzeti u obzir da je ovaj framework nastao 2004.-e godine kada je „web scenom“ vladao PHP i web aplikacije su se pisale na način koji su HTML/CSS/PHP dozvoljavali. Postojali su tu i neki drugi jezici kao što su Java sa frameworkom Struts, Adobov ColdFusion, Appleov WebObjects, Microsoftov.NET … ali Ruby je bio specifičan što se vidi i danas. Odskakao je od tadašnjih standarda koji su bili široko rasprostranjeni. Da li je to dobro ili loše, ovisi koje tehnologije koristite. Ako ste odmah krenuli sa Ruby on Railsom nije vam smetao takav razvoj aplikacija (jer za druge niste ni znali), no ako ste došli iz recimo PHP svijeta, trebalo vam je određeno vrijeme da se naučite na RoR. No, kada podvučemo crtu, Ruby on Rails je fantastičan web framework bez obzira na sve. Usudili bi se reći i jedan od najmoćnijih frameworka trenutačno na tržištu.

Smjernice za korištenje RoR-a

Iza ovog popularnog programskog jezika, stoji jedna „filozofija“ razvoja aplikacija zbog koje se mnogi programeri i odlučuju koristiti upravo Ruby, a ne neki drugi programski jezik. Tu filozofiju slijede određene smjernice koje moramo spomenuti jer je zbog njih Ruby to što jest.

1) Opcionalnost – Sredinom 90.-oh godina većina web aplikacija pisana je u Perlu, programskom jeziku koji je mnogo obećavao. U njemu ste mogli jednu stvar riješiti na mnogo načina. Nije postojao „pravi način“ ili „najbolji način“. Postojalo je mnogo načina da napravite ono što ste naumili. No, zbog toga najčešće niste imali konzistentnost. Nasuprot tome, Rails je postavio određene standarde koje Rails programeri moraju slijediti ukoliko žele riješiti određeni problem i nemaju baš preveliki izbor u nekim stvarima. Prednosti ovog pristupa su mnoge, a najočitije su – brzi razvoj web stranica, jako puno standardnih ugrađenih funkcija, jednoliki kôd unutar mnogih aplikacija, lakše održavanje …

2) „Omakase“ – Druga točka nadovezuje se na prvu. Omakase je Japanski izraz koji preveden otprilike znači „Izabrati ću za tebe ono najbolje“. Oni koji u Japanu jedu sushi mogu uzeti „Omakase sushi“, pri čemu glavni kuhar za gosta izabire ribu i sastojke i time olakšava gostu odabir jela. U svom poznatom eseju, Heinmeier Hansson (jedan od glavnih ljudi koji stoje iza Railsa), je rekao da je „Rails“ omakase. Odnosno, tim Ruby stručnjaka je izabrao „sastojke“, složio i dizajnirao API, te za vas učinio sve ono najbolje što je mogao. Možda vam se ponekad neke stvari neće svidjeti, no to je njihov odabir s kojim se morate pomiriti ako koristite Ruby. U velikoj većini slučajeva, korisnici ipak neće imati primjedbe jer stvari funkcioniraju upravo onako kako bi i trebale.

3) Konvencija ispred konfiguracije – „Konvencija ispred konfiguracije“ je zapravo jedan mehanizam koji pokušava olakšati programiranje na način da programera rastereti konfiguriranja datoteka prije nego počne programirati. Uzmite za primjer bilo koji Java web framework – prije nego se uputite u izradu aplikacije ili appleta, morate podesiti hrpu parametara, napraviti modele za bazu podataka (konfiguracijska datoteka se mora zvati kao i tablica u bazi da bi uopće funkcionirala …) i tako dalje. To može ići na živce kada više vremena potrošite na takve stvari, umjesto da programirate. Ruby je to riješio i time postigao veliku fleksibilnost. To čini na način da radi „pretpostavke“. Ako recimo imate model „Korisnik“, on će za vas napraviti tablicu u bazi podataka koja će se zvati „Korisnici“ – primijetite da imenicu iz jednine prebacuje u množinu. Naravno, trebali biste koristiti engleske nazive da bi ovo navedeno funkcioniralo. Ovakvih „sitnica“ ima mnogo, a svaki programer će ih cijeniti. Na taj način jako podižete produktivnost, a na kraju krajeva, to je najbitnije. Da isprogramirate ono što želite, a (nevažne) detalje prepustite drugima.

4) Ne ponavljajte se – Akronim DRY (Don’t repeat yourself) je zapravo i princip razvoja softverskih rješenja koji su počeli promovirati Andy Hunt i Dave Thomas – poznati Ruby on Rails programeri. U onoj najjednostavnijoj formi, možemo reći da je to princip kojem je primarna zadaća izbjegavanje dupliranja kôda. Prije nego skočite na nas i kažete da je tako u svim jezicima, pričekajte sekundu. Ovaj princip je postojao davno prije spomenutog dvojca, no Ruby sam po sebi omogućuje ovakvo pisanje kôda i ako slijedite principe koje je Ruby zadao kao glave u razvoju softvera, onda ćete sa malo iskustva pisati web aplikacija sa jako malom količinom kôda. Čak ni najbolji programski jezici (op.a. najbolji programski jezik je relativan pojam, no smatrajte pod time jezike javu, C#, C++ …) ne mogu u tako malo linija kôda toliko toga napisati. Također, Ruby koristi i razne meta programske mogućnosti o kojima ćete više naučiti kada krenete učiti Ruby.

Gdje Rails postaje kompliciran?

Za svaku od spomenutih točaka možemo napisati i nešto potpuno obrnuto. Odnosno, prednosti Rubyja se mogu gledati i kao mane pogotovo ako ste godinama programirali u nekim drugim programskim jezicima. Ne postoji idealan jezik, no tokom godina se nekoliko jezika izdiglo iz mase i ti isti jezici su postavili standarde na koje se veliki broj programera navikao. No, s druge strane, treba biti otvoren za nove stvari i nove načine programiranja. No, ipak pogledajmo što neki programeri zamjeraju Rubyju.

– Jedan od problema koje Ruby ima je, recimo, nepostojanje mehanizma za „background“ poslove, odnosno za asinkrono programiranje. Uzmite na primjer da morate „kontaktirati“ udaljeni web servis, no dok to radite, vrlo vjerojatno biste htjeli da vam se prikaže web stranica, usprkos tome što još niste dobili sve podatke od spomenutog servera. Nećete moći. Tj. Hoćete ali na neke „čudne“ načine. Samim time što ćete morati eksperimentirati, počinjete gubiti konzistentnost po kojoj je Ruby poznat.

-Rekli smo da je Rails „omakase“, no to nije uvijek tako. Postoji grupa profesionalaca koja je počela raditi izmjene na standardnim konvencijama, odnosno počeli su miješati više različitih libraryja (frameworka) kako bi na svoj način nešto napravili. To nije dobro iz razloga kojeg smo malo prije spomenuli – ubog konzistentnosti, a i novi programeri se mogu pogubiti u takvom kôdu. Ponavljamo, radi se o manjem broju programera, no dovoljno velikom broju da ovaj problem počne zabrinjavati Ruby zajednicu.

– Jedna od ljepota programiranja je to što svako ponašanje aplikacije, bilo ono logično ili ne, možete objasniti uz pomoć kôda. Ako ste iskusni programer, u vrlo kratkom vremenu ćete naći uzrok problemu, odnosno onaj dio aplikacije koji uzrokuje specifično ponašanje. No, vratite se malo na onaj dio teksta koji smo nazvali „Konvencija ispred konfiguracije“. Za iskusnog programera ovaj dio može biti problem. Problem nastaje kada Ruby radi određene pretpostavke i kada bez konfiguracijskih datoteka neke stvari jednostavno ne možete objasniti. Početnik će se lako pomiriti s tom „magijom“ koja se događa, no pravi programer neće. A da biste naučili kako Ruby radi, morali biste možda potrošiti mjesece, ako ne i godine, da ga svladate u tom dijelu. Te nejasnoće su jedan od razloga zašto dobar dio programera ipak koristi neke druge programske jezike i frameworke, a ne RoR.

Sintaksa, objekti, petlje …

Ono što vas vjerojatno najviše zanima je kako je ustvari programirati u Rubyju. Iz perspektive nekog tko se bavi programiranjem svakodnevno, mogu reći da je Ruby jako ugodan za korištenje. Prije svega jer je sintaksa „čista“. Ako uzmete, recimo, Perl vidjeti ćete što je loša sintaksa. Kao da je netko bezveze lupao po tipkovnici i rekao: „Ovo je sintaksa koju ćemo koristiti za programiranje“. Doslovno tako. S druge strane Ruby ima logičnu sintaksu i izgledao kao da pišete engleske riječi. Evo i primjer. Imate integer, odnosno broj 5. Ako želite slijedeći broj, što ćete napisati? U većini programskih jezika ćete na broj dodati „++“ (inkrement) ili dodati „+1“. U Rubyju ćete napisati „.next“ i dobiti broj 6. I cijeli jezik je takav – postoji hrpa ugrađenih metoda koje možete koristiti bez da pogledate u dokumentaciju – dovoljno je da pretpostavite da takva metoda postoji. U velikom broju slučajeva ćete biti u pravu. No, to nas vodi do jedne druge stvari. Rekli smo da je sve u Rubyju objekt. U ostalim programskim jezicima imate objekte, imate konstante, imate „obične“ brojeve … U ovisnosti o tipu podataka možete pozivati metode ili funkcije. U Rubyju je sve objekt pa na svemu možete koristiti ugrađene metode. Spomenuta metoda „.next“ je jedna od njih i koristi se kod brojeva. Naravno, imate ogroman broj metoda za stringove, polja, (hash) mape, imate veliki broj ugrađenih struktura podataka koje možete koristiti, razne algoritme – za sortiranje, pretraživanje … Sve ono što jedan moderan programski jezik mora imati.
Da li je to dobro? Naravno da je jer samim time Ruby postaje jako otvoren i fleksibilan. Vi svakom postojećem objektu (bio on ugrađen u Ruby ili ga vi naknadno napisali) možete u bilo kojem trenutku dodati ili ukloniti metodu, dodati ili ukloniti varijable (polja) itd. Radite što god vam se čini logično u tom trenutku. U 99.9% slučajeva ograničenja nema. Također, tu su i standardne petlje, uvjeti, simboli, moduli (nešto slično klasi) …

Kako naučiti Ruby (on Rails)?

Kada programera priupitate kako naučiti programirati vjerojatno će vam reći tako da se jednostavno bacite na posao. Zadajte si neki lakši problem i pokušajte ga riješiti sa novim programskim jezikom. S vremenom krenite na složenije probleme dok ne budete sigurni da možete napraviti što god poželite. To je odličan savjet jer za programiranje morate „zaprljati“ ruke i napisati na tisuće linija kôda da biste ga naučili. Kao prvo tako ćete najlakše naučiti sintaksu, a zatim dolaze i ostali benefiti. A možda i dobar posao.

No, izdvojili bismo nekoliko web stranica i knjiga koje svakako vrijedi pogledati. Web stranice na kojima ćete zapravo naučiti osnove Rubyja su: tryruby.org, codecademy.com/Ruby, iwanttolearnruby.com, rubymonk.com, te rubylearning.com. Za ove web stranice će vam možda trebati 2-3 dana dok riješite sve zadatke i prođete tutorijale, no isplatiti će vam se. Možemo reći da je to ono što morate znati prije nego se bacite na Ruby on Rails, odnosno prije nego krenete programirati web aplikaciju. Naravno, trebati će dosta vremena dok svladate sve što trebate, ali od nekud se mora krenuti. Mi mislimo da možete sa ovim web stranicama. Ako ste ipak jedna ili jedna od onih koji prvo vole pročitati dobru knjigu pa se tek onda baciti na pisanje kôda, preporučujemo da kupite ili besplatno skinete neku od knjiga o Rubyju. Naš izbor su ipak komercijalne knjige jer su u pravilu bolje od onih besplatnih, a definitivno najbolje na tržištu su: The Ruby programming language (D. Flanagan), Programming Ruby 1.9 & 2.0 (D. Thomas), te Cumputer Science Programming Basics in Ruby (O. Frieder). Što se Railsa tiče, spomenimo knjige Ruby on Rails Tutorial, Agile Web Development with Rails 4 i Ruby on Rails 4.0 Guide.

Bilo koji način učenja da odaberete nećete pogriješiti. Bitno je samo da zasučete rukave, instalirate Ruby, skinete Rails framework i bacite se na posao. A kada napravite zanimljivu web aplikaciju, svakako se javite redakciji vašeg omiljenog časopisa. Ugodno programiranje!

Popularne web stranice

Vjerujemo da vas inače ne zanima u kojem programskom jeziku je napisana vaša omiljena web stranica, no ne možemo spomenuti neke popularne web stranice koje su napisane u Rubyju, odnosno uz pomoć Rails frameworka. To su Basecamp, Scribd, Hulu, CrunchBase, Slideshare, Funny or die, Zendesk, GitHub, Yellow pages, Medhelp, OneHub, Freckle, Chowhound, Bleacher report, CrazyEgg, Corkd, Jobster, Twitter, 43Things … Ima ih još no ove se ističu svojom popularnošću.


Prethodni članak
Sljedeći članak
RELATED ARTICLES

Komentiraj

Please enter your comment!
Please enter your name here

- Advertisment -

Most Popular