#. Uvod

Predgovor prevodioca

U ime Milostivog i Svemilosnog Boga,

U potrazi za stabilnim okruženjem koje će mi pomoći da razvijem open source program za obradu podataka na hematološkim klinikama i zavodima za transfuzijsku medicinu, naišao sam na Ruby, za svijet programiranja relativno nov jezik. Svi su ukazivali na jednostavnost ovog programskog jezika, a kako su moja prva iskustva u programiranju bila sa jezikom BASIC, za koji svi smijemo reći da je prilično jednostavan, pomislio sam kako bi dobro MySQL bazu povezati sa Ruby, ako je tako jednostavna i bio sam ubijeđen da sam pronašao savršenu platformu za moju buduću aplikaciju. Postoji danas mnogo različitih tutoriala, knjiga, uputstava i dokumentacije koja u glavi uglavnom proizvede vertigo – vrtoglavicu, a ne jasnu predstavu o programskom jeziku. Tutorial koji je napisao gospodin Kris Pajn (Chris Pine) je nešto drukčiji. On se postavlja prema onima koji tek uče Ruby kao da i on sam tek počinje s programiranjem...ustvari, tutorial to i jeste – on je za početnike u programiranju, one koji debituju, samo što im kao primarni jezik u programiranju postavlja Ruby. Iz tog razloga sam i tražio njegovu dozvolu da tutorial koji je napisao prevedem na bosanski jezik (što podrazumijeva da ga razumije i veliki broj drugih Južnih Slavena, ne samo Bosanci i Hercegovci, nego Hrvati, Srbi, Crnogorci, Makedonci, Albanci, ...mnogi drugi, te Slovenci). Nisam našao nikakav sličan u našem govornom području (ustvari, nisam uopšte našao tutorial na nekom od jezika ex-YU naroda kojemu je tema Ruby ili uvod u programiranje – sličan konceptu kojeg Kris ima), pa sam pomislio kako bi bilo lijepo dati neki doprinos. Prijevod ovog tutoriala nije doslovan i izmjene u njemu imaju cilj da Ruby što bolje približe apsolutnom početniku. U par slučajeva (naslovima ili opisima), za neke definicije sam bio prinuđen koristiti izvorne nazive (koji potiču iz engleskog jezika), koji se inače koriste u programiranju, da bih opisao neke od elemenata sintakse koju koristi Ruby. Imajući u vidu da se budući programer zaista mora dobro snalaziti s engleskim jezikom, mislim kako izvorni nazivi neće predstavljati veći problem. Bude li među čitaocima ovog tutoriala onih koji mu nađu mahane, neka se slobodno jave, da eventualne nedostatke mogu što prije ispraviti. Dodatak: komentare prevodica, kojih je zaista malo, označavao sam [k.p.:]

Rusmir Gadžo (rusmirgadzo@gmail.com)

