Первые 20 часов. Как быстро научиться… чему угодно Кауфман Джош

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

Вот оно, «Приветствие солнцу».

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

2. Выдохните. Сложите ладони перед грудью в «молитвенный» жест.

3. На вдохе поднимите руки через стороны над головой, соедините ладони. Посмотрите на ладони (если это трудно, просто посмотрите перед собой).

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

5. На вдохе посмотрите на стену перед собой, не отрывая ладоней от пола. (Или постарайтесь выпрямить ноги, расслабив мышцы головы и шеи.)

6. На выдохе вернитесь в предыдущее положение.

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

8. На выдохе опуститесь, как при отжимании от пола. Не ложитесь на коврик, а остановитесь в дюйме или двух от пола и замрите. Следите за тем, чтобы предплечья располагались под углом 90 градусов к полу — это позволит избежать травм. Если поначалу у вас не получается, упритесь коленями в пол. (Эта поза называется «чатуранга дандасана», или просто «чатуранга».)

9. На вдохе поднимите грудную клетку, отталкиваясь от пола и прогибая спину. Одновременно «перекатите» стопы так, чтобы их подъемы уперлись в пол. (Эту позу называют «позой собаки мордой вверх», поскольку она напоминает потягивающуюся собаку.)

10. На выдохе подтяните стопы, так чтобы подушечки пальцев упирались в коврик. Одновременно перемещайте таз вверх и назад, пока ваше тело не примет форму перевернутой буквы V. Расслабьте шею и плечи. Если возникает тянущее ощущение в подколенных сухожилиях, представьте, что вы «дышите ими». Оставайтесь в таком положении в течение трех-пяти дыхательных циклов. (Эту позу часто называют «позой собаки мордой вниз».)

11. Вдохните, затем на выдохе приставьте стопы к ладоням (прыжком или по очереди), так чтобы они оказались под плечами.

12. Повторите шаги 5 и 6.

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

14. Опустите руки перед собой, так чтобы они оказались перед грудью в «молитвенном» жесте, как в шаге 2.

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

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

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

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

Тем не менее человеческое тело имеет склонность к травмам, возникающим при постоянной нагрузке, и если вы переусердствуете с «Приветствием солнцу», то есть вероятность получить травму [13]. Вот почему полезно было бы выполнить несколько серий «Приветствия солнцу» в качестве разминки, а затем переходить к разнообразным позам.

Не забывайте дышать как Дарт Вейдер

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

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

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

В «Йога-сутрах» о звуке дыхания уджайи говорится как о «подобном океану», но я предпочитаю современную аналогию — звук уджайи похож на голос Дарта Вейдера из «Звездных войн». Сымитируйте знаменитое дыхание Темного лорда ситхов, а затем закройте рот — получится уджайи.

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

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

Я освоил самую популярную последовательность поз и основы дыхания приблизительно за 20 минут. Пока все хорошо.

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

Позы в положении стоя

Поза воина 1

Позы воина — это основа аштанги и виньясы. Эти позы часто появляются после (или в середине) «Приветствия солнцу», но их можно выполнять и самостоятельно, объединяя в короткую последовательность.

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

Поза воина 2

Из позы воина 1 разведите руки в стороны и поверните туловище (если сзади правая нога, то вправо, если левая, то влево). Руки должны быть параллельны полу и как бы «раскрывать» грудную клетку. Оставайтесь в этой позе в течение трех-пяти дыхательных циклов.

Поза воина 3

Позу воина 3 можно назвать «позой Супермена». На этот раз ваша цель — наклониться вперед, балансируя на одной ноге, и удерживать тело параллельно полу.

Из нейтрального положения (начальной стойки позы воина 1) вытяните руки над головой, затем слегка приподнимите одну ногу, оторвав ее с пола. Эту ногу отведите назад, одновременно наклоняя туловище вперед, пока не примете позу Супермена. Сосредоточьтесь на удержании равновесия мышцами стопы; колено поднятой ноги должно быть выпрямленным, но не до конца.

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

Спираль Каминоффа

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

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

Наклон вперед

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

Наклон вперед с широко расставленными ногами

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

Треугольник

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

Вытянутый треугольник

