Ruby — всё по этой теме для программистов


Оглавление (нажмите, чтобы открыть):

Можно ли научиться программировать на Ruby on Rails с нуля за 4 месяца

Научиться кодить на Ruby on Rails за четыре месяца вполне реально, утверждают ребята из компании «Хороший программист». С 3 октября стартует их онлайн-интенсив по Ruby on Rails. Его создатели обещают, что старательные ученики даже с нулевыми знаниями кодинга к 22 января станут продвинутыми junior-разработчиками и смогут трудоустроиться. Давайте разберёмся, на чём основана их уверенность.

Освоение Ruby on Rails начинается с азов программирования

Дети, начиная исследовать мир, задаются простыми вопросами, которые важны для понимания происходящего вокруг. Взрослея, мы во время обучения пытаемся сразу ухватиться за самую суть, не подготовив фундамент для этих знаний. В итоге предмет вроде осваиваем, но не хватает прочного основания, глубокого понимания логики процессов. Интенсив по Ruby on Rails от «Хорошего программиста» начинается с базовых понятий: что такое алгоритмы, как работают программы, как пишется хороший код, как думают программисты.

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

Много практики и реальное портфолио на выходе

На практических жизненных примерах вы изучите всё, что нужно веб-программисту: протоколы, JavaScript, HTML, CSS, ООП, XML, JSON, SQLite, Bootstrap, Ruby, Ruby on Rails, тестирование. Даже если сейчас для вас это какая-то тарабарщина, к концу года вы будете хорошо понимать, что скрывается за этими словами. А по окончании курса сможете гордо демонстрировать портфолио из 12 полноценных Ruby- и Ruby-on-Rails-приложений. К слову, это сейчас один из самых востребованных веб-фреймворков: Ruby on Rails использовался при создании Twitter, Airbnb, Groupon, Basecamp и тысяч других стартапов.

Также вы подготовите дипломный проект: реализуете свою собственную идею с помощью преподавателей курса.

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

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

И на сладкое — отзыв выпускника прошлого потока. Больше отзывов можно прочитать на Rubycourses.ru.

Очень грамотно сделанный курс, от самых основ и до собственных работающих приложений на Ruby on Rails. Материал подаётся очень хорошо, понятно и с юмором. Домашние задания помогают хорошенько закрепить пройденный материал. Все задания тщательно проверяются авторами, всегда можно рассчитывать на то, что всё, что непонятно, вам объяснят, на все вопросы найдут способ ответить, так что непонятного не останется. Удачи «Хорошему программисту». И много новых интересных курсов!

Наставники поддерживают вас во время курса и после окончания

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

Да вы и сами наверняка сможете вспомнить школьный или университетский опыт, когда предмет легко и с интересом изучался только благодаря отличному педагогу.

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

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

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

Ruby за двадцать минут

Вступление

Здесь представлено небольшое введение в Ruby, которое должно занять не более двадцати минут. Предполагается, что вы уже установили Ruby. (Если на вашем компьютере нет Ruby, скачайте и установите его перед тем как начать.)

Интерактивный Ruby

Ruby устанавливается вместе с программой, которая покажет результат любого Ruby кода, который вы напишете в ней. Играть с кодом Ruby интерактивно – отличный способ узнать язык.

Откройте IRB (сокращение для Interactive Ruby).

  • Если вы используете macOS, откройте Terminal , наберите irb и нажмите Enter.
  • Если вы используете Linux, откройте shell , наберите irb и нажмите Enter.
  • Если вы используете Windows, откройте Interactive Ruby из секции Ruby вашего меню Пуск.

Окей, итак он запущен. Что дальше?

Наберите это: «Hello World»

Ruby повиновался вам!

Что только что произошло? Неужели мы только что написали кратчайшую в мире программу “Hello World”? Не совсем. Вторая строка, это всего-лишь способ IRB показать нам результат последнего выполненного выражения. Если мы хотим напечатать “Hello World”, мы должны написать немного больше:

puts – основная команда в Ruby, позволяющая напечатать что-нибудь. Но что же такое тогда => nil ? Это результат выполнения выражения. puts всегда возвращает nil, который в Ruby обозначает значение абсолютно-положительного ничего.

Ваш бесплатный калькулятор

Теперь мы знаем достаточно, чтобы использовать IRB как простейший калькулятор:

Три плюс два. Достаточно просто. Что насчет три умножить на два? Вы можете набрать сами, это достаточно короткий код, но также вы можете вернуться выше и изменить то, что вы ввели ранее. Попробуйте нажать стрелку наверх на клавиатуре и вы увидите строку с 3+2 . Если это так — вы можете использовать стрелку влево, чтобы переместить курсор прямо за + , нажать backspace и поменять его на * .

Теперь давайте попробуем возвести три в квадрат:

В руби ** – способ возвести число в степень. Но что если вы хотите пойти в обратном направлении и узнать квадратный корень от чего-либо?

Окей, погодите, что это было? Если вы думаете “это был способ выяснить квадратный корень из девяти”, вы правы. Но давайте приглядимся к деталям. Во-первых, что такое Math ?

Модули группируют код по темам

Math – это встроенный модуль для математических операций. Модули выполняют две роли в Ruby. Наш пример показывает первую роль: сгруппировать похожие методы вместе под знакомым именем. Math также содержит методы типа sin() и tan() .

Следующее – это точка. Что делает точка? Точка – это то, как вы указываете получателя сообщения. Что такое сообщение? В данном случае это sqrt(9) , которое означает вызов метода sqrt , сокращение от “square root” (квадратный корень), с параметром 9 .

Результат от вызова этого метода – 3.0 . Вы можете заметить, что это не просто 3 . Это потому, что большинство значений квадратного корня от числа не являются целыми, так что метод всегда возвращает число с плавающей точкой.

Что если мы хотим запомнить результат какой-либо математической операции? Присвойте это значение переменной.

Калькулятор это замечательно, но мы отошли от традиционного сообщения Hello World , которым начали наше введение и на котором мы должны были сфокусироваться… так что давайте вернемся к нему.

Практический аспект Ruby

В любом деле стоит, аргументировать свои слова. Я попытаюсь показать нам всю прелесть языка, почему мы его так рубим и лелеем.

Ruby высокоуровневый язык программирования (ЯП). Ruby позволяет сместить акцент при написании кода больше в сторону «что делать», и уйти от объяснения тупому компьютеру «как это делать». Как говорит Matz человек должен управлять, а машина подчиняться.
Объяснением того, как выполнить ваше желание занимается переводчик — интерпретатор языка Ruby. Японцы очень гордый народ, народ потомков самураев, в котором все еще тлеют феодальные замашки.

