Мова програмування ruby

Історія створення і розвитку

Мацумото, фанат об'єктно-орієнтованого програмування, мріяв про мову, більш потужному, ніж Перл, і більш об'єктно-орієнтованому, ніж Python. Основне призначення Ruby - створення простих і в той же час зрозумілих програм, де важлива не швидкість роботи програми, а малий час розробки, зрозумілість і простота синтаксису.
Мова дотримується принципу «найменшої несподіванки»: програма повинна вести себе так, як очікує програміст. Однак, в контексті Ruby це означає найменше диво не при знайомстві з мовою, а при його ґрунтовному вивченні. Сам Мацумото стверджує, що метою розробки була мінімізація несподіванок при програмуванні для нього, але після поширення мови він з подивом дізнався, що мислення програмістів схоже і для багатьох їхніх принцип «найменшої несподіванки» збігся з його принципом.
Ruby також успадкував ідеологію мови програмування Перл в частині надання програмісту можливостей досягнення одного і того ж результату кількома різними способами. Люди різні, і їм для свободи необхідна можливість вибирати. «Я вважаю за краще забезпечити багато шляхів, якщо це можливо, але заохочувати або вести користувачів, щоб вибрати кращий шлях, якщо це можливо».
Однією з основних цілей розробки було звільнення програмістів від рутинної роботи, яку комп'ютер може виконувати швидше і якісніше. Особлива увага, зокрема, приділялася буденним рутинним заняттям (обробка текстів, адміністрування), і для них мову налаштований особливо добре.
На противагу машинно-орієнтованим мовам, які працюють швидше, метою цієї розробки була мова, найбільш близький до людини. Будь-яка робота з комп'ютером виконується людьми і для людей, і необхідно піклуватися в першу чергу про витрачених зусиль людей. Мова дозволяє максимально швидко і просто для людини виконати завдання, хоча, можливо, це і зажадає додаткового часу роботи комп'ютера.
Принципи програмування і дизайну мови іноді виділяються в термін «Шлях Рубі» (англ. Ruby Way). Хел Фултон виділяє такі принципи, як «просто, але не дуже просто», «принцип найменшого подиву», вторинність швидкості роботи програми, динамічність, прості строгі правила, виконання яких не доходить до педантизму, потреба створювати корисні і красиві програми як причина програмування. В цілому вони не мають точного формулювання і іноді цей термін використовується для критики.

можливості Ruby

В Ruby є чимало оригінальних рішень, рідко або взагалі не зустрічаються в поширених мовах програмування. Можна додавати методи не тільки в будь-класи, а й в будь-які об'єкти. Наприклад, ви можете додати до деякої рядку довільний метод. Цей приклад також демонструє, як в Ruby можна використовувати Сінглтон. У цьому прикладі Сінглтоном є об'єкт str.
Будь-яка конструкція в Ruby повертає значення. наприклад:

контейнери

Робота з масивами - одна із сильних сторін Ruby. Вони автоматично змінюють розмір, можуть містити будь-які елементи і мова надає потужні засоби для їх обробки.

Процедурні об'єкти і ітератори

У мові є 2 еквівалентних способу запису блоків коду: співпрограми застосовуються з більшістю вбудованих методів: Наступний приклад показує використання співпрограми і ітераторів для роботи з масивами, який показує стислість запису на Ruby багатьох досить складних дій (випадково вибираємо з послідовності квадратів чисел від «0» до «10» і роздруковуємо разом з індексами):

Класи, домішки, методи, перевантаження операторів

Наступний приклад визначає клас з ім'ям Person, призначений для зберігання інформації про ім'я та вік деякої персони.

Реалізація

Для Ruby існують декілька реалізацій: офіційний інтерпретатор, написаний на Сі, JRuby - реалізація для Java, інтерпретатор для платформи .NET IronRuby (знаходиться в стадії розробки), Rubinius - написана в основному на Ruby і базується на Smalltalk-80 VM.
Офіційний інтерпретатор портовано під більшість платформ, включаючи Unix, Microsoft Windows (в тому числі Windows CE), DOS, Mac OS X, OS / 2, Amiga, BeOS, Syllable, Acorn RISC OS і інші.

інтерактивний Ruby

підтримка IDE

стандартна бібліотека

