Первые 20 часов. Как быстро научиться… чему угодно
Шрифт:
В конечном итоге я разрабатывал пользовательские конфигурации сервера, требовавшие длинных цепочек загадочных системных команд для установки, настройки и изменения сложных серверных приложений, которые я с трудом понимал. Устранение каждой ошибки или поиск ответов на вопросы, встречавшиеся в процессе установки и поддержки сервера, требовали многочасовых поисков.
И в довершение всего популярность и относительная уязвимость WordPress сделали систему любимой мишенью для хакеров и спамеров. Приблизительно раз в неделю какой-нибудь хакер находит новую уязвимость, а затем использует ее для того,
В какой-то момент мне стало ясно, что я трачу больше времени на обеспечение работоспособности сайтов, чем на материалы для своих читателей. Это было бессмысленно. Не только из-за того, что уменьшалась полезная отдача, но еще и потому, что я до этого не обучался программированию. Я узнавал лишь набор ситуативных приемов и «заплаток», применимых конкретно к системе WordPress. Не самый эффективный вариант [3].
Я решил поискать другой способ поддержки своих сайтов, и находка многообещающей альтернативы не заняла много времени.
Потенциальное решение
Однажды я наткнулся на Jekyll [4], программу управления сайтами, созданную Томом Престоном-Вернером, который известен как основатель социальной сети для программистов GitHub [5]. Система Jekyll предназначена для того, чтобы заменить WordPress, обеспечив простое управление сайтами без затратных запросов.
Представьте, что у вас есть сотни текстовых документов, содержащих важную информацию, и вам нужно их унифицировать — одинаковый шрифт, одинаковый стиль заголовков и так далее. Если вы напишете программу, которая автоматически отформатирует любой файл нужным образом (вместо того чтобы вносить изменения вручную), это сэкономит вам уйму времени.
Именно так и поступает Jekyll с веб-страницами. Запустите одну команду — и программа создаст законченный сайт, используя те файлы на вашем компьютере, которые содержат нужную информацию и шаблоны. Если необходимо изменить дизайн или содержание страницы, вы просто снова запускаете Jekyll, и изменения автоматически вносятся в весь сайт, экономя ваше время и силы.
Jekyll предлагал многообещающие возможности. Теоретически я мог заменить WordPress просто папкой текстовых файлов на своем компьютере. Мой сайт будет быстрым, как молния, необыкновенно стабильным, и я сэкономлю больше ста часов в год, которые трачу на поддержание сервера.
Однако тут меня поджидала одна ловушка: система Jekyll написана на языке программирования Ruby, которого я не знаю. Я понятия не имею, как писать программы на Ruby или запускать приложения Ruby, предназначенные для пользователей. Кое-что из того, что мне необходимо для управления сайтом PersonalMBA.com, требует большего, чем простое форматирование.
Чтобы управлять сайтами с помощью системы Jekyll, мне нужно научиться программировать, а также запускать программы веб-приложений, написанные на Ruby.
Похоже, я нашел привлекательную задачу.
Научиться программированию
Я
Важно отметить, что все, чем я занимался до сих пор, — это не программирование. Языки HTML и CSS, которыми я пользовался для разработки веб-страниц, называются «языками разметки». Коды HTML и CSS просто указывают компьютеру, в каком виде отобразить текстовый файл (то есть «этот текст отобразить жирным шрифтом» или «данный раздел — основной заголовок, шрифт 24 пункта»).
То же самое можно сказать о моих упорных попытках усовершенствования сервера. Конечно, я составлял какие-то программы, но настоящим программированием это назвать нельзя. Я просто устанавливал готовое программное обеспечение, а затем изменял его настройки. Приложения, которые я использовал, писали профессиональные программисты, и для того чтобы их применять, мне не нужно было уметь программировать. Конфигурирование сервера и его поддержка — полезные навыки, но это не программирование.
Что же такое программирование?
Первое, что мне пришло в голову: программирование — это указание, какие вещи должен делать компьютер. Однако такое определение было слишком расплывчатым и бесполезным. Что делать? Какие «вещи»?
10 лет назад в колледже я прослушал два курса по основам программирования и поэтому немного смутился, когда понял, что не могу дать четкого определения этой дисциплине. Я помню некоторые из основных терминов, например переменная, цикл, ввод, вывод, функция, объектная ориентация, а также нечто под названием пузырьковая сортировка. Вот, пожалуй, и все.
Я должен был научиться писать программы на языке C++ и помню, как расстраивался, когда много часов искал пропущенную точку с запятой, из-за которой не работала моя программа. Я также помню слова преподавателя: «Вы никогда не будете использовать пузырьковую сортировку в реальных приложениях, но мы все равно будем ее изучать».
В процессе учебы я написал несколько простых программ, по необходимости: цель состояла в том, чтобы получить хорошую оценку, и я ее получил. К сожалению, программы, которые мы писали, были неприменимы в реальной жизни, а с тех пор я не имел дела с программированием. Несмотря на то что в моей памяти застряли несколько терминов, начинать придется с самого начала, с понимания основ.
Поскольку я не могу точно описать свои намерения, когда выражаю желание «научиться программировать», то предвижу трудности с определением целевого уровня мастерства. «Написать компьютерную программу» — это уже чуть конкретнее, но все равно бесполезно.
Пришла пора суммировать все, что я в данный момент знаю о программировании.
Я знаю, что программисты «пишут» программы, что предполагает творческую задачу, которую можно решить разными способами.
Программы часто называют «приложениями», и эти термины взаимозаменяемы.