Анализ свойств и практическое применение современного языка RUBY.

Авторы: Черепков А.В., Перкин П.В., Зеленёва И.Я.

Источник: Інформаційні управляючі системи та комп'ютерний моніторинг (ІУСКМ-2011): II Всеукраїнська науково-технічна конференція студентів, аспірантів та молодих вчених, м. Донецьк / Донец. націонал. техн. ун-т; редкол.: Є.О. Башков (голова) та ін. - Донецьк: ДонНТУ, 2011.

В этой работе мы изучили ряд важных вопросов касающихся развития и перспектив современного языка Ruby. В статье рассмотрены преимущества, области применения, сравнительный анализ и основные характеристики данного языка. Среди изученных вопросов одним из главных, на наш взгляд, является вопрос о производительности Ruby и затратах ресурсов. Это является основными параметрами при выборе языка для изучения новичками. Таким образом, авторы раскрыли основные вопросы, интересующие начинающих программистов.

В наше время существует очень много языков программирования. Каждый язык имеет свои преимущества и недостатки, но каждый из них создается для того, чтобы облегчить труд программиста, увеличить скорость обучения людей данному языку и, конечно же, увеличить скорость тех или иных задач решаемых на данном языке. Одним из таких относительно молодых языков является Ruby. Он появился в 1995 году. Для сравнения PHP был создан в 1995 году, Perl – 1987, Phyton – 1990.

Преимущества и области применения языка Ruby

Достаточно молодой современный язык Ruby – это динамический, рефлективный, интерпретируемы высокоуровневый язык программирования для быстрого и удобного программирования [29-30,1]. Или, если сказать простыми словами, то он дает нам возможность определять типы данных, осуществлять компиляцию непосредственно во время выполнения. Это помогает ускорить процесс разработки приложений. Также в этом языке мы имеем возможность дополнять и изменять код программы во время выполнения. Это свойство и называется свойством рефлективности языка. Ruby также обладает так называемым сборщиком мусора, что является очень полезным для динамического языка. Сборка мусора – это технология автоматического управления памятью, которая сама ищет в динамической памяти уже не нужные объекты и удаляет их. Ruby является кроссплатформенным языком, и его программы могут запускаться под любой операционной системой.

Также нужно рассказать об областях применения этого языка. Во-первых, можно сказать, что этот язык может быть первым языком для начинающих программистов, так как разработчики старались сделать его максимально интуитивно понятным. Это можно увидеть на следующем примере, который иллюстрирует разницу между частями программы языка Java и Ruby, выполняющие одно и то же действие (Рис.1).

Аналогичная программа на Ruby, показывающая краткость программы (Рис.2).

Для понимания такой программы особых знаний в программировании не нужно, поэтому язык можно назвать дружественным пользователю. Этот язык очень предсказуем и даже новичок может быстро разобраться в коде. В одном из Московских вузов (МГИУ) Ruby даже будет знакомить с программированием первокурсников.

Сравнительный анализ языка Ruby и других популярных языков программирования.

Если сравнивать Ruby с другими языками, то можно увидеть, что размер кода для решения одних и тех же задач значительно меньше, но это не мешает быть языку таким же функциональным. Приведем таблицу сравнения различных возможностей нескольких популярных языков [1-3,4].

Перед этим введем следующие обозначения для создания сравнительной характеристики (Табл. 1).

Таблица 1 – Условные обозначения используемые для сравнительной характеристики

+ Возможность присутствует
- Возможность отсутствует
+/- Возможность поддерживается не полностью
-/+ Возможность поддерживается очень ограничено
? Нет данных

Таблица 2 – Сравнительная характеристика функциональных возможностей языков программирования

Возможность Ada C C++ C# Prolog Java Perl php Delphi Ruby
Рефлексивный - - - -/+ + -/+ +/- + -/+ +
Деклоративный - - - -/+ + - -/+ + - +
Распределенный + +/- +/- -/+ + + - - - -/+
Ручное управление памятью + + + + ? - - - + -
Сборка мусора -/+ - - + ? + + + - +
Кортежи - - +/- +/- ? - + - - +
Целые числа произвольной длины - - - + ? + + ? - +
динамическая типизация - - - -/+ - - -/+ + -/+ +

Из таблицы мы видим, что язык Ruby подобен по своим возможностям с Php. Ruby, в отличии от С, С++, ADA, имеет возможность оперировать собственным кодом, как данными. Рассматриваемый язык является декларативным, так как описывает не столько решение задачи, сколько саму задачу, а решение уже должен определять компьютер. Противоположный тип языка - императивный. Но стоит отметить, что это разделение условное, так как в принципе на любом языке можно написать определенные процедуры решения, которые потом будут описывать задачи, обрабатываемые этими процедурами. Возможность Ruby к распараллеливанию программы ограничена, но всё-таки она есть, что дает преимущество над Php, Perl, Delphi. Кортеж – это неименованный тип данных, содержащий несколько безымянных полей произвольного типа. Ruby имеет возможность вернуть кортежи из метода(функции).

Ruby сложно конкурировать с компилируемыми языками в производительности. Это мы можем увидеть на следующей диаграмме (Рис.3). На них изображены результаты выполнения четырех тестов. Первые два теста на циклы. Тест № 3 — заполнение большого массива. Массив в 100 млн. переменных типа int PHP не удалось заполнить, поэтому ограничились 20 млн. Тест № 4 — рекурсивное вычисление факториала.

Рисунок 3 – Таблица и диаграмма результатов тестов

Конечно же, следует помнить, что мы сравнили компилируемые языки и интерпретируемые, и именно поэтому такая разница в результатах.

Так как Ruby имеет свой сборщик мусора работа с памятью становится на порядок выше, чем других языков. Здесь необходимо сделать пару замечаний. Большинство интерпретаторов сразу занимали определенный объем памяти, и в течение работы этот показатель уже не менялся. Однако запросы PHP во время работы линейно росли, а Ruby использовал и освобождал память волнообразно. В таблицу вошли максимальные значения проведенных тестов.

Таблица 3 – Загрузка памяти во время прохождения тестов

Язык Память. мб
Groovy 1.7.4 27
PHP 5.2.14 37
Python 2.6.5 3.8
Python 2.6.5 + Psyco 2.0 4
Ruby 1.8.7 2
Ruby 1.9.2 1,8

Рисунок 3 – Сравнительная диаграмма работы с памятью во время тестирования

Заключение

В заключении можно сказать, что данный язык может уступать некоторым мощным языкам по производительности, и возможно особо мощные проекты, используя только один язык Ruby писать не целесообразно. Но он имеет огромные плюсы, которые заключаются в том, что язык дает возможность быстро создавать довольно мощные приложения, в том числе и веб-приложения с помощью инструментария Ruby on Rails, написанного также на Ruby, а также способствует быстрому обучению этому интуитивно понятному языку. Ruby имеет очень простой синтаксис. Таким образом, язык акцентирует внимание на понимании именно программирования. На основе проведенного анализа можно сформулировать следующие рекомендации: язык Ruby целесообразно применять для обучения студентов младших курсов основам программирования в целом и объектон-ориентированному программированию в частности; кроме того, язык Ruby может эффективно и широко применятся для разработки веб-приложений.

Список литературы