Первые 20 часов. Как быстро научиться… чему угодно
Шрифт:
$ ruby — v
Вот что я получаю в ответ:
ruby 1.9.3p125 (2012–02–16 revision 34643) [x8664-darwin11.3.0]
Ура! Именно такое сообщение и должен вывести на экран компьютер.
В руководстве сказано, что если я захочу установить новую версию Ruby на этот компьютер, то должен снова запустить выполнение команд rbenv install, rbenv rehash и rbenv global. Достаточно просто.
Несмотря на то что поначалу эти команды вызвали у меня испуг, на самом деле они элементарны. То, что кажется невнятицей, — всего лишь сокращения.
Полезно помнить, что никто не знает этих тонкостей с рождения. В большинстве случаев нужно потратить несколько минут на чтение документации, а затем попробовать ввести то, что там написано [20].
Установка библиотек Ruby (Gems)
Теперь, когда на компьютере есть последняя версия Ruby, настало время выяснить, как установить нужные мне библиотеки, в том числе Sinatra.
Библиотеки языка Ruby называются gems, и, как оказалось, установить их очень легко. Вот команда, которая устанавливает библиотеку Sinatra:
$ gem install sinatra
Для обновления Sinatra до последней версии нужно ввести следующую команду:
$ gem update sinatra
Что может быть проще?
Однако, прежде чем устанавливать остальные библиотеки, я хочу убедиться, что программа gem у меня тоже обновлена. Поскольку мой компьютер поставлялся со старой версией Ruby, то вполне вероятно, что все связанное с этим языком программное обеспечение тоже нуждается в обновлении.
Потратив немного времени, я нахожу команду для обновления gem для Ruby.
$ gem update — system
Довольно просто.
Запуская команду gem install, я замечаю, что она устанавливает и другие библиотеки, такие как rack, rack-protection и tilt. Эти дополнительные библиотеки называются средствами поддержки зависимостей. Они нужны для работы Sinatra и поэтому автоматически загружаются по команде gem install.
Книги
Теперь, будучи готовым приступить к программированию приложений на языке Ruby, я решил обратиться к двум справочникам по Ruby, которые чаще всего рекомендуют на Stack Overflow: «Программирование на языке Ruby» («The Well-Grounded Rubyist») (2009) Дэвида А. Блэка и «Красноречивый Ruby» («Eloquent Ruby») (2011) Расса Олсена. Обе книги представляют собой вводные пособия, предназначенные для того, чтобы познакомить читателя с основными концепциями и приемами Ruby, а также справочники.
Я также купил книгу «Sinatra: к работе готов» («Sinatra: Up and Running») (2011) Алана Харриса и Константина Хассе. Эта книга представляет собой вводный курс в среду программирования Sinatra. Подробная документация на Sinatra имеется в Сети, но книга содержит множество примеров, которые поясняют, как использовать Sinatra для решения стандартных задач.
Просматривая эти книги, я нашел несколько ссылок на сайты, которые могут служить справочниками по синтаксису Ruby.
The Official Beginner’s Guide to Ruby [21].
The Ruby Refresher [22].
Ruby Security Reviewer’s Guide [23].
Для
Я брал каждую книгу, изучал содержание и указатель, отмечая термины и понятия, которые казались мне важными. Я также выделял концепции, упоминаемые многократно, и обращал внимание на порядок их появления. Я читал заголовки и врезки. Закончив с книгами, я проделал то же самое с сайтами.
Вот что мне удалось выяснить. Помимо переменных, условных операторов, исключений и других основных понятий программирования, язык Ruby строится на двух основных концепциях: объектах и методах.
Объекты — это существительные мира программирования; с ними мы можем что-то делать. Допустим, я хочу создать в Ruby новую переменную под названием firstname (имя) и хочу, чтобы она содержала мое имя. В Ruby эта команда имеет вид:
firstname = "Josh"
Довольно просто. Помещая имя Josh в кавычки, я указываю Ruby, что имя — это строка, то есть последовательность букв и цифр. Это делает firstname объектом класса «строка». (Класс — это особый тип объектов с определенными характеристиками.)
Строки не единственный класс объектов. Вот пример класса целых чисел:
million = 1000000
Если объекты — это существительные языка программирования, то методы являются аналогом глаголов: то, что мы можем делать с объектами.
Предположим, у меня есть два строковых объекта, содержащих мои имя и фамилию:
firstname = "Josh"
lastname = "Kaufman"
Я могу использовать символ сложения (+), чтобы объединить эти строки, то есть соединить вместе:
fullname = firstname + lastname
Контрольный вопрос: что содержит переменная fullname? Если вы скажете «Josh Kaufman», то ошибетесь.
Не забывайте, что компьютер делает только то, что вы ему говорите. Вы не указывали, что нужно добавить пробел между «Josh» и «Kaufman». Поэтому переменная fullname будет содержать «JoshKaufman».
Поэтому если мы хотим исправить эту маленькую ошибку, то нужно изменить команду, добавив в нее пробел:
fullname = firstname + " " + lastname
«+» — это метод, и его действие зависит от того, к каким объектам он применяется. Если мы применим его к целым числам, а не строкам, то получим операцию сложения, а не объединения.
sum = million + million
Чему будет равна сумма? «2000000».
Встроенные методы Ruby помогут вам сразу же осуществить много интересных операций. Допустим, я хочу написать свои имя и фамилию задом наперед. Вместо того чтобы записывать это сочетание букв вручную или сочинять маленькую программу для расстановки букв в обратном порядке, я могу использовать метод reverse, доступный для каждого строчного объекта: