Web-studio46.ru

Обучение и образование
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Что такое ruby программирование

Почему 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, но и начать прокачивать его.

Читать еще:  Программирование в access 2016

Как расти в профессии

Самая главная проблема для начинающих — понять, как правильно писать, что использовать, как использовать. Тут я бы просто посоветовал почитать блоги ведущих разработчиков и изучать практики — именно они позволяют ребятам расти быстрее.

Возможно, вы не сразу поймёте эти практики. Я сам не сразу всё понимал, но по ходу действия вы всё больше будете разбираться в том, что происходит и как это происходит. И вам легче будет принимать лучшие решения.

Пригодится любой предыдущий опыт работы. Например, если вы до этого занимались ремонтом или продажей машин, то наиболее перспективно реализовать себя сможете скорее всего именно в тех проектах, где используется эта тематика.

Для понимания скажу так: старшие разработчики — это, как правило, люди, которые не только хорошо пишут код и умеют дебажить, но и хорошо понимают специфику текущего проекта.

Один и тот же разработчик может показать себя, как опытный в рамках одного проекта и как неопытный на другом проекте. И это связанно именно с тем, что человек должен знать специфику проекта.

Касательно построения карьеры в разработке, считаю, что каждый разработчик должен знать фронтенд в той или иной степени, и не важно — вы будете чистый бекенд или нет. С фронтендом, вёрсткой и разметкой вам всегда придётся работать. Стоит развиваться не только вглубь, но ещё и вширь — поглощать другие сферы.

Сейчас фронтенд усложнился намного больше, чем бекенд. Стоит понимать, как с ним работают, где с ним работают, как выстроить хорошую архитектуру для фронтенда. Потому что зачастую проблемы начинаются с фронтенда и уже потом заканчиваются на бекенде. Сайты сейчас становятся очень большими и тяжёлыми, фронтенд периодически нужно улучшать и делать так, чтобы он меньше весил и быстрее загружался.

Требования постоянно растут к разработчикам и их проектам. И соответственно с базами данных надо уметь работать. Потому что если вы не умеете работать с базами данных, обращаться к ним, то проект будет терять очень много денег и никакой клиент не захочет вам платить хорошие деньги, если вы не можете выстроить хороший фреймворк в данной ситуации под данную задачу.

Моё мнение: чтобы стать современным разработчиком, надо знать фронтенд — хотя бы чуть-чуть, затем изучить бекенд, если это основное направление, а после этого ещё и получить базовые знания DevOps и QA.

Мнение автора и редакции может не совпадать. Хотите написать колонку для «Нетологии»? Читайте наши условия публикации. Чтобы быть в курсе всех новостей и читать новые статьи, присоединяйтесь к Телеграм-каналу Нетологии.

Почему Ruby — особенный язык

Юки­хи­ро Мацу­мо­то, автор Ruby, захо­тел создать совер­шен­ный объектно-ориентированный язык, что­бы в нём мак­си­маль­но пол­но рабо­тал ООП-подход. Кро­ме это­го, новый язык дол­жен соблю­дать свод пра­вил, кото­рых при­дер­жи­вал­ся сам Юки­хи­ро и кото­рые сей­час назы­ва­ют­ся «Путь Ruby». Вот неко­то­рые из них:

  1. Язык для чело­ве­ка, а не для ком­пью­те­ра — про­грам­ма долж­на читать­ся лег­ко даже при мини­маль­ном зна­нии Ruby, а всё осталь­ное берёт на себя ком­пью­тер.
  2. Про­сто, но не слиш­ком про­сто — всё долж­но быть про­стым в про­грам­ме, но толь­ко если для это­го не при­дёт­ся услож­нять что-то дру­гое.
  3. Прин­цип наи­мень­шей неожи­дан­но­сти — все коман­ды и дей­ствия в Ruby долж­ны рабо­тать имен­но так, как от них ожи­да­ет про­грам­мист. Если он встре­ча­ет­ся с чем-то новым в язы­ке, то это не долж­но его уди­вить, а, наобо­рот, он вос­при­мет это как что-то есте­ствен­ное.
  4. «Не нуж­но с этим бороть­ся» — про­грам­ми­сту нуж­но исполь­зо­вать то, что есть в язы­ке, вме­сто того, что­бы пытать­ся под­стро­ить язык под себя.

