Обзор возможностей языка программирования Ruby | Статья в журнале «Молодой ученый»

Авторы: ,

Рубрика: Спецвыпуск

Опубликовано в Молодой учёный №4 (27) апрель 2011 г.

Статья просмотрена: 2651 раз

Библиографическое описание:

Сапего Ю., Николаев А. Б. Обзор возможностей языка программирования Ruby // Молодой ученый. — 2011. — №4. Т.3. — С. 53-55. — URL https://moluch.ru/archive/27/3103/ (дата обращения: 16.08.2018).

Ruby это динамический, рефлексивный, объектно-ориентированный язык, который сочетает синтаксис, вдохновленный особенностями Perl с Smalltalk. Rubyвозник в Японии в середине 1990х и впервые был разработан и спроектирован  Юкихиро "Matz" Мацумото. Он (язык) находился главным образом под влиянием Perl, Smalltalk, Eiffel и Lisp.
История
Считается 24 февраля 1993 года днём создания языка Ruby. Стоит отметить, что в тот день было всего лишь придумано название для этого языка, хотя никакого кода для него не было написано. В онлайн чате между Мацумото и Keiju Ishitsuka рассматривалось два названия, это “Ruby (рубин)” и “Koral (корал)”. Было выбрано первое только потому, что это был камень по гороскопу одного из сотрудников Мацумото.
Первый публичный релиз Ruby 0.95 был объявлен на японской внутренней телеконференции 21 декабря 1995 года. Впоследствии ещё три версии Ruby были опубликованы в течение двух дней.
Уже на этом этапе разработки было много черт схожих с поздними релизами Ruby, включая объектно-ориентированное проектирование, классы с наследием, итераторы, замыкание, обработка исключений и сборка мусора.
После релиза Ruby 1.3 в 1999 году заработал первый список- рассылок ruby-talk на английском языке, который сигнализировал о росте интереса к языку за пределами Японии. В сентябре 2000 была напечатана первая книга на английском по программированию на Ruby.
Концепция языка
Юкихиро Мацумото хотел создать новый язык, уравновешивающий функциональное1 программирование с императивным2 (процедурным) программированием. Мацумото заявил: "Мне нужен был скриптовый язык, который был более мощным, чем Perl, и более объектно-ориентированный, чем Python. Вот почему я решил разработать свой язык". Он часто говорил, что он "пытается сделать Ruby естественным, не простым", как сама жизнь.
Мацумото говорил, что Ruby разработан для производительности программиста и для радости, следуя принципам хорошего дизайна пользовательского интерфейса. Он подчеркивал, что дизайн системы необходим для человека, а не для компьютера: «Часто люди, особенно инженеры, фокусируются на машинах. Они думают, что «делая это, машина заработает быстрее. Делая это, машина будет работать более эффективно. Делая это, машина будет делать то-то, то-то, то-то. Они фокусируются на машине. Но по факту, мы должны фокусироваться на людях, о том, как люди заботятся о создании программных приложений. Мы мастера. Они рабы».
Мацумото описывал свой язык, как простой снаружи, но очень сложный внутри, как наше тело. Он хотел, чтобы каждый человек, который только начинал использовать Ruby, не чувствовал затруднения в освоения этого языка, он ориентировался на то, чтобы люди меньше тратили время на реализацию тех или иных программ (по сравнению с другими языками программирования), погружаясь в «дебри» кода. Правда есть в этой концепции один существенный недостаток: простая программа может использовать больше ресурсов компьютера или выполняться дольше, чем при написании подобных программ, например на Perl.
Краткое описание
В Ruby всё является объектом. Для каждого объекта могут быть определены собственные свойства и действия. В объектно- ориентированном программировании свойства называются переменными экземпляра, а действия над ними - методы. Чисто объектно-ориентированный подход в Ruby чаще всего демонстрируется в коде, который производит действия над числами.

5.times{print"We *love* Ruby -- it's outrageous!"}

Во многих языках, числа и другие примитивные типы не объекты. Ruby следует влиянию Smalltalk, который дает методы и переменные экземпляра всем его типам. Это облегчает использование Ruby, т.е. правила, применяемые к объектам, применяются для всего Ruby.
Переменные Ruby содержат не сами объекты, а ссылки на них. Присваивание — это не передача значения, а копирование ссылки на объект. Для программиста, привычного к распространённым гибридным языкам программирования, некоторые эффекты такого решения могут показаться неожиданными. Например:

a ="abcdefg"

b = a

b #=> "abcdefg"

a[3] ='R'

b #=> "abcRefg"