Ruby интерпретируемый язык программирования. Я уже говорил, что если вы прикажите этой тупой железяке 5.times, то она не поймет этого без интерпретатора. Языки программирования требующие интерпретатора, который читает скрипты, написанные на них называются интерпретируемыми языками. Примерами таких языков являются (php, python, perl, bash и собственно наш великий!)
Языки, коды которых превращаются в программу называются компилируемыми. Примерами таких языков служит (C/C++ , C#, GO)

Разница состоит в том, что компилируемые программы компилируются один раз для множественного использования, а программы написанные на интерпретируемых языках интерпретируются каждый раз при своем запуске, из-за чего являются более медленными, но всегда с открытым исходным кодом 😀

Скорость важна, но это не самое главное. Ruby гораздо медленнее Си и еще медленнее Asembler’а, но это не мешает Ruby приобретать все новых и новых поклонников, которые сжигают образы своих старых богов, ломают бубны и обращаются в новую светлую религию Ruby-программизма.
Ruby позволяет писать приложения так быстро, что вы обанкротитесь нанимая спец отряд программистов на Си, которые напишут программу выполняющую те же действия. Кроме того, если вам нужно посчитать до завтра какой-нибудь финансовый расчет, то имеет ли для вас разницу то, будет он считаться 10 секунд или 0.1 секунду?
Даже если для вас будет действительно важна производительность, то у Ruby имеется огромное количество драйверов к библиотекам написанным на Cи, к различным базам данных и прочему программному обеспечению, таким образом получаете скорость Cи, при этом пишите код на Ruby.
Ruby также позволяет писать расширения на Си для критичных участков кода, то есть таких, где производительность крайне важна (все это потому, что Ruby сам написан на Си, не полностью, но довольно большой своею частью). Вам стоит привыкнуть к тому, что нет универсального языка программирования, зная который, вам больше ничего не нужно будет знать.

Ruby многолик но в каждом лике он прекрасен. Есть стандартная реализация Ruby, она носит имя Matz Ruby Interpreter (MRI). Начиная с ветки 1.9 и по текущую используется другой интерпретатор YARV.
Также существует Ruby для виртуальной Java — машины (JRuby), который позволяет использовать все множество библиотек написанных на Java и других языках выполняемых на JVM, например Scala или Clojure.
Существует MacRuby — версия для Mac OS X.
Существует Ruby Enterprise Edition (Ruby EE или REE) — это несколько переделанный MRI, который позволяет программам на Ruby потреблять меньше оперативной памяти.
Существуют также различные авторские наработки, которые позволяют заменять оригинальные компоненты Ruby на более функционально богатые и быстрые, однако в силу того, что такие наработки, как правило, плохо испытаны в боевых условиях и не имеют широкого распространения, я бы не рекомендовал вам использовать их. Используйте официальные версии Ruby.
Помимо описанных реализаций Ruby существует еще большое количество, например Rubinius и Ruby MagLev и так далее. В чем их особенность я не знаю, но обязательно разберусь и опубликую в одной из следующих версий учебника.

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

Ruby лаконичен. Программы написанные на Ruby очень кратки и понятны. Виной тому и его высокоуровневость и динамичность и слабая типизированность.
Я не знаю таких языков, которые выигривали бы у Ruby по наименьшему числу строк кода для реализации определенного функционала. Подозревая что таких сейчас нет) на момент 2015 года, либо они столь запутаны и страшны, что боятся показаться.

Ruby — слаботипизированный язык программирования. В не которых других языках программирования вам необходимо было бы объявлять тип хранимых в переменной данных, при этом переменная не может хранить данных другого типа. Адепты программирования во главе с Якихиро Мацумото потрудились над тем, чтобы вы могли использовать переменные для хранения абсолютно любых значений без предварительного их объявления.

Ruby — объектно-ориентированный язык программирования. Объектно-Ориентированный подход к программирванию уже совсем не нов и доказал не только свое право на жизнь, но и свою эффективность! Объектно-ориентированное Программирование (ООП) давно считается синонимом качества и масштабируемости кода.
ООП достаточно популярный подход к разработке программного обеспечения, который упрощает и ускоряет разработку, делает код более понятным и структурированным и расширяемым. Все создается с помощью абстракций, как будто объекты наших моделей реальны. В Ruby ООП реализовано особо изящно, не обошлось без магии на уровне базовых классов, однако это не так уж важно принимая во внимание реализация языка в общем.

Ruby — простой язык программирования. Ruby простой для понимания язык программирования, простой для разработки, но не для изучения :). Разумеется, приложение выводящее на экран классическую фразу «hello world» вы можете написать уже в первую секунду знакомства, кстати вот она: puts «helo word!», однако чтобы добиться истинного мастерства, вам следует потратить годы!
Нельзя сравнивать Ruby с PHP, это как сравнивать элегантного лебеда с каким-то гусем, однако я пойду на такую жертву и сделаю это. Сам по себе язык Ruby не на много сложнее PHP в изучении, однако на много удобнее его и логичней. Сложнее сама экосистема Ruby, так как Ruby программисты привыкли все автоматизировать, и я наверное скажу не просто правду, но и истину, когда сообщу вам, что Ruby’исты продвинулись в этом куда дальше, чем какое-либо другое сообщество программистов. Эта автоматизация вынуждает разработчика изучать множество сторонних технологий, зато упрощает и сокращает затраты времени на побочные процессы разработки (тестирование, разворачивание приложения на сервере, и так далее). В PHP всего этого нет, либо все это совсем примитивно! Самое интересное, что порядка 25% PHP программистов не пользуются фреймворками и тонами плодят говнокод, попробуйте найти Ruby программиста, который не знаком с фреймворком Rails!
Главное помните большинство Ruby программистов являются экспертами, профессионалами в разработке. И вам всегда нужно к этому стремиться. Только так и не иначе, только радикальный подход к этому делу. Нельзя быть быть плохим программистом на Ruby, либо ты профессионал, либо не рубист!

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

Ruby — это все-таки мейнстрим технология! Многие говорят, что Ruby это мало популярный язык программирования, однако он в ходит в 10 самых популярных ЯП, имеет огромное сообщество и огромное количество библиотек — rubygems.
Кстати, наличие у Ruby gem’ов — еще одно его преимущество над PHP! В PHP есть унылый Pear, который пишется обезъянами которые строят из себя космонавтов, об этом можно судить по тому, что в кодах Pear найдено много помета похожего на человеческий, но мы то знаем, что люди на это не способны.
И вообще я только что согрешил сравнивая RubyGems и Pear. На Ruby реализовано огромное количество крупных успешных проектов, что доказывает удачный выбор Ruby в качестве составляющего звена про построении бизнеса основанного на веб проекте. Ruby, как и Python также входящий в 10 самых популярных языков программирования, лишен одного очень большого изъяна мейнстримных технологий — Ruby не перенасыщен программистами, программисты на Ruby все еще дефицит, а значит ваша будущая зарплата в роли Ruby программиста будет гораздо больше по сравнения с теми, кто программирует на PHP или Java. Даже если спрос на Ruby программистов будет полностью удовлетворен, Ruby программист будет зарабатывать больше потому, что есть два очень важных фактора: более высокое качество кода и более высокая производительность труда.

Rubyist’ы — самая тестолюбивая тусовка. Я не знаю, так ли это, но то, что программисты на Ruby продвинулись явно очень далеко в тестировании собственного кода — это факт! Каждый более-менее опытный Ruby программист пишет спецификации и/или тесты для своего кода. Это делает код на Ruby более надежным и качественным.

Ruby сообщество более квалифицировано, чем многие другие сообщества. В первую очередь речь идет о PHP — сообществе, которое весьма плодовито в выращивании уродов.
Каждый школьник разобравшийся с основами php за неделю и написавший свой кривой сайт уже кричит на всех углах, что он php программист. Нет я не испытываю ненависть к детям, то что вы изучаете и создаете это прекрасно. Но есть один нюанс, что за каждое слово в свой адрес нужно чем то ответить. Вообщем не будьте высокомерны, но совершенствуйтесь, занимайтесь тем, что вам нравится. А это и есть главное в нашей жизни!

Не каждый, кто программирует на Ruby достоен звания программиста, например я не достоин, потому, что имею крайне малый опыт и совсем недостаточный набор знаний, однако, если брать среднюю температуру по больнице, то сообщество Ruby значительно превосходит сообщество PHP. Не буду говорить о других языках программирования, так как Python, Java, и Perl являются основными экспортерами новых членов в сообщество Ruby, то есть многии программисты на Ruby добились своего мастерства работая с другими языками программирования и набрав достаточный багаж знания и опыта обратились в религию Ruby. Кроме того, многие люди, которые программируют на Ruby программируют и на Python и на Perl и на Java, Си, Objective-C, javascript, и, вы даже не поверите, на PHP.все для dleфильмы и сериалы онлайн hdавтоматический обмен webmoney на приват24android игры, приложения, инструкции, обзоры

За что любить программистов на Ruby

Никита Широбоков


Никита Широбоков
Получайте новые статьи на e‑mail

