Программирование на руби
Почему Ruby — идеальный язык для начинающего разработчика
Марат Хуснетдинов, основатель консалтингового проекта HowToHireMe, рассказал блогу Нетологии о своём пути в IT и о том, почему начинающим разработчикам стоит выбрать Ruby.
В разработке я около 5 лет. Начинал с фронтенда: вёрстка, стили и JavaScript, затем попробовал Ruby, немного поигрался с Python. В последнее время работаю с Elixir — это новый язык на erlang virtual machine — и с базами данных, и как технический специалист, кроме того управляю, продаю, выступаю как ментор. Есть опыт управления проектами, лидирование и продаж в IT. Сейчас у меня на двоих с партнёром консалтинговое агентство HowToHireMe.
Мы занимаемся помощью рекрутерам, которые работают в диджитале, более эффективно хантить разработчиков. Также помогаем молодым разработчикам делать первые шаги в карьере, показываем, как можно себя продвигать в карьере, как и куда можно двигаться или помочь более опытным ребятам сделать boost в карьере, чтобы она пошла выше.
Мы стараемся развивать наш проект в Open source — я очень активно пишу в open source Github-проекты, чтоб поддерживать опыт на уровне, не смотря на то, что уже ушел на управленческие позиции. За пять лет накопилось много багажа, о котором рассказываем ребятам, когда они приходят к нам на стажировку.
Сегодня расскажу, как эффективно построить карьеру в роли Ruby-разработчика и почему это более эффективно, чем в других языках. Расскажу, почему я пришёл в IT, какие были трудности, почему выбрал Ruby — выбор был непростой, но очень интересный.
Как я пришёл в IT
Хотел бы начать с простой идеи: у меня нет АК-47 с серебряными пулями — есть только опыт и путь, который я прошёл.
Для многих стоит вопрос, как вообще войти в IT: с чего начать, какие есть плюсы, какие минусы. Лично я вообще начинал со станков — работал на производстве. В прямом смысле: крутил гайки, запускал станки токарно-фрезерные. Программировать начал в 28 лет и думал, что это уже возраст, когда не очень просто сменить профессию.
Начинал с HTML и CSS. Пытался писать на 4-й версии PHP по книгам Котерова, после чего это всё успешно забросил. В аспирантуре, когда уже работал с оборудованием, меня познакомили с Python — я даже пытался писать на нём интерпретатор истории станков, чтобы нашим руководителям можно было отслеживать историю нажатия клавиш.
О трудностях, которые возникли при входе
Основная проблема — у меня не было знакомых разработчиков, не было наставника. Я примерно полгода изучал HTML и CSS, чтобы дойти до какого-то уровня в разработке. Были простые проекты, но они были маловостребованны для работодателя. В тот момент я не знал, у кого молодому разработчику спросить совета.
Консультанты просили большие деньги за такую информацию. Молодой разработчик платил и чаще всего понимал, что ему не рассказали ничего, чтобы продвинуться в работе. У Нетологии в этом плане есть плюс — у вас будет не один ментор, а целая группа. Можно переключаться и спрашивать, что и как нужно делать — есть возможность получить более объективную информацию и знания у нескольких человек.
Самое трудное в карьере — это выбрать свой язык, свой стек. Когда входил в мир фронтенда, нужно было знать очень много решений и фреймворков, уметь верстать правильно, понимать, какие используются приёмы при вёрстке, хорошо работать со стилями. В то время не было такого многообразия, как сейчас, но тоже было трудно выбрать набор скиллов. Сейчас же очень разросся стек фронтенда и молодым разработчикам всё труднее выбирать.
Я через это прошёл и предлагаю в качестве решения молодым начинающим разработчикам написать одну задачу на разных языках, на разных препроцессорах стилей — так поймете, что вам нравится.
Дальше будет стоять вопрос поиска работы. Для меня самым трудным в первой работе было понять, чего от меня хотят и как мне это сделать. Обычно здесь начинаются первые трудности, когда начинающий разработчик просто не знает, что ему говорить, что учить и что делать.
Когда ищете работу, работодателям важно увидеть ваши знания, портфолио, какой-то бекграунд — подойдут даже сертификаты и дипломные проекты.
Первая работа в компании была для меня самой сложной — стало понятно, что предстоит многое выучить, многое попробовать и очень многое прочитать.
Про Open source и сообщество
Ruby on Rails сам по себе был написан как opensource-проект, где каждый может поучаствовать в разработке этого проекта. Когда входил в Ruby-мир, то работал с тремя ребятами, которые на тот момент находились в core team разработки Ruby on Rails. Сейчас они уехали работать за границу или же работают удалённо на иностранные компании — в этом им как раз очень помог open source.
У меня не было open source-портфолио. Всем молодым разработчикам я всегда говорю: если вас нет Github-аккаунта, то заводите как можно быстрее.
Не важно, сколько вы напишете опыта в резюме, работодатель всё равно пойдёт смотреть на ваш Github-аккаунт и дату его регистрации — это и будет считаться официальным стартом вашей IT-карьеры.
И сейчас вам советую: просто возьмите и зарегистрируйтесь на Github.
Поработав с Python и Pyramid, я понял, что есть более развитые языки, с более развитой инфраструктурой и более отзывчивым сообществом разработчиков. Например, у Ruby сейчас самое развитое комьюнити: его можно сравнить только с JavaScript. Можно сказать, что Ruby-сообщество создало стандарты для тестирования приложений и многие решения мигрировали потом в JavaScript, Python и другие языки.
Фреймворк Ruby on Rails сейчас самый достаточный, самый полный и развитый — так считаю я, да и другие ребята в сообществе. Сейчас уже больше идут наработки по улучшению узких мест и добавлению каких-то специальных фич фреймворка.
Плюсы Ruby для новичка
Когда я входил в Ruby-мир, на Ruby уже было реализовано достаточно большое количество решений: были написаны Twitter, Aviasales, OneTwoTrip, Onlinetours. Множество решений для выкатки приложений тоже написаны на Ruby, например Puppet, Chef — это инструменты, с помощью которых приложения выкатывают на сервер, или Vagrant — виртуализация приложений — написана тоже на Ruby.
Некоторые государственные компании начали использовать язык Ruby, потому что он занял свою нишу как язык быстрого прототипирования проектов. Если вы сейчас хотите запустить свой стартап, то в 99% лучше использовать Ruby — как язык, который поможет вам очень быстро писать, двигаться по проекту и выкатывать его. На слайде пример синтаксиса.
Многие воспринимают Ruby как кукольный, детский язык, но это только начальное восприятие. Первое моё ощущение от Ruby — язык показался магически простым, потому что очень многое происходит за кадром. Он читается, как обычный текст. Меня подкупило, что можно опускать какие-то скобочки, какие-то вещи можно было писать более нативно. Когда вы понимаете язык, вы понимаете, что там нет никакой магии и всё достаточно предсказуемо работает.
Когда узнаёшь этот язык, начинаешь его любить, потому что вещи, которые делаются очень долго на других языках, здесь можно сделать очень быстро. В среднем скорость разработки на Ruby на 30−50% выше, чем на других языках. В два раза, если мы говорим о Java и .NET. Язык действительно очень красивый и простой для понимания, что привлекает всё большее количество разработчиков.
Я вошёл в Ruby-мир как фронтендер. После чистого фронтенда для Pyramid меня пригласили работать в компанию, которая занимается разработкой на Ruby on Rails. В компанию зашёл как фронтенд-разработчик на Ruby и именно в это время и познакомился с самим фреймворком Ruby on Rails. Очень часто ребята начинают сразу учить сам фреймворк с минимальными знаниями языка. Моё мнение, что это ошибка и надо знать язык, потому что понимание языка даст вам большее понимание фреймворка Ruby on Rails.
Не будем забывать, что у Ruby on Rails тоже есть свои проблемы, которые сейчас пытаются решить. Нет ни одного языка, который мог бы решить все задачи: каждый язык берётся под определённое решение, идеального языка нет. Ruby on Rails и Ruby заняли свою нишу как стандарт разработки веб-приложений. Есть библиотеки, которые помогают писать JavaScript, такие как Opal, компилируются из Ruby в JavaScript; есть фреймворки, которые помогают писать приложения для мобильной разработки, например, RubyMotion.
Почему Ruby и Ruby on Rails перспективны
Быстрый вход в индустрию. Ruby — один из наиболее простых для изучения языков. Существует множество обучающих ресурсов, а вся нужная информация содержится в open source, поэтому не требует дополнительных трат с вашей стороны — только если понадобится какое-то очень специфичное решение, но это вряд ли случится на начальном этапе.
Качественный вход. На Ruby очень просто изучать объектно-ориентированное программирование. Здесь проще читается код, проще приводятся примеры и проще само понимание кода — для новичка это плюс. В некоторых проектах доходит до того, что вы можете читать без скобок код и понимать, что он выглядит почти как обычный текст, за исключением некоторых уникальных программ, которые пролетают где-то в коде.
Высокая конкурентная мотивация. Я могу судить по Воронежу, где годовалый джуниор-разработчик на Ruby может просить зарплату в районе 90 тыс. руб. в месяц. Это достаточно серьёзные деньги. А на входе можно получать от 30 до 40 тыс. руб.
Если вы будете искать работу, то вы должны понимать, что Ruby on Rails — это комьюнити, где люди привыкли работать в стартапах. В 80% это будут небольшие компании, зарубежные или нет, и в меньшей степени — большие компании. Государственные компании также в последнее время переходят на разработку на Ruby on Rails. Они понимают, что платить джависту или дотнетчику за то, что он будет писать год — это очень дорого. Проще заплатить Ruby-разработчику, который стоит чуть подороже, но напишет решение за 2−3 месяца.
Возможность релокации. Здесь речь идёт о знании английского языка: если знаете английский на разговорном уровне или хотя бы можете переписываться, то ваша цена сразу растёт. Есть компании, которые работают на российский рынок и ограничения у таких русскоязычных компаний где-то в районе 3000 долларов. Если вы выйдете на уровень зарубежных компаний, то зарплата будет варьироваться от 2500 до 5000 долларов в американских компаниях. Поэтому советую как можно скорее начинать учить английский язык.
Opensource-головорезы. Open source — это не инхаус-разработка, а разработка на комьюнити: любой человек сможет прийти и оценить ваши наработки, а работодатели и заказчики очень часто требуют показать Github-профиль. Поэтому я советую не только завести аккаунт на Github, но и начать прокачивать его.
Как расти в профессии
Самая главная проблема для начинающих — понять, как правильно писать, что использовать, как использовать. Тут я бы просто посоветовал почитать блоги ведущих разработчиков и изучать практики — именно они позволяют ребятам расти быстрее.
Возможно, вы не сразу поймёте эти практики. Я сам не сразу всё понимал, но по ходу действия вы всё больше будете разбираться в том, что происходит и как это происходит. И вам легче будет принимать лучшие решения.
Пригодится любой предыдущий опыт работы. Например, если вы до этого занимались ремонтом или продажей машин, то наиболее перспективно реализовать себя сможете скорее всего именно в тех проектах, где используется эта тематика.
Для понимания скажу так: старшие разработчики — это, как правило, люди, которые не только хорошо пишут код и умеют дебажить, но и хорошо понимают специфику текущего проекта.
Один и тот же разработчик может показать себя, как опытный в рамках одного проекта и как неопытный на другом проекте. И это связанно именно с тем, что человек должен знать специфику проекта.
Касательно построения карьеры в разработке, считаю, что каждый разработчик должен знать фронтенд в той или иной степени, и не важно — вы будете чистый бекенд или нет. С фронтендом, вёрсткой и разметкой вам всегда придётся работать. Стоит развиваться не только вглубь, но ещё и вширь — поглощать другие сферы.
Сейчас фронтенд усложнился намного больше, чем бекенд. Стоит понимать, как с ним работают, где с ним работают, как выстроить хорошую архитектуру для фронтенда. Потому что зачастую проблемы начинаются с фронтенда и уже потом заканчиваются на бекенде. Сайты сейчас становятся очень большими и тяжёлыми, фронтенд периодически нужно улучшать и делать так, чтобы он меньше весил и быстрее загружался.
Требования постоянно растут к разработчикам и их проектам. И соответственно с базами данных надо уметь работать. Потому что если вы не умеете работать с базами данных, обращаться к ним, то проект будет терять очень много денег и никакой клиент не захочет вам платить хорошие деньги, если вы не можете выстроить хороший фреймворк в данной ситуации под данную задачу.
Моё мнение: чтобы стать современным разработчиком, надо знать фронтенд — хотя бы чуть-чуть, затем изучить бекенд, если это основное направление, а после этого ещё и получить базовые знания DevOps и QA.
Мнение автора и редакции может не совпадать. Хотите написать колонку для «Нетологии»? Читайте наши условия публикации. Чтобы быть в курсе всех новостей и читать новые статьи, присоединяйтесь к Телеграм-каналу Нетологии.
Уроки Ruby
Уроки Ruby для начинающих / #1 — Знакомство с языком Ruby
Видеоурок
Полезная ссылка:
Информация про Ruby
Ruby — мощный и популярный язык программирования. Помимо своей популярности на нём основывается известный фреймворк Ruby On Rails , который позволяет создавать крутые и динамические веб сайты различной тематики. Если взглянуть на рейтинг TIOBE , то язык входит в двадцатку самых популярных языков мира.
Язык появился в 1995 году и считается молодым языком в сравнении с Си или же C++, которые появились в 1972 и 1983 году соответсвенно. Язык имеет ряд преимуществ и специфичных возможностей, которые реализованы исключительно в нем, если брать в сравнение другие популярные языки программирования.
План курса
В ходе видеокурса вы изучите язык Ruby без использования дополнительных фреймворков. Дополнительные курсы по Ruby вы можете найти на нашем сайте .
За курс мы изучим как установить и работать с языком, изучим синтаксис Руби (переменные, циклы, условные операторы), а также более сложные вещи: ООП, работа с файлами, исключения, методы и затронем еще множество других тем.
Установка Ruby на Windows
Для установки Руби на Виндовс используйте RubyInstaller, который можно скачать на официальном сайте по этой ссылке . Скачивайте последнюю версию и устанавливайте её как обычную программу. После завершения установки перед вами будет похожее окно:
На этом окне проследите чтобы галочка обязательно была проставлена, тогда далее откроется другое приложения для установки Ruby в систему.
В открывшемся окне введите поочередно 1 и нажмите Enter , дождавшись конца установки нажмите 2 и Enter и в конце выполните третью команду нажав 3 и Enter .
Установка Руби на Мак
На маке Руби установлен по-умолчанию, поэтому вам не нужно ничего дополнительно делать. Вы можете проверить версию языка в терминале при помощи следующей команды:
Если версия устаревшая, то можно выполнить загрузку новой. Для начала необходимо загрузить менеджер версий Ruby. Это делается через терминал при помощи команды:
После установки менеджера необходимо перезапустить терминал. Выполните следующую команду:
После перезапуска вы можете установить ту версию, которую пожелаете. В нашем случае была установлена версия 2.4.2 :
В конце вы можете еще раз проверить версию и если она по прежнему старая, то просто установите по-умолчанию новую версию:
Ruby
Русский
Программирование на языке Ruby: Учебное пособие. Роганов Е.А. и Роганова Н.А
Настоящее пособие содержит описание языка программирования Ruby и предназначено для .