Пер­вая вер­сия Ruby вышла в 1995 году, и за это вре­мя язык вырос от про­ек­та одно­го чело­ве­ка до боль­шо­го комью­ни­ти и 1,27 мил­ли­о­на строк кода. Сей­час Ruby — уни­вер­саль­ный крос­сплат­фор­мен­ный язык про­грам­ми­ро­ва­ния и под­дер­жи­ва­ет­ся все­ми совре­мен­ны­ми вер­си­я­ми Linux и MacOS.

Особенность языка

Пре­лесть и сила Ruby в том, что в нём вооб­ще всё — это объ­ект. Даже чис­ла, зна­че­ния пере­мен­ных и типы дан­ных — это тоже объ­ек­ты. Напри­мер, у вас есть сло­же­ние, кото­рое реа­ли­зу­ет­ся так:

7 и 5 — чис­ла, за кото­рые отве­ча­ет класс Numeric, и этот класс зна­ет про знак сло­же­ния. Давай­те немно­го рас­ши­рим воз­мож­но­сти это­го клас­са:

С это­го момен­та у всех чисел появ­ля­ет­ся метод plus, кото­рый скла­ды­ва­ет это чис­ло со вто­рым. И таким же спо­со­бом мож­но рас­ши­рить свой­ства и воз­мож­но­сти каж­до­го эле­мен­та в про­грам­ме. Сде­лать авто­ма­ти­че­ский пере­вод из минут в секун­ды? Лег­ко:

И так мож­но делать с чем угод­но, без огра­ни­че­ний и несов­ме­сти­мо­сти типов. Да и какая может быть несов­ме­сти­мость, если типы — это тоже объ­ек­ты, кото­рые мож­но изме­нить. Это дела­ет Ruby похо­жим на C++, где есть пере­груз­ка опе­ра­то­ров и воз­мож­ность исполь­зо­вать коман­ды не так, как заду­ма­но изна­чаль­но.

Синтаксис

На пер­вом месте в Ruby сто­ит чита­бель­ность и про­сто­та, поэто­му этот язык реаль­но осво­ить за неде­лю на базо­вом уровне.

Из замет­ных штук — не нуж­но ста­вить в кон­це каж­дой коман­ды точ­ку с запя­той и все вло­жен­но­сти обо­зна­ча­ют­ся про­бе­ла­ми, точ­но так же как в Python.

Ком­мен­та­рии. Пишем в нача­ле стро­ки знак решёт­ки #, и за ней — ком­мен­та­рий любой дли­ны. Ещё мож­но напи­сать ком­мен­та­рий в несколь­ко строк:

При­сва­и­ва­ние и мате­ма­ти­че­ские опе­ра­то­ры. Тут всё про­сто: при­сва­и­ва­ние — это знак рав­но «=», а мате­ма­ти­че­ские опе­ра­то­ры такие же, как в жиз­ни — +, -, * и т. д.

Типы дан­ных. Так как в Ruby всё объ­ек­ты, то даже типы дан­ных — это тоже объ­ек­ты, а зна­чит мож­но менять их свой­ства и пове­де­ние. По этой при­чине в Ruby очень мало встро­ен­ных типов дан­ных. Если про­грам­ми­сту пона­до­бит­ся что-то слож­нее, чем встро­ен­ные типы, он лег­ко может создать свой тип с нуля или на осно­ве встро­ен­но­го.

Целые чис­ла: Fixnum (до 2³⁰) и Bignum . Вто­рой тип может хра­нить в себе целые чис­ла вооб­ще любо­го раз­ме­ра, если для них хва­тит места в опе­ра­тив­ной памя­ти.

Дроб­ные чис­ла: Float (чис­ло с пла­ва­ю­щей запя­той), Rational (раци­о­наль­ные чис­ла) и Complex (ком­плекс­ные чис­ла с мни­мой еди­ни­цей).

Стро­ка: String , после­до­ва­тель­ность бай­тов в коди­ров­ке UTF-8, могут быть любой дли­ны.

Сим­вол в Ruby — это не один какой-то сим­вол, а про­сто любая стро­ка, кото­рая оста­ёт­ся неиз­мен­ной. Что­бы ком­пью­тер понял, что это сим­вол, перед ним ста­вит­ся двое­то­чие: symbol = :это_тоже_символ .

Диа­па­зон — за него отве­ча­ет класс Range и в нём хра­нит­ся непре­рыв­ная после­до­ва­тель­ность целых чисел:

d1 = 1..5 # Две точки — от 1 до 5 включительно.
d2 = 1. 5 # Три точки — от 1 до 4, а 5 уже не входит в этот диапазон.

Услов­ный опе­ра­тор. Стан­дарт­ная фор­ма выгля­дит при­выч­но:

if x > 0 then
puts «x — положительное число» #puts выводит значение на экран
elsif x
puts «x — отрицательное число»
else
puts «x — нуль»
end

Но есть и несколь­ко дру­гих вари­ан­тов услов­но­го опе­ра­то­ра, напри­мер такой:

# Unless означает «Если условие не выполняется, то. »
unless x > 3 then
puts x.to_s # Выведет значение x, если оно НЕ больше трёх.
else
puts «очень много, не сосчитать»
end

Цик­лы. В Ruby семь видов цик­лов, пото­му что мож­но менять места­ми нача­ло цик­ла и усло­вия выхо­да из него, добав­лять счёт­чи­ки или опе­ра­тор при­ну­ди­тель­ной оста­нов­ки. Вот как выгля­дят клас­си­че­ские цик­лы со счёт­чи­ком, с пред­усло­ви­ем и с посту­сло­ви­ем:

Клас­сы, объ­ек­ты и мето­ды. Так как Ruby пол­но­стью объектно-ориентированный язык, то в нём рабо­та­ет всё, что толь­ко есть в ООП:

  • пуб­лич­ные и при­ват­ные мето­ды,
  • кон­струк­то­ры,
  • насле­до­ва­ние (с помо­щью встро­ен­ных при­ме­сей),
  • пере­опре­де­ле­ние клас­са,
  • и всё осталь­ное, что вам толь­ко пона­до­бит­ся сде­лать с объ­ек­та­ми или клас­са­ми.

Для чего нужен Ruby

Так как Ruby — скрип­то­вый язык, то его мож­но при­ме­нять вооб­ще в любых сфе­рах раз­ра­бот­ки. Напри­мер, мож­но напи­сать пар­сер стра­ниц, кото­рый будет нахо­дить на сай­те интернет-магазина все кар­точ­ки това­ров и ска­чи­вать их назва­ние, цену и фото. Или мож­но сде­лать гене­ра­тор слож­ных паро­лей для всех посе­ти­те­лей сай­та, что­бы им не при­хо­ди­лось при­ду­мы­вать его само­сто­я­тель­но.

Так­же на Ruby пишут мобиль­ные игры и при­ло­же­ния под Android и iOS, исполь­зуя Ruboto или RubyMotion.

Но луч­ше все­го Ruby рабо­та­ет в паре со сво­им зна­ме­ни­тым фрейм­вор­ком Ruby on Rails для созда­ния веб-приложений. Он поз­во­ля­ет быст­ро создать сайт со слож­ной струк­ту­рой, дина­ми­че­ски­ми стра­ни­ца­ми и при этом обой­тись без изу­че­ния SQL-запросов и рабо­ты с база­ми дан­ных.

Ещё эту плат­фор­му любят в стар­та­пах, пото­му что на ней мож­но в корот­кие сро­ки раз­вер­нуть про­то­тип про­ек­та и сра­зу уви­деть его силь­ные и сла­бые сто­ро­ны.

Что сделано на Ruby

Ruby исполь­зу­ют ком­па­нии раз­но­го уров­ня, в том чис­ле NASA, Motorola, Google или GitHub. Вот часть про­ек­тов, кото­рые напи­са­ны на Ruby или Ruby on Rails:

  • Twitter,
  • Kickstarter,
  • SoundCloud,
  • Redmine (систе­ма баг­тре­кин­га),
  • Inkscape (рабо­та с век­тор­ной гра­фи­кой),
  • GitLab (управ­ле­ние репо­зи­то­ри­я­ми кода),
  • SketchUp (трёх­мер­ное моде­ли­ро­ва­ние),
  • Netflix (сери­а­лы),
  • Bloomberg (новост­ное агент­ство).