то есть при изменении значения переменной a, неявно изменилось и значение b, так как они содержат ссылку на один объект. То есть механизм присваивания действует одинаково для всех объектов, в отличие от языков типа CObject Pascal, где присваивание может означать как копирование значения, так и копирование ссылки на значение.
Имеются библиотеки для создания всех типом приложений: XML, GUI привязки, сетевые протоколы, библиотеки игр и многое другое. Программисты Ruby также имеют доступ к мощной программе RubyGems3. Сопоставимый с CPAN Perl, RubyGems позволяет легко импортировать библиотеки других программистов вашу программу.
Ruby рассматривается как гибкий язык, так как позволяет пользователям свободно изменять его части. Любые части языка могут быть удалены или переопределены, а также может что-то добавлено, по желанию. Ничто не ограничивает деятельность программиста.
Например, сложение выполняется с помощью операции (+). Но, если бы вы предпочли использовать явное слово plus, вы могли бы добавить такой метод к встроенному в Ruby классу Numeric.

class Numeric
  def plus(x)
    self.+(x)
  end
end

y=5.plus6
# y is now equal to 11

Операции в Ruby – это просто “подслащённый синтаксис” для методов. Вы также можете переопределить их.
Блоки в Ruby также представляются мощным источником гибкости. Программист может присоединить к любому методу замыкание, где описывается, как должен выполняться этот метод. Замыкания называются блоками, и они стали одной из наиболее популярных возможностей для тех, кто перешёл на Ruby с других императивных языков, наподобие PHP или Visual Basic.
Идея блоков почерпнута из функциональных языков. Matz говорил: “Замыканиями в Ruby я хотел отдать дань уважения культуре языка Lisp.”

search_engines=
  %w[Google Yahoo MSN].mapdo|engine|
    "http://www."+engine.downcase+".com"
  end

В приведённом выше коде, блок описан в конструкции do…end. Метод map применяет этот блок к имеющемуся списку слов.
В отличие от многих объектно-ориентированных языков в Ruby не поддерживается множественное наследование, но вместо него может использоваться концепция «примесей», основанная в данном языке намеханизме модулей. Модули – это собрания методов.
Классы могут “подмешать” какой-нибудь модуль, получая все его методы. Например, любой класс, который реализует метод each, может “подмешать” модуль Enumerable, который добавит ему целую кучу методов, использующих each для организации циклов.

class MyArray
  includeEnumerable
end

Как правило, Ruby-сты видят в этом гораздо больше ясности, чем способ множественного наследования, которое является сложным и запутанным.
Хотя в Ruby часто используется очень ограниченный набор знаков пунктуации и обычно отдаётся предпочтение английским ключевым словам, некоторые знаки препинания используются для украшения Ruby. Но тем не менее имеет лаконичный и простой синтаксис, частично разработанный под влиянием АдаEiffel и Python.
 Ruby не требует объявления переменных. Он использует простые соглашения об именах для обозначения видимости переменных.
var может быть локальной переменной;
@var является переменной экземпляра (член или поле объекта класса);
@@var — переменная класса;
$var является глобальной переменной.
Эти префиксы переменных улучшают читабельность, позволяя программисту легко определять роль каждой переменной. Также становится ненужным использовать надоедливый префикс self. перед каждой переменной экземпляра.
Содержит автоматический сборщик мусора.
Стоит отметить, что Ruby является многоплатформленным языком. Он разрабатывался на Linux, но работает на многих версиях UnixDOSMicrosoft Windows (в частности, Win32), Mac OSBeOSOS/2 и т. д.

Список информационных источников
  1. Введение в RubyGems http://www.rubygarden.org/ruby?RubyGems

  2. Ruby http://ru.wikipedia.org/wiki/Ruby

  3. About Rubyhttp://www.ruby-lang.org/en/about/

  4. Справочник по Rubyhttp://ruby.on-page.net/

  5. Ruby-блоги http://www.rubygarden.org/

1это парадигма программирования, в которой выполнение программы представляет собой вычисление некоторого выражения, описывающего применение функций (в математическом понимании) ко входным данным

2язык программирования высокого уровня, в основу которого положен принцип описания (последовательности) действий, позволяющей решить поставленную задачу. Обычно процедурно-ориентированные языки задают программы как совокупности процедур или подпрограмм.


3 менеджер пакетов для языка программирования Руби который предоставляет стандартный формат для программ и библиотек Руби (в самодостаточном формате «gems»), инструменты, предназначенные для простого управления установкой «gems», и сервер для их распространения

Основные термины (генерируются автоматически): язык, переменная, множественное наследование, CPAN, DOS, MSN, GUI, XML, PHP, копирование ссылки.


Похожие статьи

Работа с элементами GUI на примере приложения...

Способ хранения указателей на объекты разных классов в одном контейнере демонстрирует такое свойство языка C++ как полиморфизм.

Далее в программе отсутствуют отдельные указатели или ссылки на элементы первой секции, а все обращения к ним происходят через...

Теоретические аспекты создания обозревателя файловой...

В статье подробно разобран пример программы, написанной на языке C++ на основе