Пишем о будущем, технологиях и стартапах

Люди, которые запускают стартапы, не всегда имеют компетенции в разработке программного обеспечения. Когда дело касается поиска разработчика в качестве сооснователя в команду, всё более менее прозаично — главное, чтобы человек хотел, горел, был своим по духу. Но когда нужно привлечь студию или разработчика на проект, чтобы он сделал базовую версию продукта — вот здесь начинаются грабли. В этой статье о том, почему стоит любить и искать Ruby-разработчиков.

Во время подготовки курса «Программирование на Ruby on Rails для новичков», Алексей Поимцев — основатель и СЕО студии веб-разработки Progress Engine, который и будет вести этот курс, разразился тирадой, что Ruby — хорошее решение не только в качестве первого опыта в программировании, но и как основной инструмент для разработки.

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

Выше качество разработки

Актуальные данные — на российских сайтах по поиску работы 20 млн. резюме PHP-разработчиков, и только 2 млн. тех, кто работает с Ruby. Это объяснимо — чтобы врубиться в Ruby, нужно приложить больше усилий.

Мастер Йода рекомендует:  ADODB – русская документация (часть 1) PHP

Если каждый школьник может открыть книжку «PHP для чайников» и через пару недель отправлять направо и налево своё резюме, то с Ruby требуется нормальная подготовка.

Это значит две вещи: что среди PHP-разработчиков намного выше конкуренция, и что качество полученного кода в итоге будет лучше, чем на PHP.

Даже начинающие Ruby-разработчики дают более качественный код, чем некоторые PHP-разработчики со стажем. Это объясняется большим количеством гайдлайнов и структурой кода, которой сразу обучают новичков — написать программу криво и косо можно только если захотеть написать программу криво и косо.

Ещё один плюс — обучение программированию на Ruby выглядит иначе, чем «повторяй за мной». Образовательный процесс сопряжён с развитием мышления, изучением методик и практик хорошего кода. Это значит, что даже юные падаваны способны усилить мыслительный центр команды и найти решение, которое не пришло в голову более опытным коллегам.

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

Благодаря им рынок забивается некачественными ИТ-продуктами, а клиенты теряют веру в возможность найти адекватных разработчиков. С другой стороны, это не означает, что нужно выбирать для своего продукта те языки, к которых самый высокий порог входа. Есть, например, Java, у которой порог входа очень серьёзный — на ней вы скорее всего даже для самого простого проекта получите тяжёлое приложение с кучей зависимостей и технологий, без которых в нормальной жизни можно было бы обойтись.

На мой взгляд Ruby, и фреймворк Ruby on Rails поддерживают идеальный баланс между заниженным порогом входа и избыточной сложностью результирующего продукта», — говорит Алексей.

Живое сообщество, которое активно помогает новичкам

В сообществе Ruby хорошо работают правила этикета — матёрые регулярно отвечают на вопросы новичков, помогают им прокачиваться, находить решения проблемам.

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

Последующая поддержка

Поскольку разработчики на Ruby чаще всего приучены к структурному и понятному коду, заказчик получает сразу два бонуса:

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

Поддерживать код на Ruby проще и легче, чем на большинстве других решений.

Скорость работы и возможности

Несмотря на то, что ни сам язык Ruby, ни все его фреймворки не являются самыми популярными инструментами разработчиков, количество готовых решений и библиотек просто зашкаливает.

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

Всё это сильно ускоряет разработку — зачем писать то, что уже написали до тебя, да ещё и качественно?

Алексей Поимцев: «Давайте немного вспомним историю. PHP, чье говорящее название изначально означало personal home page, был заточен изначально под web. Но, как вы понимаете, на веб-разработке свет клином не сошелся — у людей есть потребность в мобильных приложениях, десктопных и embeded для различных устройств.

Частично эту проблему пытались решить разработчики Java, но в погоне за универсальностью они забыли о производительности и как результат — большинство Java-приложений крайне ресурсоёмкие. В случае с Ruby все гораздо интереснее — вначале появился проект MacRuby, который позволил писать «нативные» приложения для платформы OSX.

Позже из него вырос проект RubyMotion, который дал возможность писать мобильные приложения для iOS и Android на Ruby, а также проект Foundry, позволяющий использовать Ruby для программирования различных устройств. На мой взгляд, с таким инструментарием даже не самый опытный разработчик будет проворен и многофункционален».

Алексей активно жестикулировал и подкреплял тезисы фактами и цифрами. Разработчики, которые участвовали в подготовке методических материалов к курсу, примирительно согласились, а продуктовая команда задумалась — может нам тоже всем переехать на Ruby?

Ruby — всё по этой теме для программистов

Ruby является языком программирования, популярность которого в последнее время растет.

1. Какими знаниями и навыками должен обладать Программист Ruby?

2. Каков инструментарий программиста Ruby?

3. Каковы требования компании к уровню образования потенциальных сотрудников?

4. Какие требования предъявляются к опыту работы?

5. Есть ли особые требования, которые обусловлены спецификой деятельности компании?