Если посмот­реть на этот спи­сок, то ста­но­вит­ся понят­но, что Ruby осо­бен­но хорош в веб-разработке и созда­нии сай­тов со слож­ной струк­ту­рой.

С чего начать

Для стар­та вам даже не нуж­но ниче­го уста­нав­ли­вать на ком­пью­тер — исполь­зуй­те онлайн-интерпретатор onlinegdb или rextester.

Что­бы луч­ше разо­брать­ся в язы­ке или его воз­мож­но­стях, почи­тай­те руко­вод­ство «Ruby за 20 минут» на офи­ци­аль­ном сай­те Ruby. Един­ствен­ный момент — это машин­ный пере­вод ори­ги­наль­ной ста­тьи, как и всех осталь­ных рус­ско­языч­ных мате­ри­а­лов на этом сай­те. Поэто­му если зна­е­те англий­ский — луч­ше сра­зу читай­те на нём.

Если есть жела­ние дос­ко­наль­но разо­брать­ся в язы­ке, реко­мен­ду­ем кни­гу Хэла Фул­то­на «Про­грам­ми­ро­ва­ние на язы­ке Ruby» (The Ruby Way).

Искусство 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 $# is $#, so grand total is $# «

Смысл кода, приведенного выше – очевиден. Считается сумма с налогом. Но обратите внимание на строчку

Несложно догадаться, что 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 (рус. Рубин, транс. Руби, униз. Раби) — интерпретируемый (скриптовый) язык программирования общего назначения, а также DSL для Rails.

Содержание

[править] История

Некий расовый японский программист Юкихиро Мацумото aka Matz, несмотря на более чем десятилетний опыт разработки, так и не смог осилить ни один из скриптовых языков и, сославшись на их ущербность, создал свой собственный язык, состоящий почти полностью из ништяков, спиженных из других популярных языков, чего и не скрывает. При этом на данный момент языку уже 20 лет, а известен он стал буквально последние несколько лет, и то благодаря написанному на нем фреймворку Rails и наконец-то доведенной до ума документации.

Читать еще:  Программирование мобильных приложений с нуля

[править] Плюсы и минусы

[править] За что любят

  • ООП, причем в стиле SmallTalk, а не крестов
  • Активное комьюнити
  • Няшный синтаксис
  • Высокая зарплата
  • Поддержка кучи модных фич
  • Rails
  • Гемы, тысячи их (хотя по сравнению с другими языками, либ в рубях таки маловато)
  • Можно пилить либы на C, что выводит производительность приложения на космический уровень (если не наговнокодить)
  • Поднимает ЧСВ пишущих на нем

[править] За что ненавидят

  • Плохо работает на венде
  • Отсутствие реальной многопоточности и этот ваш GIL [1]
  • Очень мало вакансий и 95% из них на рельсы [2]
  • Родной интерпретатор MRI достаточно медленный, и умеет использовать только одно ядро процессора
  • Жрет памяти, как не в себя
  • Проект, написанный ранее на руби и получивший должное развитие, как правило, переписывается на жабу или скалу [3]
  • Нету нормальных доков на русском
  • Высокий порог входа
  • Минималистичная стандартная библиотека, из-за чего на любой чих приходится доставлять сторонние либы, каждая из которых, в свою очередь, зависит еще от десятка-двух, что приводит к настоящему аду зависимостей в проекте
  • Стандартная библиотека, а вслед за ней и все остальные жутко любят менять API, что ломает не только обратную, но и прямую совместимость, причем в минорных версиях — проект, написанный на 2.1.5, вполне может не запуститься на 2.2.0
  • Одиночное наследование без абстрактных классов и интерфейсов порою может вылезти боком
  • Некоторые новоиспеченные адепты настолько увлекаются переопределением всего и вся и конструированием классов на лету, что порождают тонны абсолютно нечитаемого кода в лучших традициях Perl’а
  • Хипстерский

[править] Чем доставляет

Руби ценится в первую очередь за скорость разработки, синтаксис, ориентированный на рутину, кучу готовых решений, а так же уникальное сочетание поддержки всякой функциональной модноты и традиционного императивного подхода. Встроенная в язык поддержка профайлеров и тестов заставляет здорово оргазмировать тех, кто знает, что это такое, и просто повышает ЧСВ у остальных. При этом степень задротства регулируется в зависимости от задач, а наличие хорошей документации на английском, а иногда и на русском, снижает порог входа до минимума. Скорость работы скриптов на руби сливает аналогичным пистоновским всего в 7 из 10 тестов, что вполне вменяемый результат для интерпрайзного языка. Ну а еще говорящие на C могут высказаться тут, и если повезет, то стать соавтором языка.