[http://sites.google.com/site/rubynabosanskom/]

Februar] [Veljača 2009 / Safer 1430

Dobar početak za budućeg programera

Sve je počelo negdje 2002 godine. Razmišljao sam kako bih mogao podučavati programiranju i kako bi divan jezik Ruby bio za to. Mislim, svi smo mi bili uzbuđeni kad je Ruby došao, jer smo uvidjeli kako je moćan, elegantan i stvarno jako zabavan jezik, ali meni se činilo da bi to takođe bio dobar jezik za one koji tek ulaze u programiranje.

Nažalost, u to vrijeme nije bilo mnogo priručnika ili neke druge dokumentacije za Ruby početnike. Neki od nas, u programerskoj zajednici, pitali su se šta zaista treba da sadrži jedan „Ruby za početnika“ tutorial i kako pristupiti podučavanju programiranja uopšte. Što sam više razmišljao o ovome, više sam imao za reći (što me je pomalo iznenadilo). Konačno, neko mi je rekao „Kris, zašto jednostavno ne napišeš tutorial, umjesto što stalno pričaš o njemu?“ Tako sam i učinio.

Nije mi išlo baš najbolje. Sve moje ideje su nekako bile dobre u teoriji, ali konkretan zadatak pisanja sjajnog tutoriala za one koji tek ulaze u programiranje bio je priličan izazov, veći nego sam zamišljao. (Meni se tutorial činio dobrim, ali ja sam već poznavao programiranje.)

Spasilo me je to što sam olakšao ljudima kontakt sa mnom, pa sam im tako mogao pomoći svaki put kad bi nešto „zapelo“. Kad bih vidio da mnogo njih „zapinje“ na jednom (istom) mjestu, onda bih se potrudio da taj dio izmjenim, napišem ponovo. Bilo je tu dosta posla, ali je lagano postajalo sve bolje i bolje.

Par godina nakon toga, postao je to jedan stvarno dobar tutorial J. Ustvari, tako dobar, da sam bio spreman proglasiti ga završenim, tako da bih mogao preći na nešto drugo. Upravo tada se ukazala prilika da se moj tutorial pretvori u knjigu. Pošto je, u suštini, bio završen, nisam imao ništa protiv da se objavi kao knjiga. Jednostavno bih dodao par novih tačaka, par novih vježbi, možda koji primjer više, par novih poglavlja, pronašao 50-tak ljudi za recenziju...

Radio sam na tome još jednu godinu, ali sada mislim da je tutorial jako dobar, većinom iz razloga što mi je u pomoć priteklo stotine hrabrih duša.

Ono što stoji ovdje je originalni tutorial, manje-više izmjenjen od 2004. godine. Za ono najbolje i najnovije, trebalo bi pogledati kako izgleda moja knjiga.

Par savjeta za predavače

Postoji nekoliko principa kojih sam se pokušao držati dok sam pisao ovaj tutorial. Mislim da ti principi čine da proces učenja programskog jezika teče lakše; učiti programiranje je ionako teško, samo od sebe. Ako ste od onih koji nekoga podučavaju kako uploviti u vode „hackera“ onda bi i vama ove ideje mogle biti od pomoći.

Prvo, pokušao sam razdvojiti koncepte, što je više moguće, tako da bi učenik učio samo jedan koncept. Ispočetka je išlo teško, ali nakon malo vježbe bilo je i previše lahko. Neke se stvari moraju naučiti prije onih na koje dolazimo, ali sam bio iznenađen što je zaista vrlo malo hijerarhije pređašnjosti (poznavanja prethodnog gradiva) bilo uključeno. Na kraju, trebalo je samo da poredam stvari, a pokušao sam da ih uredim tako da bi novi naslovi bili motivirani onim prošlim.

Još jedan od principa kojih sam se držao je podučiti ljude da postoji samo jedan način da nešto naprave. Očigledna je to beneficija za ljude koji nikad nisu programirali. Jedno je sigurno, jedan način da se nešto napravi je lakše naučiti nego dva. Možda je važnije to da, što manje stvari naučite programera, to će više do izražaja doći njegova kreativnost i pamet u programiranju. Iz razloga što se većina stvari u programiranju svodi na riješavanje problema, od ključne je važnosti da se budući programeri što više potiču na to u svakoj fazi podučavanja.

Pokušao sam uključiti neke programerske koncepte u koncepte koje ljudi već imaju kod sebe, u životu, da bih prezentovao ideje na takav način da je njihova intuicija ono na što će se osloniti, a ne tutorial. Objektno-orijentisano programiranje se jako dobro uklapa u ovakav koncept. Zbog toga sam vrlo rano mogao da počnem sa naglašavanjem „objekata“ i različitih „vrsta objekata“ , izgovarajući te fraze bez ustručavanja. Nisam koristio izraze kao što su „sve u Ruby je objekat“ ili „brojevi i znakovi su vrste objekata“, iz razloga što što ovi izrazi ne znače ništa onome ko tek stupa u programiranje. Umjesto toga, pričao bih samo o znakovima (ne „znakovnim objektima“), a ponekad bih o objektima govorio samo kao „stvarima“ u nekom od programa. To što sam, pomalo podmuklo J, rekao za objekte u Ruby da su „stvari u programima“, imalo je velikog uspjeha.

Kada bih svoje učenike podučavao, pokušao bih da izbjegnem nepotrebni žargon, pa ako bi trebali naučiti neki od naziva, onda bih se potrudio da to bude onaj pravi; tako sam znakove nazivao „strings“, a ne tekstom. I metode sam nekako morao nazvati, pa kako bih drukčije nego „methods“.

Što se vježbanja tiče, mislim da sam izmilslio par vježbi koje su jako dobre, ali njih svakako nikad nije dosta. Iskreno, mislim da sam pola svoga vremena potrošio samo smišljajući zabavne, zanimljive vježbice. Dosadna vježba ubija želju za programiranjem, dok savršena vježba kod novopečenog programera pravi svrab koji jednostavno mora počešati! Ukratko, kad se prave dobre vježbe, tu ne možete nikad provesti previše vremena.

O originalnom tutorialu

Stranice ovog tutoriala generiše jedan poveći program napisan u Ruby, naravno :). Kao takav, ima par zanimiljivih osobina. Na primjer, svi primjeri programskog koda izvršavaju se svaki put kad se stranica učita i prikazani ispis je ispis koji program generiše. Mislim da je ovo najbolji i najlakši način da se osigura da sav kod koji prezentiram radi tačno onako kako ja to kažem. Ne morate se brinuti da li sam kopirao ispis nekog od primjera pogrješno ili zaboravio testirati dio koda; svaki put kad ga čitate, on istovremeno bude i testiran (odnosi se na webiste autora: http://pine.fm/LearnToProgram/). Tako, na primjer, u odjeljku koji govori o generisanju slučajne cifre, svaki put kad učitate stranicu, imaćete priliku da vidite novi broj...zgodno! (Koristio sam isti trik i u kodu koji sam dao kako primjer kad sam pisao knjigu, ali očigledno je da se efekti daju lakše uočiti u ovom tutorialu.)

Priznanja

Konačno, htio bih da se zahvalim učesnicima ruby-talk mailing liste na njihovim zamislima, prijedlozima i ohrabrenjima, svim mojim divnim recenzentima na njihovoj pomoći da knjigu učinim boljom nego bi ona bila kad bih je pisao ja sam, mojoj voljenoj supruzi, jer je bilo moj glavni recenzent/tester/pokusni kunić/muza, Matzu jer je napravio ovaj sjajni jezik i Pragmatic Programmers jer su me s njim upoznali i naravno, objavili moju knjigu!

Ukoliko uočite kakve grješke ili imate komentar ili prijedlog, možda dobru vježbu koju bih mogao uvrstiti, slobodno to podijelite sa mnom putem ove adrese: e-mail

------------------------------------------------

© 2003-2009 Chris Pine

http://pine.fm/LearnToProgram/