Lua error: Cannot create process: proc_open(/dev/null): Failed to open stream: Operation not permitted


რუბი
ფაილი:Ruby logo.svg
პარადიგმა მულტი-პარადიგმა
გამოქვეყნების თარიღი 1995
დამფუძნელი იუკიჰირო მატსუმოტო
შემქმნელი იუკიჰირო მატსუმოტო და სხვები
ბოლო ვერსია 1.9.1-p129
ტიპების მინიჭება დინამიური
მთავარი შექმნილი ვერსიები Ruby MRI, JRuby
ენების გავლენით Smalltalk, Perl, Lisp, Scheme, Python, CLU, Eiffel, Ada, Dylan
ენებზე ზეგავლენა Groovy, Nu, Madness Script
ოპერაციული სისტემა მრავალი
ლიცენზია Ruby License
GNU General Public License
საიტი http://www.ruby-lang.org
ქვედა ტექსტი
Lua error: Cannot create process: proc_open(/dev/null): Failed to open stream: Operation not permitted

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

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

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

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

<source lang="ruby"> class Someclass

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

end

sm = Someclass.new

  1. მოდულში მოცემული ფუნქციები ემატება ამ კონკრეტულ ეგზემპლარს

sm.extend Somemodule </source>

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

<source lang="ruby"> def dummy_iter

 yield 1
 yield 2

end </source>

<source lang="ruby"> dummy_iter { |x| puts x*x } #-> შედეგი:1 4 </source>

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

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

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

<source lang="ruby"> def block_consumer( a, &b )

 #message body

end </source>

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

<source lang="ruby"> block_consumer a do |inner_var|

 #transaction code

end </source>

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

რუბი, ისევე როგორც პითონი, მეტა-პროგრამირების ფართო საშუალებებს იძლევა. ყოველივე ზემოხსენებილი, და ასევე, რუბის პროგრამების გავრცელებისა და მოპოვების ონლაინ-უტილიტა gem, უტილიტა rake Lua error: Cannot create process: proc_open(/dev/null): Failed to open stream: Operation not permitted, პროგრამების შესრულება-განთავსების კარკასი capistrino Lua error: Cannot create process: proc_open(/dev/null): Failed to open stream: Operation not permitted ვებ-პროგრამირების კარკასი rails Lua error: Cannot create process: proc_open(/dev/null): Failed to open stream: Operation not permitted განაპირებობს რუბის მზარდ პოპულარობას.

რესურსები ინტერნეტში

მოძიებულია „https://wiki.ge/w/index.php?title=რუბი&oldid=22529“-დან