В нейтральном положении стоя широко расставьте ноги; стопы смотрят вперед. Затем повернитесь, так чтобы одна стопа была направлена в сторону. Согните колено этой ноги и упритесь в него локтем. Свободную руку поднимите вверх, к потолку, а затем (если сможете) опустите ладонь нижней руки на пол. Руки должны быть вытянуты в одну линию перпендикулярно полу.

Мне нравится другая разновидность вытянутого треугольника: не разводить руки, направляя их в пол и потолок, а сложить их перед грудью в универсальном «молитвенном» жесте. После трех-пяти дыхательных циклов выпрямитесь в исходное положение, затем повторите в другую сторону.

Стул

Встаньте прямо; ноги вместе, руки опущены вдоль туловища. На вдохе поднимите руки над головой. Затем выдохните и согните колени, не разводя ноги, как будто сидите на воображаемом стуле. (Это трудно, причем чем дольше вы остаетесь в этой позе, тем труднее.)

После трех-пяти дыхательных циклов выпрямитесь в исходное положение.

Дерево

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

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

Позы на полу

Кошка-корова

Опуститесь на четвереньки; руки точно под плечами, а колени — под бедрами. Расслабьте шею и плечи, направьте взгляд вниз.

На вдохе выгните спину, одновременно втягивая живот. Вы обнаружите, что смотрите на свои ноги. Это поза кошки.

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

Следя за дыханием, переходите из одной позы в другую не менее пяти раз.

Наклон вперед из положения сидя

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

Наклон вперед к одной ноге

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

Посох

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

Связанный угол

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

Скручивание позвоночника в положении сидя

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

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

Особенность упражнения состоит в том, что вы заметите разницу в скручивании разных отделов позвоночника. По утверждению Лесли Каминоффа, поясничный отдел способен поворачиваться только на 5 градусов. Угол поворота грудного отдела позвоночника составляет 35 градусов, а шейного — от 80 до 90. Таким образом, при полном скручивании вы можете посмотреть назад.

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

Лодка

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

Ворона

Сядьте на коврик, упритесь ладонями в пол. Упритесь локтями с внутренней стороны коленей, наклонитесь, чтобы центр тяжести сместился вперед, и оторвите стопы от пола. Задержитесь в этом положении, сколько сможете; дышать старайтесь равномерно.

Колесо

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

Корректировка трудности

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

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

Шавасана

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

Шавасана — это полное снятие мышечного напряжения в сочетании с глубокой медитацией. Ее часто называют «позой трупа», но мрачное название не должно вас отпугивать. Сама по себе поза очень проста: лягте на спину на коврик, ноги выпрямлены, руки вдоль туловища. Закройте глаза и расслабьте все тело. Мышцы вообще не должны работать.

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

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

Оставайтесь в позе шавасана около пяти минут, затем встаньте. Ваши занятия асаной закончены.

Применение метода

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

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

Я приобрел необходимые принадлежности: коврик, ленту и опорный блок.

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

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

Я выучил основную последовательность поз виньясы («Приветствие солнцу), 10 наиболее распространенных поз в положении стоя и 10 наиболее распространенных поз в положении сидя.

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

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

Планы на будущее

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

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

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

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

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

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

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

5

Программирование

Урок: сложные вещи становятся простыми, если их разбить на части

Если отладка — процесс удаления ошибок, то программирование должно быть процессом их внесения.

Эдсгер Дейкстра, известный ученый, специалист по компьютерам

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

Мой первый сайт, PersonalMBA.com, дает мне средства к существованию: в сущности, я обучаю науке бизнеса, хоть и не преподаю в университете. Каждый год я пополняю список написанных мною книг, которые посвящены законам бизнеса и предназначены для читателей, желающих овладеть его основами [1].

С момента первой публикации в 2005 году список рекомендуемой литературы из книги «Сам себе MBA» оставался одним из самых популярных, а дополнения к этому списку делают посетители сайта со всего мира. С 2005 года сайт PersonalMBA.com посетили более 2 миллионов читателей.

Моя первая книга «Сам себе MBA» была естественным развитием сайта PersonalMBA.com и стала международным бестселлером. Издание книги предполагает также и ее распространение, и поэтому я на протяжении нескольких лет изо всех сил старался привлечь новых читателей.

О книге «Сам себе MBA» упоминалось в New York Times, Wall Street Journal, Fortune, Forbes, FastCompany, на многих популярных сайтах, в блогах. И после каждого такого упоминания на PersonalMBA.com приходили тысячи новых посетителей.