Крім потужних можливостей, вбудованих в мову, Ruby поставляється з великою стандартної бібліотекою. Це, перш за все, бібліотеки для роботи з різними мережевими протоколами на стороні сервера і клієнта, кошти для роботи з різними форматами представлення даних (XML, XSLT, YAML, PDF, RSS, CSV, WSDL). Крім вбудованих в мову засобів налагодження з Ruby поставляються бібліотеки для юніт-тестування, профілювання. Також є бібліотеки для роботи з архівами, датами, кодуваннями, матрицями, засоби для системного адміністрування, розподілених обчислень, підтримки багатопоточності і т. Д.

Вершина ієрархії класів Ruby.

Динамічний масив для зберігання довільних об'єктів, індексований з 0.

Об'єкти зберігають контекст виконання деякої ділянки коду (значення змінних, методів і т. Д.). Може пізніше використовуватися для виконання обчислень в цьому контексті.

Обгортка навколо указателяСі, використовується в основному при написанні розширень.

Метод, що не пов'язаний з конкретним об'єктом. Може прив'язуватися до об'єкту і викликатися як Method.

розширення

документація

Використання

Для KOffice розробляється Kross, механізм для підтримки скриптів, який включає Ruby.
WATIR (англ. Web Application Testing in Ruby) - вільне засіб для автоматичного тестування веб-додатків в браузері.

Недоліки мови і інтерпретатора

До недоліків інтерпретатора Ruby сьогодні можна віднести наступні:
Невисока швидкість роботи (природна розплата за швидке написання складних програм). Ruby є одним з найбільш повільних з використовуваних в практиці веб-розробки мов програмування.
Відсутність підтримки потоків операційної системи (для Unix-подібних операційних систем є підтримка процесів ОС), є в експериментальній версії 1.9.
Відсутність вбудованої підтримки юникода (можлива робота з використанням додаткових бібліотек, є в експериментальній версії 1.9).
Відсутність компіляції в байткод. (При цьому є можливість компілювати Ruby в Java і .NET байткод, використовуючи компілятор JRuby і Ruby.NET). В експериментальну версію 2.0 входить віртуальна машина YARV, компілює Ruby в байткод і істотно прискорює виконання. Крім того, паралельно розробляється інші проекти віртуальних машин, включаючи Rubinus і Maglev.

Чи знаєте Ви, що діаграма компонентів, Component diagram - це метод об'єктно-орієнтованого проектування, що описує особливості фізичного представлення системи. Діаграма компонентів дозволяє визначити архітектуру розроблюваної системи, встановлюючи залежності між компонентами.

НОВИНИ ФОРУМУ
Лицарі теорії ефіру

Про це Корнілов написав на своїй сторінці в соцмережі.

За словами Корнілова, тоді його повідомлення було сприйнято з недовірою.

Тепер же Володимир Корнілов вирішив повернутися до цієї теми, в зв'язку з чим публікує у себе в фейсбуці фотографії загадкових ізраїльтян, які брали участь в одеській бійні.

Серед безлічі питань, на які Корнілов, за його словами, хотів би отримати відповідь, наприклад, такі:

«Чому вони випадково розгулювали по Одесі з медичним спорядженням, в гумових рукавичках, звідки вони знали заздалегідь про те, що будуть поранені й убиті? Або чому цей боєць раптом різко забув англійську, коли зрозумів, що його записують? ».

Води озер, морів і океанів північного по --------- Лушар обертаються проти годинникової -з-т - р-е-л-к-і, а води південного полушарія- в-ра - ща-ють -ся- по- ч-асів стрілкою, - обра-зуя- -гіг-ант-скі-е вод-ово-роти.

Основною причиною обертання вирів є місцеві вітру.
І чим вище швидкість вітрів тим вище швидкість обертання вирів і як наслідок, вище відцентрова сила вирів, завдяки чому підвищується рівень вод морів і океанів.
А чим нижче відцентрова сила вирів, тим нижче рівень вод морів і океанів.

Швидкість течій, по периметру морів і океанів не скрізь однакова і залежить від глибини узбережжя. У мілководній частині моря швидкість течій збільшується, а в глибоководній частині моря зменшується.
Сезонні коливання рівня вод спостерігаю-ться не по всьому узбережжю морів і океан-ів, а тільки в тих узбережжях де висока кутова швидкість течій і як наслідок, висока відцентрова сила води. (Відцентрова сила F = v / r).
На прямолінійних узбережжях, де течії не мають кутовий швидкістю, рівень вод не підвищується.

Схожі статті