Ярослав Маркин, основатель Evil Martians ( http://evilmartian s.com )

1. Узкая специализация на языке программирования или платформе ушла в прошлое: сейчас любой хороший программист не только знает несколько языков или платформ, но и за короткие сроки должен уметь освоить новый язык, фреймворк или базу данных. Именно благодаря неудовлетворенности от печально известного PHP или усталости от «энтерпрайзного» Java многие классные программисты когда-то открыли для себя Ruby; сейчас они не останавливаются и осваивают функциональные языки или программирование микроконтроллеров, уже имея Ruby в багаже. Поэтому поговорим о том, какими навыками и знаниями должен обладать хороший программист.

Главное – то, что обычно называют профессиональными качествами. Умение планировать собственное время и работать без напоминаний, умение давать оценку и отвечать за нее, умение выдавать качественный результат на высоком уровне – стабильно, а не как придется.

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

Хорошему программисту, особенно на Ruby, нужно каждый день продираться через гору информации: блогпосты, скринкасты, презентации с конференций. Если этого не делать, можно быстро потерять хватку: нужно постоянно расширять кругозор. Для программиста, основной язык которого – Ruby, владеть еще несколькими «серверными» языками – это норма.

Кроме отличного знания самого языка, Ruby-программист должен разбираться в стандартной библиотеке, деталях реализации виртуальной машины (сборка мусора, треды), альтернативных интерпретаторах. Важно обладать всеми навыками грамотного объектно-ориентированного проектирования, уметь со вкусом рефакторить код, владеть инструментами для автоматического тестирования.

Три главных инструмента программиста – консоль, редактор и система управления версиями. В подавляющем большинстве проектов на Ruby используется Git, который нельзя назвать простым в освоении, но знать особенности его работы и идеально работать по git flow – обязательное требование.

Большинство проектов на Ruby – проекты на Ruby on Rails, поэтому хороший программист должен отлично разбираться в деталях работы реляционной СУБД, на которой работает проект (PostgreSQL или MySQL). План запросов, типы индексов и другие, казалось бы, «мелочи» – обязательные вопросы на хорошем собеседовании.

Отдельное частое требование – опыт с оптимизацией производительности. Нужно хорошо знать детали работы Ruby (треды и сборка мусора), HTTP-стек, уметь оптимизировать реляционные базы данных, работать с кэшированием и вообще выдерживать высокую внешнюю нагрузку.

2. Главные черты, характерные для всего инструментария Ruby-программистов, это тяга к автоматизации во всем и упрощение, популяризация уже известных полезных инструментов и методов. Программист Ruby обычно работает на Linux или Mac OS X. Два из трех основных инструментов программиста – это, конечно, консоль и текстовый редактор. В мире Ruby программисты тяготеют к расширяемым редакторам (Vim, Sublime Text, Atom), пользователи интегрированных сред вроде RubyMine в меньшинстве. Крайне популярен Vim, несмотря на сложность в освоении, есть огромное количество обучающих ресурсов для новичков; вершина моды сейчас – использование Vim вместе с терминальным мультиплексором tmux.

Конечно, для работы нужна классная система управления версиями, третий основной инструмент программиста. Git доминирует в Ruby-мире, равно как и GitHu b.com для размещения Open Source и коммерческих проектов. Хотя иногда программисты пользуются другими распределенными системами версий или даже морально устаревшей Subversion.

Ruby-программисты одними из первых ввели в моду использование менеджеров версий для рантаймов для легкого переключения между версиями интерпретатора – RVM (Ruby Version Manager), который часто заменяют на rbenv или chruby.

Ruby-проект Capistrano первым популяризовал автоматическую выкладку (деплоймент) приложения в рабочее окружение. Сейчас вместо Capistrano зачастую используют окружения, построенные на Docker.

Первые инструменты управления серверной конфигурацией (и движение DevOps в целом) тоже появились в Ruby-среде: Chef и Puppet остаются до сих пор крайне популярными. Такие инструменты нужны для того, чтобы единожды задать описание окружения сервера и в дальнейшем разворачивать его автоматически.

Автоматизация фронтенд-разработки тоже когда-то началась с Ruby on Rails и плагинов, и только несколько лет назад полностью перешла на использование Node.js. До этого Ruby был пионером в использовании новых необычных шаблонизаторов (Haml, Slim), компилируемых в JavaScript-языках (CoffeeScript), средств сборки (Rails Asset Pipeline и многие другие).

Автоматизированное тестирование, конечно, существовало задолго до популяризации Ruby и Rails, но именно с развитием Rails-экосистемы удалось сделать его по-настоящему красивым и выразительным с помощью RSpec (который стал возможен благодаря изумительным возможностям метапрограммирования Ruby), Cucumber (с помощью которого приемочные тесты можно описывать на естественном языке) и многих других инструментов.

В стремительно меняющейся экосистеме Ruby и Rails-проектов зачастую используются не только самые последние возможности привычных СУБД, но и нереляционные СУБД.

Самой популярной, «основной», СУБД для Rails-проектов остается PostgreSQL, и многие полезные нововведения, например JSONB, уже привычны в Rails-проектах. Redis используется повсеместно как основная нереляционная СУБД, часто для хранения очереди задач приложения. А использованием ElasticSearch, MongoDB и даже некоторых БД для работы с большими объемами данных уже никого не удивишь.

Как правило, Ruby-программист знает и активно использует сразу несколько серверных языков: с чем-то он был знаком еще до Ruby, что-то изучает для задач, где Ruby мало применим.

Сейчас среди Ruby-разработчиков крайне популярны Go (из -за простоты и быстрого освоения), функциональные языки (Erlang, Clojure, даже Haskell), Elixir (напрямую вдохновленный Ruby язык для работы на виртуальной машине Erlang).

Из альтернативных реализаций Ruby можно отметить JRuby – полностью реализованная поверх виртуальной машины Java-реализация Ruby, с каждой версией работающая все быстрее и быстрее.

И, конечно, Ruby-разработчики пользуются инструментами для организации совместной работы. Работа во многих Ruby-проектах построена на гибких (Agile) методологиях разработки, для поддержки которых нужны соответствующие трекеры. Удаленная работа стала привычной для стартапов, поэтому общение через мессенджеры вроде Slack или аналоги давно стало частью работы.

3. К уровню образования разработчиков в наше время особенных требований нет: в индустрии есть великолепные разработчики и без высшего образования, есть с образованием лингвистическим или юридическим. Конечно, отличное CS-образование (Физтех, ВМиК МГУ и другие достойные университеты) будет только кстати, особенно при дальнейшем профессиональном росте – работе с машинным обучением, например.

Вклад потенциального сотрудника в Open Source, его выступления и статьи намного важнее, чем «корочка» университета.


4. Формальные требования к опыту работы (вроде X лет работы с определенной технологией или Y лет в «статусной» должности) при найме в классные команды отошли в прошлое и остались только в арсенале компаний для массового найма сотрудников. Важно знать, чем именно кандидат был полезен на предыдущем месте работы, как лично он сделал компанию лучше. Должность тоже мало о чем говорит: зачастую бывшие технические директора или начальники разработки просто не могут пройти собеседование лучше, чем вчерашние новички, только что закончившие университет. Минимальное обязательное требование по опыту для работы в «Марсианах» – весомый интересный опыт работы в реальном коммерческом проекте или отличное Open Source-портфолио. Последнее обязательно для найма на позицию младшего (Junior) программиста.

5. Специфических требований к работе в «Злых марсианах» два – это отличная способность к работе в распределенной команде и увлечение Open Source-разработкой.

В распределенной (удаленной) команде все недостатки в организации, особенно в самоорганизации сотрудников, становятся видны намного быстрее, чем в традиционной «офисной» команде. Требования к самодисциплине намного выше, чем в других командах: важно делать точные оценки, отвечать за поставку функционала в срок, всегда быть на связи и управлять ожиданиями как заказчика, так и членов своей команды. Особые требования предъявляются к коммуникации: важно не стесняться задавать вопросы, хорошо документировать свои решения, унылым часовым митингам предпочитать быстрые пятиминутные созвоны, быть дружелюбным и отзывчивым.

Увлечение Open Source – не только кармическая особенность (если бизнес построен на использовании открытых продуктов, нужно поддерживать сообщество самому и делиться своим трудом). Участие в Open Source крайне важно для самообразования, особенно для начинающих программистов. Новые открытые проекты и развитие существующих помогают программисту самореализоваться, а компании – найти единомышленников в команду.

Евгений Фатеев, инженер-программист в Instamotor

Ruby – удивительный язык программирования. Он был создан в 1995 году в Японии и долгое время не покидал пределов этой страны. Со временем ситуация изменилась: стала появляться документация на других языках, а с выходом фреймворка Rails Ruby покорил сердца многих разработчиков.

Тому есть множество причин, все же одна из основных, на мой взгляд, в том что «Ruby был создан для того, чтобы сделать программистов счастливыми». Это слова автора языка – Юкихиро Мацумото, которые в полной мере воплощаются в ядре и всей экосистеме языка.

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

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

Ruby находит применение не только в современных веб-приложениях, но и в самых разных сферах, например: менеджер пакетов для Mac OS Homebrew или среда для создания музыки в реальном времени Sonic Pi.

1. Ответить на этот вопрос можно по-разному. С моей точки зрения, знания и навыки программиста Ruby состоят из трех измерений.

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

Второе измерение – парадигмы и техники программирования, в особенности ООП и SOL > был язык, если мы точно не представляем, что хотим создать, разрабатываемое нами ПО вряд ли получится надежным и хорошо расширяемым. Именно поэтому очень важно понимать концепции программирования. Например, если копнуть поглубже в ООП, мы обнаружим, что такой образ мышления очень близок тому, как думают люди. Мы часто взаимодействуем с объектами, посылаем им сообщения и ждем результат. Видеть эту связь между реальным миром и программным кодом, на мой взгляд, крайне важно. Это позволяет писать более понятный и легкий в сопровождении код. Паттерны программирования также являются превосходным вкладом в копилку знаний и навыков Ruby-программиста.

Третье измерение – это окружение и смежные технологии. Под окружением я понимаю > текстовые редакторы, SQL-клиенты и все прочие инструменты, которые используются в повседневной работе. Ведь чем совершеннее инструмент и чем лучше мы им владеем, тем более качественный результат можем получить. Смежные технологии также невероятно важны. Будем откровенны, современный мир программирования требует гораздо более обширных знаний, чем знания Ruby. Достаточно часто Ruby используется при написании веб-приложений, а это автоматически подразумевает знания в области JavaScript и HTML. С другой стороны, несмотря на мощную поддержку ActiveRecord для работы с СУБД, знание SQL крайне пригодится. Не стоит также забывать о самых Ruby-фреймворках (таких как Rails, Grape, Sinatra, Hanami) и системах управления исходным кодом (Git). Таким образом, третье измерение включает в себя рабочее окружение и любые смежные технологии, которые используются (или могут использоваться) в проекте.

2. Как мы уже успели сказать, конечно же, первым и самым основным инструментом является сам язык. Сюда же стоит отнести стандартную библиотеку Ruby, фреймворки и gem (сторонние библиотеки).

Следующая категория инструментов – рабочее окружение. Сюда относятся > текстовые редакторы, графические SQL-клиенты, различные расширения веб-браузера (например, REST клиент), средства для создания диаграмм, графические Git-клиенты. Иными словами, все то, что помогает в решении поставленных задач. На мой взгляд, рабочее окружение должно быть прозрачным, то есть таким, чтобы программист не тратил время на доступ к истории файла с исходным кодом, объединение Git-веток или другие сопутствующие решению задачи операции.

3. Требования компаний, безусловно, зависят от уровня самих компаний. Например, если вы претендуете на должность Ruby/Rails-программиста, от вас могут потребоваться базовые (иногда более продвинутые) знания Rails, HTML, JavaScript (иногда JavaScript-фреймворка). Этого может оказаться вполне достаточно для написания относительно простых веб-приложений без высокой нагрузки и специфических требований.

С другой стороны, если вы хотите работать над высоконагруженным проектом с большим количеством специфических требований и с применением смежных технологий, вам потребуется глубокое знание языка и фреймворка, знания и навыки в написании API, хорошие знания ООП, SOL > других принципов программирования, знания паттернов программирования, умение выстраивать архитектуру приложения и разбираться в предметной области. Может потребоваться знание инструментов поиска (например, ElasticSearch) или очереди сообщений (RabbitMQ), различных протоколов (HTTP, AMQP, MQTT). Этот список можно расширять и расширять, и он в большей степени зависит от специфики проекта и предпочтений компании. Если попробовать абстрагироваться от конкретных технологий, на мой взгляд, требования к сотруднику можно сформулировать так: умение думать и способность развиваться.

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

4. Требования к опыту работы также зависят от политики компании и рассматриваемой должности. Если вы претендуете на позицию уровня Junior, вряд ли кто-то будет ожидать от кандидата участия в большом количестве проектов. Хотя в этом случае наличие собственных наработок, конечно же, необходимо. Иными словами, вы можете написать проект для решения собственной задачи (например, приложение для формирования плей-листа) и рассказать, с какими трудностями столкнулись, как их разрешили, какие технологии использовали и почему.

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

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

Если оценивать опыт с позиции времени, я бы не рискнул давать какие-то оценки. Разные специалисты за одно и то же время могут достигнуть разных результатов. Это обуславливается как индивидуальными особенностями, так и средой, в которой работают специалисты. И все же, если попробовать дать оценки, на мой взгляд, их можно выстроить так: 1-3 года для Junior, 3-5 лет для M > 5-7. для Senior.

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

Илья Аверьянов, директор службы разработки в компании FunBox

1. Как и любой разработчик, он должен в первую очередь быть любознательным, внимательным и сообразительным. Если говорить о конкретных знаниях по языку Ruby и смежным технологиям, то состоявшийся Ruby-программист должен:

  • знать сам язык Ruby и его стандартные библиотеки;
  • знать Ruby оn Rails в объеме как минимум http://guide s.ru byonrail s.org (Ruby без Rails – это все еще очень узкая ниша);
  • знать принципы работы сетевых протоколов (TCP, HTTP, HTTPS, FTP. );
  • знать принципы работы веб-серверов и балансировщиков нагрузки (Nginx, HAProxy. );
  • знать принципы построения фронтенда для веб-приложений, иметь представление о хотя бы одном из популярных JS-фреймворков;
  • уметь работать в Linux shell на уровне опытного пользователя;
  • уметь работать с реляционными БД, знать SQL в чистом виде, понимать принципы индексации данных;
  • уметь работать с некоторыми из NoSQL БД;
  • уметь взаимодействовать с другими разработчиками, свободно обращаться с Git;
  • уметь работать с различными представлениями времени, таймзонами (это целый отдельный навык);
  • понимать уместность и необходимость тестирования кода;
  • владеть знаниями об архитектуре программных решений, плохих и хороших паттернах;
  • иметь адекватное представление о своих возможностях, о применимости различных технических средств к поставленным задачам.
Мастер Йода рекомендует:  Краткое описание регулярных выражений POSIX и PCRE PHP

2. Инструменты для разработки, запуска и отладки решений на Ruby разнообразны, всевозможных библиотек также существует огромное количество, выделять какие-то конкретные нет особого смысла – все зависит от проекта и от задачи. Однако есть несколько стандартных для разработки действий, для которых нужны надежные, знакомые и отлаженные инструменты (хотя они могут и различаться):

  • инструмент для воспроизведения окружения для проекта, т.е. для работы с виртуальными средами (Docker, Vagrant, Amazon. ) и их настройки (Ansible, Bash, Salt-Stack. );
  • инструмент для работы с кодом проекта (хорошо настроенный Vim, Emacs, Sublime, Atom или, например, > коду;
  • инструменты для работы с историей кода и ее анализа.

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

4. Мы достаточно крупная компания, поэтому для нас вопрос стоит немного по-другому. От опыта работы зависит позиция, на которую мы можем взять сотрудника: у нас есть задачи даже для перспективных новичков без опыта.

Искусство 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 классы можно подключать модули и, соответственно, отдельные методы модуля могут вызываться как отдельные модули класса. Эта возможность носит название Mixin. Но прежде всего давайте разберемся с понятием модуль. Модули в Ruby очень напоминают паскалевские
(unit).

module Trig
PI = 3.141592654
def Trig.sin(x)
# .. , кстати, комментарий в Ruby — #

Выше приведен пример описания модуля. Подключение внешних модулей (т.е. тех модулей, которые размещены в другом файле) выполняется с помощью ключевого слова require.

require «trig»

А вызов производится с использованием точечной нотации.

Точка используется перед вызовом метода, а двойное двоеточие – перед обращением к константе.

Таким образом, модули могут объединять в себе константы, классы и методы. Тем не менее, модуль – не более чем пространство имен. В одном файле может быть размещено несколько модулей.
Когда подключается модуль, Ruby создает безымянный класс, который ссылается на этот модуль и подставляет его как отдельный суперкласс для класса, в который он подключается. Немного запутанно, но, тем не менее, на практике все выглядит достаточно просто.

В класс можно подключать несколько модулей одновременно. Однако, нужно следить за тем, что бы имена методов внутри модулей не пересекались.

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

Массивы в Ruby, в отличии от большинства языков могут объединять в себе данные разных типов. При этом в качестве элемента массива может использоваться даже метод некоторого класса, при условии, что он возвращает какое-либо значение.

a1 = [1,’two’, 3.0, array_length( a0 ) ]

Нумерация элементов массива начинается с 0.
Обращение к элементу массива по его индексу можно осуществлять следующим образом:

Кроме того, можно обращаться и по диапазону элементов. О том, что диапазон «вылетает» за размерность массива беспокоиться не следует. Иными словами будут работать оба выражения:

print( arr[0,4] )
print( arr[0,5] )

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

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

a = Array.new(2)
a[0]= Array.new(2,’hello’)
a[1]= Array.new(2,’world’)

Оператор ветвления задается конструкцией if … then … end. Например:

Логично, что между then и end может ставиться else.
Если сравнивать с Паскалем, то объективно, такая конструкция немного удобнее, ведь тогда не имеет смысла использовать блоки. Блоки, к слову задаются конструкцией

Противоположностью if является конструкция unless (если не):

unless aDay == ‘Saturday’ or aDay == ‘Sunday’
daytype = ‘weekday’
else
daytype = ‘weekend’
end

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

# for
for x in [1, «two», [3,4,5] ] do puts( x ) end
# each
[1, «two», [3,4,5] ].each do |x| puts( x ) end

К слову, в последней версии Delphi Language также введена конструкция for … in, именно с целью облегчить работу с классами.

А таким образом работает цикл While:

a=0
begin
puts a
a=a+1
end while a

Так же в Ruby можно использовать цикл until:

i = 10
until i == 10 do puts(i) end # never executes
until i == 10 # never executes
puts(i)
i += 1
end

Естественно, что в рамках одной статьи невозможно (да и не нужно) рассказать обо всех особенностях синтаксиса языка. Но надеюсь, что общее представление вы смогли себе составить. В процессе отладки примеров мне действительно показалось, что, несмотря на простоту, Ruby является достаточно мощным языком. Тем не менее, возможно, это суждение не совсем объективно. Все же тестовые примеры это не реальные приложения.

В заключение хочу сказать, что все вышеизложенное не абстракция. На Ruby разрабатываются реальные Веб-приложения. Во второй части я попытаюсь рассказать о практической стороне Ruby, а собственно о том, как создаются приложения на платформе Ruby on Rails. Думаю, что преимущества и недостатки синтаксиса Ruby станут более очевидными.

Ruby: три must-read книги, по мнению разработчиков

В рейтинге GitHub на лето 2015 года Ruby занимал почетное третье место после JavaScript и Java. Этот язык хорош скоростью разработки, изящным синтаксисом и хорошими встроенными средствами. Но порог входа высокий, и перед его изучением желательно уже обладать навыками программирования на других языках. Мы подобрали три книги для новичков и опытных.

Metaprogramming Ruby 2

«Весьма продвинутое чтиво, едва ли стоит браться за него в начале, но оно может послужить тем клеем, которое соберет все ваши знания в цельный монолит, и закроет многие актуальные „а почему?“, попутно раскрыв детали имплементации MRI, которые нашли свое отражение в языке. Ну и, конечно же, научит правильно пользоваться „магией“ Ruby, которая перейдет в разряд удобных и понятных инструментов» — рекомендует Антон Сидельников, разработчик интерфейсов, Яндекс.

«Книга будет полезна как для новичков, так и для тех, кто уже давно использует в своей работе язык программирования Ruby.
Надо отметить, что это не справочник по основным конструкциям Ruby. Скорее, это
книга о неожиданных возможностях, которые дает Ruby. Так, из книги можно узнать, что такое method_missing и как его использовать. Она поможет разобраться в создании динамических методов, в работе с блоками, а также поможет освоить много других, приятных для разработчика, возможностей.
Книгу стоит прочитать, чтобы научиться шире использовать всю мощь языка. Ведь именно знание тех вещей, которые описываются в Metaprogramming Ruby 2, отличает человека, который только прикоснулся к языку от того, кто осознанно сделал выбор в пользу Ruby. Книга позволяет понять, почему Ruby стал так популярен в последние годы.
Несомненным плюсом является не только наличие большого количества примеров, без которого нельзя представить книгу о языке программирования, но и возможность проверить полученные знания через прохождение Quiz’ов, которые есть в каждом разделе.
Metaprogramming Ruby 2 можно перечитывать неоднократно, что, пожалуй, можно сказать далеко не обо всех книгах, посвященных IT-технологиям или тем более языкам программирования»
— отзывается о книге Дмитрий Донской, старший разработчик AT Consulting.

RSpec Book

«Ни для кого не секрет, что старательно сообщество поддерживает культуру тестирования. Многие люди видят в тестировании хорошую идею, которая „полезна, конечно, но замедляет работу, а мне бы побыстрее“, и часто причина этого кроется в незнании или непонимании правильных инструментов. RSpec в мире Ruby является как раз таким базовым, очень мощным инструментом, который никак нельзя обходить стороной. Сама книга хоть и немного устарела, но всё ещё может принести много пользы.

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

Agile Web Development with Rails

«Для людей, которые изучают Ruby on Rails. Там сразу и язык и фреймворк. Книга есть на русском языке, но лучше всего читать в оригинале и, желательно, последнюю редакцию» — советует Сергей Завилкин, Lead Ruby on Rails Developer в EarlyAccess Inc.

Мастер Йода рекомендует:  Как бороться с magic_quotes_gpc PHP

Книги быстро устаревают, поэтому обязательно убедитесь в свежести напечатанного совета, где рекомендуется какая-либо литература. И помните: любая теория должна подтверждаться практикой, в идеале — на реальных проектах.

Расскажем о Ruby и Rails: профессия «Программист Ruby» от GeekBrains.

Фото: так рубин выглядит в природе. Над камнем придется поработать, чтобы он заиграл. Автор фото Stowarzyszenie Spirifer, лицензия CC BY-SA 3.0

В рейтинге GitHub на лето 2015 года Ruby занимал почетное третье место после JavaScript и Java. Этот язык хорош скоростью разработки, изящным синтаксисом и хорошими встроенными средствами. Но порог входа высокий, и перед его изучением желательно уже обладать навыками программирования на других языках. Мы подобрали три книги для новичков и опытных.

Metaprogramming Ruby 2

«Весьма продвинутое чтиво, едва ли стоит браться за него в начале, но оно может послужить тем клеем, которое соберет все ваши знания в цельный монолит, и закроет многие актуальные „а почему?“, попутно раскрыв детали имплементации MRI, которые нашли свое отражение в языке. Ну и, конечно же, научит правильно пользоваться „магией“ Ruby, которая перейдет в разряд удобных и понятных инструментов» — рекомендует Антон Сидельников, разработчик интерфейсов, Яндекс.

«Книга будет полезна как для новичков, так и для тех, кто уже давно использует в своей работе язык программирования Ruby.
Надо отметить, что это не справочник по основным конструкциям Ruby. Скорее, это
книга о неожиданных возможностях, которые дает Ruby. Так, из книги можно узнать, что такое method_missing и как его использовать. Она поможет разобраться в создании динамических методов, в работе с блоками, а также поможет освоить много других, приятных для разработчика, возможностей.
Книгу стоит прочитать, чтобы научиться шире использовать всю мощь языка. Ведь именно знание тех вещей, которые описываются в Metaprogramming Ruby 2, отличает человека, который только прикоснулся к языку от того, кто осознанно сделал выбор в пользу Ruby. Книга позволяет понять, почему Ruby стал так популярен в последние годы.
Несомненным плюсом является не только наличие большого количества примеров, без которого нельзя представить книгу о языке программирования, но и возможность проверить полученные знания через прохождение Quiz’ов, которые есть в каждом разделе.
Metaprogramming Ruby 2 можно перечитывать неоднократно, что, пожалуй, можно сказать далеко не обо всех книгах, посвященных IT-технологиям или тем более языкам программирования»
— отзывается о книге Дмитрий Донской, старший разработчик AT Consulting.

RSpec Book


«Ни для кого не секрет, что старательно сообщество поддерживает культуру тестирования. Многие люди видят в тестировании хорошую идею, которая „полезна, конечно, но замедляет работу, а мне бы побыстрее“, и часто причина этого кроется в незнании или непонимании правильных инструментов. RSpec в мире Ruby является как раз таким базовым, очень мощным инструментом, который никак нельзя обходить стороной. Сама книга хоть и немного устарела, но всё ещё может принести много пользы.

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

Agile Web Development with Rails

«Для людей, которые изучают Ruby on Rails. Там сразу и язык и фреймворк. Книга есть на русском языке, но лучше всего читать в оригинале и, желательно, последнюю редакцию» — советует Сергей Завилкин, Lead Ruby on Rails Developer в EarlyAccess Inc.

Книги быстро устаревают, поэтому обязательно убедитесь в свежести напечатанного совета, где рекомендуется какая-либо литература. И помните: любая теория должна подтверждаться практикой, в идеале — на реальных проектах.

Расскажем о Ruby и Rails: профессия «Программист Ruby» от GeekBrains.

Обзор возможностей языка программирования Ruby

Статья просмотрена: 3389 раз

Библиографическое описание:

Сапего Ю., Николаев А. Б. Обзор возможностей языка программирования Ruby // Молодой ученый. — 2011. — №4. Т.3. — С. 53-55. — URL https://moluch.ru/archive/27/3103/ (дата обращения: 10.11.2020).

5 . times < print " We *love* Ruby -- it's outrageous! ">Во многих языках, числа и другие примитивные типы не объекты. Ruby следует влиянию Smalltalk , который дает методы и переменные экземпляра всем его типам. Это облегчает использование Ruby, т.е. правила, применяемые к объектам, применяются для всего Ruby. Переменные Ruby содержат не сами объекты, а ссылки на них. Присваивание — это не передача значения, а копирование ссылки на объект. Для программиста, привычного к распространённым гибридным языкам программирования, некоторые эффекты такого решения могут показаться неожиданными. Например :

b #=> «abcRefg» то есть при изменении значения переменной a, неявно изменилось и значение b, так как они содержат ссылку на один объект. То есть механизм присваивания действует одинаково для всех объектов, в отличие от языков типа C, Object Pascal, где присваивание может означать как копирование значения, так и копирование ссылки на значение. Имеются библиотеки для создания всех типом приложений: XML, GUI привязки, сетевые протоколы, библиотеки игр и многое другое. Программисты Ruby также имеют доступ к мощной программе RubyGems 3 . Сопоставимый с CPAN Perl, RubyGems позволяет легко импортировать библиотеки других программистов вашу программу. Ruby рассматривается как гибкий язык, так как позволяет пользователям свободно изменять его части. Любые части языка могут быть удалены или переопределены, а также может что-то добавлено, по желанию. Ничто не ограничивает деятельность программиста. Например, сложение выполняется с помощью операции (+). Но, если бы вы предпочли использовать явное слово plus, вы могли бы добавить такой метод к встроенному в Ruby классу Numeric.

class Numeric
def plus ( x )
self .+( x )
end
end

y = 5 . plus 6
# y is now equal to 11 Операции в Ruby – это просто “подслащённый синтаксис” для методов. Вы также можете переопределить их. Блоки в Ruby также представляются мощным источником гибкости. Программист может присоединить к любому методу замыкание, где описывается, как должен выполняться этот метод. Замыкания называются блоками, и они стали одной из наиболее популярных возможностей для тех, кто перешёл на Ruby с других императивных языков, наподобие PHP или Visual Basic. Идея блоков почерпнута из функциональных языков. Matz говорил: “Замыканиями в Ruby я хотел отдать дань уважения культуре языка Lisp.”

search_engines =
%w[ Google Yahoo MSN ]. map do | engine |
» http://www. «+ engine . downcase +» .com »
end В приведённом выше коде, блок описан в конструкции do… end . Метод map применяет этот блок к имеющемуся списку слов. В отличие от многих объектно-ориентированных языков в Ruby не поддерживается множественное наследование, но вместо него может использоваться концепция «примесей», основанная в данном языке намеханизме модулей. Модули – это собрания методов. Классы могут “подмешать” какой-нибудь модуль, получая все его методы. Например, любой класс, который реализует метод each, может “подмешать” модуль Enumerable, который добавит ему целую кучу методов, использующих each для организации циклов.

class MyArray
include Enumerable
end Как правило, Ruby-сты видят в этом гораздо больше ясности, чем способ множественного наследования, которое является сложным и запутанным. Хотя в Ruby часто используется очень ограниченный набор знаков пунктуации и обычно отдаётся предпочтение английским ключевым словам, некоторые знаки препинания используются для украшения Ruby. Но тем не менее имеет лаконичный и простой синтаксис, частично разработанный под влиянием Ада, Eiffel и Python. Ruby не требует объявления переменных. Он использует простые соглашения об именах для обозначения видимости переменных. var может быть локальной переменной; @ var является переменной экземпляра (член или поле объекта класса); @@var — переменная класса; $ var является глобальной переменной. Эти префиксы переменных улучшают читабельность, позволяя программисту легко определять роль каждой переменной. Также становится ненужным использовать надоедливый префикс self. перед каждой переменной экземпляра. Содержит автоматический сборщик мусора. Стоит отметить, что Ruby является многоплатформленным языком. Он разрабатывался на Linux, но работает на многих версиях Unix, DOS, Microsoft Windows (в частности, Win32), Mac OS, BeOS, OS/2 и т. д.
Список информационных источников


1это парадигма программирования, в которой выполнение программы представляет собой вычисление некоторого выражения, описывающего применение функций (в математическом понимании) ко входным данным

2язык программирования высокого уровня, в основу которого положен принцип описания (последовательности) действий, позволяющей решить поставленную задачу. Обычно процедурно-ориентированные языки задают программы как совокупности процедур или подпрограмм.

3 менеджер пакетов для языка программирования Руби который предоставляет стандартный формат для программ и библиотек Руби (в самодостаточном формате «gems»), инструменты, предназначенные для простого управления установкой «gems», и сервер для их распространения

Похожие статьи

Работа с элементами GUI на примере приложения.

Способ хранения указателей на объекты разных классов в одном контейнере демонстрирует такое свойство языка C++ как полиморфизм.

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

Теоретические аспекты создания обозревателя файловой.

В статье подробно разобран пример программы, написанной на языке C++ на основе

В качестве операндов функция принимает значения строки, столбца и ссылку на индекс

Ж. Бланшет, М. Саммерфилд. Qt 4: Программирование GUI на C++. 2-е дополненное издание.

Организация доступа к реляционной базе данных на основе.

Рис. 1. Пример наследования в ООП (язык C#).

По заданному XML-описанию сущностей и связей NHibernate автоматически создает SQL-запросы для загрузки и сохранения объектов [9].

Doctrine — объектно-реляционный проектор (ORM) для PHP 7.1+, который базируется на.

Интеграция MS-DOS приложений в современные операционные.

Для исполнения MS-DOS приложений в современном мире существует несколько способов.

Рис. 2. Связывание XML данных. Ядро RCPML позволяет реализовать любые XML UI языки под платформу Eclipse.

Анализ инструментов для построения онтологии.

Protege позволяет определять классы, иерархии классов, переменные, ограничения переменных значений и отношения между классами и

Он имеет обоснованную поддержку и обеспечивает множественную среду онтологии.

наследование и. обнаружение циклов.

Анализ уязвимости переполнения буфера | Статья в журнале.

Следствием такого переполнения может быть как ситуация отказа в обслуживании (DoS), так и

Дело в том, что библиотечная функция strcpy не проверяет размеры буфера-приемника, копирование строки

Пусть у нас имеются некоторые переменные в программе (на языке C).

Обучение объектно ориентированной парадигме.

Sparx Systems Enterprise Architect. — генерирование и обратное проектирование на более чем 10 языках программирования (C и C++, C#, Java, ObjectPascal, PHP)

Протокол класса, объект, инкапсуляция, множественное и одиночное наследование, полиморфизм.

Подходы к архитектурному проектированию веб-приложений

require_once(«welcome_page.php«); >; ?> Данное приложение написано на языке PHP. Входной точкой в приложение служит файл index.php, который и обрабатывает все входящие запросы.

Сетевые атаки. Виды. Способы борьбы | Статья в сборнике.

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

PHP-инъекция — один из способов взлома веб-сайтов, работающих на PHP.

XML (eXtensible Markup Language) – это всем известный язык разметки, с.

Урок 2: Установка Ruby и необходимых инструментов

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

«Методов вагон и маленькая тележка, а вот принципов совсем немного. Тому, кто усвоил принципы, ничего не стоит выбрать тот или иной метод. А вот тому, кто ищет метод, не обращая внимания на принципы, придется туго.»

— Ральф Эмерсон, поэт и эссеист

Как устроена программа

Программа это набор инструкций для компьютера, написанный человеком.

Чтобы написать программу нужен человек, который будет писать и текстовый редактор, в котором писать текст.

Для того, чтобы компьютер понял текст, написанный человеком, нужен специальный инструмент компилятор или интерпретатор. Интерпретатор «переводит» текст, понятный человеку, в код, понятный компьютеру.

Это такая своеобразная «мясорубка», которая, как и человек, понимает какой-то язык программирования и переводит инструкции этого языка в язык компьютерных команд.


В нашем курсе мы будем использовать в качестве такого интерпретатора Ruby.

После того, как программа преобразована в инструкции компьютера, компьютер может их выполнять и отображать какой-то результат.

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

Текстовый редактор Sublime

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

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

Можете воспринимать его как блокнот или даже как редактор Word. Но в отличие от этих двух, он умеет раскрашивать текст на языке Ruby так, что становится очень наглядно и удобно писать программы.

Далее мы еще будем касаться некоторых особенностей его работы. Но помните, что по сути своей это просто текстовый редактор.

Рабочая папка для уроков

Для хранения всех программ этого курса мы рекомендуем вам создать новую папку rubytut в корне вашего диска (или в домашней директории на Mac OS X) — подробнее смотри видеоурок.

В созданной папке создайте папку нашего первого урока lesson2 В эту папку Мы положим нашу первую программу hello.rb . Обратите внимание на разрешение .rb — все файлы на языке Ruby имеют разрешение .rb

Вот так и выглядит наша первая, самая простая программа на Ruby. Создайте файл с таким содержимым в редакторе Sublime и сохраните в папке этого урока lesson2 , назвав hello.rb .

Сохранение файлов в кодировке UTF-8

Небольшое замечание. Крайне важно, чтобы все файлы, которые вы будете делать при прохождении этого курса, были в кодировке UTF-8. Не будем сейчас подробного на этом останавливаться, просто всегда сохраняйте ваши документы первый раз вот таким способом:

или, если у вас русская версия

и уже только потом выбирайте название для нового файла.

Итак, текст нашей программы сохранён в файле hello.rb в нужной кодировке. Теперь нам осталось только ее запустить. А для этого нам не хватает самого языка Ruby!

Как установить Ruby

Установим, наконец, наш Ruby!

Пользователи Mac OS X могут пропустить этап установки Ruby, поскольку он уже установлен в систему. Переходите сразу к следующему параграфу.

Для Windows есть специальная версия руби — rubyinstaller, скачайте с официального сайта свежую версию, подходящую под вашу систему (32 или 64 бита).

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

ВАЖНО! Отметьте две галочки на одном из шагов установки как на этой картинке:

Итак, руби установлен. А как же теперь сказать ему, чтобы он запустил нашу первую программу hello.rb ?

Для этого воспользуемся еще одним полезным инструментом — консолью.

Как запускать программы с помощью консоли

Консоль или командная строка (или терминал в Mac OS X) — это специальная программа, которая позволяет в специальном окне с текстовым интерфейсом делать различные операции: создавать, перемещать файлы и папки, запускать и останавливать программы, вводить и выводить информацию в компьютер.

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

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

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

Откроем консоль. Для этого вызываем поиск по программам: клавиша Пуск и начинаем набирать, или Ctrl+Пробел в Mac OS X для вызова Spotlight. В этой строке поиска наберите «Командная строка» или «command line» («terminal» в Mac OS X).

Видите простое окно с каким-то текстом на черном или белом фоне? Это и есть наша консоль.

Советую закрепить ее в панели задач (в Доке на Маке) — правой кнопкой мыши по значку запущенной программы и выбрать пункт меню что-то про «закрепить» в панели задач или в Доке. Тогда в следующий раз вы сможете запустить ее прямо из панели задач, не нужно будет опять искать эту программу.

В консоли напишите ruby -v и нажмите Enter и посмотрите что произойдет

Этим мы сказали консоли: «запусти команду ruby и передай ей параметр -v », а когда руби запустился, он прочитал этот параметр, означающий: «выведи свою версию и закройся».

Если вы правильно установили Ruby, то в консоли выведется информация об установленной версии.

Таким способом и происходит запуск программ и отображение результатов в консоли.

Другая важная идея: консоль всегда находится в какой-то папке (в этом смысле она похожа на программу Проводник), в Windows текущая папка написана слева от курсора — это полный путь к папке.

В Mac OS X чтобы узнать полный путь текущей папки, надо в консоли набрать команду pwd и нажать Enter.

Текущая папка важна для запуска программ. Чтобы перейти в другую папку в консоли есть встроенная команда cd .

Для того, чтобы перейти в нашу рабочую папку, нужно в консоли написать:

Вместо c:\rubytut\lesson2 вы должны указать полный путь к папке 2-го урока, которую вы создали ранее. Если он у вас отличается от нашего.

Подробнее о работе в консоли в Windows и Mac OS X смотрите видео 2-го урока и дополнительные ссылки.

Первая программя Hello World на Ruby

Запускаем нашу новую программу hello.rb

Теперь когда вы находитесь в той же папке, где у вас лежит файл hello.rb , наберите в консоли команду ruby и через пробел имя этого файла, нажмите Enter.

Эта команда говорит консоли: «Запусти Ruby и скажи ему, что нужно выполнить файл hello.rb из текущей папки.» В ответ на это запускается программа Ruby и отвечает: «Так, вижу файл, выполняю.» После выполнения программы Руби закрывается.

Если при установке руби была ошибка, то консоль ругнется и скажет, что она не знает такой команды ruby .

Если же вы не перешли в правильную папку или в ней нету файла hello.rb , то ругаться будет уже Руби. Он сообщит в консоли что-то вроде: «не вижу такого файла, нечего выполнять».

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

Если же вы всё сделали правильно, программа радостно с вами поздоровается:

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

Поздравляем! В этом уроке вы установили Sublime и Ruby, создали папку для уроков c:\rubytut и написали первую самую простую программу hello.rb .

В следующем уроке мы напишем программу посложнее — «волшебный шар». А также расскажем, зачем в коде программ нужны комментарии и отступы и научим находить и исправлять типичные ошибки в программах.

Ruby — ЛУЧШИЙ ДРУГ ПРОГРАММИСТА

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

Содержимое разработки

Язык программирования «Руби»

  • Ruby как язык программирования существует уже очень давно. Работа над первой редакцией этого невероятно популярного сегодня языка началась в далеком 1993 году, а первая официальная версия датируется 1995 годом. Создатель языка, Юкихиро Мацумото, был энтузиастом программирования еще со времен студенчества, однако идея создания собственного инструмента появилась у него гораздо позже. Так что же такого примечательного в этом языке программирования, что сегодня он занимает одну из лидирующих позиций на мировой арене разработки программного обеспечения?

Философия Ruby При создании своего детища, Мацумото, как преданный фанат и энтузиаст объектно-ориентированного программирования, создал определенную философию для программистов, желающих освоить его язык. Так, язык программирования Ruby предназначен для создания простых, и в то же время понятных приложений. Основной упор Ruby делает не на скорость работы программы, а на простоту и читабельность кода.

Основные характеристики языка Что такое «Руби» как язык программирования? Это прежде всего объектно-ориентированный язык. В нем нет примитивных типов — все структуры и единицы данных являются объектами (в отличие от того же языка Java, его есть примитивные структуры данных). Каждая функция в «Руби» является методом. Многие свойства и возможности привнесены создателями из других языков программирования, поэтому можно смело сказать, что Ruby (язык) вобрал в себя лучшее от множества других языков и технологий.

Добавить комментарий