Ruby

от Уикипедия, свободната енциклопедия
Направо към: навигация, търсене
Ruby
Ruby logo.png
Парадигма обектно-ориентиран
Реализиране през 1995
Автор Юкихиро Мацумото
Типизация на данните динамична
Повлиян от Smalltalk, Perl, Lisp, Python, Clu, Dylan
Повлиява Groovy
Софтуерен лиценз Ruby License и GPL
Уебсайт www.ruby-lang.org

Ruby (произнася се руби, на български означава рубин) е интерпретируем, интерактивен, обектно-ориентиран език за програмиране. Комбинира черти от много други езици, сред които Smalltalk, Perl, Lisp и Python. Основната му имплементация е безплатна и с отворен код.

История[редактиране | edit source]

Езикът е създаден от японеца Юкихиро Мацумото, по прякор „Мац“. Той започва работа по Ruby през 1993. През 1995 излиза първата версия на езика.

Името на езика произлиза от зодиакалния камък на приятел и колега на Юкихиро.

До октомври 2006 последната стабилна версия е 1.8.5. Клонът 1.8.х е стабилен, разработчиците работят в клона 1.9, който след стабилизирането си ще се превърне в 2.0.

Мотивация[редактиране | edit source]

Водещият принцип на Мац при създаването на езика е да направи програмистите щастливи чрез намаляване на ненужната работа, следвайки принципите за дизайн на потребителски интерфейс[1]. Мац твърди, че дизайнът на приложения трябва да отговаря на човешките, а не на компютърните нужди[2].

Стремежът е Ruby да следва принципа на най-малка изненада. Това означава, че поведението на езика трябва да е интуитивно и той трябва да работи така, както програмистът би очаквал. Възможно е крайният резултат да е „принципът на най-малка изненада за Мац“, но огромен брой програмисти по света твърдят, че езикът съответства и на техния модел на мислене.

Семантика[редактиране | edit source]

Ruby е обектно-ориентиран. Всяка единица с данни, била тя променлива, константа или даже литерал, е обект. Всяка функция е метод. Променливите са винаги псевдоними на обектите и никога самите обекти.

Въпреки че Ruby не поддържа множествено наследяване, класовете могат да импортират модули и поддържат динамично делегиране.

Според често задаваните въпроси от документацията на Ruby, „ако харесвате Perl, ще започнете да харесвате и Ruby и лесно ще навлезете в неговата семантика. Ако харесвате Python, може би ще се отдръпнете заради огромната разлика във философиите на Python и Ruby/Perl“[3]

Характеристики[редактиране | edit source]

Ruby все още не поддръжка цялостно Уникод, а само частично UTF-8.

Хранилища и библиотеки[редактиране | edit source]

Ruby Application Archive (RAA) и RubyForge са хранилища с повече от 2000 приложения и библиотеки.

RubyGems е стандартният пакетен мениджър за инсталиране на допълнителни библиотеки. По начина си на употреба силно прилича на портовата система, срещана в различните BSD дистрибуции.

Примерен код[редактиране | edit source]

Hello World[редактиране | edit source]

 puts "Hello World!"

Прости функционалности[редактиране | edit source]

# напомняме, че всичко е обект:
-199.abs                                       # 199
"ruby is cool".length                          # 12
"Rick".index("c")                              # 2
"Nice Day Isn't It?".split(//).uniq.sort.join  # " '?DINaceinsty"

Работа с низове[редактиране | edit source]

str = "Ruby rocks"
str[0]                                         # 82
str.include? "Ruby"                            # true
str.include? "Rails"                           # false
str.start_with? "Ruby"                         # true
str.end_with? "Ruby"                           # false
str.slice(0,4)                                 # "Ruby"
str + "!"                                      # "Ruby rocks!"

Работа с регулярни изрази[редактиране | edit source]

"Ruby rocks".match(/.+ ([a-z]+)/)[1]           # "rocks"
"Ruby rocks" =~ /[a-z]+/                       # 0
"Ruby rocks" =~ /[a-zA-Z]+/                    # 0

Работа с масиви[редактиране | edit source]

 arr1 = [1,10,3,6,3]
 arr2 = [9,4, 5,3,2]
 arr1.sort                                     # [1, 3, 3, 6, 10]
 arr1.max                                      # 10
 arr1.min                                      # 1
 arr1 + arr2                                   # [1, 10, 3, 6, 3, 9, 4, 5, 3, 2]
 arr1 - arr2                                   # [1, 10, 6]
 arr1 & arr2                                   # [3]

Работа с дата и час[редактиране | edit source]

 date = Date.new(2010, 03, 22)                 # #<Date: 4910555/2,0,2299161>
 date.day                                      # 22
 date.month                                    # 3
 date.year                                     # 2010
 date.strftime("%d-%m-%Y")                     # "22-03-2010"

Реализация[редактиране | edit source]

Ruby има две основни реализации: официалният интерпретатор, който е и най-широко използван, и JRuby — интерпретатор написан на Java.

Операционни системи[редактиране | edit source]

Ruby се разпространява за следните операционни системи:

Лиценз[редактиране | edit source]

Интерпретаторът и библиотеките са с двоен лиценз: GPL и Ruby License [4].

Ruby on Rails[редактиране | edit source]

Ruby on Rails ("Руби на релси", често съкращавано само на Rails или RoR) е набиращ популярност фреймуърк за уеб приложения, написан изцяло на Ruby, включващ в себе си множество реализирани шаблони за програмиране, сред които Model-View-Controller, ActiveRecord и много други. Самият фреймуърк се предлага като пакет през RubyGems (gem install rails).

Бележки[редактиране | edit source]

  1. Езикът за програмиране Ruby от Юкихиро Мацумото 2000-06-12 (informit.com)
  2. Философията на Ruby, Разговор с Юкихиро Мацумото, от Бил Венърс 2003-09-29 (Artima Developer)
  3. Сравнителна характеристика на Ruby и Python (rubygarden.org)
  4. Ruby License (ruby-lang.org)

Външни препратки[редактиране | edit source]