[править] Имплементации

Существует несколько вариантов интерпретаторов языка ruby, основным считается MRI, который пилит Matz.

  • MRI — Matz ruby implementation, является тем самым православным и расово верным руби интепретатором японца
  • JRuby — Интерпретатор, выполняющий ruby код в JVM машине, за счет чего получает реальную многопоточность и возможность юзать ништяки из жабы. Используется, впрочем, редко, так как во-первых, теряется возможность юзать библиотеки, напиленные с рассчетом на MRI, а во-вторых, по отжиру памяти и тормознутости является бесспорным лидером среди большого семейства интерпретаторов, использующих JVM
  • IronRuby — то же, что и JRuby, только под .Net
  • Rubinius — уже давно грозится показать все другим имплементациям кузькину мать, но на данный момент так и не взлетел, не смотря на большое кол-во инвестиций.

[править] Rails

Веб-фреймворк некой компании 37signals Basecamp, внезапно вызвавшая интерес, как и к самому фреймворку, так и в целом к языку ruby. Бытует мнение, что, если б не рельсы, вполне вероятно, что о японской поделке никто бы и не узнал. На данный момент по праву считается одним из самых развитых веб-фреймворков, однако пальма первенства уже давно и успешно проебана: та же питоновская Джанга развивается в разы быстрее и обрастает фичами чуть ли не каждый день, да и всякие похапешные поделки типа Symfony и Yii и даже серверный жабоскрипт в лице Node.js уже обогнали Рельсы по популярности [4].

  • За простоту и удобство
  • Скорость разработки
  • Не надо знать этот ваш SQL, ведь есть удобный ActiveRecord
  • Даже jquery ставится с помощью rubygems
  • Поддержка таких ништяков как CoffeeScript, SASS, LESS из коробки
  • Рельсы решето
  • Для масштабирования проекта на рельсах требуется вливание тонн нефти, алсо это проблема скорее интерпретатора MRI, чем веб-фрейморка и языка в целом
  • Хоть сколько-нибудь серьезную работу с базой ActiveRecord не вывозит, и SQL учить таки приходится
  • Кроме того ActiveRecord сам по себе демонстрирует не самый удачный подход к построению ORM, и при достаточно сложной структуре базы даже при условии не сильно большой нагрузки работать становится неудобно
  • Разработка под windows = боль

[править] Рельсы — решето

Локальный мем в ruby комьюнити, носит схожий смысл с не падающей плазмой. Долгое время, рельсоводов не заботила ситуация с безопасностью: считалось, что уязвимости — удел пехапэ со всякими cms by Vasya Opasniy, а их это не касается. Внезапно это оказалось не так.

[править] Истоки

Все началось, с того, что ояш школьник из этой страны Егор Хомяков обнаружил уязвимость, и отправил репорт в багтрекер rails на гитхабе. Но был послан контрибьютарами, после чего разгневанный школьник решил устроить экстерминатус и вообще показать кузькину мать. И таки сделал это, используя ту же самую уязвимость в гитхабе, который в качестве веб-фрейморка использует… да, анон, таки рельсы. После чего Егор смог отправить коммит в репозиторий rails, несмотря на то, что как таковых прав на данное действие он не имел. От этого и гитхаб, и контрибьюторы рельсов начали срать кирпичами, школьника на время забанили, а багу таки исправили.

[править] Продолжение банкета

В целом весь последующий 2013 год, параллельно с 4 версией рельсов, пилились периодические секьюрити фиксы. А очередное обновление рельсов всегда сопровождалось фразами: решето, друшлак, рельсы решето, etc…

[править] Холивары

[править] Ruby vs Python

