Ruby — это высокоуровневый интерпретируемый язык программирования общего назначения с сильной динамической типизацией, в котором любое значение является объектом. Его создал японский разработчик Юкихиро Мацумото (Matz), первый публичный релиз состоялся в декабре 1995 года.
Содержание
Ниже разберем три черты, которыми Ruby отличается от многих языков (динамическая типизация, «все — объект», блоки), познакомимся с фреймворком Ruby on Rails, посмотрим области применения и сравним Ruby с Python. Материал рассчитан на новичка, который выбирает язык для старта.
Коротко об истории и названии
Мацумото начал работу над языком в 1993 году, а первую публичную версию выпустил в 1995-м. Он хотел язык более объектно-ориентированный, чем Python того времени, и более удобный для человека, чем Perl.
Название — отсылка к драгоценному камню (по аналогии с Perl — «жемчуг»). Уже в ранних версиях были классы, наследование, примеси (mixins), замыкания, сборщик мусора и обработка исключений — все это сохранилось и сегодня.
Три особенности, которые задают лицо Ruby
Чтобы не путать близкие свойства, разведем их сразу: динамическая типизация — тип определяется у значения во время выполнения; «все — объект» — у любого значения есть методы; блок — кусок кода, передаваемый методу. Дальше по каждому — короткий пример.
1. Динамическая типизация
Тип связан со значением, а не с переменной. Одну и ту же переменную можно переприсвоить значению другого типа, объявлять тип заранее не нужно.
x = 42
puts x.class # Integer
x = "теперь строка"
puts x.class # String
Вывод:
Integer
String
Типизация при этом сильная (strong): Ruby не складывает число и строку молча, а бросает ошибку. Это отличает его от языков со слабой типизацией, где типы приводятся неявно.
puts 1 + "2"
Вывод (фактический текст исключения, стабильный в актуальных версиях Ruby):
TypeError: String can't be coerced into Integer
Исправление — привести типы явно: 1 + "2".to_i даст 3, а "1" + "2" даст строку "12".
2. Все является объектом
В Ruby нет «примитивов», стоящих в стороне от объектной модели: число, строка, nil и даже класс — объекты, у которых есть методы.
puts 42.class # Integer
puts (-5).abs # 5
puts "otus".upcase # OTUS
puts nil.class # NilClass
puts 1.is_a?(Object) # true
Вывод:
Integer
5
OTUS
NilClass
true
Поэтому операции пишутся как вызовы методов у значения ((-5).abs), а не как отдельные функции. Это делает код единообразным.
3. Блоки
Блок — это фрагмент кода в фигурных скобках { } или между do ... end, который передается методу и вызывается им через yield. Блоки — основа идиоматичного перебора коллекций.
[1, 2, 3].each { |n| puts n * 2 }
Вывод:
2
4
6
Методы map и select возвращают новую коллекцию, не меняя исходную:
squares = (1..3).map { |n| n * n }
puts squares.inspect # [1, 4, 9]
evens = [1, 2, 3, 4].select { |n| n.even? }
puts evens.inspect # [2, 4]
Вывод:
[1, 4, 9]
[2, 4]
Свой метод тоже может принимать блок — через yield:
def repeat(times)
times.times { |i| yield(i) }
end
repeat(3) { |i| puts "шаг #{i}" }
Вывод:
шаг 0
шаг 1
шаг 2
Небольшой класс показывает объектную модель целиком — от определения до вызова метода:
class Dog
def initialize(name)
@name = name
end
def bark
"#{@name}: гав!"
end
end
rex = Dog.new("Рекс")
puts rex.bark # Рекс: гав!
Вывод:
Рекс: гав!
Про многопоточность честно
Ruby поддерживает потоки (Thread) из коробки, но у основной реализации (MRI/CRuby) есть глобальная блокировка виртуальной машины — GVL (Global VM Lock, прежнее название GIL). Из-за нее в один момент Ruby-код исполняет только один поток.
Практическая граница такая: потоки хорошо ускоряют задачи, ожидающие ввода-вывода (сеть, диск), но не дают параллелизма на нескольких ядрах для вычислительной нагрузки. Для настоящего параллелизма используют отдельные процессы, а с Ruby 3.0 — механизм Ractor (на 2026 год он все еще помечен как экспериментальный).
Ruby on Rails и области применения
Главная область Ruby — веб-разработка на серверной стороне, в основном благодаря фреймворку Ruby on Rails (создан Дэвидом Хайнемайером Ханссоном, первый релиз — 2004 год). Rails задает соглашения «по умолчанию» и позволяет быстро собрать backend, поэтому его часто выбирают стартапы и продукты, которым важна скорость вывода на рынок.
На Rails построены известные сервисы — например, GitLab, Shopify и Basecamp; исторически на Rails стартовал и GitHub. Помимо веба, на Ruby написаны инструменты:
- Metasploit Framework — платформа для тестирования на проникновение;
- Vagrant — управление виртуальными средами разработки;
- Homebrew — пакетный менеджер для macOS и Linux.
Где Ruby применяют реже: мобильная разработка, системное программирование и задачи, критичные к скорости счета, — там обычно берут компилируемые языки.
Ruby и Python: чем отличаются
Оба — высокоуровневые интерпретируемые языки с динамической сильной типизацией и сборкой мусора, оба подходят для старта в backend-разработке. Различия удобнее смотреть таблицей.
| Признак | Ruby | Python |
|---|---|---|
| Главная веб-ниша | Ruby on Rails | Django, FastAPI, Flask |
| Стиль | много «магии» и DSL, гибкий синтаксис | «один очевидный способ», явность |
| Блоки | ключевая идиома (each, map с блоком) |
есть лямбды и генераторы, блоков нет |
| Оформление кода | do ... end / { }, end закрывает блок |
значимые отступы |
| Область силы | веб, скрипты, DevOps-утилиты | веб, анализ данных, ML, автоматизация |
Вывод из таблицы: если цель — веб-backend в экосистеме Rails, логичен Ruby; если нужен более широкий охват (в том числе данные и ML) и много обучающих материалов, чаще стартуют с Python. Обе экосистемы близки по базовым концепциям, поэтому переход между ними дается сравнительно легко.
Актуальность на 2026 год
Ruby активно развивается: язык выпускает крупные обновления в декабре каждого года. В декабре 2025 года вышла версия Ruby 4.0 (она сменила ветку 3.4 и стала актуальной стабильной на 2026 год; версии 3.5 не было — нумерация перешла сразу к 4.0). В ней продолжают улучшать производительность интерпретатора, в том числе JIT-компиляцию — основным остается YJIT, добавлен новый экспериментальный ZJIT. Rails к 2026 году — линейка 8.x.
Спрос на Ruby стабилен, но заметно уже, чем на Python или JavaScript, и держится в основном на поддержке и развитии Rails-проектов. Для новичка это означает: Ruby — хороший выбор, если целитесь именно в Rails-команды, но вакансий на рынке меньше, чем у более массовых языков.
Выводы
- Ruby — высокоуровневый интерпретируемый язык с сильной динамической типизацией, где любое значение является объектом.
- Три черты определяют его стиль: динамическая типизация, объектная модель без исключений и блоки как основной способ работы с кодом и коллекциями.
- Многопоточность есть, но GVL в MRI ограничивает параллелизм на ядрах для вычислительных задач — его дают процессы и (экспериментально)
Ractor. - Основная область — серверная веб-разработка на Ruby on Rails; вне веба Ruby используют как язык скриптов и DevOps-утилит.
- Ruby и Python близки по концепциям, оба подходят для старта в backend; выбор зависит от целевой экосистемы.
Где применяется / связь с практикой
Ruby и Python — высокоуровневые языки с похожей моделью: динамическая типизация, объектный подход, читаемый синтаксис. Поэтому база, освоенная на одном из них (переменные и типы, коллекции, функции и методы, классы и объекты, работа с ошибками), переносится на второй почти без потерь и служит фундаментом для входа в backend-разработку.
Освойте тему на практике
Собрать эту базу с нуля и довести до первых рабочих программ помогает курс Python Basic: те же фундаментальные конструкции, что и в Ruby, разбираются на практических задачах. Посмотреть формат занятий и преподавателей заранее можно на открытых уроках Otus — это бесплатно и помогает понять, подходит ли вам такой старт.
Смежные темы: JavaScript: описание, особенности, области применения, PHP: описание, особенности, области применения, Django: описание, особенности и области применения.
FAQ
Ruby и Ruby on Rails — это одно и то же?
Нет. Ruby — язык программирования, а Ruby on Rails — веб-фреймворк, написанный на Ruby. Rails — самое популярное, но не единственное применение языка.
Сложно ли учить Ruby новичку без опыта?
Синтаксис Ruby читаемый, но много идиом и «магии» Rails проще осваивать, уже понимая базовые концепции программирования. Поэтому часто советуют сначала пройти общий вводный курс, а затем браться за Rails.
Ruby — мертвый язык или на нем еще есть работа?
Язык живой: обновления выходят ежегодно, крупные продукты на Rails развиваются. Вакансий меньше, чем у Python или JavaScript, и они сконцентрированы вокруг Rails-разработки.



