
Ruby kalba
Pravartu paskaityti apie programavimo kompiuteriams palyginimą su kitais realaus gyvenimo aprašais
> >>>>
Ruby objektinio programavimo kalba, kurią sukūrė Yukihiro Matsumoto
(Matz). Kūrimas prasidėjo 1993 m. vasario mėn. ir pirmoji alfa versija pateikta 1994
m. gruodžio mėn. Pripažinimo susilaukė 2006 m. Dabar Ruby pateikiama kartu su Mac OS X.
Daugelis Linux" distribucijų arba pateikiamos kartu su Ruby, arba lengvai instaliuojama. Yra variantas Windows terpei.
|
"Ruby" kurta kaip alternatyva Perl ir Python kalboms. Ji daug ką perėmė iš Perl ir
klasių biblioteka, iš esmės, yra objektiškai pertvarkytas Perl funkcionalas. Taip pat, Ruby perėmė kai kuriuos elementus iš
Lisp ir Smalltalk. Yra elementų ir iš Eiffel,
Ada bei Python.
|
Aš Ruby kalbą išbandžiau Windows aplinkoje su 1.9.1 versija. Paketą galite atsisiųsti iš
čia (7-zip archives sekcijoje, 8 MB). Tereikia išsiarchyvuoti paketą į norimą katalogą
ir bin pakalogyje bus ruby.exe interpretatorius.
|
Paprasčiausias pavyzdys
Pradžioje, kaip įprasta, pirmoji programa bus Labas, Ruby!. Sukurkite failą labas.rb, kuriame įrašykite eilutes:
#!/usr/bin/env ruby
# Pirma Ruby programa:
puts 'Labas, Ruby!'
Ją galima įvykdyti komandų eilutėje surinkus:
ruby labas.rb
Galima šį kodą įvykdyti ir nekuriant bylos, o tiesiog nurodant komandinėje eilutėje:
ruby e "puts 'Labas, Ruby!'"
|
Vykdyti "Ruby" programas galite ir su irb, tačiau išvedama informacija truputį skirsis, nes bus išvesta ir puts komandos reikšmė (nil):
irb
irb> puts "Labas, Ruby!"
Labas, Ruby!
=> nil
Išeiti iš irb galite komandomis quit, exit
|
"Unix" klasės operacinėse terpėse (pvz., "Linux", "Solaris" ir kt.), naudinga "Ruby" bylas
sužymėti kaip vykdomas. Tada jų vykdymui nereiks kaskart rašyti komandos "ruby". Tai galima padaryti tokia komanda:
chmod +x hw.rb
|
Taip pat bylą pradėkite pseudo-komentaru, nurodančiu, kuri programa ją turi vykdyti, pvz.,
#!/usr/bin/ruby
puts 'Labas, pasauli!'
|
Skirtingai nuo C ar C++, "Ruby" yra gryna objektinė kalba. Viskas joje yra objektas, tame
tarpe skaičiai ir kiti elementarieji tipai. Pvz., kai su skaičiumi naudojamas metodas:
5.times { print "Myliu Ruby" }
|
Objekto savybės vadinamos kopijos (instance) kintamaisiais, o funkcijos metodais.
"Ruby" leidžia tik paprastą paveldimumą. Kalba labai lanksti. Egzistuojančias klases galima
papildyti naujais metodais nenaudojant subklasių, operatoriai gali būti daugybiniai (overload)
ir net standartinių bibliotekų veikimas gali būti pakeistas kodo vykdymo metu. Pvz., kaip klasė
Numeric papildoma metodu plus:
class Numeric
def plus(x) self.+(x) end
end
Dabar šį metodą galime panaudoti sudėties pakeitimui:
y = 5.plus 6 # y bus lygu 11
puts y
|
"Ruby" kalboje nereikalaujama aprašyti kintamuosius Kintamojo vardas automatiškai nusako jo veikimo sritį:
x lokalus kintamasis;
$x globalus kintamasis;
@x kopijos (instance) kintamasis;
@@x klasės kintamasis.
|
Viena galingiausių savybių "Ruby" kalboje yra blokai (vadinami gaubtais,
closures). Jie panašūs į "Java" anonimines klases, tačiau jais patogiau naudotis.
Gaubtas leidžia kodo bloką perduoti metodui. Dažniausiai pateikiamas pavyzdys ura
rūšiavimo metodo iškvietimas ir jam perduodamas gaubtas, kuris palygina dvi reikšmes jis
nusako, kaip bus rūšiuojami elementai. Gaubtas gali lyginti reikšmes kaip tekstą arba kaip
skaitines reikšmes, tačiau gali atlikti ir daug sudėtingesnius veiksmus pvz., jei rūšiuojamos
reikšmės yra produktų kodai, gaubtas gali iš DB paimti produktų pavadinimus ir juos lyginti (o ne kodus).
|
Sudėtingesnės savybės:
- Išimtys klaidų valdymui;
- sužymintis šiukšlių surinkimas vietoje nuorodų skaičiavimo;
- nuo operacinės terpės nepriklausomos gijos, - tad daugiagijai sprendimai galimi net tokiose sistemose kaip DOS.
|
Keletas papildomų pavyzdžių
Norite tekstą išvesti atvirkščiai paprasta įvykdykite
puts "alus"
Su aritmetika viskas paprastai:
puts 2*3
O jei pabandysime sudauginti eilutę? Pabandom:
puts "Alus "*3
Gauname:
Alus Alus Alus
Neblogai, ar ne? O dabar, šio pavyzdžio įkvėpti, pasmalsaukime, kas bus:
puts 40.reverse
Oh, oh... gavome klaidą. Skaičiai nėra simbolių eilutės. Norint eilučių metodą taikyti skaičiams, juos pirma turime paversti eilute:
puts 40.to_s.reverse
|
Kiti transformacijos metodai:
to_i į sveiką skaičių;
to_a į masyvą...
O kas yra masyvas? Tai reikšmių sąrašas. [] tai tuščias masyvas; [5,7,9] trijų skaičių masyvas. Masyvas
irgi turi savo metodus, pvz.,
kainos = [10,5,17]
puts kainos.max
kainos[2]=3
print kainos.sort
Gausime:
17
[3, 5, 10]
O dabar pažaiskime papildydami:
words=["a", "b", "c"]
puts words.reverse
puts kainos.reverse
Matote skirtumą?
c
b
a
3
5
10
|
Pagrindinė svetainė: ruby-lang.org
|
Ruby on Rails
Kol kas pateikiamas tik bendrasis pristatymas
Ruby on Rails (dažnai trumpinant Rails arba RoR) atviro kodo
web sprendimų kūrimo aplinka "Ruby" programavimo kalbai. Ji pritaikyta Agile
metodologijos naudojimui, labai tinkančios trumpiems, dažnai užsakovo reguliuojamiems projektams.
|
RoR buvo išgryninta iš David H. Hansonn darbo su "Basecamp", projektų valdymo
įrankiu. RoR pirmąkart kaip atviras kodas pristatyta 2004 m. liepos mėn. 2006 m. rugpjūtį
"Apple" paskelbė, kad platins "Ruby on Rails" su Mac OS X v10.5 Leopard operacine terpe.
|
Kaip ir kitos panašios aplinkos, RoR naudoja MVC architektūrą sprendimo organizavimui.
Jis apima ir paprastą ruby web serverį (WEBrick) ir "Rake" sumontavimo (build)
sistemą. RoR išsiskiria intensyviu "JavaScript" bivliotekų "Prototype" ir "Script.aculo.us"
(Ajax'ui) naudojimu. Pradžioje web servisams buvo naudojamas lengvasis SOAP protokolas, kuris vėliau buvo pakeistas RESTful.
|
RoR yra suskaidytas į kelis paketus: ActiveRecord, ActiveResource, ActionPack,
ActiveSupport, ActionMailer. Tačiau programuotojai gali sukurti papildymus (plugins), išplečiančius paketų galimybes.
|
RoR pabrėžia Agile programavimo principą "Nesikartok!" (DRY) bei CoC
(Convention over Configuration). CoC nurodo, kad programuotojas turi specifikuoti tik
nestandartinius sprendimo aspektus. Pvz., jei kuriama klasė "Sale" (Pardavimas), tai
atitinkama DB lentelė automatiškai pavadinama "sales" (Pardavimai). Tik tada, kai
nukrypstama nuo tokio susitarimo, pvz., pavadinant lentelė "soldProducts" (Parduoti
produktai), tada reikia keisti kodą, susijusį su tais pavadinimais.
|
Ankstesnės "Advanced HTML" skyrelio temos:
Tcl kalba
ASP patarimų liūnas
Unix komandinės eilutė
AWK kalba - sena ir nuolat aktuali
JavaScript atspindžiai
Pelė uodega švystelėjo...
Didžiųjų duomenų mitas
Pitonas, kandantis sau uodegą
Lambda išraiškos Java į naują lygį
CGI.pm biblioteka: sausainiai
Ką delne mums neša HTML 4.0?
Kaip valdyti piešinių pakrovimo tvarką
Įlįskite į lankytojų kailį
Vaizdi rašysena - VB Script
Programavimas Unix aplinkoje
Programavimo kalbų istorija
Dygios JavaScript eilutės
Ateities kalbos?
|
|