Так как оба языка довольно похожи, то периодически какой-нибудь пэхапэшник, уставший от постоянных унижений со стороны программистов, решается перейти на что-то крутое и, естественно, задает вопрос на какой-нибудь хабре [5], [6]. В качестве аргументов пистонщики традиционно тыкают в свою интерпрайзность, серьезность, четкий code-style и производительность (весьма относительную, но в сравнении с рубями таки нехилую). На что рубисты отвечают, что джанга хуйня, а рельсы рулят, и не забывают про давнюю боль пистона со второй и третьей версией, от которой питоноводы так и не избавились (справедливости ради, в рубях при переходе даже между минорными версиями можно огрести достаточно похожие проблемы). Потом обычно идут унылые обсуждения синтаксиса, отступов питона и библиотек. Стоит отметить, что в плане web-разработки большой разницы между этими двумя языками нет, а ни для чего, кроме этого, Ruby, в отличии от Python’а, практически не используется.

[править] Rails != Ruby

Ruby? Это такой DSL для написания Rails-приложений?

Несмотря на всю крутость раби как языка, не существует ни одной вакансии отличной от рельс (иногда может идти вместе с синатрой). При этом в качестве значимости фреймворка обычно указывается, что когда-то твиттер работал на сильно переписанных под себя рельсах, правда есть еще и гитхаб. Проектов же, написанных на самом раби, в природе достаточно мало, даже на cyberforum он лежит в разделе веб-языков, хотя это язык общего назначения, что символизирует и отлично троллит начинающих рельсоводов. Сами же рельсы ни чуть не менее няшные и удобные, чем раби, задают тренды среди веб-фреймворков и охуеть как тормозят даже на очень мощном железе, что лечится кэшированием всего и вся либо же переходом на синатру.

[править] Ruby и Windows

Сущий ад и погибель ждут любого, кто попытается разрабатывать на этом языке под вендой. Суть в том, что Ruby разрабатывался как язык максимально открытый, и родная платформа для него Linux. Большинство гемов (местное название библиотек) просто не тестируется под вендой. Инсталлятор языка выглядит как убогий костыль, содержит в себе вперемешку исходники интерпретатора, компилятор Си и еще какие-то хаки, которые не работают, если, например, в пути к папке установки есть кириллица или пробелы (причем ошибка выяснится только при попытке установить какой-нибудь гем, написанный на Си и требующий нормального компилятора). А, например, драйвер для Mysql вообще не работает, пока не перекинешь dll из папки мускула в папку с гемами. Можно, конечно, использовать SQLite, но кому он нахуй нужен. А также отправка почты, настройка веб-сервера, отличного от стандартного, и еще тонна всяких проблем, о которых лучше не знать. Поэтому грамотный анон заранее ставит виртуальную машину с бубунтой и наслаждается разработкой под рельсы, ну или качает готовый образ с настроенным окружением [7].

[править] Что в итоге

В реальности же руби вполне вменяемый язык с высокой зарплатой, почти как у жабы и шарпа, при этом в разы их няшнее и продуманнее, с кучей синтаксического сахара и годным, хоть и относительно небольшим комьюнити. Но, несмотря на простоту и юзерфрендливость, сделать что-то годное без полного понимания, что ты делаешь не получится: нужно будет читать и вникать в манулы на английском. Свой вклад вносит коварный Python — порог входа ниже, комьюнити сильно больше, как следствие предыдущего — наличие сотен библиотек и фреймворков на все случаи жизни, при этом область применения не ограничивается одним только вебом, а по количеству вакансий одна только Джанга сопоставима со всеми рубями. И все, чем придется пожертвовать за эту радость — это отсутствие некоторого синтаксического сахара, что на самом деле заставляет писать более однообразный и, соответственно, понятный код. Profit жи. И самое главное, почему начинающий быдлокодер не любит руби — это то, что поднять визитку и правда быстрее и легче на пыхе, а объяснить заказчику, почему первокурсник Вася может сделать сайт за 5к рублей, а ты за 50к, очень сложно. При этом, когда твой уровень и уровень твоих заказчиков поднимается до такого, что за указание пыха в твоем резюме будут громко смеяться, ты уже вряд ли захочешь вообще программировать, и скорее всего будешь каким-нибудь анал-итиком или менеджером проекта, которому уже глубоко похуй, на чем там пишут его прогеры, да и зарплата там уже совсем другая. С другой стороны, если ты джуниор и готов учиться, то руби научит писать более-менее красивый код. Ну или не научит ничему.

Ссылка на основную публикацию
Adblock
detector