- Фантастика и фэнтези
- Ироническое фэнтези
- Стимпанк
- Детективная фантастика
- Киберпанк
- Попаданцы
- LitRPG
- Космоопера
- Технофэнтези
- Городская фантастика
- Русское фэнтези
- Юмористическая фантастика
- Космическая фантастика
- Боевое фэнтези
- Эпическая фантастика
- Зарубежная фантастика
- Книги магов
- Мистика
- Разная фантастика
- Разное фэнтези
- Любовное фэнтези
- Романтическая фантастика
- Городское фентези
- Историческая фантастика
- Историческое фэнтези
- Социально-философская фантастика
- Сказочная фантастика
- Иностранное фэнтези
- Романтическое фэнтези
- Ироническая фантастика
- Ужасы и Мистика
- Постапокалипсис
- Героическая фантастика
- Фэнтези
- Научная Фантастика
- Социально-психологическая
- Альтернативная история
- Боевая фантастика
- Разная литература
- Пословицы, поговорки
- Шахматы
- Визуальные искусства
- Фанфик
- Авто и ПДД
- Военное
- Отраслевые издания
- Гиды, путеводители
- Зарубежная образовательная литература
- Военная история
- Цитаты из афоризмов
- Современная литература
- Великолепные истории
- Начинающие авторы
- Современная зарубежная литература
- Боевые искусства
- Изобразительное искусство, фотография
- Кино
- Литература 19 века
- Недвижимость
- Музыка, музыканты
- Готические новеллы
- Истории из жизни
- Культура и искусство
- Спецслужбы
- Зарубежная прикладная литература
- Музыка, танцы
- Подростковая литература
- Прочее
- Военная техника, оружие
- Газеты и журналы
- Периодические издания
- Домоводство, Дом и семья
- Любовные романы
- Экономическая литература
- Научные и научно-популярные книги
- О животных
- Биохимия
- Культурология
- Юриспруденция
- Политика
- Психотерапия
- Языкознание
- Научпоп
- Медицина
- Психология, личное
- Радиотехника
- Филология
- Педагогика
- Образовательная литература
- Деловая литература
- Физика
- Науки: разное
- Химия
- Воспитание детей, педагогика
- Детская психология
- Зарубежная публицистика
- Биология
- Архитектура
- Зарубежная психология
- Науки о космосе
- Социология
- Математика
- География
- Беременность, ожидание детей
- Литературоведение
- Транспорт, военная техника
- Обществознание
- Зоология
- География
- Альтернативная медицина
- Иностранные языки
- Ветеринария
- Рефераты
- Астрология
- Биофизика
- Экология
- История Европы
- Учебники
- Шпаргалки
- Государство и право
- Ботаника
- Религиоведение
- История
- Техническая литература
- Прочая научная литература
- Психология
- Детективы и Триллеры
- Справочная литература
- Проза
- Новелла
- Юмор
- Проза
- Историческая проза
- Русская современная проза
- Советская классическая проза
- Повести
- Очерки
- Эссе
- Рассказы
- Зарубежная современная проза
- Сентиментальная проза
- Зарубежная классика
- Афоризмы
- Эпистолярная проза
- Феерия
- Семейный роман/Семейная сага
- Разное
- Антисоветская литература
- Магический реализм
- Русская классическая проза
- Современная проза
- О войне
- Контркультура
- Классическая проза
- Поэзия, Драматургия
- Детская литература
- Детская фантастика
- Детские остросюжетные
- Детские стихи
- Детские приключения
- Внеклассное чтение
- Учебная литература
- Зарубежные детские книги
- Бизнес
- Загадки
- Книги для подростков
- Школьные учебники
- Детский фольклор
- Книги для дошкольников
- Детские детективы
- Детская познавательная и развивающая литература
- Буквари
- Прочая детская литература
- Сказка
- Детская проза
- Детская образовательная литература
- Юмор
- Документальные книги
- Бизнес
- Внешнеэкономическая деятельность
- Тайм-менеджмент
- Кадровый менеджмент
- О бизнесе популярно
- Управление, подбор персонала
- Бизнес
- Менеджмент и кадры
- Продажи
- Экономика
- Ценные бумаги и инвестиции
- Малый бизнес
- Делопроизводство, офис
- Корпоративная культура, бизнес
- Банковское дело
- Финансы
- Зарубежная деловая литература
- Ораторское искусство / риторика
- Личные финансы
- Интернет-бизнес
- Поиск работы
- Государственное и муниципальное управление
- Бухучет и аудит
- Работа с клиентами
- Менеджмент
- Краткое содержание
- Личная эффективность
- Переговоры
- Приключения
- Старинная литература
- Религия и духовность
- Компьютеры и Интернет
- Блог
Читаем без скачивания Первые 20 часов. Как быстро научиться… чему угодно - Джош Кауфман
Шрифт:
Интервал:
Закладка:
Можно использовать одновременно несколько методов. Если я хочу расположить буквы имени и фамилии в обратном порядке и сделать все буквы строчными, то могу написать команду:
fullname.reverse.downcase
Результат: namfuakhsoj. В точку!
Похоже, научиться программированию на Ruby — это научиться использовать встроенные и создавать новые объекты, классы и методы, а также манипулировать ими. Помимо встроенных, вы можете при необходимости сами создавать, изменять и удалять объекты, классы и методы, что делает язык мощным и гибким средством программирования [24].
Документация на Ruby [25] содержит стандартный список объектов и методов, доступных для пользователя. Этот список впечатляет, но пугаться вы не должны — применять их все совсем не обязательно. Наоборот, большинство из них на первых порах безопаснее не трогать. Это опции, которые вы можете использовать при необходимости.
Документация служит еще одной цели: когда вы пытаетесь дать команду, которую Ruby не понимает, сообщение об ошибке подскажет вам, в каком месте произошел сбой.
Допустим, мы хотим выполнить следующую программу:
animal = "Zebra"
number = 7
puts animal + number
Команда puts означает «печать». Мы просто хотим, чтобы программа вывела на экран то, что она понимает под animal + number.
Вот что я получил в ответ, когда пытался запустить эту программу:
TypeError: can’t convert Fixnum into String from program.
r b:3: in '+'
В переводе на понятный человеку язык: нельзя складывать числа со словами, и поэтому компьютер указывает на ошибку. Похоже на деление на ноль: это невозможно, и программа прекращает работу.
Для исправления ошибки в программе нужно либо преобразовать цифру в строку, и тогда метод «+» объединит две переменных, либо изменить программу, чтобы она делала что-то другое.
Вот исправленная программа:
animal = "Zebra"
number = 7.to_s
puts animal + number
Запуская эту программу, мы получаем результат «Zebra7». Встроенный метод .to_s преобразует цифру 7 в строку, чтобы Ruby мог использовать объединение переменных.
Можно также сделать нечто совсем другое, например:
animal = "Zebra"
number = 7
number.times {puts "# {animal}"}
Результат на экране компьютера:
Zebra
Zebra
Zebra
Zebra
Zebra
Zebra
Zebra
Тут мы просто использовали условный цикл, встроенный в Ruby: number.times означает «выполнять это Х раз, где Х равняется значению числовой переменной». Изменив значение animal или number, мы изменим результат. (Да, вы можете модифицировать эту программу так, что она выведет на экран слово «вомбат» миллиард раз.)
Комментарии и отладка
Знакомясь с литературой, я обратил внимание на еще одно фундаментальное свойство языка Ruby — комментарии. Каждую строку программы, начинающуюся с символа #, Ruby интерпретирует как строку комментария и пропускает при выполнении.
Комментарии к программе делают ее понятной, потому что в них вы простым языком объясняете свои действия. Вот как будет выглядеть программа «Животные» с комментариями:
# Назначение переменных
animal = "Wombat"
number = 1000000000
# Цикл вывода
number.times {puts "# {animal}"}
Комментарии также очень полезны для устранения ошибок: вы можете обозначить как комментарии несколько строк программы, чтобы устранить проблемы или ошибки. В сочетании с командами print или puts это позволяет следить за выполнением программы и убедиться, что она работает так, как и планировалось.
Потратив восемь часов на исследования и установку программ, я получил следующий результат: у меня на компьютере последняя версия Ruby, я имею возможность загрузить любую нужную мне библиотеку, и я понимаю, как работают программы, написанные на Ruby.
Теперь давайте разберем более сложные программы.
Тестируем с помощью IRB
Изучая Stack Overflow, я обнаружил онлайновое пособие по Ruby под названием «Сложный способ выучить Ruby» («Learn Ruby the Hard Way») [26], написанное Робом Соберсом и Зедом Шоу. Это пособие иллюстрирует работу Ruby на примерах простых программ, предлагая вам изменить их для получения тех или иных результатов. Если нужный результат не получается, вы должны продолжить эксперимент, пока не решите задачу.
Этот метод — кодируем, тестируем, запускаем, отлаживаем — представляет собой превосходный пример быстрой обратной связи. Когда вы запустите программу, компьютер уже через несколько миллисекунд даст знать, работает она или нет. Если в коде есть ошибка, вы можете исправить ее и запустить программу снова, в течение минуты проверив несколько вариантов.
Первые главы пособия посвящены настройке Ruby, установке текстового редактора и обучению работы с IRB — программой, которая запускает на вашем компьютере программы, написанные на Ruby.
Вот как это делается. Вы набираете программу в текстовом редакторе и сохраняете ее в файле. (Пусть имя файла будет program.rb.) Чтобы запустить ее, нужно набрать команду в окне программы Terminal:
$ irb program.rb
IRB запустит вашу программу и выдаст результат, а также покажет действия, предпринятые компьютером для получения этого результата, что очень удобно для отладки. Если программа некорректна, IRB выведет на экран подробное сообщение об ошибке.
«Сложный способ выучить Ruby» начинается с назначения переменных, выполнения основных арифметических действий, манипулирования строками и составления стандартных условных циклов — аналогично примерам, которые приводились выше.
Первоначально я собирался прочесть «Красноречивый Ruby» и «Программирование на Ruby», выполнить упражнения из «Сложного способа выучить Ruby», а затем попытаться написать первую «настоящую» программу. Однако к десятому уроку я заметил кое-что важное: мне становится скучно, и я теряю интерес.
Причина проста: я копирую чужие программы и решаю задачи, поставленные другими людьми. Иногда эти программы довольно интересны, однако они не решают моих проблем. Программирование из полезного навыка начинает превращаться в научную дисциплину. Мне нужно заканчивать с исследованием и приступать к практике.
Мне не нужно читать все эти книги, инструкции, пособия и другие источники информации, чтобы приступить к программированию. Я должен писать реальные программы, а если возникнут трудности, обращаться к источникам информации.
Пора замарать руки…
Приложение № 1: статический сайт в среде Sinatra
Я уже придумал свою первую интернет-программу: приложение в среде Sinatra, которое служит основным HTML-сайтом. Вот мой целевой уровень мастерства для этого приложения.
1. Создать рабочее приложение в среде Sinatra, способное предоставить простой сайт пользователю (читателю).
2. Проверить приложение на своем компьютере и убедиться в его работоспособности.
3. Разместить это приложение на сервисе Heroku, сделав «живым», чтобы им могли пользоваться реальные читатели.
Вот и все. Никаких изысков. Простое приложение в среде Sinatra, запущенное на сервере общего пользования.
С чего я должен начинать? Обратимся к списку десяти основных принципов приобретения навыка.
1. Выберите привлекательный проект.
2. Сосредоточьтесь на каком-то одном навыке.
3. Определите целевой уровень мастерства.
4. Разбейте навык на элементы.
5. Приготовьте все необходимое для занятий.
6. Устраните препятствия для занятий.
7. Выделите специальное время для занятий.
8. Создайте быстрые петли обратной связи.
9. Занимайтесь по расписанию, короткими интенсивными интервалами.
10. Уделяйте внимание количеству и скорости.
У меня есть один четко описанный проект. Я разбил навык на составляющие и знаю, как будет выглядеть моя программа, когда я закончу работу. Теперь перейдем к необходимым инструментам: нужно ли мне что-то еще для успешного осуществления проекта?
Как выяснилось, нужно. У меня нет учетной записи на Heroku. Но это легко исправить: я захожу на сайт Heroku.com, щелкаю на кнопке Sign Up, ввожу адрес своей электронной почты и придумываю пароль.
Поскольку я уже установил на компьютере Heroku Toolbelt (программу, использовавшуюся для установки git), то библиотека Heroku загружена в мой компьютер, и с этим проблем не будет.
Судя по инструкции, мне нужно сделать еще одну вещь, чтобы связать мой компьютер с Heroku: сгенерировать «SSH key», специальный файл, который, по всей видимости, служит паролем. Получив этот ключ, я должен сообщить его Heroku, чтобы система могла распознать мой компьютер и открыть ему доступ.
К счастью, в Heroku есть указания на то, как это сделать [27]. Я ввожу команду для генерации ключа:
$ ssh-keygen — t rsa
…команду для входа в Heroku:
$ heroku login
…и команду, которая добавляет ключ к моей учетной записи в Heroku: