რუბი

რუბი — მაღალი დონის დინამიკური, ობიექტზე ორიენტირებული ენა პროგრამირებაში. მან განსაკუთრებული პოპულარობა მოიპოვა ვებ-პროგრამირების კარკასის–„რეილზის“–შექმნის შემდეგ.

რუბის ძირითად პარადიგმას წარმოადგენს კლასებზე დაფუძნებული ობიექტ ორიენტირებული პროგრამირება შეტყობინებათა გადაცემის მექანიზმით (Class-based OOP via the message passing). ეს კი, შედეგად იძლევა, რომ:
 რუბიში ყველაფერი ობიექტია
 რუბიში არ არსებობენ მეთოდები და ფუნქციები, როგორც ასეთი; მათ როლს ასრულებს შეტყობინებები და პროცედურა-ობიექტები
 შესაძლებელია შეტყობინების კონვერტაცია პროცედურა-ობიექტად
 შესაძლებელია პროცედურა-ობიექტის კონვერტაცია შეტყობინებად
 შესაძლებელია ანონიმური პროცედურა-ობიექტების შექმნა

ცხადია, რუბი მოდულარულია და ამდენად, შესაძლებელია ფუნქციების ემულაცია. თუმცა გასათვალისწინებელია შემდეგი გარემოება: რუბის მოდული სავსებით ჩვეულებრივი კლასია, კონკრეტული მოდული — ამ კლასის ეგზემპლარი, ხოლო მოდულში მოცემული ფუნქციები კი რეალურად სხვა არაფერია, თუ არა მოდულის კლას-შეტყობინებები (ჯავას სტატიკური მეთოდების ანალოგები). ამდენად, შესაძლებელია ნებისმიერი კლასის გაფართოება მოდულით; მაგალითად:

class Someclass
  #მოდულში მოცემული ფუნქციები ემატება კლასის ყველა ეგზემპლარს
  include Somemodule
end

sm = Someclass.new
#მოდულში მოცემული ფუნქციები ემატება ამ კონკრეტულ ეგზემპლარს
sm.extend Somemodule

რუბის შეტყობინებები შეიძლება, იყვნენ იტერატორები. ამ უკანასკნელთ ყოველთვის მოყვება ანონიმური პროცედურა-ობიექტი, რომელსაც გადაეცემა იტერაციის შედეგი:

def dummy_iter
  yield 1
  yield 2
end

dummy_iter { |x| puts x*x } #-> შედეგი:1 4

შეტყობინებების აქტივაციისას ფრჩხილების გამოყენება ფაკულტატურია, მაგ.

some_mes 10 20 იგივეა, რაც some_mes(10, 20)

რუბის უაღრესად მნიშვნელოვანი მახასიათებელია ის, რომ ნებისმიერ შეტყობინებას შეუძლია, ცხადი სახით ჰქონდეს არგუმენტად ანონიმური ბლოკი:

def block_consumer( a, &b )
  #message body
end

აქ &b ანონიმური ბლოკია. მისი ყოფნის შემოწმება ხდება გლობალური ცვლადით „block_given?“. ეს საშუალებას გვაძლევს, ადვილად განვახორციელოთ ტრანზაქცია:

block_consumer a do |inner_var|
  #transaction code
end

ან შესრულდება transaction code-ის ყველა ინსტრუქცია, ან ერცერთი. ანონიმური ბლოკების გამოყენება საშუალებას გვაძლევს, აგრეთვე, შევქმნათ ამოცანის სპეციფიკური მიკრო-ენები, ეს რუბის გამოყენების ერთ-ერთი უმნიშვნელოვანესი სფეროა.

რუბი, ისევე როგორც პითონი, მეტა-პროგრამირების ფართო საშუალებებს იძლევა. ყოველივე ზემოხსენებილი, და ასევე, რუბის პროგრამების გავრცელებისა და მოპოვების ონლაინ-უტილიტა gem, უტილიტა rake , პროგრამების შესრულება-განთავსების კარკასი capistrino  ვებ-პროგრამირების კარკასი rails  განაპირებობს რუბის მზარდ პოპულარობას.

 რესურსები ინტერნეტში 
 რუბის მთავარი გვერდი
 რუბი პირდაპირ ბრაუზერში 
 Full Ruby on Rails Tutorial 

კატეგორია:პროგრამირების ენები