Язык программирования Ruby: особенности, перспективы, рынок труда
В этой статье поговорим о языке программирования Ruby: его особенностях, сфере применения, перспективах и ситуации на рынке труда. Поинтересуемся у опытных разработчиков, стоит ли изучать Ruby, сколько времени занимает обучение и как они относятся к фреймворку Ruby on Rails.
- О языке Ruby: история, особенности
- Принцип наименьшего удивления и другие особенности Ruby
- Сфера применения: благодаря Ruby on Rails нишей языка стала веб-разработка
- Валентин Завадский: работа на Ruby делает многих счастливыми
- Павел Калашников: главная мысль — Ruby не должен быть первым языком программирования
- Артём Партос: Ruby — прекрасный язык с лаконичным и выразительным синтаксисом, развитой инфраструктурой и большим и отзывчивым сообществом
- Дмитрий Матвеев: фраза «Ruby мёртв» — это такой прикол, язык не умирает, а развивается
- Александр Вагин: программисты на Ruby получают больше специалистов по другим языкам
- Игорь Александров: самое прекрасное в Ruby – это конечно же community языка
О языке Ruby: история, особенности
Ruby — язык программирования, который был представлен в 1995 году разработчиком Юкихиро Мацумото, также известным под ником Matz. Вот характеристики Ruby:
- высокоуровневый — удобный для разработчиков, с сильной абстракцией и использованием конструкций натурального или человеческого языка;
- динамичный — типы данных определяются на этапе выполнения программы, это увеличивает скорость разработки;
- интерпретируемый — код на Ruby обрабатывается интерпретатором в момент выполнения без предварительной компиляции, это обеспечивает независимость от платформ и уменьшает размер исполняемых программ;
- язык программирования общего назначения — в отличие от предметно-ориентированных, языки программирования общего назначения не создаются для применения в специфичных областях.
Иногда в письменной речи используется транскрипция названия. Например, можно встретить такой вариант написания: «язык программирования „Руби“». Это не ошибка, но мы предпочитаем не транскрибировать названия языков, технологий и компаний.
Юкихиро Матцумото начал работать над Ruby в начале 90-х годов. Matz знал Perl и Python, но решил создать новый объектно-ориентированный язык программирования. Perl не нравился Матцумото, так как по его мнению он был игрушечным и даже эзотерическим языком. А Python, по словам Матцумото, был недостаточно объектно-ориентированным. Matz — фанат объектно-ориентированного подхода, поэтому он начал работу над по-настоящему объектно-ориентированным и простым языком.
Matz представил язык в 1995 году. Ruby стал популярен среди японских разработчиков, в том числе благодаря рассылке ruby-list на японском языке. Уже в первых версиях в Ruby присутствовали отличительные черты, которые сохранились в языке до сегодняшнего дня. Это объектно-ориентированный дизайн, использование классов и наследования, миксинов, итераторов, замыканий, сборщик мусора, обработка исключений.
В конце 90-х появилась документация Ruby на английском языке и англоязычный форум ruby-talk. Благодаря этому язык стал популярным за пределами Японии.
Matz говорит, что создал Ruby, чтобы сделать разработчиков счастливыми. Чтобы понять, о чём идёт речь, нужно познакомиться с особенностями этого языка.
Принцип наименьшего удивления и другие особенности Ruby
По словам Юкихиро Матцумото, он хотел сделать язык программирования, с которым ему самому было бы приятно работать. Также Matz хотел, чтобы язык помогал программистам быть продуктивными и позволял делать больше с меньшими усилиями. Наконец, язык должен был минимизировать неожиданности. Это трансформировалось в принцип наименьшего удивления, согласно которому программа должна вести себя так, как ожидает программист.
Как отмечалось выше, Ruby относится к объектно-ориентированным языкам программирования. Фразой «всё есть объект» можно передать то, как в этом языке рассматриваются сущности, включая примитивные. Все вычисления выполняются с помощью методов, которые вызываются на объектах. Например, чтобы вычислить значение 5 + 4 , вызывается метод + на экземпляре 5 класса Integer с аргументом объекта 4 .
Важная особенность Ruby — поддержка блоков (block). Эта конструкция принимает параметр и возвращает значение. Блоки можно передавать в качестве необязательных аргументов в методы. Блок вызывается с помощью выражения yield(e) , которое передает в блок значение e .
Синтаксис Ruby похож на Perl. Блоки можно определять с помощью скобок или ключевых слов. Классы и методы определяются с помощью ключевых слов. Разницы между инструкциями и выражениями нет. Для обозначения конца инструкции используется точка с запятой или перенос строки. В отличие от Python, отступы в Ruby не учитываются.
Сфера применения: благодаря Ruby on Rails нишей языка стала веб-разработка
Как отмечалось выше, Ruby — язык программирования общего назначения. То есть он может использоваться и используется для решения разных задач в разных отраслях. Тем не менее у Ruby есть ниша, в которой он используется чаще всего. Это веб-разработка.
Ruby стал популярным языком для создания веб-приложений благодаря Ruby on Rails. Этот фреймворк был представлен в 2005 году. Он повлиял на веб-разработку в целом и другие фреймворки в частности, о чём ниже рассказывают эксперты.
В «рельсах» реализованы инновационные возможности, включая бесшовную интеграцию с базой данных, миграции, создание представлений для ускорения разработки. Эти возможности позднее были внедрены в других фреймворках, включая Django, Laravel и Phoenix.
В Ruby on Rails применяется архитектура MVC, а также известные инженерные паттерны, включая DRY, ActiveRecord, convention over configuration (соглашение по конфигурации). Принцип соглашение по конфигурации продолжает принцип наименьшего удивления, который использовал Юкихиро Матцумото при разработке языка Ruby. Convention over configuration значит, что конфигурация необходима только там, где какой-либо аспект выходит за рамки спецификации.
Ruby применяется не только в веб-разработке. На Ruby написаны утилита командной строки Homebrew, ПО для обеспечения информационной безопасности Metasploit, ПО для создания виртуальной среды разработки Vagrant и другие известные приложения.
Промежуточный итог: Ruby — язык программирования общего назначения, но чаще всего применяется в веб-разработке. Он создан, «чтобы сделать программистов счастливыми», поэтому у Ruby лаконичный синтаксис. Фреймворк Ruby on Rails повлиял на другие веб-фреймворки, он остаётся популярным и удобным инструментом для создания веб-приложений.
Популярность и рейтинг Ruby
По состоянию на май 2020 года Ruby занимает пятнадцатое место в индексе TIOBE . Этот индекс рассчитывается на основе поисковых запросов, связанных с программированием. Кроме того, Ruby в сентябре 2021 года используют в качестве серверного языка программирования около 5,2% сайтов, тогда как еще в 2010 году этот показатель составлял 0,5%, а в 2018 году — 1,6% сайтов.
По данным сервиса GitHut, который отслеживает популярность языков программирования на основе активности пользователей GitHub, Ruby входит в топ-10 языков по количеству пулреквестов. Эти данные актуальны на первый квартал 2020 года.
По данным сервиса Hotframeworks , Ruby on Rails входит в число самых популярных веб-фреймворков. В этом рейтинге участвуют как бэкенд-, так и фронтенд-фреймворки.
По информации Stackoverflow Developers Survey , в 2019 году 8 % пользователей Stackoverflow работали с «рельсами».
Промежуточный итог: по разным данным, Ruby входит в десятку или двадцатку самых популярных языков программирования. Ruby on Rails — один из самых популярных веб-фреймворков.
Ситуация на рынке труда: зарплаты и вакансии для Ruby-программистов
В мае 2020 года по запросу Ruby на hh.ru есть 580 вакансий. Из-за особенностей работы сайта в результаты поиска попадают вакансии, в которых упоминается язык Ruby. Например, если в вакансии для программиста на Rust написано «приветствуется опыт работы с Ruby», такая вакансия попадает в выдачу. То есть реальное количество вакансий для программистов Ruby чуть меньше, чем отображает сайт.
Бросается в глаза следующее: в подавляющем большинстве объявлений работодатели ищут разработчиков на проекты с использованием Ruby on Rails. Это ещё раз подтверждает популярность и востребованность фреймворка.
Вилка зарплат на сайте hh.ru — от 25 000 рублей до 2000 долларов США. По данным агентства NewHR , в 2019 году программистам на Ruby уровня middle в Москве платили от 150 000 до 180 000 рублей в месяц. По информации Хабр Карьера , медианная зарплата Ruby-программистов во втором полугодии 2019 года составляла 130 000 рублей.
Промежуточный итог: программисты на Ruby востребованы на рынке, но вакансий для рубистов меньше, чем для JavaScript-разработчиков. Медианная зарплата программистов на Ruby выше, чем у программистов на Java, JavaScript, Python, PHP.
Стоит ли изучать Ruby, жив ли этот язык и сколько придётся учиться с нуля до уровня джуниора: комментарии экспертов
Узнали о перспективах Ruby и состоянии этого языка из первых рук: попросили опытных разработчиков ответить на несколько вопросов:
- Фраза «Ruby мёртв» давно стала мемом. А как вы можете оценить состояние языка — как он себя чувствует и какие у него перспективы?
- Как вы думаете, стоит ли изучать Ruby в 2020 году? Вопрос связан с ситуацией на рынке труда: есть ли работа для рубистов, насколько они востребованы по сравнению со специалистами, которые используют другие языки?
- Подходит ли Ruby новичкам, или этот язык больше подойдет разработчикам с опытом?
- Что вы можете сказать о Ruby on Rails — чем «рельсы» хороши или плохи, какие перспективы у этого инструмента, как он выглядит на фоне аналогичных решений, написанных на других языках?
- Сколько времени потребуется, чтобы выучить Ruby с нуля до уровня джуниор-разработчика?
Ответы экспертов ниже.
Бесплатные курсы по программированию в Хекслете
- Освойте азы современных языков программирования
- Изучите работу с Git и командной строкой
- Выберите себе профессию или улучшите навыки
Валентин Завадский: работа на Ruby делает многих счастливыми
Жив ли Ruby
Про то, как он себя чувствует — это очень сложный и абстрактный вопрос. Из моих наблюдений, чаще всего технологии умирают тогда, когда они перестают развиваться, и в них прекращают экспериментировать. При выборе технологии для меня это одно из ключевых качеств при принятии решения. Нет ничего более грустного, чем момент, когда ты нашел классную библиотеку, которая решает ровно твою проблему, ты заходишь в репозиторий — а последний раз ее обновляли 3 года назад, и там открыто 200 тикетов.
В этом плане Ruby жив и будет жить еще очень долго. Тут к месту вспомнить шутку создателя языка Матца на одной из последних конференций, где он сказал «Вы же понимаете, что мы не можем позволить Ruby умереть? Вы-то ладно, вы другие языке выучите. А я-то вообще без работы останусь». В действительности, конечно, без работы он не останется еще долго. Сейчас большое количество довольно крупных и успешных компаний, например, GitHub, Airbnb, Heroku, инвестируют много времени и средств в сам язык постоянно.
Касательно перспектив самого языка с точки зрения изменений, то в последнее время много разговоров ходит вокруг нескольких топиков. А именно это работа над GC (сборщиком мусора), опциональной типизацией для увеличения производительности и улучшения модели параллелизаций (условные async/await и прочее).
К слову сказать блог, на котором вы читаете данную статью, тоже написан на Ruby 😉
О целесообразности изучения
Я призываю читателей отвечать себе на такие вопросы самостоятельно, используя критическое мышление. Для этого берёте сайты с вакансиями, вбиваете ключевые слова, и смотрите вакансии на разных рынках в их количестве, вилки зарплат и перспективы. Лично ваш покорный слуга последнюю неделю спит по 6 часов просто потому, что работы так много, что времени в сутках не хватает.
В данном вопросе стоит подчеркнуть наверное самый важный аспект в вопросе «стоит ли изучать Ruby». Не знаю, как так получается, но каким-то магическим образом работа на этом языке делает многих… счастливыми. Это часто трудно объяснить, но я все-таки связываю это в первую очередь с красотой, лаконичностью и возможностями самого языка.
Подходит ли Ruby новичкам
Разработчики с опытом точно освоят Ruby без проблем. Как и любой язык программирования. Но я обещаю, что они определенно кайфанут от многих концепций и структур, которые присутствуют в самом языке.
Для новичков в программировании все зависит от того, как вы собираетесь этой технологии обучаться, и кто вас будет менторить. К счастью, сообщество у нас очень дружелюбное к новичкам, есть огромное количество образовательных курсов и материалов.
О Ruby on Rails
С точки зрения бизнеса, «рельсы» — это прекрасная технология для старта вашего приложения, она идеально подходит малому и среднему бизнесу. Именно в этот момент степень неопределенности очень высокая, вам нужно очень быстро и динамично двигаться, постоянно экспериментируя. И именно в данной ситуации вам не хочется бороться с какими-то тонкостями языка и технологий. Или обнаружить, что вы неправильно организовали микросервисы, и через 3-6 месяцев вообще никто в команде не понимает, как это все работает. А новые разработчики смотрят на ваш код и увольняются через неделю.
С точки зрения технологий, за что я люблю «рельсы» (и в некотором роде недолюбливаю современный фронтенд) — это то, что даже в 2020 году ты можешь открыть проект на «рельсах», написанный 10 лет назад, и все еще полностью понять, что там происходит, и продолжить его развивать.
При этом из личных наблюдений и опыта общения в подкасте с программистами на других схожих технологиях (nodejs/python/php) — в нашем сообществе очень много времени и подходов уделяется именно качеству кода. И тут скорее идея не в том, что все сидят такие крутые и пишут классный и идеальный код. Потом распечатывают его, вешают на стенку и сидят вечерами с бокалом вина, любуясь часами всей семьей. Нет, я скорее о том, что сообщество уже достаточно опытное, оно знает, как надо писать проекты правильно, чтобы потом через 3-5 лет просто не было больно каждый день.
Сколько придётся учиться
Всё очень сильно зависит от начальных условий и от того, как сильно у вас горят глаза. Лично для меня в свое время от момента, когда я впервые услышал слово «Ruby», до момента, когда получил первую работу на этом языке, прошло около двух месяцев. Но стоит понимать, что это была ежедневная работа по 10 часов, практически без выходных, в окружении менторов и команды. Если «почитывать книжку» раз в две недели по субботам, процесс может занять и годы.
Об эксперте
Валентин Завадский , СЕО Rubyroid Labs , соведущий подкаста proconf и лидер Ruby-сообщества Minsk.rb
Павел Калашников: главная мысль — Ruby не должен быть первым языком программирования
Жив ли Ruby
Тот, кто говорит, что Ruby мёртв, мало работает с американскими компаниями. В тех местах Ruby до сих пор очень популярен. На российском рынке — да, стал менее популярен. Но даже здесь в России в период популярности 8-10 лет назад на нём были написаны успешные продукты и системы, которые надо поддерживать и развивать. В основном это про Ruby on Rails, конечно. Переписывать их на что-то другое навряд ли будут, ибо переписывание проектов с Ruby on Rails на Laravel или Django — это бессмысленная история.
А заниматься переписыванием их на более хайповый Go — это очень сложная задача, потому что в Go нет фреймворка, который обладает таким же набором функциональности и инфраструктурой Rails. Гоферы на это, конечно, всегда отвечают и фыркают, что можно переписать, попутно называя 20+ библиотек, которые надо с помощью какой-то матери склеить вместе, и всё это, чтобы воссоздать в приложении функции и возможности, которые в «рельсах» лет 10 уже из коробки есть. Такая себе история 🙂 Так что Ruby в России благодаря рельсам останется языком, на котором нужно будет делать и развивать веб-приложения. И не надо забывать, что это всё ещё очень сильный скриптовый язык программирования. Честно, до сих пор жду, когда кто-нибудь в России проведёт конференцию RubyMertv.
О целесообразности изучения
Зависит от задач, которые перед собой ставит сам специалист. Если он собирается оставаться на российском рынке, то Ruby не очень востребован. Лучше учить Python, PHP, JavaScript или Go. Какой-то статистики у меня нет, но я наблюдаю за рынком аутсорса, и там видна тенденция не в пользу Ruby. Конкретно, во всяких аутсорс-чатах и группах на 10 заявок на Python, будет одна заявка на Ruby. Но если он собирается перебираться или работать удалённо с компаниями и людьми в тех местах и отраслях, где Ruby популярен, надо однозначно выбирать его. Отрасль, где популярен Ruby — это стартапы. Учитывая, что на Ruby можно очень быстро делать MVP (minimum viable product) и прототипы, в этой среде он очень полезен.
Подходит ли Ruby новичкам
Самая главная мысль — Ruby не должен быть первым языком программирования. Чтобы оценить все радости, которые предоставляет язык и его инфраструктура, нужно «пострадать» с чем-то другим, сильнее типизированным и менее динамичным. А вот если потом в процессе работы с такими языками вы почувствуете тягу к рефлексии и метапрограммированию, то Ruby — это прекрасный вариант заниматься этими делами в полный рост. Для джунов Ruby должен подойти либо студентам ИТ-специальностей старших курсов, которые уже несколько лет тусят с C++ или чем-то другим, а также подойдёт специалисту, который успел год поработать в ИТ-компании с другим языком программирования.
О Ruby on Rails
Один специалист из одной ульяновской компании после нескольких лет работы с Django сказал мне такую фразу. «Django, конечно, хорош! Но видно, что рельсы — это для людей». И действительно, «рельсы» позволяют сосредоточиться на бизнес-логике продукта и не заниматься техническим стаффом из начала 2000-х. Это делает его потрясающим инструментом для стартапов, как я сказал выше.
На Ruby можно быстро создавать проекты. Но за всё надо платить, и плата за скорость разработки — производительность. Чтобы сделать производительное приложение на «рельсах», нужно либо внутри «рельс» не использовать фичи «рельс», либо использовать дополнительные инструменты вроде «кэш-баз данных», Redis, например. Я знаю, что это не кэш-база данных, и вообще таких баз не существует, но давайте честно, рельсовики её часто используют именно так. Или других дополнительных «шин» для обработки данных.
Как рельсы выглядят на фоне других веб-фреймворков подобных? Ну вот 10 лет назад я бы сказал, что никто рядом по количеству фич и простоте использования не валялся, но сейчас большинство фреймворков (те же Laravel, Django и прочие) уже догнали рельсы. И, кстати, многое от них взяли в себя. В перспективе рельсы станут продуктом, на котором можно очень быстро запилить API для Single Page Application приложений, плюс можно быстро админку сделать для управления данными.
Сколько придётся учиться
Зависит от бэкграунда и от самого человека. Я сам был студентом старших курсов, когда с Ruby познакомился. Благодарности и лучи добра господину Мокевнину. Мне где-то 5-6 месяцев постоянного использования Ruby и Rails для своих пет-прожектов понадобилось, чтобы на первую работу устроиться. Но это не показательная история, у каждого свой путь.
Об эксперте
Павел Калашников , координатор скилл-шеринг сообщества IT Way , RoR-разработчик, директор компании Purple Magic
Артём Партос: Ruby — прекрасный язык с лаконичным и выразительным синтаксисом, развитой инфраструктурой и большим и отзывчивым сообществом
Жив ли Ruby
Можно довольно много говорить о развитии языка с технической точки зрения — о появлении JIT, о заявленном Ruby 3 speed x3, возможном появлении статической типизации. Но самое главное то, что Ruby уже довольно давно прекрасный язык — с лаконичным и выразительным синтаксисом, развитой инфраструктурой и большим и отзывчивым сообществом.
И самое главное, в какой-то мере, Ruby — это нишевый язык. Его сегмент — это быстрая разработка, рынок, на котором важно минимальное время от идеи до прототипа. И на своем рынке он является одним из лидеров. Да, в этом же сегменте и схожие скриптовые языки PHP/Python/Node.js, но в каждом из них есть свои плюсы и минусы.
О целесообразности изучения
Однозначно да. Например мы (Dualboot partners) уже третий год набираем рубистов десятками, в том числе благодаря Хекслету. Основные наши клиенты — мелкие и средние бизнесы за рубежом. Для них быстрое прототипирование — конкурентное преимущество на рынке. Более того, предлагаемые зарплаты — одни из самых высоких при сравнении с аналогичными языками.
Подходит ли Ruby новичкам
В целом тут ответ неоднозначен. Если цель — стать хорошим инженером, понимать основы, структуры данных — то, наверное, Ruby — не лучший язык для старта. Здесь очень много вещей построено на концепции Convention over configuration — для начинающих разработчиков это будет казаться какой-то магией. Если цель — писать на удобном современном языке, при этом получая хорошую зарплату, то Ruby — отличный язык. В целом есть довольно большая выборка людей, для кого Ruby был первым языком, и кто неплохо себя показывает с точки зрения роста квалификации и навыков, но тут все зависит от самого человека.
О Ruby on Rails
Тут придется остановиться достаточно подробно. В целом я сторонник рассматривать языки как инструменты. И можно выделить разные виды задач в коммерческом программировании.
Самый большой рынок здесь — задачи из области запрос-ответ, по сути — какие-либо сайты, crm/erp системы, API — это процентов 95 рынка.Здесь лидируют Ruby/PHP/Python/Node.js.
Далее идут задачи из мира высоконагруженного/конкурентного программирования, highload, здесь же консольные утилиты/клиенты, задачи из области хранимого состояния в памяти — меньшая доля рынка, очень большая разница подходов. Лидеры: Console utility: golang/С/C++; Enterprise: java-based/.net; Concurrent programming: golang/elixir/erlang/java; Shared state problem: erlang/elixir.
Есть еще много областей, например, мобильная разработка, разработка игр, фронтенд, AR/VR, но здесь мы их рассматривать не будем. В интересующем нас сегменте находятся Ruby/Python/PHP/Node.js.
Node.js мы отбросим из сравнения по нескольким причинам:
- backend на Nodejs сильно отличается из-за большой разницы между классической реализацией на потоках/процессах и event loop подходе с асинхронным неблокирующим IO;
- мне попадается достаточно малое количество проектов, хорошо написанных на Nodejs, поскольку в основном разработчики — это люди, пришедшие из мира frontend, не до конца понимающие концепции backend;
- псевдоудобство — как здорово, один язык программирования — а писать можно и front, и back. Довольно быстро разбивается из-за низкой квалификации и отсутствия фреймворка-лидера;
- JavaScript является самым распространенным языком программирования, вы можете видеть большое количество вакансий на Node.js, но тем не менее крайне не рекомендую писать на нем backend.
Сравним Ruby/Python/PHP — все задачи в описанном сегменте могут быть реализованы на данных языках примерно с равной долей успеха, НО:
- большинство питонистов поглотил мир data science/machine learning, у них появилась довольно большая сегментация фреймворков Django/набирающий обороты Flask/CherryPy/Grok и так далее;
- от PHP многие уходят по разным причинам — от неквалифицированной разработки (тут во многом виноваты разработчики развивающихся стран) до очень большой сегментации фреймфорков (один и тот же программист может быть неплохим в Laravel и совсем не понимать Symphony); лучшее на мой взгляд что есть в PHP — Laravel — позаимствовало большинство концепций из Ruby on Rails;
- учитывая вышесказанное, Ruby и почти единственный веб-фреймфорк Ruby on Rails, обладая отличным комьюнити и готовым набором инструментов, становится отличным выбором.
Сколько придётся учиться
Это скорее вопрос мотивации нежели вопрос на который можно достоверно ответить. То, чем мы занимаемся, не является каким-то rocket science. Среднее время обучения на нашей платформе Learn Dualboot , после которого мы предлагаем коммерческие проекты на позиции Junior, составляет 3-4 месяца. Самая высокая скорость, с которой человек, которого я знаю, изучил все основные концепции языка и фреймворка — три недели. Но тут скорее важны другие факторы: базовые знания, понимание, как в целом решаются разного рода задачи, soft skills, навыки коммуникации, умение разбираться и задавать вопросы. Пользуясь случаем, хочу поблагодарить команду Hexlet за то, что они делают, и пожелать успехов всем начинающим разработчикам.
Об эксперте
Артём Партос , Cofounder & technical lead at Dualboot partners .
Дмитрий Матвеев: фраза «Ruby мёртв» — это такой прикол, язык не умирает, а развивается
Жив ли Ruby
Да, фраза «Ruby мёртв» — это такой прикол. Matz говорил об этом на последней конференции RubyRussia. Язык живой. Он заматерел, перестал быть хайповым. На хайпе сейчас другие языки.
На Ruby уже написано много продуктов, которые надо поддерживать и развивать. Поэтому и сам язык не умирает, а развивается. Например, в него хотят опционально включить статическую типизацию. Ruby on Rails тоже развивается. Все живы, всё в порядке.
О целесообразности изучения
В последнее время на рынке много разнообразия: требуются программисты на Go, Java, .NET, Python, PHP тоже жив, как и другие языки. Но для Ruby всегда найдётся место. Программистов на Ruby ищут как российские компании, так и иностранные. Сейчас с Ruby работает меньше стартапов и больше зрелых бизнесов. Несколько лет назад была противоположная ситуация.
Подходит ли Ruby новичкам
Лично я был новичком, когда начинал изучать Ruby. Это язык хорош тем, что в нём используются правильные принципы, например, DRY, SOLID и так далее. Несмотря на то, что язык объектно-ориентированный, на нём можно писать в функциональном стиле.
Ruby — красивый, элегантный, лаконичный язык. На нём можно писать понятный для человека и читабельный код, который мало отличается от английского языка.
Ruby не был для меня первым языком программирования. После PHP этот язык показался приятным. В то же время могу и поспорить с теми, кто говорит, что Ruby не стоит изучать первым. Здесь надо смотреть на аргументы и обсуждать их.
О Ruby on Rails
«Рельсы» выглядят прекрасно на фоне других инструментов. Концепции, которые реализованы в Ruby on Rails, используются в фреймворках на других языках. Например, миграции, тестирование, MVC и так далее.
Для быстрого создания веб-приложений нет ничего лучше «рельс». Недавно в Facebook увидел новость — в Великобритании сделали какое-то приложение или сайт о коронавирусе. Выбрали Ruby on Rails, так как надо было запустить его быстро.
Сколько нужно учиться
Сначала надо изучать математику, логику, структуры баз данных, алгоритмы. Если есть база, любой язык программирования можно изучить достаточно быстро. Кроме того, если есть база, вы с первой недели обучения сможете что-то писать, делать какой-то сайт. Хорошо, если вы изучаете программирование на какой-то задаче, а не учите тот или иной язык на абстрактных примерах, не связанных с практикой.
Об эксперте
Дмитрий Матвеев , тимлид компании Evrone .
Читайте полезное интервью Дмитрия Матвеева В интервью для блога Хекслета Дмитрий рассказал о работе тимлида, его ожиданиях от начинающих программистов и об организации работы в команде.
Александр Вагин: программисты на Ruby получают больше специалистов по другим языкам
Жив ли Ruby
Язык Ruby и фреймворк Ruby on Rails сейчас уже не так быстро развиваются, как несколько лет назад. Хайп спал, бурного роста нет. Много правильных вещей уже сделано, и эти вещи перенимают разработчики других фреймворков на других языках. В целом язык жив и будет жить. Другим языкам далеко до Ruby и «рельс» по некоторым параметрам. Где-то Ruby лучше, где-то хуже.
О целесообразности изучения
Я никогда не искал работу, где требуется знание другого языка, поэтому сравнивать сложно. Мои знакомые рубисты все работают, пишут на Ruby. Вакансий для рубистов много и в России, и за границей. Есть работа с релокацией и удалённая работа.
На Ruby создано много продуктов, владельцы не собираются переписывать их на другом языке. Поэтому работу найти легко. Важный момент — программисты на Ruby получают больше специалистов по другим языкам. Найти рубиста трудно, поэтому бизнесы переманивают программистов со знанием других языков и переучивают их.
Поэтому да, Ruby стоит изучать.
Подходит ли Ruby новичкам
Ruby — такой же язык, как остальные. Важно изучать базу. Считаю, что можно изучать программирование на любом языке, если есть база.
Хотя в Ruby и в «рельсах» есть свои особенности, здесь используются свои подходы. Важную роль играет ментальное программирование, принятые концепции ставятся во главу угла.
О Ruby on Rails
Я сравнивал Ruby on Rails с другими фреймворками, например, Laravel или Phoenix. Эти фреймворки взяли многое из «рельс», но пока они не готовы заменить «рельсы». Да, они в чём-то сильнее. Например, преимущество Laravel в том, что разработчика на PHP найти проще, чем разработчика на Ruby.
Но в целом считаю Ruby on Rails идеальным фреймворком. Он развивается, внутри уже много сделано. И я бы не хотел поменять «рельсы» на какой-то другой фреймворк.
Сколько придётся учиться
Знание синтаксиса не делает человека джуниор-разработчиком. Нужны базовые знания, с ними можно изучить любой язык программирования быстро.
Лично я был разработчиком на PHP уровня «джуниор», когда познакомился с Ruby. Переучился за две недели и стал джуниор-разработчиком на Ruby.
Об эксперте
Александр Вагин , разработчик. Главный программист Хекслета.
Игорь Александров: самое прекрасное в Ruby – это конечно же community языка
Жив ли Ruby
Мне непонятно понятие «мертвого языка» в контексте Ruby. Я думаю, что на текущий момент Ruby просто вышел из состояния относительно новой технологии, которой все хотели воспользоваться, и перешел в состояние «осознанного использования».
О целесообразности изучения
Работа для рубистов конечно же есть, посмотрите на индекс TIOBE, Ruby стабильно находится в первой двадцатке языков. Конечно, вакансий, например по Python, раза в три больше, но у Ruby есть своя ниша (веб-разработка), в которой он очень силён. Скоро будет релиз Ruby 3.0 (декабрь 2020), на мой взгляд интерес к языку еще раз повысится.
Подходит ли Ruby новичкам
Ruby прекрасно подходит для разработчиков с нулевым опытом. Самое прекрасное в Ruby – это конечно же community языка. Для очень большого количества задач есть проверенные решения, а сам язык обладает прекрасной объектной моделью, которая легка в понимании. Даже динамическая типизация, за которую часто ругают язык, для новичка проще в освоении, чем строгие типы. Посмотрите на Crystal, язык обладает схожим с Ruby синтаксисом, но для начинающего программиста конечно же будет гораздо более сложным.
О Ruby on Rails
Rails одновременно дали огромный импульс для развития Ruby и сыграли с ним злую шутку. Очень многие, когда говорят «Ruby», подразумевают именно «Rails». На текущий момент фреймворк находится уже в шестой версии, стабилен и обладает огромным функционалом из коробки. Rails, как и раньше, прекрасно подходит для быстрого старта проекта, однако с ним по-прежнему возникают проблемы на больших проектах.
В первую очередь это проблемы поддержки кодовой базы и организации кода. По сравнению с ситуацией, которая была лет 5 назад, сообщество уже выработало ряд решений и подходов, которые решают большинство этих проблем. Активно развивается проект dry-rb , который предлагает набор библиотек для более чистого и поддерживаемого Ruby-кода. У Rails есть еще один значительный плюс — это его документация, настолько понятного и подробного описания я не видел ни в одном инструменте.
Сколько нужно учиться
По нашему опыту (у нас есть стажёрская программа) кому-то получается освоить основы Ruby за месяц или полтора, кому-то требуется на это больше времени, у кого-то не получается совсем. При желании «войти в профессию» действительно можно уложиться в месяц. Особенно важно, на мой взгляд, начинать именно с Ruby, а не с Rails.
Об эксперте
Игорь Александров , JetRockets CTO and co-founder
Что можно запомнить
- Ruby — язык с лаконичным синтаксисом, он создавался, «чтобы сделать программистов счастливыми».
- Ruby чаще всего используется в веб-разработке.
- Ruby on Rails — популярный фреймворк, который стал источником вдохновения для разработчиков других фреймворков.
- Программисты на Ruby востребованы на рынке труда, в среднем они зарабатывают больше программистов на JavaScript, Python, Java, PHP.
10 причин для перехода на Ruby
Я познакомился с Ruby сравнительно недавно, благодаря чудесному фреймворку Ruby on Rails. Я не считаю себя экспертом в Ruby, но я прочитал PickAxe, написал несколько утилит на Ruby для личного пользования, а также разрабатываю на Rails в свободное время.
Ruby на данный момент, мой основной язык. Начинал же я с TurboPascal в школе, изучал C и C++ в университете, дисертацию писал на Java, а еще я изучал PHP с нуля, так как хотел научиться делать веб-сайты быстро и легко. Думаю, что написание кода для меня это некая форма развлечения, а уж потом все остальное. В начале у меня были размышления, какой язык изучать, Python или Ruby. Я выбрал второй, так как не хотел, чтоб неправильные отступы были причиной неполадок в моем коде.
Есть целая куча введений, руководств, статьей и эссе, написанных гуру, о том, как получить максимум пользы от Ruby. Данная статья ничем таким не является.
Это более скромный, неполный перечень причин, которые могут (или не могут) побудить вас использовать Ruby, ну или в крайнем случае поиграть с ним. Предостережение: если вы используете другой язык программирования для работы или в других целях — не жалуйтесь мне, если больше не захотите им пользоваться. Именно это и произошло со мной, но для меня это не столь важно. Ruby чудесный и элегантный язык и как многие подобные вещи, он может захватить ваш разум и поломать душу.
Короче, вы — предупреждены.
Зачем изучать Ruby?
1.Вы получаете все удобства (удовольствия) без уловок.
- Исключения. Верите или нет, исключения являются одной из важнейших вещей при разработке программ любого рода. Программисты на PHP4, не знают ничего о них и будут говорить вам, что можно просто печатать(ошибки) на экран или использовать их собственный «супер-пупер» класс для обслуживания ошибок. К счастью для всех нас, Ruby поставляется с try/catch (или еще лучше begin/rescue) блоками и набором предопределенных, расширяемых Исключений, для правильной обработки ошибок.
- Пространства имен: модули Ruby делают использование пространства имен легким, это должно понравиться энтузиастам C++ и Java.
- Встроенные регулярные веражения: Для всех знатоков Perl, вы можете заключить нечто в // и оно становится регулярным выражение, готовым для сравнения (для этого используем оператор =~).
- Перегрузка операторов: Ruby позволяет определять операторы, такие как +, -, >, и т.д. для любого вашего класса.
- Пакеты: называемые «gems»(камешки), они действительно оправдывают свое название, кроме того — они работают. Пакеты поддерживают зависимости, а еще могут быть как кросс-платформенные, так и платформо-зависимыми.
- Интерактивная консоль: может использоваться для тестирования кода интерактивно, подобно консоли Python
2.Вы полюбите мелочи.
- Вы можите использовать оба оператора, if и unless в условных выражениях. Кончно же вы можите использовать if с противоположным значением выражения, но использования unless обычно приводит к меньшему числу ошибок. Кроме того, вы можите использовать оба оператора, как условные модификаторы, ставя их после выражения, а не до: order.new unless order.exists
- Можно использовать знаки вопроса и восклицания в конце имени метода. Данное соглашение не навязывается, но знак «?» используется, когда метод возвращает true или false, в то время, как знак «!» используется для методов, делающих нечто необратимое, на подобии удаления записи из базы данных, отщепления последнего символа из строки и т.п.
- Можно использовать псевдонимы (alias) для уже созданных методов. Таким образом можно получить методы exist и exists, без накладных расходов и без повторений.
- Вы можете использовать директивы attr_reader, attr_writer или attr_accessor для автоматического создания getter/setteer для членов класса.
- И еще некоторое соглашение об именах: константы, классы и модули пишут с заглавной буквы, методы и члены класса должны начинатся с маленькой буквы, глобальные переменные именуют начиная с «$», имена переменных объекта начинаются с «@», а имена переменных класса с «@@», ну и т.д.
- При вызове методов, можно не писать скобки. Можно писать write File.open(«/home/h3rald/test.txt») или просто File.open «/home/h3rald/test.txt» , что особенно удобно с методами, без аргументов.
3.Больше не нужно использовать точку с запятой.
Хотите написать следаующую инструкцию? Просто переходите на новую строку. Нажмите «Enter» и готово. В Ruby как и в Python, новая линия разделяет инструкции, так что вам не придется все время ставить точку с запятой. К сожалению это означает, что подобно фанатам C++, мы не сможем написать программу в одну строчку. Но это не так уж и плохо, правда?
4.Все является объектом, как это и должно быть.
Когда я изучал Java, мне говорили, что все является объектом.
— «Че, 14 и 374346.678 — объекты?»
— «Нет, глупыш, это числа!»В Ruby числа, символы, булевы значения и все остальное является объектом. Серьезно. Это означает, что можно писать вещи подобно этим:
«YOU SHOULDN’T ALWAYS USE CAPITALS».lowcase # вернет «you shouldn’t always use capitals» , вместо нечто такого:
# PHP Code
strtolower(«YOU SHOULDN’T ALWAYS USE CAPITALS»)
Этим вы экономите время, экономите скобки и так более логично.5.Все имеет значение.
Или «больше не надо использовать return для возврата значений». Если побыстрячку, то так: все инструкции в Ruby возвращают значение, даже присваивание переменных, так что вам действительно не нужно использовать ключевое слово «return» в конце методов. Значение последнего присваивания всегда будет возвращено.
6.Можете изменять окружение любым доступным способом.
- Вы изменяете исходный код класса, если вы имеете к нему доступ. Но обычно это — плохая идея, не делайте так.
- Вы наследуете свой класс от того и добавляете к нему новый метод. Обычно это — хорошая идея. Но из-за одного метода это может оказаться несколько монрообразным. Кроме того, придется немного подправить другой свой код соответственно.
- Можно просто создать метод вне класса. Это сработает, но будет не очень изящно, а еще — идет в разрез с ООП.
7.Вы не сможите получать единорогов из птиц и конец, но вы получите ослов, если захотите.
Я четко помню, как моя учительница по C++, использовала животных, для иллюстрации основных концепций объектно-ориентированного программирования — классов и наследования. Было нечто загадачно, когда объясняла нам множественное наследование, образовывая «пегаса» из «птиц» и «лошадей». Сумасшедшие вещи, Ruby не позволяет множественного наследования. Это выглядит как тренд и в конце-концов это дело вкуса. Я не в восторге от множественного наследования, так как это может привести к непредсказуемым вещам. Несмотря на это есть возможность создания нечто подобного, используя модули Ruby, так что переменные и методы одного модуля, будут добавлены в определенный класс, если модуль включен в него.
8. XML — реально ненужен.
XML — красивый, общеупотребительный, язык разметки, который может быть обработан всеми языками программирования и используется повсеместно. К сожалению, он слишком громоздкий для написания, трудный для обработки(парсинга) и, давайте будем честны — трудный для чтения в большинстве случаев. А вот взгляните на следующий фрагмент:
regexp: !ruby/regexp /a-zA-Z/
number: 4.
string: a stringБезусловно это легче и проще XML, правда? Добро похаловать в YAML, любимый (но не единственный) язык разметки Ruby, с помошью которого любой объект может быть представлен в простом, лаконичном, но полном виде.
Ruby способен работать с XML, но простота YAML подкупила многих разработчиков, которые теперь используют его вместо XML, например для файлов конфигурации (так поступили в Rails). Фрагмент, представленный выше, был получен исполнением следующего фрагмента кода:
«a string», «number» => 4.7, «regexp» => /a-zA-Z/>.to_yaml
Метод to_yaml, определен для класса Object, который является родителем для всех остальных объектов, а потому доступен для всех объектов Ruby. Это позволяет преобразовывать объекты в YAML и обратно, абсолютно прозрачно для разработчика. Круто, да?9.Лямбда — нечто больше, чем просто греческая буковка.
Ruby позаимствовал некую магию из Lisp и Perl в объекты и блоки Proc. Proc — это «блок кода, связанный с набором локальных переменных. Однажды связанные, они могут вызываться в различных контекстах и все еще обращаться к тем переменным.». Поглядим на следующе:
def gen_times(factor)
return Proc.new <|n| n*factor >
endtimes3 = gen_times(3)
times5 = gen_times(5)times3.call(12) #=> 36
times5.call(5) #=> 25
times3.call(times5.call(4)) #=> 60Можно было использовать ключевое слово lambda вместо Proc.new, на результат это не влияет. Это могло показаться знакомым людям, знающим Perl и Python (или Lisp). Такое можно сдалать даже на PHP, но не много людей пользуются этой возможностью.
Кроме того в Ruby широко используются блоки типа «несозданные Proc», например, для итерации по содержимому объекта и исполнения некоторого кода, подобно методу each, доступного для класса Array:
[1, 2, 4, 6, 8].each <|c| puts c*2>#=> возвратит каждый элемент, умноженный на 2
Если код не умещается на одной строчке, рекомендуется использовать конструкцию do… end, вместо использования скобок. Фаны Ruby не любят скобок.10. Вы можете использовать Rails.
Последнее, но не по важности… Вы всегда можете использовать Rails для разработки веб-приложений. Разработка будет не настолько простой, как с PHP, но Rails были написаны на Ruby, поскольку он имет возможности, отсутствующие в других языках.
Заключение
Время вышло. Возможно вы уже задумываетесь о взгляде на Ruby, возможно вы уже пробовали его, а возможно вы просто проигнорировали его. Как бы там нибыло, в следующий раз, когда глядя на свой код, он будет казаться страшным, а размер его устрашающим — не обвиняйте меня.
Уважаемые Читатели — не забывайте, что хабраюзер, просто перевел (паршиво, да) текст. Идеологических претензий ему высказывать нет нужды.
Почему Ruby считают перспективной «темной лошадкой» среди языков программирования
Продолжая цикл статей о современных языках программирования, мы расскажем об особенностях, преимуществах и недостатках Ruby, истории его появления и развития, а еще для чего нужен этот язык. Также вы узнаете о том, что представляет собой фреймворк Ruby on Rails и почему он так широко известен. Наконец, в завершении статьи вас ждет информация о том, насколько сложен язык Ruby, как его можно изучить и будет ли он востребован в ближайшем будущем.
Ruby – это один из самых быстрых, функциональных и многогранных языков программирования. Он пережил бурную волну популярности в середине нулевых годов, однако остался востребован в своей нише и по сегодняшний день. Язык активно используется в системном администрировании и веб-разработке, на нем созданы такие известные веб-сервисы, как Twitter, Shopify, GitHub, Airbnb, Kickstarter, Basecamp, Redmine и многие другие.
Как появился и развивался язык Ruby?
Ruby – это интерпретируемый высокоуровневый объектно-ориентированный язык программирования общего назначения. По состоянию на январь 2022 года он входит в топ-20 самых популярных ЯП, согласно авторитетному специализированному рейтингу Tiobe.
Создателем языка Ruby считается японский программист Юкихиро Мацумото, он начал работать над ним в 1993 году и представил первую общедоступную версию языка через два года, в 1995-м. На разработку нового языка его вдохновил популярный в те годы язык программирования Perl, из которого Мацумото позаимствовал некоторые особенности синтаксиса и семантики.
В первые годы своего существования Ruby был известен только в Японии, так как документация к нему еще не была переведена на другие языки. В 1997 году появился англоязычный перевод документации, а в 1998 году в интернете появился англоязычный форум «Ruby-Talk». В начале 2000-х годов распространенность языка заметно выросла после в печать нескольких книг о нем на английском языке.
В 2003 году появилась версия Ruby 1.8.0, а в 2005 году был разработан знаменитый фреймворк Ruby on Rails, который сразу приобрел немалую популярность, благодаря своим широким возможностям для создания веб-приложений. Во второй половине нулевых годов процесс обновления языка разделился на две ветви: наряду с поддержкой основной версии 1.8 была выпущена экспериментальная ветвь 1.9. В нее был внесен ряд важных изменений, а также отсутствовала обратная совместимость с предыдущими версиями.
Вторая волна популярности этого языка пришлась на период с 2009 по 2012 год, когда интерес к нему вырос более чем втрое – по данным индекса Tiobe. В 2009 году появилась версия Ruby 1.9.1, а в 2010 году вышла версия фреймворка Rails 3.0, которые получили целый ряд усовершенствований. В частности, в них были устранены некоторые недоработки, а скорость работы интерпретатора выросла в несколько раз.
В 2013 году вышла стабильная версия языка программирования Ruby 2.0, получившая несколько важных обновлений: новый метод, новый литерал, новый API для ленивых вычислений и т.д. Начиная с версии 2.1.0 нумерация версий стала более похожей на семантическую (semantic versioning, SemVer). Версия Ruby 2.2.0 увеличила скорость и производительность языка, обновила его библиотеки и исправила некоторые багги, также в ней была добавлена поддержка спецификации Unicode 7.0.
В декабре 2020 года состоялся релиз версии Ruby 3.0.0, также ее назвали Ruby 3х3. Это означало, что она работала в три раза быстрее, по сравнению со второй версией. Третья версия обзавелась MJIT-компилятором, который значительно ускорил выполнение кода. В нее был внедрен язык RBS, способный описывать типы Ruby-программ для статического анализа кода, вместе с некоторыми обновлениями синтаксиса и дополнениями библиотек. В декабре 2021 года была выпущена версия Ruby 3.1 с YJIT-компилятором (разработанным Shopify для оптимизации работы бизнес-приложений), новым дебаггером кода и рядом других нововведений.
Особенности и возможности Ruby
- Интерпретируемость. Язык программирования Руби является интерпретируемым, написанный на нем код обрабатывается в момент выполнения специальной программой-интерпретатором, которая имеет кроссплатформенную реализацию и распространяется на условиях открытого ПО. Таким образом, изучать данный язык и программировать на нем можно на любой современной операционной системе. Это обеспечивает Ruby определенные преимущества, по сравнению с другими распространенными ЯП: созданные на нем программы имеют меньший размер, быстрее работают и не зависят от особенностей используемой платформы. Язык разрабатывался на Linux, но работает на многих версиях Unix, DOS, Microsoft Windows (в частности, Win32), Mac OS, BeOS, OS/2 и т. д.
- Динамическая типизация. Эта особенность языка помогает определять типы данных и осуществлять их компиляцию – то есть, на этапе выполнения программы превращать написанный разработчиком программный код в набор машинных кодов. Динамическая типизация заметно ускоряет и упрощает процесс разработки программ и приложений.
- Шаблоны. Разработчикам на Руби не нужно писать HTML-код самостоятельно, вместо этого они могут воспользоваться помощью генераторов и шаблонизаторов кода. Такие же вспомогательные инструменты доступны на Ruby on Rails, с их помощью можно заметно ускорить работу с front-end. Среди наиболее известных шаблонизаторов выделяют ERB, HAML, SLIM, Liquid.
- MVC. Одной из важнейших особенностей Ruby считается наличие схемы разделения компонентов приложения (Model-View-Controller, MVC). Она помогает разработчикам использовать типовые подходы к разработке разных проектов, благодаря единообразию их структуры и архитектуры. MVC способствует ускорению разработки и внесению изменений в ПО, позволяет быстрее находить и исправлять ошибки в коде. С его помощью новые участники команды могут быстрее разобраться в чужом коде и подключиться к рабочему процессу.
- Базы данных. Технология ORM, используемая в фреймворке Ruby on Rails, дает возможность писать универсальный код, подходящий для любой поддерживаемой базы данных. Таким образом, «рубисты» могут не изучать с нуля все современные типы БД, достаточно иметь опыт работы с одной реляционной базой, наиболее подходящей считается PostgreSQL.
- Деплой и тестирование. Ruby содержит ряд полезных инструментов не только для написания, но и для развертывания программного кода. Например, в нем имеется встроенная система автоматизации для рефакторинга, позволяющая выполнить эту процедуру при помощи одной команды. Также здесь представлен набор инструментов тестирования для контроля качества кода, в том числе Rspec, Minitest, Cucumber, Capybara.
Что такое Ruby on Rails?
Как известно, Ruby – это язык программирования общего назначения, который подходит для разных типов программ и приложений. Однако он стал наиболее востребован в веб-разработке, благодаря выпущенному в 2005 году фреймворку Ruby on Rails.
Свяжите сервисы между собой без программистов за 5 минут!
Как настроить выгрузку новых квизов из Marquiz в Мой Класс?
Как настроить выгрузку новых квизов из Marquiz в виде лидов в Битрикс24?
Среди других возможностей RaR стоит отметить одновременное взаимодействие с разными типами баз данных, автоматизацию обработки рассылок, функционал для хранения пользовательских файлов (доступен в формате «из коробки»), функционал для параллельного тестирования, а также встроенные возможности для взаимодействия с технологиями front-end.
Еще одним важным преимуществом Ruby on Rails (как и языка Руби в целом) является большое количество готовых к использованию библиотек, которые поставляются в экосистеме пакетов RubyGems (так называемые «джемы»). Они заметно облегчают процесс разработки веб-приложений, позволяя внедрить ряд их функций в готовом виде, а не создавать с нуля. Например, популярными библиотеками считают: CanCanCan (авторизация), Devise (аутентификация), Active Admin (панели администрирования), Community Engine (соцсети) и т.д.
Преимущества Ruby и Ruby on Rails
Программирование на языке Ruby имеет целый ряд весомых преимуществ, которые выгодно выделяют его на фоне других современных ЯП. К ним относятся такие факторы:
- Скорость разработки. Важнейшим плюсом Руби можно назвать высокую скорость разработки, которая достигается за счет простого и лаконичного синтаксиса, а также большого выбора готовых решений для разных видов задач. По мнению многих экспертов, решать задачи на RaR можно в полтора раза быстрее, чем при помощи других подобных фреймворков.
- Кэширование данных. Фреймворк RaR оснащен штатными средствами кэширования данных, что позволяет легко и быстро кэшировать блоки кода или целые страницы без необходимости пользоваться сторонними инструментами. Это свойство языка делает его чрезвычайно удобным и полезным при создании масштабных бизнес-проектов.
- Общепринятые стандарты. Отдельным преимуществом является наличие четких и понятных стандартов Руби программирования, которые используются в сообществе уже много лет и оформлены в специальный список правил. Это помогает эффективно структурировать любые проекты, разрабатываемые на этом языке, а также быстро подключать к работе новых разработчиков или целые команды.
- Прозрачность кода. Ruby и Rails позволяют писать понятный и прозрачный программный код, который затем можно без особых сложностей обновлять и дорабатывать. Соблюдение стандартов и соглашений дает возможность сопровождать код не только его разработчиками, но и сторонними программистами.
- Надежность и функциональность кода. Разработка на RaR проводится на основе методологии TDD (test-driven development, разработка через тестирование), что помогает часто проверять работоспособность и корректность кода через автоматические тесты. Это делает создаваемые на этом фреймворке программы более стабильными и сопровождаемыми. Данный фактор является очень значимым преимуществом для бизнес-приложений, от исправной работы которых напрямую зависит объем прибыли компании.
- Масштабируемость. Написанные на Руби программы и приложения легко масштабируются, в том числе в облаках и серверных кластерах. Также на нем часто создают высоконагруженное ПО с высокими требованиями по аптайму и скорости работы.
- Защита данных. В RaR по умолчанию предлагается подборка штатных средств защиты данных, в том числе шифрование паролей и других персональных данных пользователей (например, сведений о банковских картах), защита от XSS атак и SQL-инъекций, а также экранирование входных параметров.
Недостатки Ruby и Ruby on Rails
Что касается недостатков языка программирования Ruby, то среди них можно отметить:
- Требовательность к ресурсам. В первую очередь этот недостаток касается фреймворка Ruby on Rails, сайты на котором требуют гораздо больше памяти, пространства и других вычислительных мощностей, по сравнению с другими популярными ЯП (тем же PHP). Именно поэтому RaR чаще используется для разработки бизнес-сайтов, так как их владельцы могут позволить себе оплату доп. ресурсов.
- Linux-ориентация. Хоть сам по себе Ruby является кроссплатформенным языком и доступен для изучения на любой ОС, однако для эффективной разработки на Ruby on Rails вам обязательно понадобится хорошее знание Linux. Также данный язык может быть довольно сложен для создания Windows-проектов.
- Недостаток вакансий. Ruby и Ruby on Rails популярны на западном (в частности, американском) рынке, особенно в сфере электронной коммерции (тот же Shopify и т.д.). На IT-рынке Украины и стран СНГ более востребованы другие языки (Python, PHP, JavaScript, Go). Также считается, что высоким спросом у нас пользуются только опытные Руби-программисты, в то время как «джуны» мало кому интересны.
- Высокий порог входа. Ruby имеет довольно высокий порог входа, поэтому он больше подходит для разработчиков с опытом, чем для новичков в программировании.
Для чего нужен Ruby? Насколько перспективен этот язык?
Если вы зададитесь вопросом – что пишут на Ruby, то список сфер применения этого языка может превзойти все ваши ожидания. Среди основных из них стоит отметить такие, как:
- Веб-разработка. Фреймворк Ruby on Rails – это очень эффективный инструмент веб-разработки, при помощи которого были созданы многие известные сайты. В частности, Airbnb, Crunchbase, Twitter, Dribbble, Bloomberg, Netflix, Zendesk, Groupon, SoundCloud, Upwork, Hulu, Basecamp, Kickstarter, Change.org и многие другие.
- Разработка мобильных приложений. Для Ruby доступен целый ряд популярных сред разработки, в том числе Titanium Studio, Ruboto (Android), RubyMotion (iOS), MobiRuby (Android/iOS), Rhodes (фреймворк для разработки Enteprise Mobility приложений для смартфонов Motorola).
- Программы для десктоп-устройств. Ruby активно используют в качестве скриптового языка для различных программ, которые написаны на нем полностью или частично. К ним относится GitHub и GitLab, Redmine (система управления проектами), Amarok (аудиоплеер), SketchUp (ПО для моделирования и визуализации), Metasploit (поиск и тестирование уязвимостей), XChat (IRC-клиент) и многие другие.
- Системное администрирование. Руби часто применяется системными администраторами в ходе поддержки и обслуживания ряда распространенных операционных систем, в том числе Linux, BSD, Mac OS X.
На сегодняшний день Ruby считается такой себе «темной лошадкой», так как он пользуется определенным успехом среди аудитории, однако назвать его действительно массовым ЯП пока что нельзя. Впрочем, широкие возможности делают Руби очень востребованным в определенной сфере – разработке веб-сайтов и приложений для бизнеса. Соответственно, так как эта отрасль сейчас продолжает бурное развитие, то вместе с ней будет развиваться и данный язык.
Как выучить язык программирования Ruby?
Изучать Руби с нуля довольно сложно, так как он имеет максимально высокоуровневый синтаксис, который упрощает и ускоряет разработку на нем, но может быть весьма непрост и непонятен для новичков. Поэтому начать освоение Ruby лучше с других, более простых языков программирования – например, Python, который также является высокоуровневым и имеет некоторые сходства, но при этом гораздо легче.
Что касается книг по языку программированию Ruby, то среди них стоит отметить «Путь Ruby» (Хэл Фултон и Андрэ Арко), «Ruby. Объектно-ориентированное проектирование» (Сэнди Метц) и «Ruby on Rails для начинающих» (Майкл Хартл), а также «The Ruby Programming Language», написанную Д. Флэнаганом и Юкихиро Мацумото (создателем языка).
Также в интернете есть немало ресурсов с обучающими материалами, однако большинство из них предназначены для специалистов с определенными знаниями и опытом в данной сфере. Популярным сайтом по теме считается https://www.ruby-lang.org/, где также есть и курсы для начинающих (например, Ruby за 20 минут).
Заключение
Выпущенный в 1995 году язык программирования Ruby по сей день успешно используется и развивается, несмотря на свою довольно умеренную популярность. Его считают очень мощным и функциональным языком для веб-разработки, на нем написаны такие всемирно известные сайты, как Shopify, Netflix, Twitter, Upwork, GitHub и многие другие. Руби обеспечивает высокую скорость разработки ПО, прозрачность, надежность, функциональность и масштабируемость кода, также в нем есть четкие общепринятые стандарты, а еще встроенные средства кэширования и защиты данных. К недостаткам языка относят высокую требовательность к ресурсам, ограниченное количество вакансий (особенно для начинающих специалистов) и значительный порог входа в профессию.
Почти любая работа в интернете связана с множеством рутинных действий. Среди них перенос лидов из рекламных каналов в CRM, отправка почтовых или SMS-рассылок, копирование данных между электронными таблицами и другие однообразные задачи.
Но вы можете автоматизировать эти и другие процессы с помощью нашей платформы ApiX-Drive. Достаточно подключить к ней свои рабочие сервисы и настроить передачу данных — обо всем остальном система позаботиться за вас. Попробуйте ApiX-Drive, это быстро и просто!
Ruby для начинающих: чем интересен этот язык и как его эффективно изучать
Меня зовут Иван Бондаренко, я Senior Software Engineer и Ruby Technical Lead в CHI Software. Опыт разработки — 6 лет, из них последние 5 — я работаю с Ruby. До этого я программировал 1 год на PHP. Имея за плечами опыт преподавания (я вел курсы по Ruby в Spalah), я решил максимально доступно рассказать об этом языке программирования, поделиться опытом с начинающими специалистами и, возможно, заинтересовать кого-то из них Ruby.
Это первая из статей, в которых я расскажу об особенностях Ruby и Ruby on Rails и поделюсь советами о том, с чего начать в изучении Ruby, где находить ответы на вопросы, как получить нужный опыт и чем вы сможете выгодно отличаться от других кандидатов. Буду рад, если мои советы помогут кому-то определиться со специализацией и выбрать Ruby для изучения и работы.
Основные особенности и отличия Ruby
Часто слышу вопрос: стоит ли учить Ruby? Как правило, вопрос основан на сомнениях: насколько легко найти работу с данной специализацией, будут ли интересные проекты и так далее и тому подобное. Ruby — современный, постоянно развивающийся язык программирования, областей применения ему — масса. Наверняка вы слышали про Chef, Vagrant, Homebrew, но чаще всего все мы слышим о Rails. Вот пост с комментарием самого автора фреймворка о том, почему стоит учить Rails.
Конечно, каждый сам для себя решает, какой инструмент ему использовать. И нет смысла бесконечно долго спорить о том, почему одна технология лучше другой. Я выбрал Ruby, потому что это невероятно выразительный и гибкий язык, который позволяет одну и ту же задачу решить многими способами.
Ruby — интерпретируемый, полностью объектно-ориентированный язык программирования с четкой динамической типизацией. Он сочетает в себе Perl-подобный синтаксис с объектно-ориентированным подходом. Также некоторые черты заимствованы из языков программирования Python, Lisp, Dylan и CLU. Кроссплатформенная реализация интерпретатора языка Ruby распространяется на условиях открытого программного обеспечения. Код, написанный на Ruby, может быть понятен даже человеку, который не разбирается в программировании. На RoR были созданы такие проекты, как Redmine, Twitter, Shopify, Basecamp, GitHub, Kickstarter, Airbnb и другие.
С ростом Node.js популярность Ruby on Rails несколько уменьшилась, но технологические стартапы часто используют RoR благодаря простоте прототипирования. Ruby — самый популярный язык в индексе TIOBE.
Преимущества Ruby
- Многочисленное и доброжелательное комьюнити.
- Довольно высокий порог входа, что означает, что Ruby-разработчик с большой вероятностью имеет опыт работы как минимум с еще одним языком программирования.
- Вы используете только те библиотеки и модули, которые необходимы.
- Существует большое количество полезных библиотек, которые уже готовы к использованию (Ruby Gems).
- В интернете есть много информации по Ruby, в структурированном и отсеянном виде.
- В контексте обсуждения Ruby нельзя не упомянуть популярнейший фреймворк Ruby on Rails.
А теперь поговорим о некоторых преимуществах Ruby более подробно.
Скорость разработки
Одним из плюсов Ruby и фреймворка RoR считается скорость разработки. Личный опыт и опыт коллег показывает, что решение задач на Rails происходит в полтора раза быстрее по сравнению с другими фреймворками подобного плана. Ruby очень прост как инструмент, а также существует огромное количество готовых решений для различного рода задач.
Штатные средства кеширования данных
При разработке масштабного проекта одним из самых важных моментов является кеширование. Ruby on Rails в основной комплектации имеет штатные средства кеширования данных. То есть у вас сразу будут в наличии инструменты для кеширования данных на проекте, и вы можете легко кешировать отдельные блоки кода или даже целые страницы.
Вначале тесты, потом код
Часто в процессе разработки крупных проектов возникает вопрос о тестировании, и не редкость, когда нет дополнительных средств на отдельную команду тестировщиков. В Rails есть решение и этой проблемы. Если сравнивать RoR с другими фреймворками в контексте тестирования приложения, то вы найдете массу готовых решений для любого вида тестов, будь то интеграционные или юнит. Все эти библиотеки работают «из коробки». В идеале в проекте на Ruby on Rails код не пишется до тех пор, пока под него не написаны тесты. RoR идеология предполагает изначальное использование методов BDD (Behavior Driven Development) или TDD (Test Driven Development).
Общепринятые стандарты процесса разработки у Ruby-разработчиков
Говоря о преимуществах Ruby, я не могу снова не упомянуть сообщество рубистов. Оно постоянно растет, развивается и всегда готово прийти на помощь. Всегда есть кто-то, кто подскажет, как лучше решить проблему, поделится опытом в каком-либо вопросе.
Также очень важный момент — в Ruby-сообществе уже много лет есть стандарты процесса разработки, некие правила/соглашения сообщества, по которым ведется разработка, что очень сильно упрощает работу. За счет этих стандартов каждый проект очень структурируется, соответственно, новый разработчик в команде быстро войдет в курс дела и уже с первых дней работы сможет быть полезен. И даже больше: если проект начинала одна команда, а заканчивает другая — это тоже совсем не проблема. Поскольку разработка ведется по уже упомянутым правилам и соглашениям сообщества, новая команда быстро и без трудностей вникнет в проект и успешно его закончит без особых потерь времени.
Также в Ruby on rails есть большое количество самых разных готовых решений в открытом доступе. Большинство решений уже были реализованы кем-то до вас, а также протестированы сообществом, что уменьшает необходимость разработки с нуля. Это могут быть системы аутентификации, авторизации, комментирования, системы платежей, почтовые рассылки и так далее.
Готовые решения для многоязычности проекта
Rails в базовой комплектации имеет очень мощные средства для локализации проекта. Есть возможность как предусмотреть поддержку нескольких языков изначально, так и осуществить её позже. В проекте присутствуют специальные файлы для переводов терминов, инструменты для отображения шаблонов на разных языках и многое другое.
Высокий уровень защиты данных
Сейчас нередко в сети публикуются статьи о взломах различных ресурсов. Разработчики фреймворка Ruby on Rails очень серьезно отнеслись к проблеме защиты данных. В RoR изначально присутствует шифрование паролей, данных кредитных карт и других личных данных пользователя, также исключены SQL инъекции и XSS атаки. Все входные параметры экранируются по умолчанию.
Изучение Ruby
А теперь поговорим, как именно можно освоить Ruby.
Теория
Начать следует, конечно же, с литературы. Я рекомендую эти источники:
- Ruby за 20 минут — хороший ресурс для совсем начинающих. Позволяет меньше, чем за полчаса ознакомиться с основными конструкциями языка и начать писать свои небольшие программы.
- Codecademy — платформа с онлайн-курсами по множеству направлений, включая чистый Ruby и Rails. Здесь довольно интересно построен обучающий процесс, дается теоретический материал и сразу же практическое задание, чтобы его закрепить. Финальные задания платные, но и без них можно получить нужные навыки.
- Материалы по Ruby и Rails — сборник ссылок на различные сайты и книги, посвященные изучению Ruby и Rails.
- Отдельно могу посоветовать книгу Flanagan D., Matsumoto Y. «The Ruby Programming Language». Она считается одной из лучших, её автор — сам создатель языка Ruby.
- Google 🙂
Далее я рекомендую изучить хотя бы базовые понятия SQL, потому что СУБД хоть и отличаются между собой, но зачастую используют один и тот же язык.
Вот парочка ресурсов, с которых можно начать:
- w3schools.com/sql — здесь можно почитать, попробовать и проверить свои знания по SQL.
- quizful.net/test — тут можно найти вопросы, которые часто задают на собеседованиях.
Английский
Я считаю, что нет смысла останавливаться подробно на этом моменте, так как это — тема отдельной статьи. Английский очень важен, и это общеизвестный факт. Хотелось бы только упомянуть вкратце два самых важных момента.
Во-первых, английский — это основной язык международного комьюнити, соответственно, большая часть полезной литературы тоже будет на английском, многие новости, доклады и важные статьи тоже будут появляться сначала на английском. Если вы хотите узнать ответ на какой-либо вопрос — очень большая вероятность, что в первую очередь его получится найти именно на английском.
Во-вторых, чем лучше ваши знания английского, тем больше шансов найти работу. Большинство клиентов зарубежные, соответственно, знание английского важно для продуктивного общения, четкого понимания ТЗ и хорошего контакта с клиентом.
Практика
После изучения нескольких ресурсов стоит перейти к более важной части, а именно к практике. Примеров заданий с интернет-магазином или простым блогом в сети масса (вот один из них), особенно если говорить о Rails. В ходе выполнения задач, уже немного приближенным к реальным, вы точно столкнетесь с какими-то проблемами и тогда перейдете к тренировке одного из самых главных качеств — это умение гуглить. К сожалению, мне не удалось найти какой-то туториал или курсы, посвященные этому навыку, но он определенно играет очень важную в роль в повседневной работе.
Курсы
После прочтения теории и написания нескольких «пет-проектов» можно, конечно, пробовать идти по собеседованиям, но часто бывает, что этих знаний недостаточно. Это связано с большим наплывом кандидатов, и, учитывая конкуренцию, каждый старается выделиться и как можно лучше подготовиться.
Еще один важный пункт в обучении, который может стать перевесом в вашу сторону при поиске работы, — это курсы по программированию. Если, конечно, у вас нет ментора, который готов тратить определенное количество времени на то, чтобы придумывать задания и делать по ним ревью.
Сразу скажу, что я ни в коем случае не рекомендую идти на курсы, не имея уже какого-то багажа знаний. Я рассматриваю курсы как отличный способ закрепить знания, полученные в процессе самообучения. И сейчас не пытаюсь рекламировать какую-то конкретную школу, а объясню, какую именно пользу можно из этого извлечь:
С высокой долей вероятности там вы узнаете то, чего не знали раньше. На курсах довольно большой объем материала, который подается в структурированной форме, что позволяет лучше усваивать материал.
На период курса у вас будет ментор, который будет делать ревью решения ваших задач и указывать на слабые места и ошибки.
Обратная связь. На уроке вы можете задать интересующий вопрос преподавателю или однокурсникам или просто поделиться опытом. Конечно, то же самое можно сделать и на конференции или митапе, но в отличие от посещения конференций, на курсах у вас будет возможность делать это чаще (обычно курсы проводятся раза в неделю).
Мотивация. Это в первую очередь для тех, кому нужна помощь с самодисциплиной. Порой довольно трудно заставить себя что-то делать, какие бы перспективы не маячили на горизонте. При посещении курсов у вас будет четкий график, которому нужно следовать, и задания, которые нужно выполнять, иначе вас исключат. Финансовая мотивация также играет здесь роль, в случае платных курсов. Ведь когда отдаешь свои кровные, то уже совсем по-другому относишься к делу, и мысли просто прогулять возникают намного реже.
Еще одно преимущество — сертификат. Понятное дело, что в итоге вас будут оценивать по знаниям, а не по наличию бумажек в резюме. Но тем не менее это будет плюсом, особенно, если будет кандидат с похожим уровнем знаний, но без их документального подтверждения.
Плюс один проект на GitHub в вашу копилку. Если вы начинающий разработчик, то вероятнее всего проект, написанный на курсах, будет интереснее с точки зрения технологий, чем те, которые были написаны ранее.
И самое главное — трудоустройство. Говоря о курсах, я не имею ввиду только те, за которые нужно платить деньги. Часто компании сами проводят набор на обучение, чтобы потом лучших взять к себе на работу. Это могут быть внутренние курсы или стажировка/интернатура. Такой вариант — наилучший, так как вам не нужно ни за что платить, вы получаете опыт и все выше перечисленные плюсы и вдобавок — реальную перспективу трудоустройства. Попасть на них сложнее, но перспективы значимее.
Итого
Ruby — это язык, который позволяет работать без большого количества неудобств и церемоний, которые приходят со строго типизированными языками. С Ruby легко начать работать, особенно если у вас уже есть опыт разработки на других языках программирования, и вы сможете быстро создавать прототипы с Ruby on Rails. В Японии, откуда он появился, Ruby использовался для создания игр. Ruby лаконичен и читается как английский, что делает код понятным для новичков.
Что касается изучения Ruby, хочу еще раз повторить: нужно начать с малого. Прочитайте несколько книг, сделайте самостоятельно несколько заданий, а затем, если чувствуете необходимость получить больше знаний и опыта или дополнительную мотивацию — можно идти на курсы, уже имея определенный багаж знаний, полученных самостоятельно.
В идеале это курсы от какой-либо компании, которая по окончании сделает вам оффер, если хорошо себя проявите. Альтернативный вариант — платные курсы, которые помогут закрепить полученные знания, добавить в резюме еще один проект и набраться опыта, что наиболее важно на старте. Но не стоит ожидать, что по окончании платных курсов вы с легкостью пройдете собеседование, показав сертификат. Оценивать в любом случае будут знания.
В то же время, имея достаточно мотивации, терпения, способностей и опыта с другими языками программирования, вы вполне можете освоить Ruby самостоятельно, т. к. в интернете очень много полезной и хорошо структурированной информации. Также благодаря открытому и многочисленному Ruby-комьюнити можно с легкостью найти онлайн ответы на многие возможные вопросы, которые с большой долей вероятности кто-то уже задавал до вас.
Удачи в изучении! А в следующей статье мы поговорим о коде.
Подписывайтесь на наш Telegram-канал для джуниоров, чтобы не пропустить интересные вакансии, стажировки, курсы, статьи.
Подобається Сподобалось 0
До обраного В обраному 2