Why Ruby?

Why choose Ruby?
"Ruby предназначен для того, чтобы сделать программистов счастливыми."
~ Yukihiro Matsumoto

Однажды, задумавшись о создании собственного приложения, мы сталкиваемся с вопросом выбора языка программирования. Выбор огромен. К примеру, так опытные генералы выбирают вооружение для своих операций. Достигнуть нужного результата могут разные типы войск, но у каждого свои особенности. Авиация и тяжёлая артиллерия после себя оставят уйму работы архитекторам и дизайнерам, в то время как после аккуратных операций лёгких войск останутся почти пригодные для жизни места - ремонт понадобится лишь косметический.

Так и с языками программирования: в сфере разработки web-приложений есть минимум два-три языка, способных справиться с поставленной задачей. Однако подход к решению у этих языков обычно отличается, в следствие чего встаёт вопрос приоритетов в разработке и индивидуальных предпочтений. Имеет смысл выбирать именно тот язык, на котором ваше приложение будет проще поддерживать, оптимизировать, расширять и совершенствовать.

Разработчики используют Ruby во множестве областей: в администрировании, прототипировании, научных исследованиях, разработке игр и различных приложений, в написании скриптов и т.д. Cisco, NASA, HP и многие другие компании используют этот язык. Ruby прекрасно себя проявляет на nginx, Apache, а также имеет несколько web-серверов, написанных на самом Ruby.

Ruby – хорошо сбалансированный язык. Он был создан в 1995 году Yukihiro Matsumoto, путём объединения частей разных языков программирования, таких как Perl, Lisp, Smalltalk для формирования нового языка, который был бы естественным, но не простым языком. Этот высокоуровневый объектноориентированый язык программирования, который ещё и полноценно интерпретируем. Интерпретируемый - значит, что код программы хранится в виде обычного текста, который передаётся исполняющему его интерпретатору.

Чистоту и красоту Ruby получает благодаря тому, что программисты стараются следовать нескольким принципам:

  • Don't repeat yourself. Единожды написав код и положив его в нужное место мы защищаем себя от повторений кода и от ненужной работы.
  • Conventions over Configuration. Очень многие методы уже написаны и их следует использовать, а в крайних случаях, если умолчания нас не устраивают, мы просто переписываем их под себя. Всё для чистоты и лаконичности кода, и при этом минимум усилий.

В Ruby всё – объект. Для каждой частицы информации или кода могут быть определены собственные свойства и действия. В объектно-ориентированном программировании свойства называются переменными объекта, а действия – методами. Ruby легко может продемонстрировать объектно-ориентированный подход строкой кода, в которой производится действие над числом.

    10.256.round
    # получим округленное число 10

Во многих языках числа и другие примитивные типы данных не являются объектами. Ruby под влиянием языка Smalltalk позволяет задать методы и переменные объекта всем типам данных. Это упрощает использование Ruby, так как правила применимые к объектам, применимы ко всему Ruby.

Гибкость Ruby поражает: она позволяет пользователям удалить и переопределить основные части по желанию, а также модифицировать их. Ruby старается дать программисту как можно больше свободы.

Ruby намеренно предоставляет лишь одиночное наследование, в отличие от многих объектно-ориентированных языков. Этот язык даёт нам концепцию модулей (примеси - в Scala, категории - в Objective-C). Модули - это коллекции методов. Классы могут свободно вмешивать модуль и получать все его методы. Например, любой класс, реализующий метод each, может подмешать модуль Enumerable, который добавит много методов использующих each для создания циклов.

class Collection
  include Enumerable
end

Ruby был разработан большей частью на GNU/Linux, но обладает высокой переносимостью: есть возможность работать на многих типах UNIX, Mac OS X, Windows/XP/7 и так далее. Ещё один плюс -  Ruby/Rails сейчас дают реализацию практически всех успешных технологий и подходов к программированию, таких как работа с базами данных через ORM (ActiveRecord), шаблоны проектирования (Design Patterns), разработка через тестирование (TDD), полноценная модель реализации концепции MVC, использование JavaScript-framework'а jQuery.

Открытость сообщества является одной из самых важных частей Ruby. Нашёл решение проблемы, написал полезный модуль -  выложи в открытый доступ, помоги другим. На данный момент, благодаря многим людям, у нас есть доступ к тысячам готовых решений разнообразнейших задач. Сейчас не нужно ломать голову над стандартными инструментами share-кнопок в социальных сетях, почтовых рассылок, составления тестовых данных, систем авторизации и аутентификации, комментирования и т.п. -  это создано, протестировано, и прекрасно работает. Даже если вас не устраивает часть библиотеки —  допишите и предложите это сообществу, может быть именно ваша идея так необходима сейчас.

Большой выбор инструментов - это хорошо, но чем он больше, тем сложнее выбрать. Ruby не единственный язык программирования в мире, и как и у всех, у него есть сильные и слабые стороны. Я не отрицаю возможность существования инструмента совершеннее, но я чувствую легкость и удовольствие программируя именно на этом языке. Мне нравится Ruby.

Связаться