Ruby

Pasak WikipediosRuby – interpretuojama programavimo kalba greitam ir lengvam objektiškai orientuotam programavimui. […] Tai paprasta, mobili ir lengvai plečiama kalba.”

Mmm… “lengvas objektiškai orientuotas programavimas”. Skamba viliojančiai =)

Iš pradžių klausimai į kuriuos reikia atsakyti: taip, Ruby veikia Windows platformoje. Netgi daugiau: Ruby puikiai veikia visose pagrindinėse operacinėse sistemose: Windows, Linux (Unix), MacOs, BeOs, OS/2 ir t.t.

Ruby yra interpretuojama programavimo kalba, o tai reiškia, kad kaip ir daugelis kitų kalbų (Python, Perl, Php, *.bat bylos =)) Ruby kodas nėra kompiliuojamas ir jį paleidžia interpretatorius.

Ruby yra objektiškai-orientuota programavimo kalba: jei tokiose kalbose kaip Python’as arba Java yra objektų “pakaitalų”, tai Ruby faktiškai yra pilnai objektiškai-orientuota (objektiškumas ir buvo viena iš šios kalbos parašymo priežasčių).

Taip prieiname prie sintaksės. Čia norėčiau papasakoti trumpą istoriją:

Man asmeniškai keletą metų teko dirbti su Python’u. Dalinai to reikalavo darbdavys (pagrindinis programavimas įmonėje vyko Python kalba), dalinai tai buvo mano “programming language of choice”. Visą tą laiką lyg ir žinojau, kad egzistuoja tokia Ruby programavimo kalba, kuri yra labiau objektiškai-orientuota bei galingesnė nei Python’as, jaunesnė, šviežesnė, tačiau vis numodavau ranką, manydamas kad kalba yra pernelyg nebrandi, turi nepakankamai dokumentacijos, yra per mažai naudojama ir t.t.

Taip maniau iki tol, kol Slashdot’e ne pamačiau vis dažnėjančių įrašų apie Ruby on Rails. Tada pradėjau nagrinėti šią programavimo kalbą. Jaučiausi keistai: iš pradžių (paviršutiniškai žiūrint Ruby sintaksė yra panaši į Python’o sintaksę) nebuvo intuityviai aišku kodėl reikia visur prirašinėti “end”, bei kodėl nebūtina sąlygose rašyti “:”, tačiau palaipsniui pripratau (dabar (kartais) dirbant su Python’u keista kodėl reikia naudoti toki griežtą “whitespace’a”, bei kodėl nereikia prirašyti “end” sąlygos gale =)). Greitai priėjau “closures” (prireikė laiko perprasti šį principą), bei kitas įdomias “savybes” (bet apie jas vėliau).

Su laiku programuojant Ruby augo mano entuziazmas, ir nusprendžiau juo pasidalinti su vienu iš bendradarbiu (mano manymu labiau patyrusiu už mane programuotoju). Po kiek laiko jis man atsakė, kad jam Ruby “primena Japonų kalbą”. Būtent taip ir pasakė =).

Aš manau, jog tai geriausias apibūdinimas (kaip perkeltine taip ir tiesiogine prasme). Iš pažiūros paprasta: vienas hieroglifas – viena reikšmė (nereikia rašyti žodžio, kuris susideda iš raidžių), tačiau visgi sunki/kitokia/nesuprantama (nes Japonų =)), o po kiek laiko, įpratus, labai galinga ir produktyvi.

Tikiuosi sužadinau Jūsų apetitą bei atsakiau į kelis klausimus. Jei taip tai parsisiųskite Ruby ir išbandykite patys.

P.S. Tai mano pirmas įrašas į šį blogą. Jei turite klausymų / pageidavimų / pastabų – drąsiai rašykite komentarus.