Rails 4. Гибкая разработка веб-приложений. Сэм Руби
Перед вами новое издание бестселлера «Agile web development with Rails», .

Путь Rails. Подробное руководство по созданию приложений в среде Ruby on Rails. Оби Фернандес
Среда Ruby on Rails стремительно занимает ведущее место в ряду .

Ruby. Объектно-ориентированное проектирование. Сэнди Метц
Мировой бестселлер по программированию на языке Ruby. Книга уже стала .

Head First. Изучаем Ruby. Джей Макгаврен
Вам интересно, почему буквально все вокруг заговорили о языке Ruby? .

Программирование на языке Ruby. Идеология языка, теория и практика применения. Хэл Фултон
Эта книга называется «Путь Ruby». Название нуждается в некотором пояснении. .

JRuby. Сборник рецептов. Джастин Эдельсон, Генри Лю
Интересующемуся языком JRuby вряд ли нужны руководства по Ruby, Rails .
- Книги, 28 августа 2017 в 9:19
- Иван Бирюков

Learn to Program. Крис Пайн
Когда вы пишете программу для компьютера, вы должны «говорить» на .
English
Practical Object-Oriented Design: An Agile Primer Using Ruby. Sandi Metz
The author teaches an object-oriented approach to application development and .
Ruby Data Structures and Algorithms. Christopher Fox
Data structures are presented in a container hierarchy that includes .
Ruby Best Practices. Gregory Brown
In 1993, when Ruby was born, Ruby had nothing. No .
Ruby goes to great lengths to be a purely object .
Ruby Cookbook, 2nd Edition. Lucas Carlson, Leonard Richardson
Why spend time on coding problems that others have already .
Искусство Ruby №1
В последнее время Ruby, что называется «на
слуху». Однако, не смотря на то, что в
Интернете есть достаточно много материала
по этой теме, разобраться с тем, что же собою
представляет Ruby, в чем его преимущества и в
том, как и где его использовать не совсем
просто. В этой статье я попытаюсь не только
рассказать о языке Ruby, но и о технологиях,
связанных с ним. Я позволю себе снабдить
этот обзор некоторыми комментариями,
которые, возможно, покажутся вам
субъективными. Тем не менее, надеюсь, что
они помогут понять причины такой
популярности нового языка и оценить,
насколько же эффективно его можно
использовать в собственных разработках.
Прежде всего, во избежание путаницы,
давайте разберемся с терминологией. Что
такое
Ruby? В чистом виде, это просто язык
программирования. Кроме того, это
транслятор кода (ruby.exe, если мы говорим о
версии для Win32).
Ruby on Rails – платформа (framework) для
разработки Web приложений на базе Ruby.
FreeRIDE и SciTE — IDE и редактор кода для Ruby.
Инсталляция и начало работы
На сегодняшний день последней версией Ruby
является 1.8.4. С сайта http://www.ruby-lang.org/
можно скачать интерпретатор Ruby и
библиотеки. Можно так же скачать FreeRIDE и SciTE.
К слову, если вы не можете скачать несколько
десятков мегабайт – не расстраивайтесь.
Все это входит в комплект Ruby on Rails, который
публиковался
в Спеце, посвященном
Web.
Для запуска Ruby программы достаточно
набрать ruby .
Естественно при этом не стоит забывать о
путях. Если же вы хотите воспользоваться
FreeRIDE под Windows, то сразу включите опцию «Run
process in terminal» в Debugger Preferences. Конечно, FreeRIDE не
слишком функциональная среда разработки,
но, тем не менее, минимальный набор
необходимых функций она обеспечивает.
Помимо редактора, со стандартным набором
функций и подсветкой синтаксиса
присутствует дебаггер, а также
автоматизирован запуск и остановка
программ. Что еще надо для отладки скриптов?
Итак, запускаем первую программу:
puts ‘hello world ‘
Жмем F5, открывается так называемое
терминальное окно, в котором и отображается
искомая фраза. Не забывайте, что вы имеете
дело с транслятором, поэтому перед запуском
программы модифицированный код
обязательно нужно сохранить в файл. Я
попробовал сразу поставить птичку «save files
before running/debug» (меню «edit/ Preferences… /Debugger/Run»), но
ожидаемого эффекта это не дало. Такие
мелкие багги, конечно, имеют место в IDE.
Я позволю себе маленькое лирическое
отступление. За несколько дней, до того, как
приступить к написанию данного обзора я
общался со своим коллегой на предмет
сравнения языков и принципиальной
возможности и целесообразности «отсечения
тупиковых путей развития языков».
Соответственно, мы затронули и вопрос «строгости»
языков. Нужно ли четко определять типы
переменных, нужно ли обязательно вручную
высвобождать объекты и т.д. И вот здесь была
озвучена прекрасная, на мой взгляд, мысль.
Отсутствие строгости в языках – прекрасно,
более того, оно предоставляет кодерам
некоторые замечательные возможности и в
значительной мере упрощает их работу. Но
все это справедливо тогда и только тогда,
когда программист четко представляет, как
это работает и к каким последствиям это
может привести. В противном случае это
может сильно навредить разработчику и не
только затруднить процесс отладки
программы, но и привести к неявным ошибкам в
алгоритмах, которые очень трудно отловить.
Поэтому, возможно, ответ на часто
задаваемый вопрос о том, какой язык стоит
начинать учить – не столь очевиден. Здесь
следует понимать, что имеет в виду
вопрошающий. Или он знает основы
программирования и пытается выбрать для
себя среду разработки для практической
работы с перспективой на будущее. Или он
просто хочет научиться программировать «с
нуля».
Теперь давайте посмотрим, что собою
представляет Ruby, с точки зрения
вышесказанного. Сразу скажу, что Ruby не
является «Си-образным» языком. Создатели
языка называют это преимуществом. Мне же
синтаксис Ruby напомнил одновременно
синтаксис Бейсика и Паскаля. Здесь имеют
место конструкции «BEGIN … END», «IF … THEN ..» и т.д.
Но есть некоторые особенности синтаксиса,
которых лично я не встречал нигде.
Прежде всего, сразу скажу, что этот язык
чувствителен к регистру. Но не в
классическом понимании, как в С, где нельзя
использовать переменную MyVar вместо myvar. Имя
переменной всегда должно начинаться с
маленькой латинской буквы (например myVar).
Если же мы напишем в коде MyVar, то это уже
будет константа. Весьма интересно, не
правда ли? Возможно, у вас возникнет вопрос:
«А зачем?». Ответ очевиден. Ruby –
транслируемый язык, и компилятор не сможет
вам указать на ошибку при попытке присвоить
константе новое значение. А когда вы
наглядно видите отличие между константой и
переменной (даже в чужом коде), вы постоянно
будете начеку. Как по мне – весьма удобно.
Переменные в Ruby объявлять не надо. При
первом вызове Ruby сам догадается о типе
переменной. Второй пример более интересный:
print(‘Enter your name: ‘ )
name = gets()
puts( «Hello #
Здесь программа спрашивает имя пользователя и после его ввода выводит его на экран вместе со словом «Hello». Обратите внимание на то, как передается значение переменной name. Оно как бы врезано непосредственно в строку, при этом признаком переменной является набор символов #<…>. Эквивалентным выражением будет и следующая строка
puts( «Hello » + name). Вместо двойных кавычек можно использовать одинарные, но при этом «врезать» значение переменной уже не удастся.
С тем же успехом можно подставлять значения не только строковых переменных, используя #<…>. Результатом следующего выражения будет вывод на экран числа 9.
Отличие print от puts в том, что в последнем случае происходит перевод строки. Перевод строки можно так же реализовать и с помощью директивы n, а вставку табуляции — t. Но это будет работать так же только тогда, когда используется двойная кавычка. Эквивалентом puts(‘Enter your name: ‘ ) будет print(“Enter your name:n” ).
К слову, круглые скобки – опциональны. Выражение puts «#<(1+2) * 3>» так же будет работать.
Конечно, малоприятным моментом является искажение русской кодировки при работе со строками. Скажем, результатом выполнения следующей строки кода будет некая шифрограмма:
print(‘Введите ваше имя: ‘ )
Я попробовал запустить эту программу в FARe, который спокойно «разговаривает» по-русски, но получил тот же результат. В документации присутствует небольшой раздел, посвященный кодировке, но конкретных рецептов там не приводится.
Объектно-ориентированная концепция Ruby
Конечно, в рамках обзора невозможно полностью описать весь синтаксис языка. Но я не случайно начал с обзора работы со строками. Это связано с тем, как позиционируется язык. Но давайте теперь рассмотрим еще один пример, который продемонстрирует, как происходит преобразование типов в Ruby.
taxrate = 0.175
print «Enter price (ex tax): »
s = gets
subtotal = s.to_f
tax = subtotal * taxrate
puts «vat on $#
Смысл кода, приведенного выше – очевиден. Считается сумма с налогом. Но обратите внимание на строчку
Несложно догадаться, что to_f это метод объекта s. Следовательно, становится очевидным, что любой тем данных в Ruby – класс, а любая переменная – объект, или, если хотите, экземпляр класса. Это очень похоже на концепцию .Net вообще и C# в частности. Более того, если анализировать следующий фрагмент кода x = 1 + 2, то + будет методом, а 2, соответственно, передаваемым ему параметром. С точки зрения концепции языка логичнее было бы написать x=1.+(2) . Мне захотелось проверить это предположение, и я ввел в редакторе кода следующее выражение
Представьте мое удивление, когда в результате выполнения программы на экране высветилась тройка. На самом деле в документации по Ruby позиционируются основные типы данных. Но нужно четко понимать, что на самом деле это классы.
Здесь я не могу не вспомнить одного из интервью David’а I, в котором он сказал, что мечтает реализовать IDE для Ruby в рамках BDS. Лично мне совершенно понятна его заинтересованность в этом. Объектно-ориентированный подход дает массу технологических преимуществ, позволяющих создавать качественные и функциональные IDE продукты и, тем самым, повышать скорость разработки конечных решений. Достаточно вспомнить, что MDA реализация от Borland получила перспективы лишь с переходом на .Net. Учитывая примитивность FreeRide (как же хочется увидеть в редакторе, после нажатия точки, выпадающий список всех методов), у DevCo есть прекрасная перспектива создать средство разработки, которое может стать реальным конкурентом ASP .Net в своем сегменте рынка.
И еще одна маленькая ремарка. В своей предыдущей статье я делал краткий
обзор нового языка
D. И автор этого языка Уолтер Брайт высказывал мысль о том, что объекты уместны лишь там, где это действительно нужно. В Ruby реализован другой принцип – объектами является все. Я не буду судить у преимуществах каждого из этих подходов. На мой взгляд, основной вопрос заключается в том, как правильно этим распорядиться.
Теперь давайте посмотрим, как в Ruby создаются классы. Но прежде немного определимся с терминологией.
Декларация класса начинается со слова class (нижний регистр), затем следует его имя (начинаться должно с верхнего регистра). Заканчивается декларация класса ключевым словом
end.
class Magazine
def set_mag(aName)
@myname=aName
end
def get_mag
return(@myname)
end
end
В теле класса определены два метода set_mag и get_mag. Следующий фрагмент кода проиллюстрирует, как создается экземпляр класса.
likedMagazine = Magazine.new
likedMagazine.set_mag(‘Xakep’)
puts(likedMagazine.get_mag)
Обратите внимание на переменную @myname, используемую внутри методов. Знак «@» перед именем переменной означает, что она определена для каждого экземпляра класса и не может вызываться вне класса. Своеобразный способ задать область видимости или, если угодно, реализовать инкапсуляцию.
Кстати, слово return в методе get_mag – опционально. На самом деле, Ruby в качестве возвращаемого значения возьмет последнее выражение.
То, что Ruby полностью объектно-ориентированный язык доказывает следующая строка.
В качестве результата будет выведено слово Object.
puts self выдаст – main. Обратите внимание на то, что Object с синтаксической точки зрения – константа.
На самом деле все создаваемые в Ruby классы наследуются от класса Object. Среди методов, описанных в этом классе, есть такой как to_s, определяющий строковое представление класса. Что бы проверить это, достаточно в последнем примере дописать еще одну строку
Программа выдаст вполне корректный, хотя и малоосмысленный результат.
Классы в Ruby никогда не бывают закрытыми. В существующий класс всегда можно добавить метод. Это работает как для стандартных классов, так и для «самописных». Иными словами мы всегда можем переопределить метод стандартного класса в наследнике.
class Magazine
def set_mag(aName)
@myname=aName
end
def get_mag
return(@myname)
end
def to_s
@myname
end
end
likedMagazine = Magazine.new
likedMagazine.set_mag(‘Xakep’)
puts likedMagazine.to_s
В приведенном выше коде показано переопределение метода to_s. Теперь результатом выполнения программы буде не внутренний идентификатор объекта, а название (точнее, значение внутренней переменной myname) журнала.
Еще один метод, описанный в классе Object – initialize. Это специальный метод, который вызывается при создании объекта. Он может оказаться очень удобным для задания начальных значений переменных создаваемого объекта.
Теперь давайте попробуем разобраться с наследованием в Ruby. Естественно, что эта концептуальная идея ООП так же реализована. Вот пример реализации:
class Magazine
def set_mag(aName)
@myname=aName
end
def get_mag
return(@myname)
end
def to_s
@myname
end
end
Врубись в Ruby: подборка книг по Ruby и Ruby on Rails
Ruby начал разрабатываться 23 февраля 1993 года и вышел в свет в 1995 году. Название навеяно языком Perl, многие особенности синтаксиса и семантики из которого заимствованы в Ruby (pearl — «жемчужина», ruby — «рубин»). Целью разработки было создание «настоящего объектно-ориентированного», лёгкого в разработке, интерпретируемого языка программирования.
Язык обладает независимой от операционной системы реализацией многопоточности, строгой динамической типизацией, сборщиком мусора и многими другими возможностями. Кроссплатформенная реализация интерпретатора языка является полностью свободной.
Ruby on Rails (RoR) — фреймворк, написанный на языке программирования Ruby. Он реализует архитектурный шаблон Model-View-Controller для веб-приложений, а также обеспечивает их интеграцию с веб-сервером и сервером баз данных. Является открытым программным обеспечением и распространяется под лицензией MIT.
Чтобы помочь вам в изучении этих технологий, мы собрали подборку книг. Как всегда, если вы знаете книгу, которая не попала в этот материал, делитесь ей в комментариях.
Ruby Best Practices
Эта книга предназначена для тех, кто хочет писать на Ruby как профи. В ней рассказывается, как проектировать красивые API и работать с приёмами функционального программирования. Новичкам книга не подойдёт, а вот тем, кто уже разбирается в Ruby, она точно пригодится.
Путь Ruby
Цель данной книги — научить читателей эффективно использовать язык Ruby. В книге рассматривается версия Ruby 2.1. Издание содержит около 400 различных примеров, сопровождающихся четкой постановкой задачи и ее решением с подробными комментариями.
Ruby on Rails для начинающих. Изучаем разработку веб-приложений на основе Rails
Книга отличается достаточно низким входным порогом. Для ее изучения необязательно знать основы веб-разработки. В книге материал о Ruby on Rails, популярного фреймворка для разработки веб-приложений, дается с нуля. Автор Майкл Хартл, помимо Ruby on Rails, знакомит читателя с основами самого языка Ruby, языка запросов SQL, CSS, HTML. В книге много внимания уделено практическому использованию возможностей фреймворка. Также можно ознакомиться с фрагментом книги.
Learn Ruby the Hard Way
А эта книга пригодится именно начинающим. Её сложность увеличивается по нарастающей, и в каждом следующем разделе используются навыки, полученные в предыдущих.
Head First. Изучаем Ruby
С «Изучаем Ruby» вы в легкой и увлекательной форме на практике освоите все возможности этого языка, который сначала стремительно захватил сердца программистов Калифорнии, а затем и России.
Прочитав эту книгу, вы научитесь писать элегантный код с применением всех его уникальных особенностей.
Ruby Hacking Guide
В этой книге подробное разбирается внутреннее устройство языка Ruby. Знать сам Ruby читателю не обязательно, но вот знание C и, в особенности, принципов ООП будет огромным плюсом.
Ruby Essentials
Эта книга отлично подойдёт для знакомства с Ruby. В ней разбираются все необходимые основы: от установки языка до обработки файлов и ООП. Каждая тема снабжена понятными примерами.
Using Blocks in Ruby
В этой книге рассказывается об одной из самых интересных фич Ruby — блоках. Они похожи на замыкания и лямбды и используются как в простых структурах языка вроде блоков, так и в сложных приёмах.
Ruby Programming
Эта книга разбита на несколько секций, различающихся по сложности. Сперва рассказывается о настройке и основных возможностях Ruby, а затем речь идёт о стандартной библиотеке и темах для продвинутых.
Ruby on Rails Tutorial: Learn Web Development with Rails
В этой книге рассказывается об основах веб-разработки на популярном фреймворке Ruby on Rails. Чтобы дать читателю представление о работе с реальными проектами, в книгу включены примеры использования Git, GitHub и Heroku.
Objects on Rails
Эта книга посвящена использованию принципов ООП в веб-проектах на Ruby on Rails. Фокус смещён в сторону практических решений, которые берут наилучшее от «пути Rails» и объектно-ориентированного подхода.
Также советуем ознакомиться с этим руководством по стилю оформления Ruby-кода и официальными гайдами по Ruby on Rails.