Юкихиро Мацумото, автор Ruby, захотел создать совершенный объектно-ориентированный язык, чтобы в нём максимально полно работал ООП-подход. Кроме этого, новый язык должен соблюдать свод правил, которых придерживался сам Юкихиро и которые сейчас называются «Путь Ruby». Вот некоторые из них:
- Язык для человека, а не для компьютера — программа должна читаться легко даже при минимальном знании Ruby, а всё остальное берёт на себя компьютер.
- Просто, но не слишком просто — всё должно быть простым в программе, но только если для этого не придётся усложнять что-то другое.
- Принцип наименьшей неожиданности — все команды и действия в Ruby должны работать именно так, как от них ожидает программист. Если он встречается с чем-то новым в языке, то это не должно его удивить, а, наоборот, он воспримет это как что-то естественное.
- «Не нужно с этим бороться» — программисту нужно использовать то, что есть в языке, вместо того, чтобы пытаться подстроить язык под себя.
Первая версия Ruby вышла в 1995 году, и за это время язык вырос от проекта одного человека до большого комьюнити и 1,27 миллиона строк кода. Сейчас Ruby — универсальный кроссплатформенный язык программирования и поддерживается всеми современными версиями Linux и MacOS.
Особенность языка
Прелесть и сила Ruby в том, что в нём вообще всё — это объект. Даже числа, значения переменных и типы данных — это тоже объекты. Например, у вас есть сложение, которое реализуется так:
x = 7 + 5
7 и 5 — числа, за которые отвечает класс Numeric, и этот класс знает про знак сложения. Давайте немного расширим возможности этого класса:
class Numeric
def plus(x)
self + (x)
end
end
y = 7.plus 5
С этого момента у всех чисел появляется метод plus, который складывает это число со вторым. И таким же способом можно расширить свойства и возможности каждого элемента в программе. Сделать автоматический перевод из минут в секунды? Легко:
class Numeric
def seconds
self * 60
end
end
#теперь можем легко перевести 35 минут в секунды:
time = 35.seconds
И так можно делать с чем угодно, без ограничений и несовместимости типов. Да и какая может быть несовместимость, если типы — это тоже объекты, которые можно изменить. Это делает Ruby похожим на C++, где есть перегрузка операторов и возможность использовать команды не так, как задумано изначально.
Синтаксис
На первом месте в Ruby стоит читабельность и простота, поэтому этот язык реально освоить за неделю на базовом уровне.
Из заметных штук — не нужно ставить в конце каждой команды точку с запятой и все вложенности обозначаются пробелами, точно так же как в Python.
Комментарии. Пишем в начале строки знак решётки #, и за ней — комментарий любой длины. Ещё можно написать комментарий в несколько строк:
#Это простой однострочный комментарий
x = x + y
=begin
Это тоже комментарий, но в несколько строк.
Чтобы такое сделать, нужно в начале и конце комментария написать =begin и =end, каждый — в начале новой строки.
=end
Присваивание и математические операторы. Тут всё просто: присваивание — это знак равно «=», а математические операторы такие же, как в жизни — +, -, * и т. д.
Типы данных. Так как в Ruby всё объекты, то даже типы данных — это тоже объекты, а значит можно менять их свойства и поведение. По этой причине в Ruby очень мало встроенных типов данных. Если программисту понадобится что-то сложнее, чем встроенные типы, он легко может создать свой тип с нуля или на основе встроенного.
Целые числа: Fixnum
(до 2³⁰) и Bignum
. Второй тип может хранить в себе целые числа вообще любого размера, если для них хватит места в оперативной памяти.
Дробные числа: Float
(число с плавающей запятой), Rational
(рациональные числа) и Complex
(комплексные числа с мнимой единицей).
Строка: String
, последовательность байтов в кодировке UTF-8, могут быть любой длины.
Символ в Ruby — это не один какой-то символ, а просто любая строка, которая остаётся неизменной. Чтобы компьютер понял, что это символ, перед ним ставится двоеточие: symbol = :это_тоже_символ
.
Диапазон — за него отвечает класс Range и в нём хранится непрерывная последовательность целых чисел:
d1 = 1..5 # Две точки — от 1 до 5 включительно.
d2 = 1...5 # Три точки — от 1 до 4, а 5 уже не входит в этот диапазон.
Условный оператор. Стандартная форма выглядит привычно:
if x > 0 then
puts "x - положительное число" #puts выводит значение на экран
elsif x < 0 then
puts "x - отрицательное число"
else
puts "x - нуль"
end
Но есть и несколько других вариантов условного оператора, например такой:
# Unless означает «Если условие не выполняется, то...»
unless x > 3 then
puts x.to_s # Выведет значение x, если оно НЕ больше трёх.
else
puts "очень много, не сосчитать"
end
Циклы. В Ruby семь видов циклов, потому что можно менять местами начало цикла и условия выхода из него, добавлять счётчики или оператор принудительной остановки. Вот как выглядят классические циклы со счётчиком, с предусловием и с постусловием:
# Цикл for со счётчиком
for i in 0 .. list.size-1 do
print "#{list[i]} "
end
# Цикл с предусловием
i=0
while i < list.size do
print "#{ list [i]} "
i += 1
end
# Цикл с постусловием
i = 0
begin
print "#{list[i]} "
i += 1
end until i == list.size
Классы, объекты и методы. Так как Ruby полностью объектно-ориентированный язык, то в нём работает всё, что только есть в ООП:
- публичные и приватные методы,
- конструкторы,
- наследование (с помощью встроенных примесей),
- переопределение класса,
- и всё остальное, что вам только понадобится сделать с объектами или классами.
Для чего нужен Ruby
Так как Ruby — скриптовый язык, то его можно применять вообще в любых сферах разработки. Например, можно написать парсер страниц, который будет находить на сайте интернет-магазина все карточки товаров и скачивать их название, цену и фото. Или можно сделать генератор сложных паролей для всех посетителей сайта, чтобы им не приходилось придумывать его самостоятельно.
Также на Ruby пишут мобильные игры и приложения под Android и iOS, используя Ruboto или RubyMotion.
Но лучше всего Ruby работает в паре со своим знаменитым фреймворком Ruby on Rails для создания веб-приложений. Он позволяет быстро создать сайт со сложной структурой, динамическими страницами и при этом обойтись без изучения SQL-запросов и работы с базами данных.
Ещё эту платформу любят в стартапах, потому что на ней можно в короткие сроки развернуть прототип проекта и сразу увидеть его сильные и слабые стороны.
Что сделано на Ruby
Ruby используют компании разного уровня, в том числе NASA, Motorola, Google или GitHub. Вот часть проектов, которые написаны на Ruby или Ruby on Rails:
- Twitter,
- Kickstarter,
- SoundCloud,
- Redmine (система багтрекинга),
- Inkscape (работа с векторной графикой),
- GitLab (управление репозиториями кода),
- SketchUp (трёхмерное моделирование),
- Netflix (сериалы),
- Bloomberg (новостное агентство).
Если посмотреть на этот список, то становится понятно, что Ruby особенно хорош в веб-разработке и создании сайтов со сложной структурой.
С чего начать
Для старта вам даже не нужно ничего устанавливать на компьютер — используйте онлайн-интерпретатор onlinegdb или rextester.
Чтобы лучше разобраться в языке или его возможностях, почитайте руководство «Ruby за 20 минут» на официальном сайте Ruby. Единственный момент — это машинный перевод оригинальной статьи, как и всех остальных русскоязычных материалов на этом сайте. Поэтому если знаете английский — лучше сразу читайте на нём.
Если есть желание досконально разобраться в языке, рекомендуем книгу Хэла Фултона «Программирование на языке Ruby» (The Ruby Way).