Ruby (англ. «Рубін», читається «Ру́бі») — це інтерпретована, повністю об'єктноорієнтована мова програмування з чіткою динамічною типізацією. Мова вирізняється високою ефективністю розробки програм і увібрала в себе найкращі риси Perl, Java, Python, Smalltalk, Eiffel, Ada і Lisp. Ruby поєднує в собі Perl-подібний синтаксис з об'єктноорієнтованим підходом мови програмування Smalltalk. Також деякі риси запозичено із мов програмування Python, Lisp, Dylan та CLU.
Ruby | |
---|---|
Парадигма | об'єктно-орієнтована, функційна, імперативна, логічна |
Дата появи | 1993 |
Творці | Юкіхіро Мацумото |
Розробник | Юкіхіро Мацумото (поряд з іншими) |
Останній реліз | |
Система типізації | динамічна |
Основні реалізації | Ruby, JRuby, |
Під впливом від | Smalltalk, Perl, Lisp, Scheme, Python, CLU, Dylan |
Вплинула на | Groovy |
Мова реалізації | C[1] |
Операційна система | багатоплатформова |
Ліцензія | Ruby License та BSD |
Звичайні розширення файлів | .rb або .rbw |
Репозиторій вихідного коду | git.ruby-lang.org/ruby.git |
Вебсайт | www.ruby-lang.org |
|
Багатоплатформова реалізація інтерпретатора мови Ruby поширюється як Вільне програмне забезпечення. Початковий код проєкту розповсюджується під ліцензіями BSD («2-clause BSDL») і «Ruby», яка посилається на останній варіант ліцензії GPL і повністю сумісна з GPLv3.
Історія створення
Мова була створена Юкіхіро Мацумото, котрий почав працювати над Ruby 24 лютого 1993 року. Метою було створення об'єктноорієнтованої, легкої в розробці, інтерпретованої мови програмування. Перша загальнодоступна версія 0.95 побачила світ 1995 року. «Ruby» був названий так (англ. рубін) через жарт, що ходив у колі друзів Мацумото, і був алюзією до назви мови програмування Perl (перлина).
Ruby on Rails
Близько 2005 року було розроблено MVC вебфреймворк Ruby on Rails, який сприяв росту популярності Ruby.
Ruby 1.9
Останньою версією гілки 1.9, є Ruby 1.9.3 В гілці Ruby 1.9, в порівнянні із гілкою Ruby 1.8 було внесено багато важливих змін. Ось деякі з них:
- Локальні змінні у блоках
- Додатковий лямбда-синтаксис: (
fun = ->(a,b) { puts a + b }
) - Новий API для сокетів (з підтримкою IPv6)
Ruby 2
19 жовтня 2011 року почалася робота над Ruby 2 — новою версією мови, що містить небагато нововведень та змін, і націленою, в основному, на швидкість виконання, дозволяючи збереження прекомпільованого байт-коду.
Перша версія Ruby 2 (Ruby 2.0.0-p0) офіційно вийшла у світ 24 лютого 2013 року.
Деякі з властивостей доданих в Ruby 2:
- ключові слова в аргументах функцій;
- стандартна кодова таблиця UTF-8;
- нова система «уточнень» ([en]) для ізоляції розширень класів і для більш безпечного використання «мавпячих латок»;
- використання DTrace для відладки;
- суттєве підвищення швидкодії.
Семантика
Ruby — об'єктноорієнтована мова програмування. Кожен тип даних є об'єктом, включно з типами та класами, котрі в багатьох інших мовах реалізовані як примітиви (такі як «integer» або «null»). Кожна функція є методом.
Змінні Ruby містять не самі об'єкти, а посилання на них. Присвоєння — це не передача значення, а копіювання посилання на об'єкти. Для тих, хто звик до поширених гібридних мов програмування, деякі наслідки такого рішення можуть здаватись неочікуваними. Наприклад:
a = "abcdefg" => "abcdefg" b = a => "abcdefg" b => "abcdefg" a[3] = 'R' => "R" b => "abcRefg"
Тобто при зміні значення змінної a неявно змінилось і значення b, оскільки вони містять посилання на один об'єкт. З іншого боку, це логічніше, ніж ситуація, коли для змінних різних типів присвоєння діє по різному (наприклад в Object Pascal)[].
Ruby не підтримує множинне успадковування, але замість цього має потужний механізм Mix In [ 7 лютого 2005 у Wayback Machine.](англ.). Всі класи (безпосередньо або через інші класи) виведені з класу Object [ 13 вересня 2008 у Wayback Machine.], тому, довільний об'єкт може використовувати визначені в ньому методи (наприклад, class, to_s, nil?). Процедурний стиль також підтримується, але всі глобальні процедури неявно є закритими методами класу Object
.
Ruby задумана як мультипарадигмова мова. Вона підтримує процедурну (кожна функція або змінна, визначена поза межами класу, стає частиною класу Object, що є батьківським для всіх інших класів), об'єктноорієнтовану (все є об'єктом), або функціональну парадигму програмування. Ruby підтримує динамічну типізацію даних та поліморфізм. Ruby зараз не має повної підтримки Unicode, хоча частково підтримує UTF-8.
Особливості Ruby
- Лаконічний і простий синтаксис, часто зустрічається вплив Ада, Eiffel і Python.
- Може обробляти винятки в стилі Java і Python.
- Дозволяє переозначувати оператори, які насправді є методами.
- Повністю об'єктноорієнтована мова програмування. Всі дані в Ruby є об'єктами в розумінні Smalltalk. Єдиний виняток — керівні конструкції, які в Ruby на відміну від Smalltalk не є об'єктами. Наприклад, число «1» — це екземпляр класу . Також можна додавати методи в клас і навіть в конкретний екземпляр під час виконання програми.
- Не підтримується множинна спадковість, натомість може використовуватись концепція MixIn, заснована в даній мові на основі механізмів модулів.
- Містить автоматичний прибиральник сміття. Він працює для всіх об'єктів Ruby, в тому числі для зовнішніх бібліотек.
- Створення розширень для Ruby на C дуже просте, завдяки збору сміття та нескладного і зручного API.
- Підтримує цикли з повною прив'язкою до змінних.
- Підтримує блок коду (код взятий в
{
…}
абоdo
…end
). Блоки можуть використовуватись в методах або перетворюватись в цикли. - Цілі змінні в Ruby автоматично конвертуються між типами Fixnum (32-розрядні) і Bignum (понад 32 розряди) в залежності від їхнього значення, що дозволяє виконувати цілочисельні математичні розрахунки з нескінченною точністю.
- Не вимагає попереднього оголошення змінних, хоча для інтерпретатора бажано, щоб змінній присвоювалось порожнє значення nil (тоді інтерпретатор знає, що ідентифікатор вказує на змінну, а не на ім'я методу). Мова використовує прості домовленості для визначення області видимості. Приклад: просто
var
— локальна змінна,@var
— змінна екземпляра (член або поле об'єкта класу),@@var
— змінна класу,$var
— глобальна змінна. - Безпосередньо в мові Ruby реалізовано багато шаблонів програмування, так, наприклад, «одинак» (англ. singleton) може бути реалізований додаванням потрібних методів одному конкретному об'єктові.
- Може динамічно завантажувати розширення, якщо це дозволяє операційна система.
- Має незалежну від ОС підтримку невитискальної багатонитевості.
- Перенесена на багато платформ. Мова розроблялася на (GNU/Linux), але працює на багатьох версіях Unix, DOS, Microsoft Windows (частково, Win32), Mac OS, BeOS, (OS/2) і т. д.
Реалізації
Для Ruby тепер існує кілька основних реалізацій: офіційний інтерпретатор (так званий MRI — Matz Ruby Implementation), Рубініус () та JRuby — реалізація для віртуальної машини Java. Інтерпретатор Ruby для платформи Microsoft .Net IronRuby перебуває у стадії Pre-Alpha версії та доступний для завантаження.
У реалізаціях Rubinius та JRuby код Ruby компілюється у байт-код, що збільшує швидкість роботи, а також дозволяє використання власної багатонитевості операційної системи.
Ruby-gnome2
Ruby-gnome2 — оболонка на мові програмування Ruby для бібліотеки та низки бібліотек проєкту GNOME. Ruby-gnome2 є вільним програмним забезпеченням і розповсюджується на умовах ліцензії GNU Lesser General Public License.
Приклад коду:
require 'gtk' window = Gtk::Window.new(Gtk::WINDOW_TOPLEVEL) button = Gtk::Button.new("Кнопка!") button.signal_connect('clicked') { print "Кнопка натиснена!\n" } window.add button button.show window.show Gtk.main
Коментарі в Ruby
В Ruby, як і в більшості мов є два типи коментарів:
- Коментарі розміром в один рядок позначаються так # Коментарі
- Коментарі розміром два і більше рядків позначаються так: =begin Коментарі =end
Приклад багаторядкових коментарів:
=begin def young? (age) if age < 30 return true else return false end end =end
Приклад однорядкового коментаря:
val =12 if val == 1 || val == 12 || val == 42 # puts "коментар" end
Див. також
Примітки
- GitHub — 2007.
- . Архів оригіналу за 8 лютого 2008. Процитовано 23 серпня 2007.
Посилання
- Ruby language home page [ 24 січня 2008 у Wayback Machine.] (англ.)
- Ruby.on-page.net Найпростіший довідник з Ruby з прикладами [ 18 січня 2022 у Wayback Machine.] (англ.)
- Документація до мови Ruby [ 26 вересня 2020 у Wayback Machine.] (англ.)
- Офіційний майданчик Ruby-gnome2 [ 21 серпня 2008 у Wayback Machine.] (англ.)
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Ruby angl Rubin chitayetsya Ru bi ce interpretovana povnistyu ob yektnooriyentovana mova programuvannya z chitkoyu dinamichnoyu tipizaciyeyu Mova viriznyayetsya visokoyu efektivnistyu rozrobki program i uvibrala v sebe najkrashi risi Perl Java Python Smalltalk Eiffel Ada i Lisp Ruby poyednuye v sobi Perl podibnij sintaksis z ob yektnooriyentovanim pidhodom movi programuvannya Smalltalk Takozh deyaki risi zapozicheno iz mov programuvannya Python Lisp Dylan ta CLU RubyParadigmaob yektno oriyentovana funkcijna imperativna logichnaData poyavi1993TvorciYukihiro MacumotoRozrobnikYukihiro Macumoto poryad z inshimi Ostannij relizSistema tipizaciyidinamichnaOsnovni realizaciyiRuby JRuby Pid vplivom vidSmalltalk Perl Lisp Scheme Python CLU DylanVplinula naGroovyMova realizaciyiC 1 Operacijna sistemabagatoplatformovaLicenziyaRuby License ta BSDZvichajni rozshirennya fajliv rb abo rbwRepozitorij vihidnogo kodugit ruby lang org ruby gitVebsajtwww ruby lang org Instrukciyi u Vikipidruchniku Mediafajli u Vikishovishi Bagatoplatformova realizaciya interpretatora movi Ruby poshiryuyetsya yak Vilne programne zabezpechennya Pochatkovij kod proyektu rozpovsyudzhuyetsya pid licenziyami BSD 2 clause BSDL i Ruby yaka posilayetsya na ostannij variant licenziyi GPL i povnistyu sumisna z GPLv3 Istoriya stvorennyaMacumoto Yukihiro avtor movi programuvannya Ruby Mova bula stvorena Yukihiro Macumoto kotrij pochav pracyuvati nad Ruby 24 lyutogo 1993 roku Metoyu bulo stvorennya ob yektnooriyentovanoyi legkoyi v rozrobci interpretovanoyi movi programuvannya Persha zagalnodostupna versiya 0 95 pobachila svit 1995 roku Ruby buv nazvanij tak angl rubin cherez zhart sho hodiv u koli druziv Macumoto i buv alyuziyeyu do nazvi movi programuvannya Perl perlina Ruby on Rails Blizko 2005 roku bulo rozrobleno MVC vebfrejmvork Ruby on Rails yakij spriyav rostu populyarnosti Ruby Ruby 1 9 Ostannoyu versiyeyu gilki 1 9 ye Ruby 1 9 3 V gilci Ruby 1 9 v porivnyanni iz gilkoyu Ruby 1 8 bulo vneseno bagato vazhlivih zmin Os deyaki z nih Lokalni zminni u blokah Dodatkovij lyambda sintaksis fun gt a b puts a b Novij API dlya soketiv z pidtrimkoyu IPv6 Ruby 2 19 zhovtnya 2011 roku pochalasya robota nad Ruby 2 novoyu versiyeyu movi sho mistit nebagato novovveden ta zmin i nacilenoyu v osnovnomu na shvidkist vikonannya dozvolyayuchi zberezhennya prekompilovanogo bajt kodu Persha versiya Ruby 2 Ruby 2 0 0 p0 oficijno vijshla u svit 24 lyutogo 2013 roku Deyaki z vlastivostej dodanih v Ruby 2 klyuchovi slova v argumentah funkcij standartna kodova tablicya UTF 8 nova sistema utochnen en dlya izolyaciyi rozshiren klasiv i dlya bilsh bezpechnogo vikoristannya mavpyachih latok vikoristannya DTrace dlya vidladki suttyeve pidvishennya shvidkodiyi SemantikaRuby ob yektnooriyentovana mova programuvannya Kozhen tip danih ye ob yektom vklyuchno z tipami ta klasami kotri v bagatoh inshih movah realizovani yak primitivi taki yak integer abo null Kozhna funkciya ye metodom Zminni Ruby mistyat ne sami ob yekti a posilannya na nih Prisvoyennya ce ne peredacha znachennya a kopiyuvannya posilannya na ob yekti Dlya tih hto zvik do poshirenih gibridnih mov programuvannya deyaki naslidki takogo rishennya mozhut zdavatis neochikuvanimi Napriklad a abcdefg gt abcdefg b a gt abcdefg b gt abcdefg a 3 R gt R b gt abcRefg Tobto pri zmini znachennya zminnoyi a neyavno zminilos i znachennya b oskilki voni mistyat posilannya na odin ob yekt Z inshogo boku ce logichnishe nizh situaciya koli dlya zminnih riznih tipiv prisvoyennya diye po riznomu napriklad v Object Pascal dzherelo Ruby ne pidtrimuye mnozhinne uspadkovuvannya ale zamist cogo maye potuzhnij mehanizm Mix In 7 lyutogo 2005 u Wayback Machine angl Vsi klasi bezposeredno abo cherez inshi klasi vivedeni z klasu Object 13 veresnya 2008 u Wayback Machine tomu dovilnij ob yekt mozhe vikoristovuvati viznacheni v nomu metodi napriklad class to s nil Procedurnij stil takozh pidtrimuyetsya ale vsi globalni proceduri neyavno ye zakritimi metodami klasu Object Ruby zadumana yak multiparadigmova mova Vona pidtrimuye procedurnu kozhna funkciya abo zminna viznachena poza mezhami klasu staye chastinoyu klasu Object sho ye batkivskim dlya vsih inshih klasiv ob yektnooriyentovanu vse ye ob yektom abo funkcionalnu paradigmu programuvannya Ruby pidtrimuye dinamichnu tipizaciyu danih ta polimorfizm Ruby zaraz ne maye povnoyi pidtrimki Unicode hocha chastkovo pidtrimuye UTF 8 Osoblivosti RubyLakonichnij i prostij sintaksis chasto zustrichayetsya vpliv Ada Eiffel i Python Mozhe obroblyati vinyatki v stili Java i Python Dozvolyaye pereoznachuvati operatori yaki naspravdi ye metodami Povnistyu ob yektnooriyentovana mova programuvannya Vsi dani v Ruby ye ob yektami v rozuminni Smalltalk Yedinij vinyatok kerivni konstrukciyi yaki v Ruby na vidminu vid Smalltalk ne ye ob yektami Napriklad chislo 1 ce ekzemplyar klasu Takozh mozhna dodavati metodi v klas i navit v konkretnij ekzemplyar pid chas vikonannya programi Ne pidtrimuyetsya mnozhinna spadkovist natomist mozhe vikoristovuvatis koncepciya MixIn zasnovana v danij movi na osnovi mehanizmiv moduliv Mistit avtomatichnij pribiralnik smittya Vin pracyuye dlya vsih ob yektiv Ruby v tomu chisli dlya zovnishnih bibliotek Stvorennya rozshiren dlya Ruby na C duzhe proste zavdyaki zboru smittya ta neskladnogo i zruchnogo API Pidtrimuye cikli z povnoyu priv yazkoyu do zminnih Pidtrimuye blok kodu kod vzyatij v abo do end Bloki mozhut vikoristovuvatis v metodah abo peretvoryuvatis v cikli Cili zminni v Ruby avtomatichno konvertuyutsya mizh tipami Fixnum 32 rozryadni i Bignum ponad 32 rozryadi v zalezhnosti vid yihnogo znachennya sho dozvolyaye vikonuvati cilochiselni matematichni rozrahunki z neskinchennoyu tochnistyu Ne vimagaye poperednogo ogoloshennya zminnih hocha dlya interpretatora bazhano shob zminnij prisvoyuvalos porozhnye znachennya nil todi interpretator znaye sho identifikator vkazuye na zminnu a ne na im ya metodu Mova vikoristovuye prosti domovlenosti dlya viznachennya oblasti vidimosti Priklad prosto var lokalna zminna var zminna ekzemplyara chlen abo pole ob yekta klasu var zminna klasu var globalna zminna Bezposeredno v movi Ruby realizovano bagato shabloniv programuvannya tak napriklad odinak angl singleton mozhe buti realizovanij dodavannyam potribnih metodiv odnomu konkretnomu ob yektovi Mozhe dinamichno zavantazhuvati rozshirennya yaksho ce dozvolyaye operacijna sistema Maye nezalezhnu vid OS pidtrimku nevitiskalnoyi bagatonitevosti Perenesena na bagato platform Mova rozroblyalasya na GNU Linux ale pracyuye na bagatoh versiyah Unix DOS Microsoft Windows chastkovo Win32 Mac OS BeOS OS 2 i t d RealizaciyiDlya Ruby teper isnuye kilka osnovnih realizacij oficijnij interpretator tak zvanij MRI Matz Ruby Implementation Rubinius ta JRuby realizaciya dlya virtualnoyi mashini Java Interpretator Ruby dlya platformi Microsoft Net IronRuby perebuvaye u stadiyi Pre Alpha versiyi ta dostupnij dlya zavantazhennya U realizaciyah Rubinius ta JRuby kod Ruby kompilyuyetsya u bajt kod sho zbilshuye shvidkist roboti a takozh dozvolyaye vikoristannya vlasnoyi bagatonitevosti operacijnoyi sistemi Ruby gnome2 Ruby gnome2 obolonka na movi programuvannya Ruby dlya biblioteki GTK ta nizki bibliotek proyektu GNOME Ruby gnome2 ye vilnim programnim zabezpechennyam i rozpovsyudzhuyetsya na umovah licenziyi GNU Lesser General Public License Priklad kodu require gtk window Gtk Window new Gtk WINDOW TOPLEVEL button Gtk Button new Knopka button signal connect clicked print Knopka natisnena n window add button button show window show Gtk mainKomentari v RubyV Ruby yak i v bilshosti mov ye dva tipi komentariv Komentari rozmirom v odin ryadok poznachayutsya tak Komentari Komentari rozmirom dva i bilshe ryadkiv poznachayutsya tak begin Komentari end Priklad bagatoryadkovih komentariv begin def young age if age lt 30 return true else return false end end end Priklad odnoryadkovogo komentarya val 12 if val 1 val 12 val 42 puts komentar endDiv takozhRuby on Rails Ruby Version ManagerPrimitkiGitHub 2007 d Track Q364 Arhiv originalu za 8 lyutogo 2008 Procitovano 23 serpnya 2007 PosilannyaRuby u sestrinskih Vikiproyektah Portal Programuvannya Teksti u Vikipidruchniku Fajli u Vikishovishi Ruby language home page 24 sichnya 2008 u Wayback Machine angl Ruby on page net Najprostishij dovidnik z Ruby z prikladami 18 sichnya 2022 u Wayback Machine angl Dokumentaciya do movi Ruby 26 veresnya 2020 u Wayback Machine angl Oficijnij majdanchik Ruby gnome2 21 serpnya 2008 u Wayback Machine angl