Ruby, russian writers, fandom powered by wikia
Історія створення і розвитку Правити
Філософія Правити
Мацумото. фанат об'єктно-орієнтованого програмування, мріяв про мову, більш потужному, ніж Перл, і більш об'єктно-орієнтованому, ніж Python. Основне призначення Рубі - створення простих і в той же час зрозумілих програм, де важлива не швидкість роботи програми, а малий час розробки, зрозумілість і простота синтаксису.
Мова дотримується принципу «найменшої несподіванки». програма повинна вести себе так, як очікує програміст. Однак, в контексті Рубі це означає найменше диво не при знайомстві з мовою, а при його ґрунтовному вивченні. Сам Мацумото стверджує, що метою розробки була мінімізація несподіванок при програмуванні для нього. але після поширення мови він з подивом дізнався, що мислення програмістів схоже і для багатьох їхніх принцип «найменшої несподіванки» збігся з його принципом.
Рубі також успадкував ідеологію мови програмування Перл в частині надання програмісту можливостей досягнення одного і того ж результату кількома різними способами. Люди різні, і їм для свободи необхідна можливість вибирати. «Я вважаю за краще забезпечити багато шляхів, якщо це можливо, але заохочувати або вести користувачів, щоб вибрати кращий шлях, якщо це можливо» [3].
Однією з основних цілей розробки було звільнення програмістів від рутинної роботи, яку комп'ютер може виконувати швидше і якісніше. Особлива увага, зокрема, приділялася буденним рутинним заняттям (обробка текстів, адміністрування), і для них мову налаштований особливо добре.
На противагу машинно-орієнтованим мовам, які працюють швидше, метою цієї розробки була мова найбільш близький до людини. Будь-яка робота з комп'ютером виконується людьми і для людей, і необхідно піклуватися в першу чергу про витрачених зусиль людей. Мова дозволяє максимально швидко і просто для людини виконати завдання, хоча, можливо, це і зажадає додаткового часу роботи комп'ютера.
семантика Правити
Рубі - повністю об'єктно-орієнтована мова. У ньому всі дані є об'єктами. на відміну від багатьох інших мов, де існують примітивні типи. Кожна функція - метод.
тобто при зміні значення змінної a неявно змінилося і значення b. так як вони містять посилання на один об'єкт. З іншого боку, це більш логічно, ніж ситуація, коли для змінних різних типів присвоювання діє по-різному (як, наприклад, в Object Pascal).
Рубі не підтримує множинне успадкування. але замість нього є потужний механізм домішок. Всі класи (безпосередньо або через інші класи) виведені з класу Object. отже, будь-який об'єкт може використовувати певні в ньому методи (наприклад, [[[: Шаблон: MakeRef]] class]. [[[: Шаблон: MakeRef]] to_s]. [[[: Шаблон: MakeRef]] nil?]) . Процедурний стиль також підтримується, але все глобальні процедури неявно є закритими методами класу Object.
Рубі є мультіпарадігменним мовою. він підтримує процедурний стиль (визначення функцій і змінних поза класів), об'єктно-орієнтована (все - об'єкт), функціональний (анонімні функції. замикання. повернення значення усіма інструкціями, повернення функцією останнього обчисленого значення). Він підтримує відображення. метапрограмування. інформацію про типах змінних на стадії виконання.
Можливості Рубі Правити
приклади Правити
В Рубі є чимало оригінальних рішень, рідко або взагалі не зустрічаються в поширених мовах програмування. Можна додавати методи не тільки в будь-класи, а й в будь-які об'єкти. Наприклад, ви можете додати до деякої рядку довільний метод.
Цей приклад також демонструє, як в Рубі можна використовувати Сінглтон. У цьому прикладі Сінглтоном є об'єкт str.
Будь-яка конструкція в Рубі повертає значення. наприклад:
бібліотеки Правити
Стандартна бібліотека Правити
Крім потужних можливостей вбудованих в мову, Рубі поставляється з великою стандартної бібліотекою. Це перш за все бібліотеки для роботи з різними мережевими протоколами на стороні сервера і клієнта. засоби для роботи з різними форматами представлення даних (XML. XSLT. YAML). Крім вбудованих в мову засобів налагодження з Рубі поставляються бібліотеки для юніт-тестування. профілювання. Робота з архівами. датами, кодуваннями. матрицями. OLE - неповний список того, що надає стандартна бібліотека.
Основні вбудовані класи Рубі
Вершина ієрархії класів Рубі.
Динамічний масив для зберігання довільних об'єктів, індексований з 0.
Об'єкти зберігають контекст виконання деякої ділянки коду (значення змінних, методів і т. Д.). Може пізніше використовуватися для виконання обчислень в цьому контексті.
Обгортка навколо покажчика Сі. використовується в основному при написанні розширень.
розширення Правити
У мові Рубі реалізований простий і зручний механізм для розширення мови за допомогою бібліотек, написаних на Сі. дозволяє легко розробляти додаткові бібліотеки [5] [6].
Для уніфікованого доступ до баз даних розроблена бібліотека Ruby DBI (підтримує SQLite. Oracle. ODBC. MySQL. DB2. MS SQL. InterBase. ADO та ін.). Також існують бібліотеки для конкретних баз даних, що підтримують специфічні для них операції.
З графічних бібліотек слід відзначити FxRuby - інтерфейс до графічної бібліотеці FOX. графічний пакет розробника wxRuby (інтерфейс до кросcплатформенному пакету wxWidgets на C ++), QtRuby / Korundum - прив'язка до Qt і KDE відповідно, графічні бібліотеки для роботи з Tk і Gtk. Також реалізована бібліотека для роботи з OpenGL. що дозволяє програмувати тривимірну графіку.
Win32utils - дозволяє звертатися до специфічних можливостям Win32 API. Rmagick - бібліотека для роботи із зображеннями, що підтримує більше 90 форматів (заснована на ImageMagick і GraphicsMagick).
Для управління бібліотеками і програмами Рубі у вигляді самодостатніх пакетів призначена система управління пакетами RubyGems [11] (англ. Gems, gem - дорогоцінний камінь).
Більшість розширень поширюються під вільними ліцензіями (LGPL. Ліцензія Рубі) і можуть бути використані в будь-якому проекті практично без обмежень.
документація Правити
Система RDoc призначена для автоматичного вилучення документації з вихідних кодів і програм на Рубі і її подальшої обробки. Є стандартом де-факто для підготовки документації з програмного забезпечення, написаного на Рубі.
Використання Правити
Недоліки мови і інтерпретатора Правити
До недоліків інтерпретатора Рубі сьогодні можна віднести наступні:
- Невисока швидкість роботи (природна розплата за швидке написання складних програм).
- Відсутність підтримки потоків операційної системи (для Unix-подібних операційних систем є підтримка процесів ОС).
- Відсутність вбудованої підтримки юникода (можлива робота з використанням додаткових бібліотек. Планується додати в версії 1.9).
- Відсутність компіляції в байткод. (При цьому є можливість компілювати Ruby в Java і .NET байткод. Використовуючи компілятор JRuby і Ruby.NET [7]). У версію 2.0 заплановане включення віртуальної машини YARV. компілює Ruby в байткод і істотно прискорює виконання.