„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?

Tiesa apie REST
JavaScript pradmenys
Lyginant su gimtąja kalba
Programavimo kalbų klegesys
Java 8: Optional prieš null
Įvadas į Perl kalbą: Kas naudoja Perl?
Džonas Bakas – FORTRAN tėvas
Viešojo rakto kriptografija
Nutylimųjų savybių ieškant
Vartiklis