Что такое Ruby
Ruby — динамический и интерпретируемый язык программирования общего назначения. Он создан в Японии в 1995, но несколько лет он был почти неизвестен западному рынку, поскольку вся его документация велась только на японском. Сегодня этот язык программирования входит в мировую двадцатку самых популярных.
Сфера применения
Хотя это язык общего назначения, на практике он обычно используется в веб-разработке для создания серверной части приложений и сайтов. Он также используется в информационной безопасности, установке приложений и создании виртуальных сред.
Характеристики и особенности Ruby
Это объектно-ориентированный язык, который легко адаптируется под функциональное программирование. «Принцип наименьшего удивления» — одна из главных особенностей этого языка программирования. Работа программы становится сюрпризом для разработчика в настолько минимальном количестве случаев, насколько это возможно.
Что такое Ruby on Rails
Ruby on rails — веб-фреймворк, написанный на языке Ruby. Он позволяет удобно и быстро создавать веб-приложений благодаря MVC-архитектуре. Она делит приложение на модель, ее представление и контроллер — каждый из компонентов решает собственную задачу.
Фреймворк позволяет автоматически генерировать код, осуществлять миграции базы данных, RESTful маршрутизацию, валидацию данных и многое другое.
Самые известные женщины программисты
7 мар. 2024 г.
Как программистам правильно пользоваться нейросетями на примере ChatGPT
6 мар. 2024 г.
Язык стартапов родом из Японии: знакомимся с Ruby
Senior-разработчик на Ruby рассказывает, как устроен язык и что на нём пишут, сколько зарабатывают «рубисты» и почему Rails — революционный фреймворк.
Иллюстрация: Катя Павловская для Skillbox Media
Дмитрий Зверев
Любитель научной фантастики и технологического прогресса. Хорошо сочетает в себе заумного технаря и утончённого гуманитария. Пишет про IT и радуется этому.
Александр Зутиков
Шесть лет программирует на Ruby on Rails, до этого пару лет работал fullstack-разработчиком на PHP. Собеседует кандидатов и читает авторский курс по Ruby on Rails для стажёров компании, в которой работает. Пропагандирует Fedora Linux.
Ссылки
Ruby — это объектно-ориентированный язык общего назначения с динамической типизацией. Он появился в Японии в 1995 году и быстро завоевал там популярность. Однако из-за отсутствия документации на английском языке мир узнал о нём лишь пару лет спустя.
Создатель Ruby Юкихиро Мацумото (Matz) изначально создавал язык понятным для людей, а не для машин. Он считал, что разработчики должны получать удовольствие от работы и быть продуктивными, а не бороться с дизайном языка.
Особенности Ruby
В основном Ruby применяется в веб-разработке — нишу языка определил удачный фреймворк, Ruby on Rails. Но есть и другие направления: скрипты, деплоймент, безопасность и так далее.
Ruby лаконичный, и у него приятный синтаксис. Там, где на другом языке приходится писать много ненужного кода, в Ruby можно обойтись парой строчек. За лаконичность и приятный синтаксис на первых порах пришлось платить производительностью. Но сегодня по производительности программ Ruby не уступает таким динамическим языкам, как Python и JavaScript.
Синтаксис Ruby одновременно напоминает Python, Perl и немного Pascal — из-за открывающих и закрывающих блоков. Ruby также повлиял на некоторые языки программирования. Например, создатели Elixir и Crystal вдохновлялись его синтаксисом.
Сравним код программы Hello World! на Ruby и C++.
Тесты. Для тестов есть классный и богатый фичами фреймворк RSpec, который уже стал стандартом в сообществе. В самом Ruby есть встроенные MiniTest и TestUnit.
Ruby-стандарты. Сообщество создало общий стандарт для написания кода, который называется RuboCop. Ещё есть гайды на сайте rubystyle.guide. Всё это находится в открытом доступе — пользуйтесь и пишите идеальный код. А если стандарты сообщества вас не устраивают, то можно локально добавить свои.
Другие утилиты. Программисты любят Ruby, потому что у него очень богатая экосистема — разнообразные библиотеки, менеджеры зависимостей (Bundler), менеджер пакетов (RubyGems), встроенный менеджер тасков Rake, интерактивные среды программирования и дебаггеры (IRB). Если этого не хватает, можно добавить Pry-дебаггер.
Для продвинутых программистов есть утилиты, которые позволяют строить AST-деревья и смотреть, как Ruby-дебаггер работает на уровне C-кода. На RubyGems и Ruby Toolbox можно посмотреть « джемы ». А если не нашли ничего подходящего, то можете создать свой джем и выложить его на один из этих сайтов.
С помощью утилит Ruby Version Manager (RVM) и ASDF можно установить несколько версий языка и управлять зависимостями. А Sidekiq позволяет обрабатывать фоновые задачи — это одна из самых популярных и стабильных библиотек.
Что такое Ruby on Rails
Большой популярности Ruby добился благодаря фреймворку Ruby on Rails — в нём были фичи, которыми не обладали другие фреймворки.
Rails — это fullstack-фреймворк для разработки приложений любой сложности. Его создала компания 37signals (в прошлом Basecamp) в 2005 году и тем самым привнесла много нового в мир веб-разработки.
Например, в Rails появились обратимые миграции баз данных — это когда мы можем сделать миграцию, а потом откатить все изменения парой команд. Не менее революционной фичей было сжатие тела CSS-кода — Asset Pipeline.
Главная проблема большинства фреймворков тех времён была в том, что у них не было единой системы конфигурирования и настройки приложений. Rails привнёс понятие convention over configuration, появилась единая и понятная структура. Программисты стали использовать это соглашение и писать проекты на Ruby гораздо быстрее. Появлялось всё больше видеоуроков, возникали локальные сообщества, проводились конференции по Rails. Одним словом — Ruby взлетел.
Со временем Ruby сдал позиции как fullstack-фреймворк. Во фронтенде появились более крутые конкуренты — React, Vue.js и Angular. В итоге Rails стали использовать в основном только в бэкенде. Но недавно вышедшая версия Rails 7 кардинально изменила ситуацию: разработчики добавили поддержку ECMAScript 6 и HTTP/2.0. Теперь для запуска фронтенда не нужно устанавливать Node.js. Раньше это было немыслимо.
В седьмой версии Rails также появилась новая киллер-фича — Hotwire for Rails. Это когда отправка HTML проходит по сокету: открывается сокет-канал и по нему приходит HTML-файл. Фреймворку больше не нужно делать отдельные запросы на бэкенд — достаточно просто подписаться на сокет. А ещё недавно создатели Ruby on Rails выпустили фреймворк Stimulus, который позволяют программисту меньше работать с JavaScript-кодом.
В общем, Rails всё ещё остаётся самым широко используемым Ruby-фреймворком. Есть ещё Hanami и Sinatra, но они обладают рядом недостатков, которых нет у Rails.
Сколько платят разработчикам на Ruby
Сейчас рубисты очень востребованны. Статистику по зарплатам можно посмотреть на канале Jooby. Судя по данным с этого канала, в СНГ ситуация такая:
- джуниор — до 1000 долларов;
- джуниор+ — от 1000 до 2000 долларов;
- мидл — от 2000 до 4000 долларов;
- сеньоры — от 4000 до 7000 долларов;
- сеньоры, которые работают с заказчиками напрямую, — от 4500 до 9500 долларов.
Что почитать и посмотреть начинающим рубистам
Книги. Начинающим рекомендую прочитать три базовые книги. Из них вы узнаете, как работает язык, освоите его объектную модель и метапрограммирование:
- Programming Ruby 1.9 & 2.0;
- The Well-Grounded Rubyist;
- Metaprogramming Ruby 2.
Джуниорам и выше я тоже советую изучить метапрограммирование и объектно-ориентированный дизайн при работе с Ruby, чтобы понять, как делать инверсию зависимостей, соблюдать принцип единственной ответственности, или SOLID. Также изучите внутреннее устройство Ruby: как он парсит данные, как запускается и работает его виртуальная машина. Ответы на эти вопросы вы найдёте в следующих книгах:
- Practical Object-Oriented Design in Ruby;
- Ruby Under a Microscope.
Рассылки. Получать новости о Ruby можно в еженедельной рассылке Ruby Weekly, это позволяет оставаться «на волне». Также есть рассылка Random Ruby и This Week in Rails — последнюю ведут создатели Rails.
Telegram-каналы:
- pro.rb — чат Ruby-разработчиков;
- Saint P Ruby Community — сообщество Ruby-программистов из Питера;
- Ruby, Rails, Hanami — сообщество по Ruby, где люди делятся опытом;
- Ruby / Rails Inside — большая коллекция статей о Ruby;
- Evil Martians — новости и статьи по Ruby;
- Ruby & Elixir Job — канал с вакансиями.
YouTube-каналы:
- Ruby Russia club;
- Saint P Ruby Community;
- Evrone Development;
- Tenderlove’s Cool Stuff.
Новичкам советую в первую очередь разобраться с концепцией языка и объектной моделью — и только потом приступать к изучению фреймворков. Иначе будет казаться, что Rails — это магия. На самом же деле это всего лишь метапрограммирование и много чего ещё.
Тем, кто планирует сменить стек, скажу, что Ruby on Rails — это действительно крутой инструмент. Переходите на него, пробуйте и получайте кайф от разработки. А если этот фреймворк надоест — вы всегда можете перейти на другой. Воспринимайте языки программирования и фреймворки как инструменты, которые облегчают жизнь, и не зацикливайтесь на чём-то одном.
Хорошему программисту должно быть всё равно, на какой стек переходить. Сегодня мы пишем на одном языке, а через месяц — на другом. Будьте Software Engineer, который может разобраться во всём.
ЧИТАЙТЕ ТАКЖЕ:
- 9 софт-скиллов идеального джуна: взгляд тимлида
- На дне: 4 языка программирования на грани вымирания
- Как не сойти с ума, разбирая чужой код: 8 простых шагов
Это куски кода, которые расширяют возможности языка Ruby. Например, некоторые из них используются, чтобы автоматизировать задачи и ускорять работу программистов.
Перенесение базы данных в новое место — например, с локального компьютера в облако или на сервер.
Курс
Профессия PHP-разработчик с нуля до PRO
Вы с нуля научитесь программировать сайты и веб-приложения на PHP, освоите фреймворк Laravel, напишете облачное хранилище и поработаете над интернет-магазином в команде. Сможете устроиться на позицию Junior-разработчика.
Узнать про курс
Профессии с трудоустройством
- Графический дизайнер
- Python-программист
- Инженер по тестированию
- Бизнес-аналитик
- Интернет-маркетолог 2023
О Ruby
Удивляетесь, почему Ruby так популярен? Его поклонники называют его красивым, искусным языком. И в то же время они говорят, что он удобный и практичный. Что же перевешивает?
Идеалы создателя Ruby
Ruby – это тщательно сбалансированный язык. Его создатель Юкихиро Мацумото (также известный как “Matz”), объединил части его любимых языков (Perl, Smalltalk, Eiffel, Ada и Lisp) чтобы сформировать новый язык, в котором парадигма функционального программирования сбалансирована принципами императивного программирования.
Он часто повторял, что «пытается сделать Ruby естественным, но не простым» языком, который отражает жизнь.
Основываясь на этом, он добавляет:
Ruby прост на вид, но очень сложен внутри, подобно человеческому телу 1 .
Рост популярности Ruby
Со времени выпуска публичной версии в 1995 году, Ruby привлек внимание программистов со всего мира. В 2006 году Ruby завоевал массовое признание. В крупнейших городах по всему миру активно действуют группы пользователей Ruby, а конференции, посвященные Ruby, заполнены до предела.
Ruby-Talk, основная рассылка для обсуждения языка Ruby, содержала в среднем 200 сообщений ежедневно в 2006 году. В последние годы это количество уменьшилось, так как сообщество стало использовать несколько тематических рассылок вместо одной общей.
Индекс TIOBE, который измеряет рост популярности языков программирования, помещает Ruby в десятку общепризнанных языков программирования. Во многом, рост популярности языка приписывается популярности программного обеспечения, написанного на Ruby, в особенности – Ruby on Rails, фреймворку для разработки веб-приложений.
Ruby также абсолютно открыт. Открыт для бесплатного использования, изменений, копирования и распространения.
Всё в Ruby – объекты.
Вначале Matz рассматривал другие языки в поисках идеального синтаксиса. Вспоминая свои изыскания, он говорил: «Мне нужен был скриптовый язык, который был бы более мощным, чем Perl, и более объектно-ориентированным, чем Python 2 .»
В Ruby всё – объект. Для каждой частицы информации или кода могут быть определены собственные свойства и действия. В объектно-ориентированном программировании свойства называются переменными объекта, а действия – методами. Чистейший объектно-ориентированный подход Ruby может быть продемонстрирован парой строк кода, в которых производится действие над числом.
5.times print "Мы любим Ruby! Ruby – это замечательно!" >
Во многих языках числа и другие примитивные типы данных не являются объектами. Ruby под влиянием языка Smalltalk позволяет задать методы и переменные объекта всем типам данных. Это упрощает использование Ruby, так как правила применимые к объектам – применимы ко всему Ruby.
Гибкость Ruby
Ruby очень гибкий язык, так как он позволяет его пользователям свободно менять его части. Основные части Ruby могут быть удалены или переопределены по желанию. А существующие части можно изменять. Ruby старается ни в чём не ограничивать пользователя.
Например, сложение выполняется операцией плюс ( + ). Но, если вы хотите использовать для этого более читаемое слово plus – вы можете добавить такой метод прямо в Numeric , внутренний класс языка Ruby.
class Numeric def plus(x) self.+(x) end end y = 5.plus 6 # y теперь равно 11
Операторы в Ruby – синтаксический сахар для методов. Вы также можете переопределить их.
Блоки — по-настоящему выразительная конструкция
Блоки в Ruby также являются отличным источником гибкости. Программист может добавить замыкание к любому методу, описывая, как этот метод должен действовать. Замыкание — это блок, являющийся одной из наиболее популярных конструкций для пришедших в мир Ruby из мира императивных языков программирования, таких как PHP или Visual Basic.
Создание блоков было вдохновлено функциональными языками программирования. Мац (Matz) говорил, «замыканиями в Ruby я хотел отдать дань уважения культуре языка Lisp 3 .»
search_engines = %w[Google Yahoo MSN].map do |engine| "http://www." + engine.downcase + ".com" end
В коде выше блок описан внутри конструкции do . end . Метод map применяет блок кода к представленному списку слов. Многие другие методы в Ruby оставляют путь, открытый для программиста, чтобы тот написал собственный блок кода, детально говорящий методу, что тот должен сделать.
Ruby и примеси
В отличие от многих объектно-ориентированных языков, Ruby намеренно предоставляет лишь одиночное наследование. Но Ruby также предоставляет концепцию модулей (называемых «категориями» в Objective-C). Модули – это коллекции методов.
Классы могут свободно вмешивать модуль и получать все его методы. Например, любой класс, который реализует метод each , может подмешать модуль Enumerable , который добавит кучу методов использующих each для создания циклов.
class MyArray include Enumerable end
В основном, рубисты находят это более прозрачным, нежели множественное наследование, которое может быть довольно сложным и иметь какие-либо ограничения.
Визуальное представление Ruby
Так как в Ruby зачастую пунктуация встречается довольно редко и обычно в качестве ключевых слов используется английский язык, некоторые знаки препинания используются для украшения Ruby. Ruby не нуждается в объявлении переменных. В нем используются простые соглашения по именованию, для того чтобы разделить области видимости переменных.
- var — может быть локальной переменной.
- @var — переменная объекта.
- $var — глобальная переменная.
Данная символика повышает читабельность, позволяя программисту легко идентифицировать роль каждой переменной. Это также позволяет не использовать утомительное self. для каждого объекта.
Помимо основ
Ruby полон другими особенностями и конструкциями, и вот некоторые из них:
- В Ruby есть конструкции для обработки исключений, как в Java или Python, которые позволяют проще работать с ошибками.
- В Ruby представлен настоящий сборщик мусора типа mark-and-sweep (пометь и отчисти) для всех Ruby-объектов. Не нужно вручную отслеживать количество ссылок в сторонних библиотеках. Как говорит Matz, «Это полезней для вашего здоровья.»
- Писать расширения на C в Ruby проще, чем в Perl или Python при помощи очень элегантного API для вызова Ruby из C. Он включает в себя вызовы для встраивания Ruby в программное обеспечение, чтобы использовать его как скриптовый язык. Также доступен интерфейс SWIG.
- Ruby может подгружать сторонние библиотеки динамически, если позволяет операционная система.
- В Ruby реализованы независимые от операционной системы потоки. Таким образом, на любых платформах, где вы запускаете Ruby, вы также можете использовать многопоточность, не зависимо от того, поддерживает ли данная система потоки или нет. Вы можете использовать возможности многопоточности даже в MS-DOS!
- Ruby отличается высокой переносимостью: он был разработан большей частью на GNU/Linux, но работает на многих типах UNIX, macOS, Windows, DOS, BeOS, OS/2, и так далее.
Другие реализации Ruby
Ruby как язык имеет несколько разных реализаций. Данный сайт посвящен реализации MRI (“Matz’s Ruby Interpreter” – Ruby интерпретатор Матца) или CRuby, но также существует несколько других. Они бывают очень полезны в различных ситуациях, предоставляют большую интеграцию с другими языками или окружениями, или имеют возможности, которых нет в MRI.
- JRuby — это Ruby, реализованный на JVM (Java Virtual Machine), использует оптимизированный JIT-компилятор, сборщик мусора, нативные потоки, инструментальную экосистему и огромное количество библиотек JVM.
- Rubinius это — «Ruby написанный на Ruby». Реализован на основе LLVM – изящной виртуальной машине, на который созданы и другие известные языки.
- mruby — это легковесная реализация Ruby, которая может быть подключена и встроена в приложение. Возглавляет разработку mruby создатель языка Ruby, Юкихиро Мацумото (Yukihiro Matsumoto), известного под псевдонимом Мац (Matz).
- IronRuby — это реализация «тесно интегрированная с .NET Framework».
- MagLev — это «быстрая, стабильная реализация Ruby с интегрированным долговременным хранением объектов и распределенным открытым кешем”.
- Cardinal — это «компилятор Ruby для виртуальной машины Parrot» (Perl 6).
Ссылки
1 Matz, сообщение в списке рассылок Ruby-Talk, 12 мая 2000 года.
2 Matz, в Интервью с Создателем Ruby, 29 ноября 2001 года.
3 Matz, в Блоки и Замыкания в Ruby, 22 декабря 2003 года.
Ruby
Ruby — это язык программирования, который можно использовать для разных целей. Чаще всего он применяется в веб-разработке. Ruby высокоуровневый, близкий к человеку: код на нем интуитивно понятный, а писать программы удобно. Язык часто используют со фреймворком Ruby on Rails для веб-программирования.
Освойте профессию
«Fullstack-разработчик на Python»
Язык создал в 1995 году японский программист Юкихиро Мацумото (Matz), но распространяться в Европе он начал только в 2000-х: сначала вся документация Ruby была на японском языке и европейцы не могли его освоить. Сейчас этот язык находится на 18-м месте в мире по популярности согласно рейтингу TIOBE. Чаще всего Ruby используют как серверный язык, но создавался он как универсальный: на нем можно писать и другие виды программ.
Название читается как «руби», ударение ставится на первый слог. Фреймворк Ruby on Rails русскоязычные разработчики иногда называют «рельсами».
Где используется язык Ruby
Мацумото планировал создать язык общего назначения. Это значит, что в теории его можно использовать для разных целей. Но чаще всего на Ruby пишут серверную часть сайтов и веб-программ с помощью фреймворка Ruby on Rails. Им пользуются бэкендеры и фуллстек-разработчики. Это не единственная, хоть и популярная сфера применения. На Ruby также написаны некоторые программы: Metasploit для пентестинга, Vagrant для работы с виртуальной средой, Homebrew для установки приложений через командную строку в macOS. То есть встретить код, написанный на Ruby, можно фактически в любой сфере разработки.
Профессия / 12 месяцев
Fullstack-разработчик на Python
Создавайте веб-проекты самостоятельно
Особенности и свойства Ruby
Основной идеей разработчика Ruby было создание языка, который был бы удобен и комфортен, мог «приносить радость программистам». На язык повлиял Perl, который сам Мацумото считал слишком «игрушечным», Python и некоторые другие. Все это сказалось на синтаксисе и особенностях Ruby: язык получился лаконичным, предсказуемым и заточенным под объектно-ориентированное программирование.
Язык для людей. Ruby — язык, созданный так, чтобы с ним легко было управляться человеку. Он помогает снять с программиста рутинные задачи и поручить их компьютеру. Время и трудозатраты человека — важнейший приоритет; если их при выполнении задачи можно сократить, это стоит сделать. Такова основа философии Ruby.
Еще одна идея языка — возможность выполнять одну и ту же задачу несколькими способами в зависимости от того, что удобно разработчику. Понятность и изящество решения в философии Ruby превыше производительности, кроме случаев, где та критична.
Принцип наименьшего удивления. Это характерная черта Ruby: Мацумото было важно, чтобы язык был предсказуемым. Поэтому он вывел «принцип наименьшего удивления»: поведение программы должно вызывать минимум удивления у разработчика. Программа должна вести себя максимально ожидаемым способом и не выдавать сюрпризов. Такой подход, реализованный в Ruby, упрощает работу с языком, отладку и чтение кода.
Интерпретируемость. Ruby — не компилируемый, а интерпретируемый язык. Это значит, что его исполняет программа-интерпретатор — построчно, в режиме реального времени. Компилируемые же языки сначала переводятся в единый блок машинных кодов программой-компилятором, а потом их исполняет система.
Благодаря интерпретируемости Ruby — кроссплатформенный язык, который можно запустить под любой системой, он исполняется одинаково под каждой платформой. Поэтому же он довольно гибкий: в нем реализованы принципы, которые невозможны в компилируемых языках.
Объектно-ориентированный подход. Объектно-ориентированное программирование представляет все сущности, с которыми работает программист, как объекты. Объекты могут взаимодействовать с другими, но не вмешиваться в их внутреннее устройство. Действия с ними происходят внутри методов — специальных свойств-функций, которые прописываются для каждого объекта. Метод объекта можно вызвать и таким образом изменить его сущность.
У объектно-ориентированного программирования много плюсов, в частности четкость и понятность кода, упрощение отладки и ясная архитектура. Его используют в разных сферах разработки — сейчас ООП считается одним из ведущих концептов, хоть и не единственным.
Ruby — язык с сильным уклоном в объектно-ориентированное программирование. В языке много функций для работы с объектами: их создания, изменения, защиты и других действий с ними. Все возможности выстроены так, чтобы реализовывать ООП и работать с этим подходом было удобнее.
Поддержка блоков. Блок — одна из основных конструкций в Ruby и еще одна отличительная особенность языка. Так называется произвольный участок кода, который можно передать в какую-нибудь функцию или метод. Это может быть любой код, в том числе чужой. Он не меняет работу самого метода, но может выполниться внутри него. Для запуска кода из блока существуют особые команды, передающие ему управление. Например, команда yield, которая означает «передай сейчас контроль блоку и исполни его».
Блоками удобно пользоваться, когда нужно, чтобы объект был более гибким и вел себя по-разному в зависимости от обстоятельств.
Динамическая типизация. В Ruby типы определяются динамически. Это значит, что пользователь не задает тип переменной сразу при ее создании: тот определяется, когда переменной присваивается какое-то значение. Если это число, у переменной будет числовой тип, если слово или буква — строковый, и так далее.
Для Ruby действует принцип, который называют утиной типизацией. Это термин, который появился благодаря пословице: «Если что-то плавает, как утка, выглядит, как утка, и крякает, как утка, то скорее всего, это и есть утка». Утиная типизация означает, что сущность определяется по набору ее методов — то есть по тому, как она выглядит и ведет себя, какие у нее свойства.
Многопоточность. В Ruby «из коробки» есть поддержка многопоточности, не связанной с системой. Многопоточность означает, что какие-то процессы могут выполняться параллельно и тем самым повышать производительность программы. Обычно она реализована на низком уровне: «железо» делает несколько вычислений одновременно, а управляется этот процесс на уровне системы.
Ruby — язык более высокого уровня, далекий от «железа», поэтому его многопоточность реализована внутри интерпретатора. Реализация не трогает систему, поэтому многопоточная программа на Ruby кроссплатформенна и не связана с ОС.
Станьте Fullstack-разработчик на Python и найдите стабильную работу
на удаленке
Ruby on Rails: особенности и применение
Сейчас Ruby чаще всего применяется вместе с фреймворком Ruby on Rails. Он предназначен для разработки серверной части и служит своеобразным «шаблоном» для веб-приложения. В Ruby on Rails реализована архитектура MVC, которая разделяет приложение на модель данных, представление модели и контроллер. Эти части взаимодействуют друг с другом, и каждая выполняет свою задачу.
Ruby on Rails появился в 2005 году и сейчас стабильно развивается. В свое время он принес в веб-разработку концепты, которые позже появились в других фреймворках, например в Laravel, и в целом повлияли на сферу. Например, это первый веб-фреймворк, в котором появились бесшовная интеграция с БД и миграции.
Идеи «рельсов» продолжают классический Ruby: например, в нем внедрен принцип соглашения по конфигурации. Он означает, что дополнительная конфигурация необходима только там, где еще нет готовых соглашений по реализации чего-то, и поддерживает принцип наименьшего удивления.
Востребованность Ruby и его перспективы
В IT-кругах ходит шутка, что Ruby мертв. На самом деле язык вполне жив и довольно популярен, применяется в разработке крупных проектов и приложений. Волна интереса к нему как к новой технологии угасла, но он занял свою стабильную нишу и востребован в ее рамках.
По данным сервиса W3Techs, который занимается IT-статистикой, процент сайтов на Ruby стабильно растет. Если в 2011 году он составлял 0,5%, то в 2022 году — уже 5,7–6,0%. Рост стал активнее с 2018 года, до того количество сайтов на Ruby не превышало одного процента.
Все это говорит, что язык используется и развивается. Сервис hh.ru показывает пятьсот с лишним вакансий Ruby-разработчиков – и это только Россия и часть СНГ. Востребованность по миру еще выше.
Часто Ruby применяют в стартапах, быстрой разработке, где важно как можно скорее создать работающий прототип и выпустить его на рынок.
Преимущества Ruby
Ориентированность на человека. Разработчики на Ruby говорят, что язык достиг своей цели: он делает программиста счастливым. Его концепты и идеи — такие, чтобы разработчику было удобно, а код понятен для человека. Его легко читать и понимать, он объектно-ориентированный, но его можно адаптировать и под функциональное программирование.
Лаконичность и изящество. Язык спроектирован так, чтобы реализовать изящные, удобные для разработчика концепты, поэтому на нем приятно писать. Это часто отмечают люди, которые перешли на Ruby с других языков: им нравятся практики и концепции, принятые в нем. Решать одну и ту же задачу можно по-разному, и это делает язык гибким. Большой упор делается на изящество решения, в результате код получается чистым и красивым.
Многофункциональность. Ruby можно использовать во множестве сфер, хоть чаще всего его и применяют в веб-разработке. Этот язык также можно встретить в десктопных программах и в приложениях для macOS, а также в других направлениях. Так что в теории на Ruby можно писать почти все что угодно — хотя есть и ограничения, о которых мы расскажем ниже.
Стабильная ниша. Веб-разработка на Ruby востребована, количество вакансий стабильное, а разработчики на этом языке ценятся. Процент сайтов, написанных на Ruby on Rails, увеличивается, хоть и медленно, так что в ближайшее время язык точно останется актуален. Еще Ruby позволяет быстро создать и запустить продукт, поэтому его активно используют в стартапах и технологичных проектах, которые должны скорее выйти на рынок. А это инновации и шанс создать что-то принципиально новое, что «выстрелит» и принесет много пользы.
Востребованность. Может показаться, что вакансий на Ruby меньше, чем на других языках. Но вообще-то разработчиков на этом языке, наоборот, не хватает. Некоторые компании даже идут на такой шаг: нанимают специалистов, пишущих на других языках, и переучивают. Поэтому хороший «рубист» очень ценится, и это отражается на зарплате. Уровень зарплаты разработчиков на Ruby в среднем выше, чем для других популярных языков веб-разработки.
Еще одно следствие такой нехватки хороших специалистов — разработчику на Ruby легко найти работу, а конкуренция при трудоустройстве, скорее всего, будет ниже. Легче всего искать работу программистам, у которых уже есть опыт, но и новички могут устроиться на хорошую вакансию — некоторые компании предпочитают «растить» специалистов с нуля у себя в штате.
Активное сообщество. Сообщество «рубистов» — активное, открытое и дружелюбное. В нем хватает разработчиков с опытом, которые знают, как правильно, и могут подсказать другим. Много внимания уделяется качеству кода и хорошим практикам: в этой сфере принято сразу писать код грамотно, чтобы его было легко и приятно читать. Кроме того, представители сообщества охотно делятся знаниями, а опытные разработчики готовы помочь новичкам и сориентировать их.
Недостатки Ruby
Сложность освоения. Ruby — язык, который довольно сложно учить с нуля, если до того человек никогда не занимался программированием. Новичку желательно сначала освоить базовые концепции программирования и только потом переходить к изучению этого языка. Это можно сделать самостоятельно, с помощью учебников и статей, или на курсах. Действующие разработчики отмечают, что хороший ментор — ключевой фактор в том, насколько качественно начинающий сможет изучить Ruby.
Производительность. Первые версии Ruby критиковали из-за низкой производительности: язык работал в несколько раз медленнее аналогов. Со временем этот недостаток сгладился, но Ruby, как интерпретируемый язык, все равно работает чуть медленнее компилируемых. Поэтому в сферах, где критична скорость, его не используют.
Большие затраты ресурсов. Интерпретатор языка «тяжелый», а язык сложный и потому требует много ресурсов системы на обработку. Так что программы на Ruby не получится писать под маломощные устройства. Это причина, по которой язык практически не используется в мобильной разработке и других подобных сферах.
Отсутствие обратной совместимости. Еще со времен версии 1.8 в Ruby не поддерживается обратная совместимость. Это сделано намеренно, чтобы оставить языку возможность развиваться без оглядки на старые версии. Но отсюда следует, что разные версии Ruby не будут гарантированно совместимы друг с другом, даже если различия между ними очень малы. Это может принести проблемы при переводе проекта на более новую версию языка или при использовании каких-либо библиотек, написанных для другой версии.
Еще одна проблема с совместимостью — многие технологии, библиотеки и фреймворки, написанные для Ruby, поддерживают не все платформы. Поэтому программу на Ruby не всегда можно перенести на другую систему, даже несмотря на кроссплатформенность самого языка.
Неполная многопоточность. Хоть Ruby и многопоточен, в нем есть механизм глобальной блокировки интерпретатора. Это технология для синхронизации потоков, которая не дает одному процессу выполнять больше одного потока кода. Она внедрена для потокобезопасности, но частично ограничивает возможности многопоточности языка — правда, проявляется это преимущественно в нагруженных проектах, которые выполняются на серверах и мощных устройствах.
Fullstack-разработчик на Python
Fullstack-разработчики могут в одиночку сделать IT-проект от архитектуры до интерфейса. Их навыки востребованы у работодателей, особенно в стартапах. Научитесь программировать на Python и JavaScript и создавайте сервисы с нуля.