Цена прогресса

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

Вот типичный пример: популярный блог Lifehacker.com, посвященный программному обеспечению и компьютерам, за последние семь лет три раза помещал список литературы «Сам себе MBA». И каждый раз тысячи людей одновременно пытались зайти на сайт PersonalMBA.com, перегружая мой веб-сервер (компьютер, предоставляющий веб-страницу по запросу пользователя). Вместо запрашиваемой информации сервер выдавал сообщение «Ошибка установки связи с базой данных» или «Ошибка 503», что эквивалентно просьбе о пощаде в цифровой форме.

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

Изучение проблемы

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

В то время PersonalMBA.com использовал популярную систему управления сайтами под названием WordPress [2]. Эта система оптимизирована под легкость установки и использования, а не под работу с большими нагрузками. В стандартной конфигурации WordPress каждый запрос веб-страницы запускает цепочку действий сервера, генерируя сотни внутренних запросов, чтобы предоставить каждую страницу пользователю.

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

Система зависла

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

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

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

И в довершение всего популярность и относительная уязвимость WordPress сделали систему любимой мишенью для хакеров и спамеров. Приблизительно раз в неделю какой-нибудь хакер находит новую уязвимость, а затем использует ее для того, чтобы заполнить спамом миллионы блогов WordPress. Поддержание безопасности системы и своевременное обновление программного обеспечения — это уже работа в полную смену, особенно если вы поддерживаете несколько сайтов. (Я поддерживал 12 сайтов одновременно и катастрофически не справлялся.)

В какой-то момент мне стало ясно, что я трачу больше времени на обеспечение работоспособности сайтов, чем на материалы для своих читателей. Это было бессмысленно. Не только из-за того, что уменьшалась полезная отдача, но еще и потому, что ядо этого не обучался программированию. Я узнавал лишь набор ситуативных приемов и «заплаток», применимых конкретно к системе 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++ и помню, как расстраивался, когда много часов искал пропущенную точку с запятой, из-за которой не работала моя программа. Я также помню слова преподавателя: «Вы никогда не будете использовать пузырьковую сортировку в реальных приложениях, но мы все равно будем ее изучать».

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

Поскольку я не могу точно описать свои намерения, когда выражаю желание «научиться программировать», то предвижу трудности с определением целевого уровня мастерства. «Написать компьютерную программу» — это уже чуть конкретнее, но все равно бесполезно.

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

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

Программы часто называют «приложениями», и эти термины взаимозаменяемы.

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

Термины «вход» и «выход» запомнить легко, поскольку это обычные слова. Под входом понимают информацию или данные, которые использует программа, а под выходом — результат, получаемый по завершении ее работы.

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

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

Программа «виснет» или выдает сообщение об ошибке, когда что-то идет не так и компьютер не может понять, что делать дальше.

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

Вход — информация, которая используется для выполнения процесса.

Процесс — последовательность шагов, предпринимаемых программой в соответствии с входными данными.

Выход — конечный результат выполнения программы.

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

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

Создание компьютерной программы аналогично разработке блок-схемы. Вы задаете те же вопросы:

С чего я начинаю?

С чего начинается процесс?

Что происходит после этого? А дальше?

Когда процесс заканчивается?

Что я получу, когда процесс закончится?

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

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

Условные операторы — это выражения такого вида.

Если X истинно/ложно, то делать Y.

Если X не Y, то делать Z.

Когда X истинно/ложно, то делать Y.

Когда X не Y, то делать Z.

Пока X истинно/ложно, делать Y.

p> Пока X не Y, делать Z.

В данном случае X, Y и Z — это переменные, которые могут обозначать все что угодно. Переменные могут обозначать числа, как в элементарной алгебре, или слова. Иногда переменные — это отдельные буквы или символы, а иногда целые слова. В любом случае они обозначают объекты, с которыми мы работаем.

Условные операторы (ЕСЛИ, ТО, КОГДА И ПОКА — IF, THEN, WHEN и WHILE) подобны стрелкам с вопросами на блок-схеме. Представьте себе, что вы за рулем автомобиля: ЕСЛИ (IF) сигнал светофора красный, ТО (THEN) вы останавливаетесь. КОГДА (WHEN) сигнал светофора сменяется на зеленый, ТО (THEN) вы едете. КОГДА (WHEN) сигнал светофора желтый, ТО (THEN) вы тормозите, готовясь остановиться.

