Ruby - язык программирования общего назначения с объектно-ориентированной парадигмой и динамической типизацией. Синтаксис Руби базируется на синтаксисе языков Perl и Python, но имеет и много индивидуальных особенностей.
Самый популярный фреймворк платформы - Ruby on Rails - стал своего рода стандартом для веб-фреймворков. Его используют такие IT-гиганты, как Netfix, AirBnB и Uber.
История создания
Юкихиро Матцумото начал разработку собственного языка программирования в 1993 году, а первая готовая версия проекта вышла в свет в 1995. По заявлениям самого Мацумото, Ruby был создан, чтобы “сделать программистов счастливее”. В действительности японские разработчики и правда достаточно быстро оценили все плюсы новой платформы. К концу 90-х официальные гайды Руби были переведены на английский, и с этого момента язык начал завоевывать запад.
Изначально главной проблемой Ruby была его низкая производительность. Ради повышения скорости обработки данных разработчикам пришлось вывести язык на новый путь развития и даже отказаться от обратной совместимости версий. Такой ход оправдал себя, и с выходом Ruby 1.9 интерес к платформе многократно возрос во всем мире.
Актуальная на данный момент версия Руби 3.0 продолжает тенденцию к увеличению производительности и использует JIT-компиляцию, преобразующую байт-код в машинный код прямо по ходу выполнения программы.
Первый официальный перевод документации Ruby на русский язык вышел в 2011 году, дав значительный толчок популяризации технологии в России.
Особенности Ruby
- Простой синтаксис.
Ruby - высокоуровневый язык. Его синтаксис лаконичен и похож на обычный человеческий язык. В целом команды На Руби напоминают команды на Python. В сравнении с кодом C++ и С# код на Ruby выглядит лаконичнее и оптимизированнее. Это сказывается в том числе на времени разработки программ. - Совмещение парадигм.
Руби считается объектно ориентированным языком. В нем есть все соответствующие аспекты - объекты, классы, методы, замыкания и пр. Но в то же время у этого языка есть функциональные и структурные свойства. Такой подход делает Ruby универсальным инструментом, подходящим для решения широкого спектра задач. - Нестрогая типизация.
Тип переменной в Руби задается автоматически, а не вручную. Интерпретатор сам определяет нужный тип, в зависимости от присвоенного значения и используемых методов. Для такого принципа есть специальный неформальный термин - “утиная типизация”, или duck typing. Название объясняется поговоркой - “если объект плавает и крякает, как утка, то с наибольшей вероятностью он и есть утка”. - Интерпретируемость.
Программа на Ruby исполняется не компилятором, а интерпретатором, который считывает программу строка за строкой, фактически в режиме реального времени. За счет отсутствия “промежуточного этапа” - компиляции написанных программистом команд в машинный код - достигается полная кроссплатформенность языка. - Встраиваемые блоки.
Блок - это дополнительная инструкция, встраиваемая в функцию или метод. Блок не всегда обязателен к исполнению, но он может сделать функцию более гибкой и эффективной. Доработка готового кода становится проще и безопаснее с использованием блоков. Действие блока запускается с помощью специальной команды yield. - Многопоточность.
Интерпретатор Ruby может выполнять несколько задач одновременно, не распределяя потоки строго по времени. Многопоточность при этом осуществляется аппаратной частью устройства, а не операционной системой. Это повышает кроссплатформенность языка.
Плюсы и минусы языка
Программисты относят к преимуществам Руби следующие пункты.
- Широкая функциональность.
Как язык общего назначения, Ruby применяется во многих сферах разработки - от десктопных программ до веб-серверов. Разнообразные фреймворки дополнительно расширяют возможности языка.
Руби совместим со всеми популярными ОС - Windows, MacOS, Linux и Unix. Разработка для мобильных систем также возможна. - Принцип наименьшего удивления.
Согласно философии автора Ruby, этот язык должен быть максимально предсказуемым для разработчика. Код на нем должен работать именно так, как того ожидает программист. Такой принцип упрощает понимание программы и делает возможным ее быструю доработку и отладку. - Активное сообщество.
Ruby - платформа, популярная среди разработчиков во многих странах. Ее авторы всегда прислушиваются к мнению пользователей и развивают язык в соответствии с потребностями сообщества. В среде Рубистов существуют свои “правила хорошего тона” для написания кода и общепринятые стандарты, облегчающие совместную работу над проектами.
Есть у Ruby и очевидные недостатки, которые пока не устранены полностью.
- Низкая производительность.
С самого начала существования платформы она показывала значительно более скромные результаты в скорости обработки данных, чем конкуренты. С выходом каждой новой версии ситуация постепенно улучшалась. Но все же из-за интерпретируемости Ruby остается не самым быстрым языком и обычно не используется в ситуациях, где важна скорость реакции программы на действия пользователя. - Отсутствие обратной совместимости.
Ruby 1.9 и все последующие версии языка несовместимы с версией 1.8. Такое непростое решение было принято разработчиками для полного перехода на новую, более продуктивную ветку развития. Это привело к затруднению переноса старых проектов на более актуальные релизы платформы. - Требовательность к ресурсам.
Интерпретатор языка забирает очень много ресурсов системы во время обработки информации. Обработать код без заметных проблем могут только устройства с мощными процессорами. Поэтому разработка на Руби под мобильные платформы - скорее исключение, чем правило. - Особенности работы с памятью.
Некоторые программисты отмечают, что Ruby не рационально использует слоты памяти, из-за чего программа занимает много лишнего места. - Трудности изучения.
Специалисты советуют перед освоением Руби выучить какой-нибудь другой объектно-ориентированный язык, например, Python. Тогда вам станут понятны все фишки и удачные решения Ruby, за которые его ценят адепты. Без общего понимания логики алгоритмов язык будет сложен для понимания, несмотря на относительно простой синтаксис.
Сферы применения
Ruby - язык программирования общего назначения. Он нашел свое применение в разных сферах - от SaaS приложений и пользовательского ПО до сайтов интернет-магазинов. Чаще всего Руби применяется именно в веб-среде, благодаря популярному фреймворку Ruby on Rails. На нем пишут серверные части как крупных веб-приложений, так и небольших сайтов.
RnR оказался настолько удачным в своем построении, что по его подобию стали разрабатываться и другие фреймворки, такие как Django и Laravel. В их основе лежит MVC модель, то есть разделение общей системы на три отдельные части - модель, представление и контроллер. Модель - это общая структура программы и заложенные в ней алгоритмы, представление - визуальный интерфейс приложения, а контроллер отвечает за обработку данных, вносимых пользователем с устройства. Кроме того, для веб-фреймворков характеры миграции и бесшовные интеграции с базами данных.
Важная особенность Ruby on Rails - соглашение о конфигурациях. Оно предполагает, что создание новых конфигураций возможно только тогда, когда существующие официальные конфигурации не могут предоставить решения поставленной задачи.
Перспективы развития
Программисты любят шутить, что “Руби мертв”. В действительности же язык очень даже жив и достаточно популярен. Для небольших компаний и стартапов он выгоден относительно недорогой и быстрой разработкой MVP - минимально жизнеспособного продукта. На крупных проектах Ruby обеспечивает безопасность и модернизируемость кода.
Повышение производительности - одна из главных задач авторов языка на ближайшее время. Кроме того, в обозримой перспективе будут появляться новые фреймворки, расширяющие возможность Руби на различных платформах.
Примеры программ
Чтобы вывести на экран стандартную надпись “Привет, мир!”, нужно прописать всего лишь одну строку.
puts "Привет, мир!"
Ввод данных с клавиатуры также не вызывает затруднений. Для демонстрации напишем небольшую программу, вычисляющую скорость движения по заданным расстоянию и времени в пути.
puts "Введите расстояние:"
s=gets.chomp.to_f
puts "Введите время:"
t=gets.chomp.to_f
v=s/t
puts "Скорость передвижения равна #{area}"
Через метод gets.chomp.to_f считывает вводимые с устройства значения и переводит каретку на новую строку.
Рассмотрим также пример с нахождением факториалов чисел от 1 до 15, который занимает всего несколько строк.
n = 1
15.times do |i|
n *= i + 1
puts n
end
Метод *= перемножает значения и присваивает результат правому множителю. То есть выражение n *= i + 1 равно выражению n=n*(i+1). Стоит также обратить внимание, что переменная i объявляется прямо в теле цикла.
Заключение
Ruby и его фреймворки изначально создавались, чтобы облегчить жизнь программистам. В нем внедрена удобная блочная система для гибкой модификации кода и динамическая типизация для облегчения синтаксиса. Разработчики, переходящие на Руби с других объектно-ориентированных языков высоко оценивают эти и многие другие моменты.
Фреймворк Ruby on Rails сейчас задает стандарты в среде веб-фреймворков и является оптимальным инструментом для разработки и поддержания серверной части веб-приложений.