В качестве операндов функция принимает значения строки, столбца и ссылку на индекс

Ж. Бланшет, М. Саммерфилд. Qt 4: Программирование GUI на C++. 2-е дополненное издание.

Организация доступа к реляционной базе данных на основе...

Рис. 1. Пример наследования в ООП (язык C#).

По заданному XML-описанию сущностей и связей NHibernate автоматически создает SQL-запросы для загрузки и сохранения объектов [9].

Doctrine — объектно-реляционный проектор (ORM) для PHP 7.1+, который базируется на...

Интеграция MS-DOS приложений в современные операционные...

Для исполнения MS-DOS приложений в современном мире существует несколько способов.

Рис. 2. Связывание XML данных. Ядро RCPML позволяет реализовать любые XML UI языки под платформу Eclipse.

Анализ инструментов для построения онтологии...

Protege позволяет определять классы, иерархии классов, переменные, ограничения переменных значений и отношения между классами и

Он имеет обоснованную поддержку и обеспечивает множественную среду онтологии.

наследование и. обнаружение циклов.

Анализ уязвимости переполнения буфера | Статья в журнале...

Следствием такого переполнения может быть как ситуация отказа в обслуживании (DoS), так и

Дело в том, что библиотечная функция strcpy не проверяет размеры буфера-приемника, копирование строки

Пусть у нас имеются некоторые переменные в программе (на языке C)...

Обучение объектно ориентированной парадигме...

Sparx Systems Enterprise Architect. — генерирование и обратное проектирование на более чем 10 языках программирования (C и C++, C#, Java, ObjectPascal, PHP)

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

Подходы к архитектурному проектированию веб-приложений

require_once("welcome_page.php"); }; ?> Данное приложение написано на языке PHP. Входной точкой в приложение служит файл index.php, который и обрабатывает все входящие запросы.

Сетевые атаки. Виды. Способы борьбы | Статья в сборнике...

Классический пример - атака DoS, которая начинается с чужого адреса, скрывающего истинную личность злоумышленника.

PHP-инъекция - один из способов взлома веб-сайтов, работающих на PHP.

XML (eXtensible Markup Language) – это всем известный язык разметки, с...

Обсуждение

Социальные комментарии Cackle

Похожие статьи

Работа с элементами GUI на примере приложения...

Способ хранения указателей на объекты разных классов в одном контейнере демонстрирует такое свойство языка C++ как полиморфизм.

Далее в программе отсутствуют отдельные указатели или ссылки на элементы первой секции, а все обращения к ним происходят через...

Теоретические аспекты создания обозревателя файловой...

В статье подробно разобран пример программы, написанной на языке C++ на основе

В качестве операндов функция принимает значения строки, столбца и ссылку на индекс

Ж. Бланшет, М. Саммерфилд. Qt 4: Программирование GUI на C++. 2-е дополненное издание.

Организация доступа к реляционной базе данных на основе...

Рис. 1. Пример наследования в ООП (язык C#).

По заданному XML-описанию сущностей и связей NHibernate автоматически создает SQL-запросы для загрузки и сохранения объектов [9].

Doctrine — объектно-реляционный проектор (ORM) для PHP 7.1+, который базируется на...

Интеграция MS-DOS приложений в современные операционные...

Для исполнения MS-DOS приложений в современном мире существует несколько способов.

Рис. 2. Связывание XML данных. Ядро RCPML позволяет реализовать любые XML UI языки под платформу Eclipse.

Анализ инструментов для построения онтологии...

Protege позволяет определять классы, иерархии классов, переменные, ограничения переменных значений и отношения между классами и

Он имеет обоснованную поддержку и обеспечивает множественную среду онтологии.

наследование и. обнаружение циклов.

Анализ уязвимости переполнения буфера | Статья в журнале...

Следствием такого переполнения может быть как ситуация отказа в обслуживании (DoS), так и

Дело в том, что библиотечная функция strcpy не проверяет размеры буфера-приемника, копирование строки

Пусть у нас имеются некоторые переменные в программе (на языке C)...

Обучение объектно ориентированной парадигме...

Sparx Systems Enterprise Architect. — генерирование и обратное проектирование на более чем 10 языках программирования (C и C++, C#, Java, ObjectPascal, PHP)

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

Подходы к архитектурному проектированию веб-приложений

require_once("welcome_page.php"); }; ?> Данное приложение написано на языке PHP. Входной точкой в приложение служит файл index.php, который и обрабатывает все входящие запросы.

Сетевые атаки. Виды. Способы борьбы | Статья в сборнике...

Классический пример - атака DoS, которая начинается с чужого адреса, скрывающего истинную личность злоумышленника.

PHP-инъекция - один из способов взлома веб-сайтов, работающих на PHP.

XML (eXtensible Markup Language) – это всем известный язык разметки, с...

Задать вопрос