33 Replies to “Ruby”

  1. Netikėtai paskeitęs saitas 🙂 ir pačiu laiku, nes Ruby pradeda populiarėti ir pas mus.

    Dėl “end” .. girdėjau daug kartų kalbant, kad ruby paprastas išmokti žinantiems Pascal :).. gal dėl to “end”.

  2. Dėl “end” – manyčiau, kad tai yra labiau pythonist’ų problema, kadangi python’e nėra “sąlygos uždarymo ženklo”. O kitose kalbose tiesiog vietoje “}” rašome “end”.

    Beje (*warning* -> subjektyvu) kodas:

    if foo == bar
    puts “Hello”
    end

    atrodo graziau/aiskiau nei

    if ($foo == $bar) {
    echo “Hello”;
    }

    Mažiau įvairiausių “}{()$;” =)

  3. pamiršau prirašyti :/ šito blog’o varikliukas galėtų būti su ruby rašytas, jei jau propaguoti ruby.

    Beje, manau aiškumo delei reikėtų žmonėms paaiškinti kad ruby ir Ruby On Rails ne tas pats :), nes pats mačiau bent keletas kurie kelis mėnesius nepastebėjo skirtumo

  4. Dėl blogo varikliuko. Ruby blogo varikliukas būtų veikiausiai Typo. Tačiau aš, kaip Ruby programuotojas, (bent jau šiuo metu) nenorėčiau programuoti / taisyti / pridėti naujų funkcijų Typo. Tiesiog neturiu tam laiko. Tad ilgai nemastydamas pasirinkau WordPress’ą.

    Dėl Ruby ir Ruby on Rails – taip, be abejo rašysiu straipsnius ir apie vieną ir apie kitą, bei mielai įdėsiu Jūsiškius (jei tokų bus) 😉

  5. O gal zinot kokiu geru hostingu kad butu Ruby On Rails? Jei LT, tai gali but ir mokami.

    O tai suprograminsi koki projekteli, ir nebus kur padet paskui.

  6. Mums pavyko įkalbėti Serveriai.lt adminą.. Ten dabar yra Rails on CGI. Nepyragai, bet negali norėti nieko iš multi-domain-multi-platform hostingo 🙂

    Yra idėja patiems išskirtinai Ruby (Apple XServer, Lighttpd) serverį pakurti, sukonfiguruotą kaip reikia).. bet tai tik idėja kolkas 🙂 nes dar ne tiek dideli poreikiai..

  7. skaiciau kelis straipsnius PRIES RoR. gaila neprisimenu adresu.
    ten buvo teigiama, kad RoR neturi placios ateities, nes:

    * yra pletojama vienos kompanijos. tik nuo jos priklauso tolimesne ateitis ir tobulinimas.
    * per daug “magijos”. is noro padaryti kuo gudresni produkta atsiranda nemazai minusu.

    ka jus galvojat apie tokius argumentus?

  8. – tiems kas tikisi kad RoR ar netgi Ruby bus vaistas(kalba nuo visų ligų (visoms užduotims), tenka pasakyti kad taip nebus..
    – tačiau jau supratusiems kad konkrečiai užduočiai – konkreti priemonė ją spręsti.. TAIP, RoR mano galva užaugs iki rimtos platformos web 2.0 applications (del šiaip svetainių, galima ginčytis).. , nes būtent su tokiu tikslu ji projektuojama. Duomenų pateikimas, įvedimas, patogus projekto valdymas,

    Į pastabą dėl “vienos kompanijos”.. MySQL irgi vienos, PHP tam tikra prasme irgi vienos.. t.y. bent jau kilo is vienos kompanijos.. Čia turbūt kalbėti reikės kai RoR bus tiek metu kiek PHP 🙂 nes būtent dabar RoR bendruomenė aktyviai plečiasi.. ir kur links tai pasuks dar nežinia.. Kita vertus pagal RoR gaunamo “publicity” apimtis jau matosi kad tai tampa reiškiniu, o ne produktu.. vienos ar keletos kompanijų..

    “magija”.. tiesos yra.. bet daugiau ne dėl magijos gal.. o kad supaprastinant viska, kad butu patogiau.. atsisakyta daug šiuo metu programu projektavime jau priimtų norma dalykų. Na tarkim kad ir Stored procedūrų palaikymo nebuvimas.. arba tai kad RoR is esmės pradubliuoja Refferential Integrity.. kas man tiesiog tikras blogis yra 🙂 ..

    Dėl Stored Procedures.. tai aš netgi skaičiau RoR autoriaus žodžius, kad jos nelabai reikalingas daiktas yra tam va ir nereikia jų :).. Aš nuo tada labai piktas ant jo, nes mano galva kiekvienas turi daryti kas jam priklauso.. ir didelę verslo logikos dalį esu linkęs atiduoti RDBMS. O su RoR ten netgi ne visą elementarios validacijos logiką išeina reėalizuoti :). Na bet manau čia laiko klausimas, kada RoR užaugs:)

    O siaip tai priklauso nuo skaitančiojo. :).. kažkas randa ir daug straipsnių prieš Java.. mes va irgi svarstėm, svarstėm.. tai visi kas ieškojo straipsnių, rado pagal savo “backgroundą”.. kas java-vs-RoR, kas php-vs-RoR, kas kad RoR labai paprastas mokantiems Pascal 🙂

    Na štai, per ilgas gavosi tekstas kaip komentaras :)..

  9. dekingas uz nuomone. dar siek tiek prapletus, manau butu galima ir visa straipsni paruost 🙂

    nesenai as dar tik predejau dometis tuo. Perskaites nemazai informacijos apie RoR, pradejau ieskotis ir priesingu nuomoniu. Nes visur kalbama kaip viskas puiku, vos ne stebuklas 🙂 (cia manau nemzai ir marketingo, pagarba). Norejosi pasiieskoti ir kritikos, kadangi rimtai ruosiuos ylysti i sita reikala.

    beabejo sutinku, kad RoR nebus vaistas nuo visko. kazin ar kada nors bus sukurta tokia kalba. nelabai ymanoma. Ir kazin ar RoR naudosi kokiai paprastai firmos svetainei kur reikia tik feedback’o ar dar kokio paprasto navaroto.

    ir jei viskas vyks sklandziai, apie siu metu rudeni bus galima tiketis (pirmo?) lietuvoje rimto projekto RoR pagrindu.

    Man dar tik kas neduoda ramybes, tai serverio apkrovimas. Sia tema kol kas neradau informacijos. Imkim kaip palyginima PHP (kadangi giliausios zinios), kas labiau apkrautu – PHP ar RoR. Sutinku, kad labai priklauso nuo kodo. bet imant “teoriskai”.

  10. Nesimiega mums matau 🙂

    Manau jei teoriškai, tai tas pats gal.. scriptas yra scriptas.. Toliau jau reikia žiūrėti ką jis daro, be to dar ir DB įtakos turi.

    O šiaip tai vien dėl MVC Rails didesnį apkrovimą sukels, nei paprastas php scriptas..

    Toks ir didžiosios dalies straipsnių lyginančių RoR su PHP reziumė.. negalima Rails lyginti su PHP.. reikia lyginti PHP su konkrečiu PHP framework’u.. alia Zend Framework. Tada lyginimai bus nors kažkiek obektyvūs. Bet žinant kiek PHP yra visokių ir ivairiausio lygio framework’ų prirašyta.. tai sunku bus 🙂

    Gal Robertas gali pasakyti kaip Python Zope pagal resursus (ir plačiau aišku:)) gali lygintis su RoR?

  11. Beje, serverio apkrovimas priklauso ir nuo RoR įdiegimo būdo.. tiksliau nuo jo integravimo su http serveriu. Ar tai Apache, ar kas kita.. CGI, FastCGI, modRuby… Žodžiu, lyginimai kaip ir horoskopai.. sunkus reikalas ir labai subjektyvus… nori tikėk paskui, nori ne..

    Laikas smegenims ilsėtis.. 🙂 Labos

  12. Matyt vakar reikejo eit miegot, o tai sulyginau biski bileka 🙂

    Tesiant apkrovimu tema. Dabar viskas daroma PHP & MySQL. Bet po paleidimo bus ruosiamasi antrai versijai. Faktas, kad reiks keist DB, kadangi MySQL sunkiai dirba ant dideliu apkrovimu, nors arba didint hardware resursus. Cia dar atviras klausymas. Toliau kaip minejau, ruosiuos pereit ant RoR. Projekto ~2 metu begyje tikimasi 300.000 pravertimu per diena.

    Gal cia kiek nukrypstam nuo pagrindines temos, bet butu ydomu paskaityti jusu komentarus, apie tokiu mastu projektus ir technologiju panaudojima juose.

  13. Together with some tech buddies I’m working on creating a alternative television broadcast system. To make a very simple; the acquisition, converting and distribution of the materials (combined jabber, RSS, Torrent) is taken care of; the web and database section needs skilled hands-on assistance. Would you be interested to work on a combined Database / Ruby project with us? Knowing that we would like to have skills and output available on relatively short notice. Please show us some reference materials and your pricing structure if possible.

    Regards,

    Sjoerd
    Amsterdam, Holland

  14. Labai saunu, kad nusprendei tokiu budu panaudoti si domaina. RubyOnRails tikrai vertas demesio, kaip ir pats Ruby. Tiesa sakant – praejusiais metais pats norejau uzreginti si domaina ir panaudoti panasiais tikslais, bet pavelavau apie 2-3 dienas 🙂

  15. Del lietuvisko hostingo: RubyOnRails naudoju Interneto Vizijos hostinga. Esu patenkintas. Nera idealus variantas, bet yra kaip yra.
    Tad lauksim kitu hostingo tiekeju, kurie pasiulys lankstesni RubyOnRails hostinga.

  16. >praejusiais metais pats norejau uzreginti si domaina

    rubyonrails.lt visdar yra laisvas =)

    >RubyOnRails naudoju Interneto Vizijos hostinga

    Interneto Vizija == serveriai.lt? Tai gera naujiena. Gal kažkur yra “oficialus” pranešimas, ar reikia “specialiai” tartis?

  17. Taip, Interneto vizijai ir yra serveriai.lt.
    Anksciau, pries kokius 6-7 menesius, jie oficialiai skelbesi, savo tinklapyje, kad uzsimineja rubyonrails hostingu. Kodel dabar apie tai oficialiai neskelbiama – nezinau. Bet manau paprasius tokios paslaugos – turetu ja ir suteikti. Jie gan geranoriskai ziuri i klientus, ypac naujus 🙂

  18. Hello there! Just want to say that I find your site enough interesting for me. Usefull information and all is good arranged. Thank you for your work. I will visit your site more ofter from now and I bookmarked it.

  19. Hello there! Just want to say that I find your site enough interesting for me. Usefull information and all is good arranged. Thank you for your work. I will visit your site more ofter from now and I bookmarked it.

  20. Trinkite šitų gaidžių (užsieniečių) postus, jie čia tiesiog savo linkų pagerank’ą keltis bando…

  21. Net malonu buvo pamatyti, kad ir LT Ruby plinta. Kazkaip i egzotines kalbas lietuviai gana velai isikerta 🙂

  22. am ..

    argumentai tai nzn .. aisku gal kitose blog’o irasuose pasakoma kazkas daugiau..

    ”’Visą tą laiką lyg ir žinojau, kad egzistuoja tokia Ruby programavimo kalba, kuri yra labiau objektiškai-orientuota bei galingesnė nei Python’as”’

    Ada irgi labiau objektiskai orentuota, nei C++ .. Taciau tai nebutinai pliusas. Nes objektiskumas nepasako kaip nueiti is tasko A->B. Gal tiesiog viskas labiau uzslepta po objektiskumo sydu..

    Nebuvo ne vieno argumento kodel galingesne ar kodel nea.. Tiesa pasakius as nezinau kas ta ruby kalba ir manes neitikino argumentai ir slashdot’o reguliariai neskaitau

    ”’Netgi daugiau: Ruby puikiai veikia visose pagrindinėse operacinėse sistemose: Windows, Linux (Unix), MacOs, BeOs, OS/2 ir t.t. ”’

    Tai visiskai nera pliusas jei kalba yra intepretuojama. VISOS intepretuojamos kalbos sukasi ant daug platformu.. Tiesa paskius python’as gali suktis ant Javos ir .NET ++

    O Python’o ident’as po C++ { } tiesiog valdo! .. ir dar nenaudoju notepad..

  23. Praėjo daugiau nei metai nuo šio post’o parašymo. Beskaitant jį šiandien kai kas sukelia man šypseną, bet šiaip, manau, kad jis parašytas neblogai ir savo aktualumo neprarado.

    @kestaz: smells like a little troll =)

Leave a Reply to sjoerd Cancel reply

Your email address will not be published. Required fields are marked *