Ruby
Ruby (произнася се руби, на български означава рубин) е интерпретируем, интерактивен, обектно ориентиран език за програмиране. Комбинира черти от много други езици, сред които Smalltalk, Perl, Lisp и Python. Основната му имплементация е безплатна и с отворен код.
Ruby | |
Парадигма | обектно ориентиран |
---|---|
Реализиране през | 1995 |
Автор | Юкихиро Мацумото |
Типизация на данните | динамична |
Повлиян от | Smalltalk, Perl, Lisp, Python, Clu, Dylan |
Повлиява | Groovy |
Софтуерен лиценз | Ruby License и GPL |
Уебсайт | www.ruby-lang.org |
Ruby в Общомедия |
История
редактиранеЕзикът е създаден от японеца Юкихиро Мацумото, по прякор „Мац“. Той започва работа по Ruby през 1993. През 1995 излиза първата версия на езика.
Името на езика произлиза от зодиакалния камък на приятел и колега на Юкихиро.
До октомври 2006 последната стабилна версия е 1.8.5. Клонът 1.8.х е стабилен, разработчиците работят в клона 1.9, който след стабилизирането си ще се превърне в 2.0.
Мотивация
редактиранеВодещият принцип на Мац при създаването на езика е да направи програмистите щастливи чрез намаляване на ненужната работа, следвайки принципите за дизайн на потребителски интерфейс[1]. Мац твърди, че дизайнът на приложения трябва да отговаря на човешките, а не на компютърните нужди[2].
Стремежът е Ruby да следва принципа на най-малка изненада. Това означава, че поведението на езика трябва да е интуитивно и той трябва да работи така, както програмистът би очаквал. Възможно е крайният резултат да е „принципът на най-малка изненада за Мац“, но огромен брой програмисти по света твърдят, че езикът съответства и на техния модел на мислене.
Семантика
редактиранеRuby е обектно ориентиран. Всяка единица с данни, била тя променлива, константа или даже литерал, е обект. Всяка функция е метод. Променливите са винаги псевдоними на обектите и никога самите обекти.
Въпреки че Ruby не поддържа множествено наследяване, класовете могат да импортират модули и поддържат динамично делегиране.
Според често задаваните въпроси от документацията на Ruby, „ако харесвате Perl, ще започнете да харесвате и Ruby и лесно ще навлезете в неговата семантика. Ако харесвате Python, може би ще се отдръпнете заради огромната разлика във философиите на Python и Ruby/Perl“[3]
Характеристики
редактиране- обектно ориентиран
- четири нива на достъп: глобално, класово, инстанция и локално
- обработка на изключения
- итератори
- анонимни функции и затваряния (closures)
- вграден синтаксис за боравене с регулярни изрази
- предефиниране на операторите
- вградено автоматично управление на паметта
- многоплатформеност
- свободно зареждане на динамични библиотеки
- поддържане на многонишково програмиране с обособена разлика между нишки и фибри
- интроспекция, отразяване и метапрограмиране
- богата стандартна библиотека
- промяна на обектите по време на изпълнение
Ruby все още не поддръжка цялостно Уникод, а само частично UTF-8.
Хранилища и библиотеки
редактиранеRuby Application Archive (RAA) Архив на оригинала от 2013-08-05 в Wayback Machine. и RubyForge са хранилища с повече от 2000 приложения и библиотеки.
RubyGems е стандартният пакетен мениджър за инсталиране на допълнителни библиотеки. По начина си на употреба силно прилича на портовата система, срещана в различните BSD дистрибуции.
Примерен код
редактиранеHello World
редактиранеputs "Hello World!"
Прости функционалности
редактиране# напомняме, че всичко е обект: -199.abs # 199 "ruby is cool".length # 12 "Rick".index("c") # 2 "Nice Day Isn't It?".split(//).uniq.sort.join # " '?DINaceinsty"
Работа с низове
редактиране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!"
Работа с регулярни изрази
редактиране"Ruby rocks".match(/.+ ([a-z]+)/)[1] # "rocks" "Ruby rocks" =~ /[a-z]+/ # 0 "Ruby rocks" =~ /[a-zA-Z]+/ # 0
Работа с масиви
редактиране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]
Работа с дата и час
редактиране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"
Реализация
редактиранеRuby има две основни реализации: официалният интерпретатор, който е и най-широко използван, и JRuby — интерпретатор написан на Java.
Операционни системи
редактиранеRuby се разпространява за следните операционни системи:
- повечето версии на Unix, включително Linux
- DOS
- Microsoft Windows 95/98/XP/NT/2000/2003/Vista
- Mac OS X
- BeOS/Haiku os
- Amiga
- MorphOS
- Acorn RISC OS
- OS/2
- Syllable
Лиценз
редактиранеИнтерпретаторът и библиотеките са с двоен лиценз: GPL и Ruby License [4].
Ruby on Rails
редактиранеRuby on Rails ("Руби на релси", често съкращавано само на Rails или RoR) е набиращ популярност фреймуърк за уеб приложения, написан изцяло на Ruby, включващ в себе си множество реализирани шаблони за програмиране, сред които Model-View-Controller, ActiveRecord и много други. Самият фреймуърк се предлага като пакет през RubyGems (gem install rails).
Бележки
редактиране- ↑ Езикът за програмиране Ruby от Юкихиро Мацумото 2000-06-12 (informit.com)
- ↑ Философията на Ruby, Разговор с Юкихиро Мацумото, от Бил Венърс 2003-09-29 (Artima Developer)
- ↑ Сравнителна характеристика на Ruby и Python (rubygarden.org), архив на оригинала от 29 декември 2006, https://web.archive.org/web/20061229093024/http://www.rubygarden.org/faq/entry/show/14, посетен на 21 декември 2006
- ↑ Ruby License (ruby-lang.org) // Архивиран от оригинала на 2011-08-26. Посетен на 2006-12-21.
Външни препратки
редактиране- Официалната страница на Ruby
- Фен-портал с новини за Ruby
- Форум за Ruby програмисти
- Безплатна книга за Ruby (PDF, английски) Архив на оригинала от 2013-10-09 в Wayback Machine.
- Ruby за двайсет минути (английски)
- Често задавани въпрос за Ruby Архив на оригинала от 2006-12-18 в Wayback Machine.
- Официален сайт с документация за Ruby
- Туториали, статии и как-да за Ruby Архив на оригинала от 2007-03-08 в Wayback Machine.
- Форум за Ruby и Rails Архив на оригинала от 2007-03-10 в Wayback Machine.
- Full Ruby on Rails Tutorial Архив на оригинала от 2007-05-17 в archive.today – A complete beginners intro to Ruby on Rails
- Ruby on Rails Архив на оригинала от 2018-06-07 в Wayback Machine.