რუბი
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
- მოდულში მოცემული ფუნქციები ემატება ამ კონკრეტულ ეგზემპლარს
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 განაპირებობს რუბის მზარდ პოპულარობას.
რესურსები ინტერნეტში
- რუბის მთავარი გვერდი
- რუბი პირდაპირ ბრაუზერში Lua error: Cannot create process: proc_open(/dev/null): Failed to open stream: Operation not permitted
- Full Ruby on Rails Tutorial Lua error: Cannot create process: proc_open(/dev/null): Failed to open stream: Operation not permitted
|