Имеет смысл остановиться на этих условных операторах немного подробнее, поскольку здесь есть несколько общих закономерностей. Условие истинно/ложно встречается довольно часто, а оператор ПОКА (WHILE) указывает не на одно конкретное действие, а на продолжение тех или иных действий.

Во всех случаях условный оператор содержит высказывание, которое определяет, нужно ли предпринимать какие-либо действия. Это высказывание называется условием и может принимать разные формы. Иногда условие представляет собой простое сравнение типа истинно/ложно (Сигнал светофора красный?), иногда математическое сравнение (Х больше 100?), а иногда содержит логическую конструкцию (Сигнал светофора НЕ красный?).

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

Переменные типа истинно/ложно называются булевыми переменными — это красивое название обозначает то, что может принимать всего два значения. Да/нет и включено/выключено тоже относятся к булевым переменным. Булевы переменные играют большую роль в программировании, поскольку являются основой как простейших процессов (подобно истинно/ложно в блок-схемах), так и для включения/выключения крошечных электронных переключателей, из которых состоит компьютер.

В данном случае ПОКА (WHILE) — это особый тип условного оператора, который называется циклическим. Циклический оператор заставляет процесс повторяться до тех пор, пока не будет выполнено условие. Вернемся к аналогии управления автомобилем: ПОКА (WHILE) сигнал светофора красный, ехать нельзя.

Все очень просто, правда? Если провести аналогию между написанием компьютерной программы и составлением блок-схемы, этот процесс будет довольно легко представить.

И еще одно, последнее замечание: что будет, если компьютер зайдет в тупик, не зная, что ему делать, или команды, которые компьютер пытается выполнить в какой-то момент, не работают или не имеют смысла? Что произойдет?

В таком случае программа «вылетает» — останавливается и нередко вместо ожидаемого результата выдает сообщение об ошибке. Мы все знакомы с внушающим страх «синим экраном смерти» Windows или с сообщением «Ошибка 404: веб-страница не найдена» при поиске в интернете. Иногда происходит непредвиденное, компьютер «сходит с ума» и зависает.

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

Эти операторы восстановления после ошибки называются исключениями, и они очень полезны. Их можно считать условными операторами, связанными с ошибкой: ЕСЛИ (IF) программа вылетает по ветке Х, ТО (THEN) делать Y вместо Х.

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

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

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

Языки программирования

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

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

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

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

Думать как программист

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

В примере, описывающем поведение водителя за рулем, я использовал псевдокод. Если сесть в машину и вслух произнести: «КОГДА я поверну ключ зажигания, ТО двигатель запустится», — ничего не произойдет. Но это не значит, что мое утверждение бессмысленно. Оно представляет собой способ обдумать шаги, необходимые для разрешения проблемы или получения желаемого результата.

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

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

Вы: Возьми хлеб.

Приятель: Я не понимаю, что такое «возьми».

Вы: Протяни руку туда, куда я скажу, и схвати его.

Приятель: Я не понимаю, что такое «рука».

Вы (вздыхая): Вот эта штука. (Вы указываете на руку приятеля.)

Приятель: Понял.

Вы: Протяни руку туда, куда я скажу, и схвати его.

Приятель: Я не понимаю, что такое «схвати».

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

Приятель: Понял.

Вы: Протяни руку к хлебу и схвати его.

Приятель: Я не понимаю, что такое «хлеб».

Вы: Вот эта штука, вот здесь! (Вы указываете на хлеб.)

Приятель: Понял.

Страницы: «« 12345678 ... »»

Читать бесплатно другие книги:

«…Кое-кто вздохнул, кое-кто охнул, а кое-кто даже слезу пустил. И только одна старая Наталья Алексан...
«…Обычно, когда вечером он переступал порог кухни, на него с криком, с гамом вешались дочери – четыр...
В комедии высмеивается невежество, глупость, бесцеремонность и высокомерие потомка гетманов пана Зла...
«Цель повести „Мария“ самая полезная. Автор хотел показать, что самое лучшее воспитание если оно не ...
В комическом фарсе «Невеста под замком» высмеивается скупость, чванливость, ограниченность богачей –...
Повесть «Турецкий суд» относится к так называемым «восточным повестям», где под условным «восточным»...